{"_id":"@akwaba/events","_rev":"1-ecab65028f3f13094f7747e588c21155","name":"@akwaba/events","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@akwaba/events","description":"A cross-browser event module","author":{"name":"Daniel Ziaoure","email":"daniel@akwabasystems.com"},"version":"1.0.0","keywords":["akwaba","Events"],"scripts":{"build":"webpack --mode=production --config webpack.config.js"},"dependencies":{"@akwaba/eslint-config":"^1.1.0","@akwaba/object-extensions":"^1.1.2","@akwaba/html":"^1.0.1","@akwaba/dom":"^1.1.0"},"devDependencies":{"babel-core":"^6.4.0","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-preset-es2015":"^6.14.0","babel-preset-stage-2":"^6.24.1","clean-webpack-plugin":"^0.1.16","eslint":"^5.4.0","eslint-loader":"^2.1.0","eslint-plugin-react":"7.11.1","webpack":"4.29.3","webpack-cli":"^3.1.0","webpack-sources":"^0.2.3"},"engines":{"node":">= 4.2.0"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/akwabasystems/events.git"},"gitHead":"69ad5e046adba328be6e2c3fff247f10dd4520b8","bugs":{"url":"https://github.com/akwabasystems/events/issues"},"homepage":"https://github.com/akwabasystems/events#readme","_id":"@akwaba/events@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"caprica","email":"daniel@akwabasystems.com"},"dist":{"integrity":"sha512-ArGhQfl3/a/XjLWnydnCVIGv5B67ST87iuBQUGU2IFA/yKfMuu8qvZIrIwTOng12JnSBko2pnMOORrwu/OBuIQ==","shasum":"564f6f8b89fcbeae72006d5c1413796c3fc9db89","tarball":"https://registry.npmjs.org/@akwaba/events/-/events-1.0.0.tgz","fileCount":13,"unpackedSize":25195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxgfxCRA9TVsSAnZWagAAHj4P/19JyrZ92YD9xb5kQ4h9\nt0OHlMyoX9TvADOdhIW/eQuVJI4pBokI9+JcgE3Cgb8LVAofLz3O28DZURT8\nBe2WSFc/CkbKw9oQ/uA4ODxjeDxEM9ucMMO+GD1Y1dJkV089Ap6ZJ0fzHzHE\nTw0SObp9s+4LrPMq5RDL02ILoQ8izFCOsLQmQZVNlgZ1j8XkS/IcbK4asd7H\nw8GoRauznnqGdwDw5errK8+zltxswHwyhgKx1w/1THK/TZnn7Rl8IDK7aqhW\nqd4VmeUcUHC2DZQXrZaQK7n3fGX0In9i236/PUedPntJIHyyM+90sfhiSDLX\n+RRYfYcu0moq6HAyg3vuL+nsTaqc9QcE6cEDSzDnOMsFZ7vCfMMPLw45Agxg\nCiGSVqlrihjjw7QYWsq4ZlsbP4JYULKcmZ83Ncq9djYVy3zqxtuj6EIfJ7SY\n9zr3QDf020pCKfbzAepQ+qdQP94CfTorzNdrotCRgcgQLYLulQiWJy1dFLkY\nTCiJkdY1oxDlNvd9sgVB7LbA1xGtgda+YK8RsTqbbTB+C+xi1C4YQ+pXBHKF\nAVXnUpXR/5mEad8vTIqyZ7gKLuJrfUseTObadIKXI0VKnjdSjrfkavOIXIlo\nn1jqVSLNcnGxd8UoR0e2o6zSnreuPObaw/83hKiY7DaVA49digil2/WcWqpy\n3/ed\r\n=Kc4O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1sQCVVYNqRF0tCJV4Pmu4dc4cH7VPElxAiOM78NwFbAiEA6/8FwqctlOPpF0InFCz1Qz3jkoz/1K5MQsWmgZCb/VQ="}]},"maintainers":[{"name":"caprica","email":"daniel@akwabasystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/events_1.0.0_1556482033105_0.5094871272527779"},"_hasShrinkwrap":false}},"time":{"created":"2019-04-28T20:07:13.104Z","1.0.0":"2019-04-28T20:07:13.253Z","modified":"2022-04-04T12:31:49.141Z"},"maintainers":[{"name":"caprica","email":"daniel@akwabasystems.com"}],"description":"A cross-browser event module","homepage":"https://github.com/akwabasystems/events#readme","keywords":["akwaba","Events"],"repository":{"type":"git","url":"git+https://github.com/akwabasystems/events.git"},"author":{"name":"Daniel Ziaoure","email":"daniel@akwabasystems.com"},"bugs":{"url":"https://github.com/akwabasystems/events/issues"},"license":"MIT","readme":"# @akwaba/events\n\n## Overview\n\nA cross-browser event module\n\nPublished on [npmjs.com](https://www.npmjs.com) as `@akwaba/events`.\n\n\n## API\n\n- `add(element, eventName, handler)` - Registers either a normal event or a custom event on the given element\n- `remove(element, eventName, handler)` - Removes either a normal event or a custom event from the given element\n- `fire(element, eventName, data, bubbles = true)` - Fires a custom event on the given DOM element\n- `stop(event)` - Cancels the default action for this event and prevents it from bubbling\n- `isCustomEvent(eventName)` - Returns true if the given event name is that of a custom event; otherwise, returns false\n- `element(event)` - Returns the DOM element on which the event occured\n- `pointer(event)` - Returns an object that contains the absolute horizontal and vertical coordinates for the event\n\n\n### Usage\n\n```js\n\nimport Event from '@akwaba/events';\n\n/** Observing the \"dom:loaded\" custom event */\nEvent.add(document, \"data:loaded\", (event) => console.log(\"DOM ready!\"));\n\n/**\n * Attaching a regular event handler, assuming the following markup\n * \n * <ul id=\"navigation>\n *    <li><a href=\"/\">Home</a></li>\n *    <li><a href=\"/contact\">Contact Us</a></li>\n * </ul>\n */\nconst onNavigation = (event) => console.log(\"Handling navigation...\");\nEvent.add(\"navigation\", \"click\", onNavigation);\n\n\n/** \n * Firing and handling a custom event (i.e. \"login:request\")\n * \n * 1. Inside the sender\n */\nEvent.fire(document, \"login:request\", {\n    username: \"hsimpson\"\n});\n\n/** 2. Inside the receiver (i.e. document) */\nEvent.add(document, \"login:request\", (event) => console.log(event.model.username));\n\n\n/** \n * Removing the previously attached handler\n */\nEvent.remove(\"navigation\", \"click\", onNavigation);\n\n\n/** \n * Observing keyboard events\n * \n * First, a binding of key code (with possible modifiers) and handlers must be defined\n */\nconst bindings = {\n    \"L\": (event) => console.log(\"Letter 'L' detected\"),\n    \"ctrl_x\": (event) => console.log(\"CTRL+X detected\")\n}\n\n/** Next, an instance of a `KeyMap` must be instantiated and intialized with the bindings */\nconst keyMap = new Event.KeyMap(bindings);\n\n/** Finally, the instance is attached to an element, usually the document */\nkeyMap.attachToElement(document);\n\n// Console log message are now displayed whenever the \"L\" key or \"CTRL+X\" key combinations are pressed\n\n```\n\n\n## License\nCopyright (c) 2019 Akwaba Systems, Inc.\n","readmeFilename":"README.md"}