dom-visibility-lock
v0.1.0
Published
Lock DOM element visibility using MutationObserver
Maintainers
Readme
visibility-lock
Lock DOM element visibility using MutationObserver, ensuring that external DOM mutations cannot hide or alter a target element.
Installation
npm install visibility-lockUsage
import { createVisibilityLock } from 'visibility-lock';
const lock = createVisibilityLock('my-element', 'locked');
lock.enable();
// later
lock.disable();API
createVisibilityLock(targetId, lockClass)
Creates a controller that enforces visibility on a DOM element.
Parameters
targetId(string) — ID of the target elementlockClass(string) — CSS class applied while lock is active
Returns
{
enable: () => void;
disable: () => void;
}How It Works
- Uses
MutationObserverto monitor:classstylehiddenattributes
- Automatically restores:
display: blockvisibility: visibleopacity: 1
- Re-applies the provided CSS class if removed
TypeScript Support
This library is written in JavaScript but provides full TypeScript support via generated declaration files (.d.ts).
Generate Type Definitions
Type definitions are generated from JSDoc using TypeScript.
1. Install dependencies
npm install2. Run TypeScript compiler
npx tscThis will generate:
dist/index.d.tsRequired tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"declaration": true,
"emitDeclarationOnly": true,
"outDir": "dist",
"strict": true,
"allowJs": true,
"checkJs": true
},
"include": ["src/**/*"]
}Build
npm run buildOutputs:
dist/index.js(ESM)dist/index.cjs(CommonJS)dist/index.d.ts(TypeScript types)
Local Development
Build the library
npm run buildLink locally
npm linkIn another project:
npm link visibility-lockNotes
- Browser-only (safe-guarded for SSR environments)
- No framework dependencies
- Lightweight and tree-shakeable
License
MIT
