{"_id":"@dreamfusion/pollen-svelte","name":"@dreamfusion/pollen-svelte","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"@dreamfusion/pollen-svelte","version":"2.0.0","description":"Svelte stores for Pollen 2.0 reactive framework","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"tsc && vite build","package":"svelte-package"},"keywords":["svelte","stores","pollen","reactive","state-management"],"author":{"name":"dreamfusion"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bentrain/pollen.git"},"peerDependencies":{"@dreamfusion/pollen":"^2.0.0","svelte":"^4.0.0 || ^5.0.0"},"devDependencies":{"@sveltejs/package":"^2.0.0","@sveltejs/vite-plugin-svelte":"^3.0.0","svelte":"^4.2.0","typescript":"^5.3.0","vite":"^5.0.0","vite-plugin-dts":"^3.7.0"},"_id":"@dreamfusion/pollen-svelte@2.0.0","bugs":{"url":"https://github.com/bentrain/pollen/issues"},"homepage":"https://github.com/bentrain/pollen#readme","_nodeVersion":"22.13.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-BA5gc6Vza0mJcmUDBHINsb+6JWOca8Xn8mlbKo0saZ0o2nej9s+C8MaPVFAux2QEWbuEuxKdXQdxbHdOQjQwYA==","shasum":"55523caa153c4e89cb88928d9329d49740403bfe","tarball":"https://registry.npmjs.org/@dreamfusion/pollen-svelte/-/pollen-svelte-2.0.0.tgz","fileCount":6,"unpackedSize":21329,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHwiqv/GfFaxU2KlgSp4m4KD+sk5FrTdAwy+Xej8yRyJAiEA5WXVeXXA7xXhnm7YwdLo+WyhKXC/RJ3Gnz7ff+6ZrxM="}]},"_npmUser":{"name":"dreamfusion","email":"dream909@gmail.com"},"directories":{},"maintainers":[{"name":"dreamfusion","email":"dream909@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pollen-svelte_2.0.0_1764865242982_0.09372919311671901"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-04T16:20:42.823Z","2.0.0":"2025-12-04T16:20:43.103Z","modified":"2025-12-04T16:20:43.450Z"},"maintainers":[{"name":"dreamfusion","email":"dream909@gmail.com"}],"description":"Svelte stores for Pollen 2.0 reactive framework","homepage":"https://github.com/bentrain/pollen#readme","keywords":["svelte","stores","pollen","reactive","state-management"],"repository":{"type":"git","url":"git+https://github.com/bentrain/pollen.git"},"author":{"name":"dreamfusion"},"bugs":{"url":"https://github.com/bentrain/pollen/issues"},"license":"MIT","readme":"# @dreamfusion/pollen-svelte\n\nSvelte stores for [Pollen 2.0](https://github.com/bentrain/pollen) reactive framework.\n\n## Installation\n\n```bash\nnpm install @dreamfusion/pollen @dreamfusion/pollen-svelte\n```\n\n## Quick Start\n\n```svelte\n<script>\n  import { createCounter, createStore, createDebounce } from '@dreamfusion/pollen-svelte';\n  \n  const { value, increment, decrement, reset } = createCounter(0, 1);\n  \n  const query = createStore('');\n  const debouncedQuery = createDebounce(query, 500);\n</script>\n\n<h1>{$value}</h1>\n<button on:click={increment}>+</button>\n<button on:click={decrement}>-</button>\n<button on:click={reset}>Reset</button>\n\n<input bind:value={$query} placeholder=\"Search...\" />\n<p>Searching for: {$debouncedQuery}</p>\n```\n\n## API\n\n### createPollen\n\nCreate a pollinated object.\n\n```svelte\n<script>\n  import { createPollen } from '@dreamfusion/pollen-svelte';\n  \n  const state = createPollen(() => ({}), {\n    count: {\n      type: 'number',\n      get: () => 0,\n      set: (v) => {}\n    }\n  });\n</script>\n```\n\n### nodeStore\n\nCreate a writable Svelte store from a Pollen node.\n\n```svelte\n<script>\n  import { nodeStore } from '@dreamfusion/pollen-svelte';\n  \n  const value = nodeStore(pollinated, 'nodeName');\n</script>\n\n<input bind:value={$value} />\n```\n\n### readableNodeStore\n\nCreate a readable Svelte store from a Pollen node.\n\n```svelte\n<script>\n  import { readableNodeStore } from '@dreamfusion/pollen-svelte';\n  \n  const value = readableNodeStore(pollinated, 'nodeName');\n</script>\n\n<p>{$value}</p>\n```\n\n### nodeStores\n\nCreate stores for multiple nodes.\n\n```svelte\n<script>\n  import { nodeStores } from '@dreamfusion/pollen-svelte';\n  \n  const { count, name, active } = nodeStores(pollinated, ['count', 'name', 'active']);\n</script>\n```\n\n### createConnection\n\nCreate a connection between two pollinated objects.\n\n```svelte\n<script>\n  import { onDestroy } from 'svelte';\n  import { createConnection } from '@dreamfusion/pollen-svelte';\n  \n  const disconnect = createConnection(source, 'output', target, 'input', (v) => v * 2);\n  \n  onDestroy(disconnect);\n</script>\n```\n\n### createFactory\n\nCreate a factory component.\n\n```svelte\n<script>\n  import { createFactory } from '@dreamfusion/pollen-svelte';\n  \n  const counter = createFactory('logic.counter');\n</script>\n```\n\n### createCounter\n\nCreate a counter with increment, decrement, and reset.\n\n```svelte\n<script>\n  import { createCounter } from '@dreamfusion/pollen-svelte';\n  \n  const { value, increment, decrement, reset } = createCounter(0, 1);\n</script>\n\n<h1>{$value}</h1>\n<button on:click={increment}>+</button>\n<button on:click={decrement}>-</button>\n<button on:click={reset}>Reset</button>\n```\n\n### createStore\n\nCreate a simple value store.\n\n```svelte\n<script>\n  import { createStore } from '@dreamfusion/pollen-svelte';\n  \n  const value = createStore(initialValue);\n</script>\n\n<input bind:value={$value} />\n```\n\n### createDebounce\n\nCreate a debounced store.\n\n```svelte\n<script>\n  import { writable } from 'svelte/store';\n  import { createDebounce } from '@dreamfusion/pollen-svelte';\n  \n  const searchQuery = writable('');\n  const debouncedQuery = createDebounce(searchQuery, 300);\n</script>\n\n<input bind:value={$searchQuery} />\n<p>Searching for: {$debouncedQuery}</p>\n```\n\n### createThrottle\n\nCreate a throttled store.\n\n```svelte\n<script>\n  import { writable } from 'svelte/store';\n  import { createThrottle } from '@dreamfusion/pollen-svelte';\n  \n  const scrollPosition = writable(0);\n  const throttledPosition = createThrottle(scrollPosition, 1000);\n</script>\n```\n\n### createTimer\n\nCreate a countdown/stopwatch timer.\n\n```svelte\n<script>\n  import { createTimer } from '@dreamfusion/pollen-svelte';\n  \n  const { elapsed, remaining, running, complete, start, stop, reset } = createTimer(60000);\n</script>\n\n<p>Elapsed: {$elapsed}ms</p>\n<p>Remaining: {$remaining}ms</p>\n<button on:click={start} disabled={$running}>Start</button>\n<button on:click={stop} disabled={!$running}>Stop</button>\n<button on:click={reset}>Reset</button>\n```\n\n## Complete Example\n\n```svelte\n<script>\n  import { onDestroy } from 'svelte';\n  import { createFactory, createConnection, readableNodeStore, setNode } from '@dreamfusion/pollen-svelte';\n  \n  // Create two counters\n  const counter1 = createFactory('logic.counter');\n  const counter2 = createFactory('logic.counter');\n  \n  // Connect counter1 to counter2 (double the value)\n  const disconnect = createConnection(counter1, 'value', counter2, 'value', (v) => v * 2);\n  \n  const value1 = readableNodeStore(counter1, 'value');\n  const value2 = readableNodeStore(counter2, 'value');\n  \n  function increment() {\n    setNode(counter1, 'add', true);\n  }\n  \n  onDestroy(disconnect);\n</script>\n\n<div>\n  <h2>Counter 1: {$value1}</h2>\n  <button on:click={increment}>+</button>\n</div>\n\n<div>\n  <h2>Counter 2 (2x): {$value2}</h2>\n</div>\n```\n\n## TypeScript Support\n\nFull TypeScript support with type inference:\n\n```svelte\n<script lang=\"ts\">\n  import { createPollen, nodeStore } from '@dreamfusion/pollen-svelte';\n  \n  interface MyState {\n    count: number;\n    name: string;\n  }\n  \n  const state = createPollen<MyState>(() => ({ count: 0, name: '' }), {\n    count: { type: 'number', get: () => 0, set: (v) => {} },\n    name: { type: 'string', get: () => '', set: (v) => {} }\n  });\n  \n  const count = nodeStore<number>(state, 'count');\n  const name = nodeStore<string>(state, 'name');\n</script>\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-ad53dcb2797c2c6bf2e6c58350de7392"}