{"id":13810968,"url":"https://github.com/vnphanquang/svelte-put","last_synced_at":"2025-05-14T02:04:53.110Z","repository":{"id":40997712,"uuid":"491367351","full_name":"vnphanquang/svelte-put","owner":"vnphanquang","description":"Useful svelte stuff to put in your projects","archived":false,"fork":false,"pushed_at":"2025-04-14T14:09:01.000Z","size":22223,"stargazers_count":925,"open_issues_count":11,"forks_count":26,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-04T08:06:13.544Z","etag":null,"topics":["action","component","npm","preprocess","svelte","svelte-action","svelte-kit","sveltejs","typescript","vite"],"latest_commit_sha":null,"homepage":"https://svelte-put.vnphanquang.com","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vnphanquang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"vnphanquang"}},"created_at":"2022-05-12T04:48:10.000Z","updated_at":"2025-05-02T23:47:49.000Z","dependencies_parsed_at":"2023-10-14T23:27:49.398Z","dependency_job_id":"84a90dbf-28ae-49df-8869-d70c41bf0b53","html_url":"https://github.com/vnphanquang/svelte-put","commit_stats":{"total_commits":1108,"total_committers":10,"mean_commits":110.8,"dds":"0.33754512635379064","last_synced_commit":"660df922e065ac0863998fecde5eadd849383997"},"previous_names":[],"tags_count":346,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnphanquang%2Fsvelte-put","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnphanquang%2Fsvelte-put/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnphanquang%2Fsvelte-put/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnphanquang%2Fsvelte-put/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vnphanquang","download_url":"https://codeload.github.com/vnphanquang/svelte-put/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052670,"owners_count":22006716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","component","npm","preprocess","svelte","svelte-action","svelte-kit","sveltejs","typescript","vite"],"created_at":"2024-08-04T03:00:33.850Z","updated_at":"2025-05-14T02:04:53.083Z","avatar_url":"https://github.com/vnphanquang.png","language":"Svelte","funding_links":["https://github.com/sponsors/vnphanquang"],"categories":["Sites"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# [@svelte-put][docs]\n\n[![MIT][license.badge]][license] [![MadeWithSvelte.com][madewithsvelte.badge]][madewithsvelte]\n\nUseful svelte stuff to put in your projects\n\n![svelte-put](https://github.com/vnphanquang/svelte-put/blob/main/sites/docs/src/lib/assets/images/og/svelte-put.jpg)\n\n\u003c/div\u003e\n\n\u003e [!NOTE]\n\u003e [Svelte 5](https://svelte.dev/blog/svelte-5-is-alive) is here! It is recommended that you migrate\n\u003e to Svelte 5 and upgrade to the next major versions of __svelte-put/*__ packages.\n\n## Documentation\n\n[See the dedicated documentation page here][docs].\n\n## Packages\n\n`@svelte-put` includes several packages that have self-managed release cycles, listed below. Check out their corresponding README for more details.\n\n| Package                                                                 | Short Description                                 | Version                                                               | Changelog                                              | Docs                                           |\n| ----------------------------------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------- |\n| [@svelte-put/async-stack][github.async-stack]                           | component \u0026 utilities for async-stack             | [![npm.async-stack.badge]][npm.async-stack]                           | [Changelog][github.async-stack.changelog]              | [![docs.badge]][docs.async-stack]              |\n| [@svelte-put/avatar][github.avatar]                                     | component \u0026 utilities for avatar                  | [![npm.avatar.badge]][npm.avatar]                                     | [Changelog][github.avatar.changelog]                   | [![docs.badge]][docs.avatar]                   |\n| [@svelte-put/clickoutside][github.clickoutside]                         | event for clicking outside node                   | [![npm.clickoutside.badge]][npm.clickoutside]                         | [Changelog][github.clickoutside.changelog]             | [![docs.badge]][docs.clickoutside]             |\n| [@svelte-put/cloudflare-turnstile][github.cloudflare-turnstile]         | event for clicking outside node                   | [![npm.cloudflare-turnstile.badge]][npm.cloudflare-turnstile]         | [Changelog][github.cloudflare-turnstile.changelog]     | [![docs.badge]][docs.cloudflare-turnstile]     |\n| [@svelte-put/copy][github.copy]                                         | copy text to clipboard                            | [![npm.copy.badge]][npm.copy]                                         | [Changelog][github.copy.changelog]                     | [![docs.badge]][docs.copy]                     |\n| [@svelte-put/dragscroll][github.dragscroll]                             | add drag-to-scroll behavior                       | [![npm.dragscroll.badge]][npm.dragscroll]                             | [Changelog][github.dragscroll.changelog]               | [![docs.badge]][docs.dragscroll]               |\n| [@svelte-put/intersect][github.intersect]                               | wrapper for IntersectionObserver                  | [![npm.intersect.badge]][npm.intersect]                               | [Changelog][github.intersect.changelog]                | [![docs.badge]][docs.intersect]                |\n| [@svelte-put/inline-svg][github.inline-svg]                             | dynamically inline SVGs                           | [![npm.inline-svg.badge]][npm.inline-svg]                             | [Changelog][github.inline-svg.changelog]               | [![docs.badge]][docs.inline-svg]               |\n| [@svelte-put/lockscroll][github.lockscroll]                             | lock scroll, hide scrollbar                       | [![npm.lockscroll.badge]][npm.lockscroll]                             | [Changelog][github.lockscroll.changelog]               | [![docs.badge]][docs.lockscroll]               |\n| [@svelte-put/movable][github.movable]                                   | move node on mousedown                            | [![npm.movable.badge]][npm.movable]                                   | [Changelog][github.movable.changelog]                  | [![docs.badge]][docs.movable]                  |\n| [@svelte-put/preaction][github.preaction]                               | move node on mousedown                            | [![npm.preaction.badge]][npm.preaction]                               | [Changelog][github.preaction.changelog]                | [![docs.badge]][docs.preaction]                |\n| [@svelte-put/popover][github.popover]                                   | move node on mousedown                            | [![npm.popover.badge]][npm.popover]                                   | [Changelog][github.popover.changelog]                  | [![docs.badge]][docs.popover]                  |\n| [@svelte-put/preprocess-auto-slug][github.preprocess-auto-slug]         | auto add `id` and anchor to selected nodes        | [![npm.preprocess-auto-slug.badge]][npm.preprocess-auto-slug]         | [Changelog][github.preprocess-auto-slug.changelog]     | [![docs.badge]][docs.preprocess-auto-slug]     |\n| [@svelte-put/preprocess-external-link][github.preprocess-external-link] | auto add `id` and anchor to selected nodes        | [![npm.preprocess-external-link.badge]][npm.preprocess-external-link] | [Changelog][github.preprocess-external-link.changelog] | [![docs.badge]][docs.preprocess-external-link] |\n| [@svelte-put/qr][github.qr]                                             | render QR as `img` or `svg`                       | [![npm.qr.badge]][npm.qr]                                             | [Changelog][github.qr.changelog]                       | [![docs.badge]][docs.qr]                       |\n| [@svelte-put/resize][github.resize]                                     | wrapper for ResizeObserver                        | [![npm.resize.badge]][npm.resize]                                     | [Changelog][github.resize.changelog]                   | [![docs.badge]][docs.resize]                   |\n| [@svelte-put/shortcut][github.shortcut]                                 | add keyboard shortcuts to node                    | [![npm.shortcut.badge]][npm.shortcut]                                 | [Changelog][github.shortcut.changelog]                 | [![docs.badge]][docs.shortcut]                 |\n| [@svelte-put/toc][github.toc]                                           | action \u0026 utilities for building table of contents | [![npm.toc.badge]][npm.toc]                                           | [Changelog][github.toc.changelog]                      | [![docs.badge]][docs.toc]                      |\n\n\u003c!-- ### In the Pipeline\n\nThese are some packages that will be added in the future (as soon as I find time, and the implementation has matured \u0026 become generic enough).\n\n| Package                             | Category  | Short Description             | Status      | Docs        |\n| ----------------------------------- | --------- | ----------------------------- | ----------- | ----------- |\n\nNames for those packages may change. --\u003e\n\n## Contributing\n\nThis project is a monorepo using [turborepo] under the hood. Familiarity with [turborepo] is not required but encouraged.\n\nFor a quick start, run the script below at project root to see what commands are available.\n\n```bash\npnpm turbo\n```\n\n\u003c!-- github specifics --\u003e\n\n[github.contributing]: ./CONTRIBUTING.md\n[github.issues]: https://github.com/vnphanquang/svelte-put/issues?q=\n[github.async-stack]: https://github.com/vnphanquang/svelte-put/tree/main/packages/async-stack\n[github.async-stack.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/async-stack/CHANGELOG.md\n[github.avatar]: https://github.com/vnphanquang/svelte-put/tree/main/packages/avatar\n[github.avatar.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/avatar/CHANGELOG.md\n[github.clickoutside]: https://github.com/vnphanquang/svelte-put/tree/main/packages/clickoutside\n[github.clickoutside.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/clickoutside/CHANGELOG.md\n[github.cloudflare-turnstile]: https://github.com/vnphanquang/svelte-put/tree/main/packages/cloudflare-turnstile\n[github.cloudflare-turnstile.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/cloudflare-turnstile/CHANGELOG.md\n[github.copy]: https://github.com/vnphanquang/svelte-put/tree/main/packages/copy\n[github.copy.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/copy/CHANGELOG.md\n[github.dragscroll]: https://github.com/vnphanquang/svelte-put/tree/main/packages/dragscroll\n[github.dragscroll.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/dragscroll/CHANGELOG.md\n[github.intersect]: https://github.com/vnphanquang/svelte-put/tree/main/packages/intersect\n[github.intersect.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/intersect/CHANGELOG.md\n[github.inline-svg]: https://github.com/vnphanquang/svelte-put/tree/main/packages/inline-svg\n[github.inline-svg.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/inline-svg/CHANGELOG.md\n[github.lockscroll]: https://github.com/vnphanquang/svelte-put/tree/main/packages/lockscroll\n[github.lockscroll.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/lockscroll/CHANGELOG.md\n[github.movable]: https://github.com/vnphanquang/svelte-put/tree/main/packages/movable\n[github.movable.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/movable/CHANGELOG.md\n[github.preaction]: https://github.com/vnphanquang/svelte-put/tree/main/packages/preaction\n[github.preaction.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/preaction/CHANGELOG.md\n[github.popover]: https://github.com/vnphanquang/svelte-put/tree/main/packages/popover\n[github.popover.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/popover/CHANGELOG.md\n[github.preprocess-auto-slug]: https://github.com/vnphanquang/svelte-put/tree/main/packages/preprocess-auto-slug\n[github.preprocess-auto-slug.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/preprocess-auto-slug/CHANGELOG.md\n[github.preprocess-external-link]: https://github.com/vnphanquang/svelte-put/tree/main/packages/preprocess-external-link\n[github.preprocess-external-link.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/preprocess-external-link/CHANGELOG.md\n[github.qr]: https://github.com/vnphanquang/svelte-put/tree/main/packages/qr\n[github.qr.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/qr/CHANGELOG.md\n[github.resize]: https://github.com/vnphanquang/svelte-put/tree/main/packages/resize\n[github.resize.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/resize/CHANGELOG.md\n[github.shortcut]: https://github.com/vnphanquang/svelte-put/tree/main/packages/shortcut\n[github.shortcut.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/shortcut/CHANGELOG.md\n[github.toc]: https://github.com/vnphanquang/svelte-put/tree/main/packages/toc\n[github.toc.changelog]: https://github.com/vnphanquang/svelte-put/blob/main/packages/toc/CHANGELOG.md\n\n\u003c!-- heading badge --\u003e\n\n[license.badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[license]: ./LICENSE\n[madewithsvelte.badge]: https://madewithsvelte.com/storage/repo-shields/4070-shield.svg\n[madewithsvelte]: https://madewithsvelte.com/p/svelte-put/shield-link\n\n\u003c!-- npm --\u003e\n\n[npm.async-stack.badge]: https://img.shields.io/npm/v/@svelte-put/async-stack\n[npm.async-stack]: https://www.npmjs.com/package/@svelte-put/async-stack\n[npm.avatar.badge]: https://img.shields.io/npm/v/@svelte-put/avatar\n[npm.avatar]: https://www.npmjs.com/package/@svelte-put/avatar\n[npm.clickoutside.badge]: https://img.shields.io/npm/v/@svelte-put/clickoutside\n[npm.clickoutside]: https://www.npmjs.com/package/@svelte-put/clickoutside\n[npm.cloudflare-turnstile.badge]: https://img.shields.io/npm/v/@svelte-put/cloudflare-turnstile\n[npm.cloudflare-turnstile]: https://www.npmjs.com/package/@svelte-put/cloudflare-turnstile\n[npm.copy.badge]: https://img.shields.io/npm/v/@svelte-put/copy\n[npm.copy]: https://www.npmjs.com/package/@svelte-put/copy\n[npm.dragscroll.badge]: https://img.shields.io/npm/v/@svelte-put/dragscroll\n[npm.dragscroll]: https://www.npmjs.com/package/@svelte-put/dragscroll\n[npm.intersect.badge]: https://img.shields.io/npm/v/@svelte-put/intersect\n[npm.intersect]: https://www.npmjs.com/package/@svelte-put/intersect\n[npm.inline-svg.badge]: https://img.shields.io/npm/v/@svelte-put/inline-svg\n[npm.inline-svg]: https://www.npmjs.com/package/@svelte-put/inline-svg\n[npm.lockscroll.badge]: https://img.shields.io/npm/v/@svelte-put/lockscroll\n[npm.lockscroll]: https://www.npmjs.com/package/@svelte-put/lockscroll\n[npm.movable.badge]: https://img.shields.io/npm/v/@svelte-put/movable\n[npm.movable]: https://www.npmjs.com/package/@svelte-put/movable\n[npm.popover.badge]: https://img.shields.io/npm/v/@svelte-put/popover\n[npm.popover]: https://www.npmjs.com/package/@svelte-put/popover\n[npm.preaction.badge]: https://img.shields.io/npm/v/@svelte-put/preaction\n[npm.preaction]: https://www.npmjs.com/package/@svelte-put/preaction\n[npm.preprocess-auto-slug.badge]: https://img.shields.io/npm/v/@svelte-put/preprocess-auto-slug\n[npm.preprocess-auto-slug]: https://www.npmjs.com/package/@svelte-put/preprocess-auto-slug\n[npm.preprocess-external-link.badge]: https://img.shields.io/npm/v/@svelte-put/preprocess-external-link\n[npm.preprocess-external-link]: https://www.npmjs.com/package/@svelte-put/preprocess-external-link\n[npm.qr.badge]: https://img.shields.io/npm/v/@svelte-put/qr\n[npm.qr]: https://www.npmjs.com/package/@svelte-put/qr\n[npm.resize.badge]: https://img.shields.io/npm/v/@svelte-put/resize\n[npm.resize]: https://www.npmjs.com/package/@svelte-put/resize\n[npm.shortcut.badge]: https://img.shields.io/npm/v/@svelte-put/shortcut\n[npm.shortcut]: https://www.npmjs.com/package/@svelte-put/shortcut\n[npm.toc.badge]: https://img.shields.io/npm/v/@svelte-put/toc\n[npm.toc]: https://www.npmjs.com/package/@svelte-put/toc\n\n\u003c!-- svelte REPL --\u003e\n\n[turborepo]: https://turborepo.org/\n\n\u003c!-- docs linking --\u003e\n\n[docs]: https://svelte-put.vnphanquang.com\n[docs.async-stack]: https://svelte-put.vnphanquang.com/docs/async-stack\n[docs.avatar]: https://svelte-put.vnphanquang.com/docs/avatar\n[docs.clickoutside]: https://svelte-put.vnphanquang.com/docs/clickoutside\n[docs.cloudflare-turnstile]: https://svelte-put.vnphanquang.com/docs/cloudflare-turnstile\n[docs.copy]: https://svelte-put.vnphanquang.com/docs/copy\n[docs.dragscroll]: https://svelte-put.vnphanquang.com/docs/dragscroll\n[docs.intersect]: https://svelte-put.vnphanquang.com/docs/intersect\n[docs.inline-svg]: https://svelte-put.vnphanquang.com/docs/inline-svg\n[docs.lockscroll]: https://svelte-put.vnphanquang.com/docs/lockscroll\n[docs.movable]: https://svelte-put.vnphanquang.com/docs/movable\n[docs.preaction]: https://svelte-put.vnphanquang.com/docs/preaction\n[docs.popover]: https://svelte-put.vnphanquang.com/docs/popover\n[docs.preprocess-auto-slug]: https://svelte-put.vnphanquang.com/docs/preprocess-auto-slug\n[docs.preprocess-external-link]: https://svelte-put.vnphanquang.com/docs/preprocess-external-link\n[docs.qr]: https://svelte-put.vnphanquang.com/docs/qr\n[docs.resize]: https://svelte-put.vnphanquang.com/docs/resize\n[docs.shortcut]: https://svelte-put.vnphanquang.com/docs/shortcut\n[docs.toc]: https://svelte-put.vnphanquang.com/docs/toc\n[docs.badge]: https://img.shields.io/badge/-Docs%20Site-blue\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvnphanquang%2Fsvelte-put","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvnphanquang%2Fsvelte-put","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvnphanquang%2Fsvelte-put/lists"}