{"_id":"@atomico/channel","_rev":"2-7f6cc8f6679fd35f64550754cc5915d1","name":"@atomico/channel","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"name":"@atomico/channel","version":"0.0.0","description":"sharing states between WebComponents or DOM easily.","main":"./src/channel.js","module":"./src/channel.js","types":"./channel.d.ts","exports":{".":"./src/channel.js"},"scripts":{"types":"tsc","test":"wtr test/**/*.test.js --node-resolve","prepublishOnly":"npm run test && npm run types"},"keywords":[],"devDependencies":{"@esm-bundle/chai":"^4.3.4","@web/test-runner":"^0.13.11","typescript":"^4.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/atomicojs/channel.git"},"author":{"name":"UpperCod"},"license":"MIT","publishConfig":{"access":"public"},"bugs":{"url":"https://github.com/atomicojs/channel/issues"},"homepage":"https://github.com/atomicojs/channel#readme","gitHead":"2d470e8c9b64b980bc70b4f229b6631e7db3f828","_id":"@atomico/channel@0.0.0","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"integrity":"sha512-o5l6xqhgYTYtptP4Kz00IOwrpjBlaVKMKOEcCOAbpOQ/ijiC1vUieFD2escYEAV3GLgmC38mjJttBf9OFlJIuQ==","shasum":"ab859ab33cf6e5e3f9f391eaaa2ba325572b6d7f","tarball":"https://registry.npmjs.org/@atomico/channel/-/channel-0.0.0.tgz","fileCount":5,"unpackedSize":5661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxr1fCRA9TVsSAnZWagAAGhQP/jYHtYs1fXeiK/CfPoGn\nx9wuEUK48ialyELQ8WVJ4i3zPQyfIHoHy015lXs8YRwsb15/CT+jU6vQDmnA\nXoeaQ1pmh+GzLczp0f5FBc0fv+ae2nEwhHCi9O6FCtDeTuE8klMsjZKg1jqn\nwCz7jelt4xD3FjRbmYVcfFAxs4BRT+fK5AKnhuI1V7G6HpgfIZ5azEvz3e5F\nAxO0q/WGlsN/kxZAFmBDRDdbxXi+1AD13ki+lDrbmyOaa2l7LFoQhajD15+m\nvq6eHCBMScW29WNndrO0gp0ASMT0lGAIeVCgna8M7GWBvOOOBjjS27aOv4Xj\nLw//RQeKAimul5x01FT2vSMgPxMMvRXpNWFM2dj17oL8k1wyPX4TDBd0Vud2\nCMnMrGz3wYdYl5O1Ng/v0fsNw0RRWiKLyMDADDUM7OB0lA0/KXNv0uRQK9in\nE9M/PdHp11ASN00LCTClgHJDrHs9+GMgKtl+1YERyYDis27JYxkH9XKCQPUG\nfkTs69ch4Vj80FNmFek7bY/fM6akH1wr9OJkoUpRnchegvwEe/oaIHiAUkqW\nDkf31jUeChQXoNUQ/Og9rOCzE5j0mnaV4TKabNebFi6vlY46lhrVRJPrgBhy\nzylHNOJUmuc3afT56k9kvt/ZeZiQNHR5nBswEf28j0XbaMBB2LOvCL1960rC\nrifP\r\n=G0rr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGSwPaLpOewgm/lSDOf3+LK+4ahtEkiWuFe7AoBIlXwcAiEAlTalXVz0h2W7g0GSygMgIITATXnKOAnk1n/TXWgZ6n0="}]},"_npmUser":{"name":"uppercod","email":"mtrujillo@outlook.cl"},"directories":{},"maintainers":[{"name":"uppercod","email":"mtrujillo@outlook.cl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/channel_0.0.0_1623637343297_0.04710387468972188"},"_hasShrinkwrap":false},"0.0.1":{"name":"@atomico/channel","version":"0.0.1","type":"module","description":"sharing states between WebComponents or DOM easily.","main":"./src/channel.js","module":"./src/channel.js","types":"./channel.d.ts","exports":{".":"./src/channel.js"},"scripts":{"types":"tsc","test":"wtr test/**/*.test.js --node-resolve","prepublishOnly":"npm run test && npm run types"},"keywords":[],"devDependencies":{"@esm-bundle/chai":"^4.3.4","@web/test-runner":"^0.13.11","typescript":"^4.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/atomicojs/channel.git"},"author":{"name":"UpperCod"},"license":"MIT","publishConfig":{"access":"public"},"bugs":{"url":"https://github.com/atomicojs/channel/issues"},"homepage":"https://github.com/atomicojs/channel#readme","gitHead":"c06c7e29956a48db4dba0a8413153f670135b3ce","_id":"@atomico/channel@0.0.1","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"integrity":"sha512-4sKzBHVrV6eG1HiifxwweuvNkNwvMWyb3EA9n0Civg3NZFOPWjPsAM9/BFt9HalPNExl49GXPpSVRgWILQiI+A==","shasum":"eec3f2c0126a525dae0dcda7ee5ab9b67af0fc25","tarball":"https://registry.npmjs.org/@atomico/channel/-/channel-0.0.1.tgz","fileCount":5,"unpackedSize":5861,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7i3dx7+Ggx1vr2RpFY27yZMqVx3gitCmoGTm26VAnLAiEA7OLagRevoymu/P11+TzfPNXxJECs7SIX9dsYcp6JzeY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJieC7IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqRAw//Tri5nVq2EdkyBV2I3MOrOWKyE8JKKHH68mgpy44wDR6yVpgA\r\n40JFuoz+RCw50Z7bv8yydhLikzIbG+4mXvM34yU8R9lNabhA+AJ0jsLo1FXS\r\nKZkz5K2ZCfimT/4Yy8RR0js67KwEY9yXBphhswKGB3QnOsKnTSqovfd0b7Ks\r\nVBhkJSA1QVB+vwImaxeLdXVG3ZRM1aIsVC75tCJDHTIaPp3bOO/jsDKSShb2\r\nYVnEQLAPghYrQoejED3C+6pK3+zRuXSRKeXjrOHdY7s9eJIrh33ui0DBCTV4\r\nj9KdXmZNNGDUWl2BGpg0Vt1TrhgP06FMHqTJn9Fm0QO/7sPruBorCwZqmIjo\r\n8TdeNOdsssnxWU3zFCPpD0vPxPJ2qLrhGPYJzm0/D5uoHSK5poSM+PxK4eMU\r\nK11+TkdhTk13weRucbUq++QCUuxvCYT9jvPoyLamdlbW6Zwo6KgfH+DU/Hu4\r\n99rvDK3jjt+xuuIbE2UcKZ/7lWDZTG/PBquoab8n6vo6qmVfpLVvmWMCu6CU\r\nogf582E/19f0HyJMrg2k05d/Aof663xFQQN+hPGblQozjGlnXIW8ytmz1BwQ\r\n4fmLZcmWfVkWkN54+jvN/7QpQ9lvV+F1ubjJvUtSsu/WKZKHQjfPsBa8uyXa\r\nzvWMU6gxhYoI+MSO61KhHhZmSHat2fvAM0U=\r\n=s+wb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"uppercod","email":"mtrujillo@outlook.cl"},"directories":{},"maintainers":[{"name":"uppercod","email":"mtrujillo@outlook.cl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/channel_0.0.1_1652043464323_0.9175720277387753"},"_hasShrinkwrap":false}},"time":{"created":"2021-06-14T02:22:23.101Z","0.0.0":"2021-06-14T02:22:23.439Z","modified":"2022-05-08T20:57:44.558Z","0.0.1":"2022-05-08T20:57:44.468Z"},"maintainers":[{"name":"uppercod","email":"mtrujillo@outlook.cl"}],"description":"sharing states between WebComponents or DOM easily.","homepage":"https://github.com/atomicojs/channel#readme","keywords":[],"repository":{"type":"git","url":"git+ssh://git@github.com/atomicojs/channel.git"},"author":{"name":"UpperCod"},"bugs":{"url":"https://github.com/atomicojs/channel/issues"},"license":"MIT","readme":"# @atomico/channel\n\n`@atomico/channel` allows sharing states between WebComponents or DOM easily.\n\n![Example](https://i.ibb.co/DfWvg85/Grupo-38.png)\n\nThis API is inspired by the objectives of React Context, but eliminates the complexity and is an agnostic implementation.\n\n## What is a channel?\n\nA channel is a sender and a receiver of status through the native event system of the DOM, a channel has the following logic:\n\n1. read the context of parent\n2. modify the context for children\n\n## Example\n\nThis is an example where the webcomponent subscribes to the parent node:\n\n```js\nimport { Channel } from \"@atomico/channel\";\n\nconst CHANNEL = \"MyChannel\";\n// Parent channel\nconst parentChannel = new Channel(document.body, CHANNEL);\n\nclass MyComponent extends HTMLElement {\n    constructor() {\n        super();\n        // Child channel\n        this.channel = new Channel(this, CHANNEL);\n    }\n    connectedcallback() {\n        this.channel.connected(\n            (data) => (this.textContent = JSON.stringify(data))\n        );\n    }\n    disconnectedCallback() {\n        this.channel.disconnect();\n    }\n}\n\n// Connect the channel to the native DOM event system\nparentChannel.connect();\n\nparentChannel.cast(\"I'm your father\");\n```\n\n## API\n\n### Channel()\n\n```js\nconst channel = new Channel(\n    // Element\n    host,\n    // string\n    \"idString\",\n    // associates the composed option to the event\n    // this allows bypassing the shadowDOM when connecting the channels\n    true\n);\n```\n\n### channel.connect()\n\n```js\nchannel.connect(optionalCallback);\n```\n\nWhere:\n\n1. `optionalCallback`: optional callback that allows to read the transmissions of the parent.\n\n### channel.disconect()\n\nRemove subscriptions\n\n### channel.cast()\n\nIssues a new broadcast to the child channels\n\n```js\nchannel.cast(10);\nchannel.cast({ data });\n```\n\nExecuting this method prevents any transmission from the parent from spreading to the children of this channel.\n","readmeFilename":"README.md"}