{"_id":"define-state","_rev":"8-60ae1b00d2040b0b7a2d67e291b573f5","name":"define-state","description":"Define stateful property on an object","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"define-state","version":"1.0.0","description":"Define stateful property on an object","main":"index.js","files":["index.js"],"scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/dfcreative/define-state"},"keywords":["state","st8","stateful","defineProperty","object"],"dependencies":{"st8":"latest"},"author":{"name":"Deema Ywanov"},"license":"MIT","bugs":{"url":"https://github.com/dfcreative/define-state/issues"},"homepage":"https://github.com/dfcreative/define-state","gitHead":"429beb93bb0e2c23e3e5de2dc61d42d23dd9e20a","_id":"define-state@1.0.0","_shasum":"9a362c82709273a5e6519b00c904200b666fc331","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"dfcreative","email":"df.creative@gmail.com"},"maintainers":[{"name":"dfcreative","email":"df.creative@gmail.com"}],"dist":{"shasum":"9a362c82709273a5e6519b00c904200b666fc331","tarball":"https://registry.npmjs.org/define-state/-/define-state-1.0.0.tgz","integrity":"sha512-MFUUqoPgGmFThcB1LFu6K9bGcey+Fnp3wXQbEPGX1U90IG8B4xI2mfQgijkaa4EizMTaV0UwyRU441A+c8gaUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBD4dc+K/T+Qg+8xR4coXv8NrNUHGKsgpEJJaPsMfYhhAiEA9WO83RL7aXuR/SFtSjNJBGd0X0acXZodoQN2LhPZ8Vc="}]},"directories":{},"deprecated":"Use st8 directly, just define object property manually, see readme"},"1.0.1":{"name":"define-state","version":"1.0.1","description":"Define stateful property on an object","main":"index.js","files":["index.js"],"scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/dfcreative/define-state"},"keywords":["state","st8","stateful","defineProperty","object"],"dependencies":{"st8":"latest"},"devDependencies":{"mocha":"latest"},"author":{"name":"Deema Ywanov"},"license":"MIT","bugs":{"url":"https://github.com/dfcreative/define-state/issues"},"homepage":"https://github.com/dfcreative/define-state","gitHead":"d5050204b40143e52012012f92d8a9502800e077","_id":"define-state@1.0.1","_shasum":"8e2b81fda97b1f634876cf172b251e48661e2df0","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"dfcreative","email":"df.creative@gmail.com"},"maintainers":[{"name":"dfcreative","email":"df.creative@gmail.com"}],"dist":{"shasum":"8e2b81fda97b1f634876cf172b251e48661e2df0","tarball":"https://registry.npmjs.org/define-state/-/define-state-1.0.1.tgz","integrity":"sha512-6fv54dZTN90Z2+MwW+d7YoxzfINfVe3hnYoP8P4kO4tK/wv4bnqb8F1w3omcXjsBUNmVias0iY2eIgVWlLhY6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChxkdxhGi1SOqhvIcmlGdEzFrMZFpSXKSiBOB2isINMgIgC+Z67JWK9MycMiac9pq/ZxZ8anedjqoVdXbl+SU+dTQ="}]},"directories":{},"deprecated":"Use st8 directly, just define object property manually, see readme"},"1.1.0":{"name":"define-state","version":"1.1.0","description":"Define stateful property on an object","main":"index.js","files":["index.js"],"scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/dfcreative/define-state"},"keywords":["state","st8","stateful","defineProperty","object"],"dependencies":{"st8":"latest"},"devDependencies":{"mocha":"latest"},"author":{"name":"Deema Ywanov"},"license":"MIT","bugs":{"url":"https://github.com/dfcreative/define-state/issues"},"homepage":"https://github.com/dfcreative/define-state","gitHead":"aa93698e6afa6899599408dd3b56db6c96323892","_id":"define-state@1.1.0","_shasum":"57b890e550fbf91ea69dacff80125d5a7fe8dbdd","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"dfcreative","email":"df.creative@gmail.com"},"maintainers":[{"name":"dfcreative","email":"df.creative@gmail.com"}],"dist":{"shasum":"57b890e550fbf91ea69dacff80125d5a7fe8dbdd","tarball":"https://registry.npmjs.org/define-state/-/define-state-1.1.0.tgz","integrity":"sha512-MHO5tEIqmh/pr7Rq+okzUU+DnIxMkwQgrnDnHC9QwbwxEERdSzIjyi8ibcYb+9GhlJ2VGcPzuNF46XC0VF5J2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmPDJq4EhYImaJvq5UXL9Aj5p4WVUXeivcU+EQE3EIDAIgS5hqBxXdAFY+9Q6WJFLs6nH0YBfQNIeN6B8QmafoACU="}]},"directories":{},"deprecated":"Use st8 directly, just define object property manually, see readme"},"1.1.1":{"name":"define-state","version":"1.1.1","description":"Define stateful property on an object","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/dfcreative/define-state.git"},"keywords":["state","st8","stateful","defineProperty","object"],"dependencies":{"st8":"^2.1.0"},"devDependencies":{"mocha":"latest"},"author":{"name":"Deema Ywanov"},"license":"MIT","bugs":{"url":"https://github.com/dfcreative/define-state/issues"},"homepage":"https://github.com/dfcreative/define-state","gitHead":"a327025937687e741897487715db86e7ac8ffabe","_id":"define-state@1.1.1","_nodeVersion":"16.13.2","_npmVersion":"8.3.0","dist":{"integrity":"sha512-b9fG+bSqdgugDng/k2FRMlMd5C4OpvCowyyfQ8pB1T1Yz1o+PPFAyl1nWs0aKUlaa/YeNIMnIZri/9AamLKnRA==","shasum":"fe4e5fcfaf4870d55b00b766456876e677e2d9e0","tarball":"https://registry.npmjs.org/define-state/-/define-state-1.1.1.tgz","fileCount":3,"unpackedSize":3516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDEfSCRA9TVsSAnZWagAAIH4P/2ptjSbadGs0VaEc9Td3\nzd91nh9ZzSjuapmAUBYHPXqK5JcddRyeyAnJyLJ5iwjMSSnRcgqy5hwV+svV\nNDhXu0N4/gUSpF7B4ReIHr/tzchXa3MX4gjBOGS2gVsUbccgwo1duIK+k5Jw\nW9gHvUdpqcoZ8ub5z1FS85tFvmocUIMha9oGBEhyhozT+Sin7zb9bJZFj+id\nW/C5jMk8Jf6kRUe2FInMuBU69BIBrVGr0YKTO91+C2qQHdusUqls+Mhcvr7T\nh/qLvq0DtEXL/K7p/6Jw2uQR/9ud6JO3FeoH2WkRJ8RGcJ32NY+clZGb134B\nP7Asc3CGq+WfJTWm582pwiqVhu6CreJeKMlLGHmOnu+8ftuxssHWthuO9FAk\nIclt4XFDhlrA2/j+jimynId5hO4rfcVtyIT25tek9yWCxuGXyi1Q6qdIZi9i\nJNvvaqSQhcBDd7KAZ5DIHZj3QnUMrtSyAjxmAUr0Pd2mAsxi4iiw9EJwAFN2\nGJ9u0+ozvTluZYGse8udzFWYEqG+hb/+Kdzl4mXqBoxTkQnlwY35BGJEXTLm\nsh5s3C06WslQRVg5HoKlX1ap0XurXVnhuvh/tRlmbJu7EBmbZYzLhB5lcLss\nmVe4MXBfv5kowYXsUqrnPLxchvKYXxCXqjlvQeOKtr2sIz/+eZug0eeHmYcW\nBwwG\r\n=m+vR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEaCOpgPKUm6HTCDTfAzjC+nXtpnFWvsSDbwkztykKyjAiEAwE6xmKijIbI11KBsswkL9HU2gu6wgClsqstai35d0yU="}]},"_npmUser":{"name":"dfcreative","email":"df.creative@gmail.com"},"directories":{},"maintainers":[{"name":"dfcreative","email":"df.creative@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/define-state_1.1.1_1644971985854_0.22718476772421625"},"_hasShrinkwrap":false}},"readme":"# define state\r\n\r\n**DEPRECATION NOTICE**\r\n\r\nJust use [st8](https://ghub.io/st8) directly as:\r\n\r\n```js\r\nimport State from 'st8'\r\n\r\nvar state = new State({\r\n\ta(){\r\n\t\t// onenter\r\n\t\tthis === target //true\r\n\t},\r\n\t\r\n\tb(){\r\n\t\t// onenter\r\n\t\tthis === target //true\r\n\t\treturn () => {\r\n\t\t\t// onexit\r\n\t\t}\r\n\t}\r\n\t\r\n}, target);\r\n\r\nObject.defineProperty(target, property, {\r\n\tset: function (value) {\r\n\t\treturn state.set(value);\r\n\t},\r\n\tget: function () {\r\n\t\treturn state.get();\r\n\t}\r\n});\r\n```\r\n\r\n---\r\n\r\nDefine stateful property on class instance or any object. Behaves like `defineProperty`, but defines a state.\r\n\r\n`$ npm install define-state`\r\n\r\n```js\r\nvar defineState = require('define-state');\r\n\r\nfunction MyComponent (el) {\r\n\tthis.el = el;\r\n\r\n\t//define state on instance\r\n\tdefineState(this, 'state', this.state);\r\n\r\n\t//go to initial state\r\n\tthis.state = true;\r\n}\r\n\r\n//state declaration\r\nMyComponent.prototype.state = {\r\n\ttrue: {\r\n\t\tbefore: function () {\r\n\t\t\tthis.el.innerHTML = 'Hello world!';\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//create instance\r\nnew MyComponent(document.querySelector('#hello'));\r\n```\r\n\r\n\r\n## API\r\n\r\n### defineState(target, name, state, isFn?)\r\n\r\nDefine stateful property `name` on a `target` according to the `state` declaration (see [st8 API](http://npmjs.org/package/st8#API)). Pass optional `isFn` argument to define functional accessor instead of getter/setter, might be useful for IE8/ES3 environments or to define functional-style components, like [dialog](https://github.com/component/dialog).\r\n\r\n```js\r\ndefineState(target, 'visible', {\r\n\ttrue: function () {\r\n\t\tthis.removeAttribute('hidden');\r\n\t},\r\n\tfalse: function () {\r\n\t\tthis.setAttribute('hidden', true);\r\n\t}\r\n}, true);\r\n\r\ntarget.visible(false);\r\n```\r\n\r\n\r\n[![NPM](https://nodei.co/npm/define-state.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/define-state/)\r\n","maintainers":[{"name":"dfcreative","email":"df.creative@gmail.com"}],"time":{"modified":"2022-06-14T23:28:25.472Z","created":"2015-04-11T15:04:40.847Z","1.0.0":"2015-04-11T15:04:40.847Z","1.0.1":"2015-04-20T05:24:59.104Z","1.1.0":"2015-04-28T07:06:39.070Z","1.1.1":"2022-02-16T00:39:46.381Z"},"homepage":"https://github.com/dfcreative/define-state","keywords":["state","st8","stateful","defineProperty","object"],"repository":{"type":"git","url":"git+https://github.com/dfcreative/define-state.git"},"author":{"name":"Deema Ywanov"},"bugs":{"url":"https://github.com/dfcreative/define-state/issues"},"license":"MIT","readmeFilename":"README.md"}