{"_id":"@alexander.k/event-delegator","_rev":"6-72b7ce4c578b1367daf507c4e1fac93a","name":"@alexander.k/event-delegator","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@alexander.k/event-delegator","version":"0.1.0","keywords":["events","delegation","event-delegation","dom","javascript","typescript","library"],"author":{"name":"Alexander Kucherenko"},"license":"MIT","_id":"@alexander.k/event-delegator@0.1.0","maintainers":[{"name":"alexander.k","email":"dif.kae@gmail.com"}],"homepage":"https://github.com/kucherenko-ae/event-delegator#readme","bugs":{"url":"https://github.com/kucherenko-ae/event-delegator/issues"},"dist":{"shasum":"a2c3d9609b66e1bed47f5236192bb2f87d302268","tarball":"https://registry.npmjs.org/@alexander.k/event-delegator/-/event-delegator-0.1.0.tgz","fileCount":32,"integrity":"sha512-F9ByUGWbTLdTkbn/osfWQ8c1i1Bm+Kc25yVtX1wTeTSsbEawC7iHjopLb2UKtCeuRfknvC6EVudS/PJEIVPTfA==","signatures":[{"sig":"MEQCIGgH6AZD9kYO28/l0yzg8NU/RHMr4m2zuX4XaAdNrr+QAiABAaT2zLI0HsuPfvGl78f6H8WP7gnxpL0EX7FplAB2tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16203},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"7d474b57a92e76e6838200f776a644da78cb6e33","scripts":{"pack":"npm run build && npm pack","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"alexander.k","email":"dif.kae@gmail.com"},"repository":{"url":"git+https://github.com/kucherenko-ae/event-delegator.git","type":"git"},"_npmVersion":"11.4.2","description":"A tiny library for event delegation","directories":{},"_nodeVersion":"24.3.0","browserslist":["defaults"],"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.4.0","@eslint/js":"^9.37.0","typescript":"^5.9.3","neostandard":"^0.12.2","typescript-eslint":"^8.46.0"},"_npmOperationalInternal":{"tmp":"tmp/event-delegator_0.1.0_1760088442021_0.9885467600947047","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alexander.k/event-delegator","version":"0.2.0","keywords":["events","delegation","event-delegation","dom","javascript","typescript","library"],"author":{"name":"Alexander Kucherenko"},"license":"MIT","_id":"@alexander.k/event-delegator@0.2.0","maintainers":[{"name":"alexander.k","email":"dif.kae@gmail.com"}],"homepage":"https://github.com/kucherenko-ae/event-delegator#readme","bugs":{"url":"https://github.com/kucherenko-ae/event-delegator/issues"},"dist":{"shasum":"ac7b9240efcc3607047dd38c78ab74fd5c9483c4","tarball":"https://registry.npmjs.org/@alexander.k/event-delegator/-/event-delegator-0.2.0.tgz","fileCount":32,"integrity":"sha512-/Ab7qk+E6IKxSC0B+I+PR/1Ld8i18lpuPNGohL3z4BamlBo0Sd3XsCORwuf4wjMtmc+wEH26Dc0beV6pu4+3zw==","signatures":[{"sig":"MEQCIAsiyDoQhzD9C3/7QWe+J3k9AlaNSrU6IgsUIigWtDJCAiBmQylp6DDY3wbSJRTlchGrLRnhO7mCDhvJcVa0okh9Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16567},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/parseValue":{"types":"./dist/utils/parseValue.d.ts","import":"./dist/utils/parseValue.js"},"./utils/parseParams":{"types":"./dist/utils/parseParams.d.ts","import":"./dist/utils/parseParams.js"}},"gitHead":"f8e00991ecd2ddbb13d860b8be78957cf1f2d489","scripts":{"pack":"npm run build && npm pack","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"alexander.k","email":"dif.kae@gmail.com"},"repository":{"url":"git+https://github.com/kucherenko-ae/event-delegator.git","type":"git"},"_npmVersion":"11.4.2","description":"A tiny library for event delegation","directories":{},"_nodeVersion":"24.3.0","browserslist":["defaults"],"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.4.0","@eslint/js":"^9.37.0","typescript":"^5.9.3","neostandard":"^0.12.2","typescript-eslint":"^8.46.0"},"_npmOperationalInternal":{"tmp":"tmp/event-delegator_0.2.0_1760089104338_0.8119524113537055","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@alexander.k/event-delegator","version":"0.2.1","keywords":["events","delegation","event-delegation","dom","javascript","typescript","library"],"author":{"name":"Alexander Kucherenko"},"license":"MIT","_id":"@alexander.k/event-delegator@0.2.1","maintainers":[{"name":"alexander.k","email":"dif.kae@gmail.com"}],"homepage":"https://github.com/kucherenko-ae/event-delegator#readme","bugs":{"url":"https://github.com/kucherenko-ae/event-delegator/issues"},"dist":{"shasum":"02ae4c75560a57ae3ab94ff01d088cc98edf07d6","tarball":"https://registry.npmjs.org/@alexander.k/event-delegator/-/event-delegator-0.2.1.tgz","fileCount":32,"integrity":"sha512-RP9IOuEDrnBxbD7X/bKFfyC5z+Ae3uYxuo5eNmfmh48N2eGz6GkC+aFbuWPmkz1VxEMrcowzYrc6iPbc14W9vw==","signatures":[{"sig":"MEUCIHta151Uv5iS6YLeZf3mZ2CDNBwRozTtFBkxp2kjev1FAiEAj1MB11sCDeYxutO5ECiPiPvXOckbJlomcIbdaPuAF3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16604},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/parseValue":{"types":"./dist/utils/parseValue.d.ts","import":"./dist/utils/parseValue.js"},"./utils/parseParams":{"types":"./dist/utils/parseParams.d.ts","import":"./dist/utils/parseParams.js"}},"gitHead":"87da7a42c4a6c637651126d623144b2018c2df1c","scripts":{"pack":"npm run build && npm pack","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"alexander.k","email":"dif.kae@gmail.com"},"repository":{"url":"git+https://github.com/kucherenko-ae/event-delegator.git","type":"git"},"_npmVersion":"11.4.2","description":"A tiny library for event delegation","directories":{},"_nodeVersion":"24.3.0","browserslist":["defaults"],"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.4.0","@eslint/js":"^9.37.0","typescript":"^5.9.3","neostandard":"^0.12.2","typescript-eslint":"^8.46.0"},"_npmOperationalInternal":{"tmp":"tmp/event-delegator_0.2.1_1760090068480_0.32964147166505886","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@alexander.k/event-delegator","version":"0.2.2","keywords":["events","delegation","event-delegation","dom","javascript","typescript","library"],"author":{"name":"Alexander Kucherenko"},"license":"MIT","_id":"@alexander.k/event-delegator@0.2.2","maintainers":[{"name":"alexander.k","email":"dif.kae@gmail.com"}],"homepage":"https://github.com/kucherenko-ae/event-delegator#readme","bugs":{"url":"https://github.com/kucherenko-ae/event-delegator/issues"},"dist":{"shasum":"c3ead45a61a659bec86b1eed5aec62c5642df14d","tarball":"https://registry.npmjs.org/@alexander.k/event-delegator/-/event-delegator-0.2.2.tgz","fileCount":32,"integrity":"sha512-GawBzCK+41RfFD/FH8WpzawiCiLfubcgEcye/XQq1qdCRzzz2XkHjmle4K5DqkguvbdHlbI3l1W+6CM4hVkRDA==","signatures":[{"sig":"MEYCIQD/6RMX2C4efQ75N4QZV8UsUzab959FuxDwC2O2ZGKCUQIhAOUd/xBl/2U3STWLzcWxRUvencPaaT56paYgAsYMoHhI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16608},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/parseValue":{"types":"./dist/utils/parseValue.d.ts","import":"./dist/utils/parseValue.js"},"./utils/parseParams":{"types":"./dist/utils/parseParams.d.ts","import":"./dist/utils/parseParams.js"}},"gitHead":"9860b4567635b3be435281028e2606d5dbc10fc2","scripts":{"pack":"npm run build && npm pack","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"alexander.k","email":"dif.kae@gmail.com"},"repository":{"url":"git+https://github.com/kucherenko-ae/event-delegator.git","type":"git"},"_npmVersion":"11.4.2","description":"A tiny library for event delegation","directories":{},"_nodeVersion":"24.3.0","browserslist":["defaults"],"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.4.0","@eslint/js":"^9.37.0","typescript":"^5.9.3","neostandard":"^0.12.2","typescript-eslint":"^8.46.0"},"_npmOperationalInternal":{"tmp":"tmp/event-delegator_0.2.2_1760090546462_0.11827630898839137","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@alexander.k/event-delegator","version":"0.2.3","keywords":["events","delegation","event-delegation","dom","javascript","typescript","library"],"author":{"name":"Alexander Kucherenko"},"license":"MIT","_id":"@alexander.k/event-delegator@0.2.3","maintainers":[{"name":"alexander.k","email":"dif.kae@gmail.com"}],"homepage":"https://github.com/kucherenko-ae/event-delegator#readme","bugs":{"url":"https://github.com/kucherenko-ae/event-delegator/issues"},"dist":{"shasum":"f558e9e64768519ee69fe8399bb97854bfd91cb9","tarball":"https://registry.npmjs.org/@alexander.k/event-delegator/-/event-delegator-0.2.3.tgz","fileCount":32,"integrity":"sha512-6i4D8vnCH/1uaiDBhv5pH25jwEpcXqBacliVjI8A+coSn2A3G5Bnl0E6J413RclVjqVmqj27LCi76o+I9g3jcw==","signatures":[{"sig":"MEQCIBYmI5QkOEdcgFK+vHslQlJzqlHOthbmKsI7Sqs2vi3hAiBkTytJ6B8qiUSksvMeE5nrMJBYgO1hJg/0P92BItOM3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16279},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/parseValue":{"types":"./dist/utils/parseValue.d.ts","import":"./dist/utils/parseValue.js"},"./utils/parseParams":{"types":"./dist/utils/parseParams.d.ts","import":"./dist/utils/parseParams.js"}},"gitHead":"ac594f59417f92954a6735d518aab802a75e2407","scripts":{"pack":"npm run build && npm pack","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"alexander.k","email":"dif.kae@gmail.com"},"repository":{"url":"git+https://github.com/kucherenko-ae/event-delegator.git","type":"git"},"_npmVersion":"11.4.2","description":"A tiny library for event delegation","directories":{},"_nodeVersion":"24.3.0","browserslist":["defaults"],"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.4.0","@eslint/js":"^9.37.0","typescript":"^5.9.3","neostandard":"^0.12.2","typescript-eslint":"^8.46.0"},"_npmOperationalInternal":{"tmp":"tmp/event-delegator_0.2.3_1760091151088_0.26484949100059674","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alexander.k/event-delegator","version":"0.3.0","license":"MIT","author":{"name":"Alexander Kucherenko"},"homepage":"https://github.com/kucherenko-ae/event-delegator#readme","bugs":{"url":"https://github.com/kucherenko-ae/event-delegator/issues"},"description":"A tiny library for event delegation","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./utils/parseParams":{"import":"./dist/utils/parseParams.js","types":"./dist/utils/parseParams.d.ts"},"./utils/parseValue":{"import":"./dist/utils/parseValue.js","types":"./dist/utils/parseValue.d.ts"}},"scripts":{"build":"tsc","pack":"npm run build && npm pack","prepare":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/kucherenko-ae/event-delegator.git"},"browserslist":["defaults"],"keywords":["events","delegation","event-delegation","dom","javascript","typescript","library"],"devDependencies":{"@eslint/js":"^9.37.0","eslint":"^9.26.0","globals":"^16.4.0","neostandard":"^0.12.2","typescript":"^5.9.3","typescript-eslint":"^8.46.0"},"_id":"@alexander.k/event-delegator@0.3.0","gitHead":"fb656baea58940d51f2b89e02851c36904175565","_nodeVersion":"24.3.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-zNeeoxXX2x6KySOHE+UJA4LdqC/UbLHZG0tswMMBnDS5tOU/DyOMCZJ1+Ttf8QuccpvB9aPhTbGFjSAvE45g6g==","shasum":"a7471f96670d32ca6f41cdc3c20d6c0f6307da77","tarball":"https://registry.npmjs.org/@alexander.k/event-delegator/-/event-delegator-0.3.0.tgz","fileCount":32,"unpackedSize":17442,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHpEUdFRi9gNPvkT+m1Tk9S8DJg1YBlrzDmmhZ0g8IhEAiEA8blhkHjO9cCgZ7T37vUBaokb2nDnKfs+s+3iOXLDdsY="}]},"_npmUser":{"name":"alexander.k","email":"dif.kae@gmail.com"},"directories":{},"maintainers":[{"name":"alexander.k","email":"dif.kae@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/event-delegator_0.3.0_1760367244739_0.48034987019288855"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-10T09:27:21.952Z","modified":"2025-10-13T14:54:05.134Z","0.1.0":"2025-10-10T09:27:22.240Z","0.2.0":"2025-10-10T09:38:24.515Z","0.2.1":"2025-10-10T09:54:28.689Z","0.2.2":"2025-10-10T10:02:26.661Z","0.2.3":"2025-10-10T10:12:31.291Z","0.3.0":"2025-10-13T14:54:04.923Z"},"bugs":{"url":"https://github.com/kucherenko-ae/event-delegator/issues"},"author":{"name":"Alexander Kucherenko"},"license":"MIT","homepage":"https://github.com/kucherenko-ae/event-delegator#readme","keywords":["events","delegation","event-delegation","dom","javascript","typescript","library"],"repository":{"type":"git","url":"git+https://github.com/kucherenko-ae/event-delegator.git"},"description":"A tiny library for event delegation","maintainers":[{"name":"alexander.k","email":"dif.kae@gmail.com"}],"readme":"# Event Delegator\n\nA tiny TypeScript library for DOM event delegation with powerful action dispatching to web components.\n\n## Features\n\n- 🚀 **Lightweight** - minimal footprint, no dependencies\n- 🎯 **Event Delegation** - efficient event handling using event delegation pattern\n- 🔧 **Web Components** - seamless integration with custom web components\n- 🏃 **Performance** - sync/async execution modes\n- 🛡️ **TypeScript** - full TypeScript support with type safety\n- 🔌 **Interceptors** - custom event handling logic\n\n## Installation\n\n```bash\nnpm install @alexander.k/event-delegator\n```\n\n## Quick Start\n\n```typescript\nimport { eventDelegator } from '@alexander.k/event-delegator'\n\n// Initialize event delegation for click events\neventDelegator({\n  events: ['click']\n})\n```\n\n## Configuration\n\n```typescript\neventDelegator({\n  events: ['click', 'input', 'change'], // Events to listen for\n  capture: true,                        // Use capture phase\n  attributePrefix: 'data-ed-',         // Custom attribute prefix\n  interceptors: [                      // Custom interceptors\n    ({ target, method, params, element }) => {\n      // Log all actions\n      console.log(`Action: ${target} -> ${method}(${params})`)\n      \n      // Access triggering element when available\n      if (element) {\n        console.log('Triggered by:', element.tagName, element.id || element.className)\n      }\n      \n      // Handle special cases\n      if (target === 'location' && method === 'navigate') {\n        // Custom navigation logic\n        window.location.href = params\n        return true // Prevent default handling\n      }\n      \n      return false // Continue with default handling\n    }\n  ]\n})\n```\n\n## Action Syntax\n\nActions follow the pattern: `-> selector/method/params`\n\n- **`selector`**: CSS selector or component name\n  - `component-name` - finds closest component with this tag name\n  - `#id` - finds element by ID\n  - `.class` - finds element by class\n  - `/` - current component (closest custom element)\n- **`method`**: method name to call on the target element/component\n- **`params`** (optional): comma-separated parameters to pass to the method\n\n### Flags:\n- `prevent` - calls `event.preventDefault()`\n- `stop` - calls `event.stopPropagation()`\n- `sync` - executes actions sequentially (awaits each)\n- `element` - passes the triggering element as first parameter to methods\n\n## Events example\n\n### Bubbling Events\n- `click`, `dblclick`, `contextmenu`\n- `input`, `change`, `submit`, `reset`, `select`\n- `keydown`, `keyup`\n- `pointerdown`, `pointerup`\n- `toggle`\n\n### Non-bubbling Events\n- `focusin`, `focusout`\n- `pointerenter`, `pointerleave`\n\n\n## Usage Examples\n\n### Basic Component Method Call\n\nCall the `update` method on the closest `dynamic-section` component:\n\n```html\n<button data-ed-click=\"-> dynamic-section/update\">Update Section</button>\n```\n\n### Internal Component Method\n\nCall a method within the current component (uses closest lookup):\n\n```html\n<button data-ed-click=\"-> /open\">Open</button>\n```\n\n### Multiple Actions\n\nExecute multiple actions in parallel (default) or sequentially (with `sync` flag):\n\n```html\n<button data-ed-click=\"\n  -> component-a/methodA\n  -> component-b/methodB\n  -> #specific-element/methodC\n\">Multiple Actions</button>\n```\n\n### Flags usage\n\nUse flags for event control and call multiple components:\n\n```html\n<button data-ed-click=\"\n  prevent, stop, sync\n  -> dynamic-section/preload\n  -> #dialog-modal/open\n\">Open Dialog</button>\n```\n\n### Sequential Execution with `sync` Flag\n\nEnsure actions are executed one after another, waiting for each to complete:\n\n```html\n<button data-ed-click=\"\n  sync\n  -> data-loader/fetch\n  -> chart-component/render\n  -> notification/show\n\">Load and Display Data</button>\n```\n\n### Element Access with `element` Flag\n\nPass the triggering element as the first parameter to methods:\n\n```html\n<custom-form-component>\n  <form data-ed-submit=\"prevent -> /submitForm\">\n    <!-- Checkbox state handling -->\n    <input type=\"checkbox\" data-ed-change=\"element -> /toggleDetailedForm\">\n\n    <!-- Notes -->\n    <fieldset hidden>\n      <textarea name=\"note_1\"></textarea>\n      <textarea name=\"note_2\"></textarea>\n      <!-- Any another fields -->\n    </fieldset>\n\n    <!-- Input validation on change -->\n    <input\n      type=\"email\" \n      data-ed-input=\"element -> /validate/email\" \n      placeholder=\"Enter email\"\n    >\n\n    <button type=\"submit\">Submit</button>\n  </form>\n</custom-form-component>\n```\n\nIn your web component:\n\n```typescript\nclass CustomFormComponent extends HTMLElement {\n  toggleDetailedForm = (triggerElement: Element) => {\n    const input = triggerElement as HTMLInputElement\n\n    console.log('Show detailed form: ', input.checked)\n\n    // Handler\n  }\n\n  validate = (element: Element, type: string) => {\n    const input = element as HTMLInputElement\n    const value = input.value\n\n    console.log(`Need to validate ${type}, current value: ${value}`)\n\n    // Validator\n  }\n\n  submitForm = () => {\n    console.log('Form submitting ...')\n\n    // Submit logic\n  }\n}\n```\n\n## Browser Support\n\n- Modern browsers with ES2018+ support\n- Custom Elements v1\n- Event delegation with capture/bubble phases\n\n## License\n\nMIT\n\n## Contributing\n\nIssues and pull requests are welcome on [GitHub](https://github.com/kucherenko-ae/event-delegator).","readmeFilename":"README.md"}