diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index 22ed36451..000000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Deploy demo pages - -# Controls when the workflow will run -on: - push: - branches: [main] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - - - uses: pnpm/action-setup@v2.2.4 - - - name: install - run: pnpm i - - - name: pages - run: pnpm run pages - - - name: deploy pages - uses: JamesIves/github-pages-deploy-action@v4.4.1 - with: - branch: gh-pages # The branch the action should deploy to. - folder: pages # The folder the action should deploy. diff --git a/.vscode/settings.json b/.vscode/settings.json index 5a25679cb..719975175 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,9 @@ { "typescript.tsdk": "node_modules\\typescript\\lib", + "cSpell.words": ["Biase", "deopt", "gzipped", "rehype"], "editor.codeActionsOnSave": { "source.fixAll.eslint": false }, - "cSpell.words": ["Biase", "deopt", "gzipped", "rehype"] + /* For allowing @apply and @tailwind custom rules in SCSS files */ + "scss.lint.unknownAtRules": "ignore" } diff --git a/README.md b/README.md index 262010f69..47eb3751c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![pnpm](https://img.shields.io/badge/maintained%20with-pnpm-cc00ff.svg?style=for-the-badge&logo=pnpm)](https://pnpm.io/) [![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/) -[![combined-downloads](https://img.shields.io/endpoint?style=for-the-badge&url=https://combined-npm-downloads.deno.dev/@solid-primitives/utils,@solid-primitives/broadcast-channel,@solid-primitives/context,@solid-primitives/deep,@solid-primitives/devices,@solid-primitives/event-dispatcher,@solid-primitives/event-props,@solid-primitives/fetch,@solid-primitives/filesystem,@solid-primitives/flux-store,@solid-primitives/fullscreen,@solid-primitives/idle,@solid-primitives/input-mask,@solid-primitives/keyed,@solid-primitives/lifecycle,@solid-primitives/marker,@solid-primitives/permission,@solid-primitives/platform,@solid-primitives/resource,@solid-primitives/scheduled,@solid-primitives/script-loader,@solid-primitives/selection,@solid-primitives/share,@solid-primitives/timer,@solid-primitives/transition-group,@solid-primitives/tween,@solid-primitives/workers)](https://dash.deno.com/playground/combined-npm-downloads) +[![combined-downloads](https://img.shields.io/endpoint?style=for-the-badge&url=https://combined-npm-downloads.deno.dev/@solid-primitives/utils,@solid-primitives/broadcast-channel,@solid-primitives/context,@solid-primitives/deep,@solid-primitives/devices,@solid-primitives/event-dispatcher,@solid-primitives/event-props,@solid-primitives/fetch,@solid-primitives/filesystem,@solid-primitives/flux-store,@solid-primitives/fullscreen,@solid-primitives/idle,@solid-primitives/input-mask,@solid-primitives/keyed,@solid-primitives/lifecycle,@solid-primitives/marker,@solid-primitives/permission,@solid-primitives/platform,@solid-primitives/resource,@solid-primitives/scheduled,@solid-primitives/script-loader,@solid-primitives/selection,@solid-primitives/share,@solid-primitives/start,@solid-primitives/timer,@solid-primitives/transition-group,@solid-primitives/tween,@solid-primitives/websocket,@solid-primitives/workers)](https://dash.deno.com/playground/combined-npm-downloads) A project that strives to develop high-quality, community contributed Solid primitives. All utilities are well tested and continuously maintained. Every contribution to the repository is checked for quality and maintained to the highest degree of excellence. The ultimate goal is to extend Solid's primary and secondary primitives with a set of tertiary primitives. @@ -60,6 +60,7 @@ The goal of Solid Primitives is to wrap client and server side functionality to |[fetch](https://github.com/solidjs-community/solid-primitives/tree/main/packages/fetch#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createFetch](https://github.com/solidjs-community/solid-primitives/tree/main/packages/fetch#createfetch)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/fetch?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/fetch)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/fetch?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/fetch)| |[graphql](https://github.com/solidjs-community/solid-primitives/tree/main/packages/graphql#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createGraphQLClient](https://github.com/solidjs-community/solid-primitives/tree/main/packages/graphql#creategraphqlclient)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/graphql?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/graphql)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/graphql?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/graphql)| |[stream](https://github.com/solidjs-community/solid-primitives/tree/main/packages/stream#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createStream](https://github.com/solidjs-community/solid-primitives/tree/main/packages/stream#createstream)
[createAmplitudeStream](https://github.com/solidjs-community/solid-primitives/tree/main/packages/stream#createamplitudestream)
[createMediaPermissionRequest](https://github.com/solidjs-community/solid-primitives/tree/main/packages/stream#createmediapermissionrequest)
[createAmplitudeFromStream](https://github.com/solidjs-community/solid-primitives/tree/main/packages/stream#createamplitudefromstream)
[createScreen](https://github.com/solidjs-community/solid-primitives/tree/main/packages/stream#createscreen)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/stream?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/stream)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/stream?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/stream)| +|[websocket](https://github.com/solidjs-community/solid-primitives/tree/main/packages/websocket#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[makeWS](https://github.com/solidjs-community/solid-primitives/tree/main/packages/websocket#makews)
[createWS](https://github.com/solidjs-community/solid-primitives/tree/main/packages/websocket#createws)
[createWSState](https://github.com/solidjs-community/solid-primitives/tree/main/packages/websocket#createwsstate)
[makeReconnectingWS](https://github.com/solidjs-community/solid-primitives/tree/main/packages/websocket#makereconnectingws)
[createReconnectingWS](https://github.com/solidjs-community/solid-primitives/tree/main/packages/websocket#createreconnectingws)
[makeHeartbeatWS](https://github.com/solidjs-community/solid-primitives/tree/main/packages/websocket#makeheartbeatws)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/websocket?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/websocket)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/websocket?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/websocket)| |

*Control Flow*

| |[context](https://github.com/solidjs-community/solid-primitives/tree/main/packages/context#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createContextProvider](https://github.com/solidjs-community/solid-primitives/tree/main/packages/context#createcontextprovider)
[MultiProvider](https://github.com/solidjs-community/solid-primitives/tree/main/packages/context#multiprovider)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/context?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/context)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/context?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/context)| |[jsx-tokenizer](https://github.com/solidjs-community/solid-primitives/tree/main/packages/jsx-tokenizer#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createTokenizer](https://github.com/solidjs-community/solid-primitives/tree/main/packages/jsx-tokenizer#createtokenizer)
[createToken](https://github.com/solidjs-community/solid-primitives/tree/main/packages/jsx-tokenizer#createtoken)
[resolveTokens](https://github.com/solidjs-community/solid-primitives/tree/main/packages/jsx-tokenizer#resolvetokens)
[isToken](https://github.com/solidjs-community/solid-primitives/tree/main/packages/jsx-tokenizer#istoken)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/jsx-tokenizer?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/jsx-tokenizer)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/jsx-tokenizer?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/jsx-tokenizer)| @@ -73,6 +74,7 @@ The goal of Solid Primitives is to wrap client and server side functionality to |[event-bus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/event-bus#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createEventBus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/event-bus#createeventbus)
[createEmitter](https://github.com/solidjs-community/solid-primitives/tree/main/packages/event-bus#createemitter)
[createEventHub](https://github.com/solidjs-community/solid-primitives/tree/main/packages/event-bus#createeventhub)
[createEventStack](https://github.com/solidjs-community/solid-primitives/tree/main/packages/event-bus#createeventstack)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/event-bus?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/event-bus)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/event-bus?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/event-bus)| |[event-dispatcher](https://github.com/solidjs-community/solid-primitives/tree/main/packages/event-dispatcher#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createEventDispatcher](https://github.com/solidjs-community/solid-primitives/tree/main/packages/event-dispatcher#createeventdispatcher)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/event-dispatcher?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/event-dispatcher)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/event-dispatcher?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/event-dispatcher)| |[flux-store](https://github.com/solidjs-community/solid-primitives/tree/main/packages/flux-store#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createFluxStore](https://github.com/solidjs-community/solid-primitives/tree/main/packages/flux-store#createfluxstore)
[createFluxFactory](https://github.com/solidjs-community/solid-primitives/tree/main/packages/flux-store#createfluxfactory)
[createActions](https://github.com/solidjs-community/solid-primitives/tree/main/packages/flux-store#createactions)
[createAction](https://github.com/solidjs-community/solid-primitives/tree/main/packages/flux-store#createaction)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/flux-store?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/flux-store)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/flux-store?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/flux-store)| +|[history](https://github.com/solidjs-community/solid-primitives/tree/main/packages/history#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createUndoHistory](https://github.com/solidjs-community/solid-primitives/tree/main/packages/history#createundohistory)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/history?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/history)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/history?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/history)| |[i18n](https://github.com/solidjs-community/solid-primitives/tree/main/packages/i18n#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createI18nContext](https://github.com/solidjs-community/solid-primitives/tree/main/packages/i18n#createi18ncontext)
[createChainedI18n](https://github.com/solidjs-community/solid-primitives/tree/main/packages/i18n#createchainedi18n)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/i18n?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/i18n)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/i18n?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/i18n)| |[platform](https://github.com/solidjs-community/solid-primitives/tree/main/packages/platform#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[List of variables](https://github.com/solidjs-community/solid-primitives/tree/main/packages/platform#list-of-variables)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/platform?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/platform)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/platform?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/platform)| |[promise](https://github.com/solidjs-community/solid-primitives/tree/main/packages/promise#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[promiseTimeout](https://github.com/solidjs-community/solid-primitives/tree/main/packages/promise#promisetimeout)
[raceTimeout](https://github.com/solidjs-community/solid-primitives/tree/main/packages/promise#racetimeout)
[until](https://github.com/solidjs-community/solid-primitives/tree/main/packages/promise#until)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/promise?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/promise)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/promise?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/promise)| @@ -86,7 +88,7 @@ The goal of Solid Primitives is to wrap client and server side functionality to |[immutable](https://github.com/solidjs-community/solid-primitives/tree/main/packages/immutable#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createImmutable](https://github.com/solidjs-community/solid-primitives/tree/main/packages/immutable#createimmutable)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/immutable?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/immutable)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/immutable?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/immutable)| |[lifecycle](https://github.com/solidjs-community/solid-primitives/tree/main/packages/lifecycle#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createIsMounted](https://github.com/solidjs-community/solid-primitives/tree/main/packages/lifecycle#createismounted)
[isHydrated](https://github.com/solidjs-community/solid-primitives/tree/main/packages/lifecycle#ishydrated)
[onConnect](https://github.com/solidjs-community/solid-primitives/tree/main/packages/lifecycle#onconnect)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/lifecycle?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/lifecycle)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/lifecycle?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/lifecycle)| |[map](https://github.com/solidjs-community/solid-primitives/tree/main/packages/map#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[ReactiveMap](https://github.com/solidjs-community/solid-primitives/tree/main/packages/map#reactivemap)
[ReactiveWeakMap](https://github.com/solidjs-community/solid-primitives/tree/main/packages/map#reactiveweakmap)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/map?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/map)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/map?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/map)| -|[memo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createLatest](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createlatest)
[createWritableMemo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createwritablememo)
[createLazyMemo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createlazymemo)
[createAsyncMemo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createasyncmemo)
[createDebouncedMemo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createdebouncedmemo)
[createDebouncedMemoOn](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createdebouncedmemoon)
[createThrottledMemo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createthrottledmemo)
[createPureReaction](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createpurereaction)
[createMemoCache](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#creatememocache)
[createReducer](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createreducer)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/memo?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/memo)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/memo?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/memo)| +|[memo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createLatest](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createlatest)
[createLatestMany](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createlatestmany)
[createWritableMemo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createwritablememo)
[createLazyMemo](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createlazymemo)
[createPureReaction](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createpurereaction)
[createMemoCache](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#creatememocache)
[createReducer](https://github.com/solidjs-community/solid-primitives/tree/main/packages/memo#createreducer)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/memo?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/memo)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/memo?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/memo)| |[resource](https://github.com/solidjs-community/solid-primitives/tree/main/packages/resource#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createAggregated](https://github.com/solidjs-community/solid-primitives/tree/main/packages/resource#createaggregated)
[createDeepSignal](https://github.com/solidjs-community/solid-primitives/tree/main/packages/resource#createdeepsignal)
[makeAbortable](https://github.com/solidjs-community/solid-primitives/tree/main/packages/resource#makeabortable)
[makeCache](https://github.com/solidjs-community/solid-primitives/tree/main/packages/resource#makecache)
[makeRetrying](https://github.com/solidjs-community/solid-primitives/tree/main/packages/resource#makeretrying)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/resource?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/resource)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/resource?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/resource)| |[rootless](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createSubRoot](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createsubroot)
[createCallback](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createcallback)
[createDisposable](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createdisposable)
[createSharedRoot](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createsharedroot)
[createRootPool](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createrootpool)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/rootless?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/rootless)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/rootless?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/rootless)| |[set](https://github.com/solidjs-community/solid-primitives/tree/main/packages/set#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[ReactiveSet](https://github.com/solidjs-community/solid-primitives/tree/main/packages/set#reactiveset)
[ReactiveWeakSet](https://github.com/solidjs-community/solid-primitives/tree/main/packages/set#reactiveweakset)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/set?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/set)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/set?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/set)| @@ -98,8 +100,11 @@ The goal of Solid Primitives is to wrap client and server side functionality to |[masonry](https://github.com/solidjs-community/solid-primitives/tree/main/packages/masonry#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createMasonry](https://github.com/solidjs-community/solid-primitives/tree/main/packages/masonry#createmasonry)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/masonry?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/masonry)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/masonry?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/masonry)| |[pagination](https://github.com/solidjs-community/solid-primitives/tree/main/packages/pagination#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createPagination](https://github.com/solidjs-community/solid-primitives/tree/main/packages/pagination#createpagination)
[createInfiniteScroll](https://github.com/solidjs-community/solid-primitives/tree/main/packages/pagination#createinfinitescroll)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/pagination?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/pagination)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/pagination?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/pagination)| |

*Animation*

| +|[presence](https://github.com/solidjs-community/solid-primitives/tree/main/packages/presence#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createPresence](https://github.com/solidjs-community/solid-primitives/tree/main/packages/presence#createpresence)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/presence?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/presence)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/presence?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/presence)| |[raf](https://github.com/solidjs-community/solid-primitives/tree/main/packages/raf#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createRAF](https://github.com/solidjs-community/solid-primitives/tree/main/packages/raf#createraf)
[targetFPS](https://github.com/solidjs-community/solid-primitives/tree/main/packages/raf#targetfps)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/raf?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/raf)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/raf?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/raf)| |[transition-group](https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createSwitchTransition](https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createswitchtransition)
[createListTransition](https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createlisttransition)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/transition-group?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/transition-group)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/transition-group?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/transition-group)| |[tween](https://github.com/solidjs-community/solid-primitives/tree/main/packages/tween#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createTween](https://github.com/solidjs-community/solid-primitives/tree/main/packages/tween#createtween)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/tween?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/tween)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/tween?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/tween)| +|

*Solid Start*

| +|[start](https://github.com/solidjs-community/solid-primitives/tree/main/packages/start#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createServerCookie](https://github.com/solidjs-community/solid-primitives/tree/main/packages/start#createservercookie)
[createUserTheme](https://github.com/solidjs-community/solid-primitives/tree/main/packages/start#createusertheme)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/start?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/start)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/start?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/start)| diff --git a/configs/styles.css b/configs/styles.css deleted file mode 100644 index 6c0c888ce..000000000 --- a/configs/styles.css +++ /dev/null @@ -1,37 +0,0 @@ -html { - font-family: "Gill Sans", "Gill Sans MT", Calibri, "Trebuchet MS", sans-serif; -} - -a, -button { - cursor: pointer; -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -/* prefers dark */ - -@media (prefers-color-scheme: dark) { - body { - background-color: #1e1e1e; - color: #fff; - } -} - -/* solid-transition-group */ -.group-item { - transition: all 0.5s; -} - -.v-group-enter, -.v-group-exit-to { - opacity: 0; - transform: translateX(30px); -} -.v-group-exit-active { - position: absolute; -} diff --git a/configs/vite.config.ts b/configs/vite.config.ts deleted file mode 100644 index ae9f61023..000000000 --- a/configs/vite.config.ts +++ /dev/null @@ -1,46 +0,0 @@ -import path from "path"; -import fs from "fs"; -import { fileURLToPath } from "url"; -import { defineConfig } from "vitest/config"; -import devtools from "solid-devtools/vite"; -import solid from "vite-plugin-solid"; -import Unocss from "unocss/vite"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -const styles = fs.readFileSync(path.join(__dirname, "./styles.css"), "utf-8"); - -export const viteConfig = defineConfig({ - server: { - port: 3000, - }, - plugins: [ - // devtools({ - // autoname: true, - // }), - solid(), - Unocss({ - preflights: [{ getCSS: () => styles }], - shortcuts: { - "center-child": "flex justify-center items-center", - caption: "text-sm font-mono leading-tight", - btn: "bg-teal-600 border-1 border-teal-500 hover:bg-teal-500 rounded cursor-pointer center-child select-none text-white font-semibold p-4 py-3 m-2", - "wrapper-h": - "p-6 flex justify-center items-center space-x-4 space-y-0 bg-gray-700 rounded-2xl", - "wrapper-v": "wrapper-h flex-col space-x-0 space-y-4", - node: "p-4 bg-orange-600 rounded m-2", - input: "bg-gray-800 rounded border border-gray-600 px-3 py-2 text-white", - ball: "w-8 h-8 fixed -top-4 -left-4 opacity-50 rounded-full pointer-events-none", - }, - }), - ], - optimizeDeps: { - exclude: ["@solid-primitives/utils"], - }, - build: { - target: "esnext", - }, - // required to serve from a sub-path (github pages): - base: "./", -}); diff --git a/package.json b/package.json index 00641d003..c91f233ac 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "author": "David Di Biase ", "license": "MIT", "scripts": { + "dev": "pnpm -dir site run dev", "format": "prettier -w {site,packages,scripts,template}/**/*.{js,ts,json,css,tsx,jsx,md,html} --ignore-path .gitignore", "lint:packages": "eslint --ignore-path .gitignore --max-warnings 0 packages/*/src/**/*", "lint:tests": "eslint --ignore-path .gitignore packages/*/test/** --quiet --rule \"no-only-tests/no-only-tests: error\"", @@ -17,11 +18,9 @@ "test:ssr": "pnpm run test:client --mode ssr", "test": "pnpm run test:client && pnpm run test:ssr", "build": "cross-env CI=true turbo run build --filter='./packages/*'", - "pages": "pnpm run build && turbo run page && jiti ./scripts/collect-pages.ts", "new-package": "jiti ./scripts/new-package.ts", "update-readme": "jiti ./scripts/update-readme.ts", "measure": "jiti ./scripts/measure.ts", - "update-deps": "pnpm up -Lri", "version": "changeset version && pnpm i --no-frozen-lockfile && git add .", "release": "pnpm build && changeset publish" }, @@ -54,12 +53,12 @@ "remark-gfm": "^3.0.1", "solid-devtools": "^0.26.0", "solid-js": "1.7.3", + "solid-start": "^0.2.26", "tsup": "^6.7.0", "tsup-preset-solid": "^0.1.8", "turbo": "^1.9.1", "type-fest": "^3.8.0", "typescript": "~5.0.4", - "unocss": "^0.50.8", "vite": "^4.2.1", "vite-plugin-solid": "^2.7.0", "vitest": "^0.29.8" diff --git a/packages/active-element/CHANGELOG.md b/packages/active-element/CHANGELOG.md index 6ac666f80..ec1f81fce 100644 --- a/packages/active-element/CHANGELOG.md +++ b/packages/active-element/CHANGELOG.md @@ -1,5 +1,20 @@ # @solid-primitives/active-element +## 2.0.15 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/event-listener@2.2.13 + +## 2.0.14 + +### Patch Changes + +- Updated dependencies [f03c47b0] + - @solid-primitives/event-listener@2.2.12 + ## 2.0.13 ### Patch Changes diff --git a/packages/active-element/dev/index.html b/packages/active-element/dev/index.html deleted file mode 100644 index e2cd96664..000000000 --- a/packages/active-element/dev/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - Solid App - - - - -
- - - - diff --git a/packages/active-element/dev/index.tsx b/packages/active-element/dev/index.tsx index 7e118a62b..4f8614992 100644 --- a/packages/active-element/dev/index.tsx +++ b/packages/active-element/dev/index.tsx @@ -1,12 +1,11 @@ import { createActiveElement, focus } from "../src"; -import { Component, createSignal, Index } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; +import { Component, createSignal, Index, onMount, ParentComponent } from "solid-js"; + import { genNodeList } from "./utils"; // prevent tree-shaking focus; -const Node: Component<{ x: number; y: number; size: number }> = props => { +const Node: ParentComponent<{ x: number; y: number; size: number }> = props => { const [isFocused, setIsFocused] = createSignal(false); return ( @@ -26,7 +25,7 @@ const Node: Component<{ x: number; y: number; size: number }> = props => { ); }; -const App: Component = () => { +const Client: Component = () => { const [list, setList] = createSignal(genNodeList()); const shuffle = () => setList(genNodeList()); const activeEl = createActiveElement(); @@ -54,4 +53,8 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root") as HTMLElement); +export default function App() { + const [mounted, setMounted] = createSignal(false); + onMount(() => setMounted(true)); + return <>{mounted() && }; +} diff --git a/packages/active-element/dev/vite.config.ts b/packages/active-element/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/active-element/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/active-element/package.json b/packages/active-element/package.json index b609c4745..d2f01f6cb 100644 --- a/packages/active-element/package.json +++ b/packages/active-element/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/active-element", - "version": "2.0.13", + "version": "2.0.15", "description": "A reactive document.activeElement. Check which element is currently focused.", "author": "Damian Tarnawski @thetarnav ", "contributors": [ @@ -39,11 +39,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "focus", diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 8269be8bc..6d43b7185 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -25,9 +25,11 @@ "dist" ], "scripts": { + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "analytics", diff --git a/packages/audio/CHANGELOG.md b/packages/audio/CHANGELOG.md index 2dec65a4c..a242d65a5 100644 --- a/packages/audio/CHANGELOG.md +++ b/packages/audio/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/audio +## 1.3.13 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/static-store@0.0.4 + ## 1.3.12 ### Patch Changes diff --git a/packages/audio/dev/index.html b/packages/audio/dev/index.html deleted file mode 100644 index e2cd96664..000000000 --- a/packages/audio/dev/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - Solid App - - - - -
- - - - diff --git a/packages/audio/dev/index.tsx b/packages/audio/dev/index.tsx index f93e67df8..ecc60f2e4 100644 --- a/packages/audio/dev/index.tsx +++ b/packages/audio/dev/index.tsx @@ -1,10 +1,9 @@ import { Component, For, Show, createSignal } from "solid-js"; import { createAudio, AudioState } from "../src"; -import { render } from "solid-js/web"; + import { Icon } from "solid-heroicons"; import { play, pause } from "solid-heroicons/solid"; import { speakerWave } from "solid-heroicons/outline"; -import "uno.css"; const formatTime = (time: number) => new Date(time * 1000).toISOString().substr(14, 8); @@ -83,4 +82,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root") as HTMLElement); +export default App; diff --git a/packages/audio/dev/vite.config.ts b/packages/audio/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/audio/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/audio/package.json b/packages/audio/package.json index d98e70f93..eac7d9a05 100644 --- a/packages/audio/package.json +++ b/packages/audio/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/audio", - "version": "1.3.12", + "version": "1.3.13", "description": "Primitives to manage audio and single sounds.", "author": "David Di Biase ", "license": "MIT", @@ -39,11 +39,11 @@ "typesVersions": {}, "scripts": { "start": "vite serve dev", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "audio", diff --git a/packages/autofocus/CHANGELOG.md b/packages/autofocus/CHANGELOG.md index 21e865a2c..d3e45e939 100644 --- a/packages/autofocus/CHANGELOG.md +++ b/packages/autofocus/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/autofocus +## 0.0.107 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.0.106 ### Patch Changes diff --git a/packages/autofocus/README.md b/packages/autofocus/README.md index 7a8fb63c0..e7375ac65 100644 --- a/packages/autofocus/README.md +++ b/packages/autofocus/README.md @@ -82,7 +82,7 @@ createAutofocus(ref); ## Demo -You may see the working example here: https://solidjs-community.github.io/solid-primitives/autofocus/ +You may see the working example here: https://primitives.solidjs.community/playground/autofocus/ Source code: https://github.com/solidjs-community/solid-primitives/blob/main/packages/autofocus/dev/index.tsx diff --git a/packages/autofocus/dev/index.html b/packages/autofocus/dev/index.html deleted file mode 100644 index 826e0cbf3..000000000 --- a/packages/autofocus/dev/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/autofocus/dev/index.tsx b/packages/autofocus/dev/index.tsx index 8ab6845db..fc68f2db9 100644 --- a/packages/autofocus/dev/index.tsx +++ b/packages/autofocus/dev/index.tsx @@ -1,7 +1,5 @@ -import { JSX, Component, createSignal, Switch, Match } from "solid-js"; -import { render } from "solid-js/web"; +import { Component, createSignal, Switch, Match } from "solid-js"; import { autofocus, createAutofocus } from "../src"; -import "uno.css"; autofocus; @@ -18,7 +16,11 @@ const AutofocusRef: Component = () => { createAutofocus(() => ref); - return ; + return ( + + ); }; const AutofocusRefSignal: Component = () => { @@ -26,29 +28,37 @@ const AutofocusRefSignal: Component = () => { createAutofocus(ref); - return ; + return ( + + ); }; const App: Component = () => { const [toggle, setToggle] = createSignal(0); return ( -
- - - no autofocus}> - - - - - - - - - - +
+
+ + + no autofocus}> + + + + + + + + + + +
); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/autofocus/dev/vite.config.ts b/packages/autofocus/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/autofocus/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/autofocus/package.json b/packages/autofocus/package.json index 6e5082a49..90aa8a6bd 100644 --- a/packages/autofocus/package.json +++ b/packages/autofocus/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/autofocus", - "version": "0.0.106", + "version": "0.0.107", "description": "Primitives for autofocusing HTML elements", "author": "jer3m01 ", "contributors": [], @@ -46,11 +46,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/bounds/CHANGELOG.md b/packages/bounds/CHANGELOG.md index 7e18dcfda..789ed2c19 100644 --- a/packages/bounds/CHANGELOG.md +++ b/packages/bounds/CHANGELOG.md @@ -1,5 +1,23 @@ # @solid-primitives/bounds +## 0.0.114 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/event-listener@2.2.13 + - @solid-primitives/resize-observer@2.0.18 + - @solid-primitives/static-store@0.0.4 + +## 0.0.113 + +### Patch Changes + +- Updated dependencies [f03c47b0] + - @solid-primitives/event-listener@2.2.12 + - @solid-primitives/resize-observer@2.0.17 + ## 0.0.112 ### Patch Changes diff --git a/packages/bounds/dev/index.html b/packages/bounds/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/bounds/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/bounds/dev/index.tsx b/packages/bounds/dev/index.tsx index 322f4d56e..f13233440 100644 --- a/packages/bounds/dev/index.tsx +++ b/packages/bounds/dev/index.tsx @@ -1,7 +1,7 @@ import { Component, createSignal, Setter } from "solid-js"; -import { render } from "solid-js/web"; + import { throttle } from "@solid-primitives/scheduled"; -import "uno.css"; + import { createElementBounds, UpdateGuard } from "../src"; const NumberInput: Component<{ value: number; setValue: Setter; name: string }> = props => { @@ -60,4 +60,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/bounds/dev/vite.config.ts b/packages/bounds/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/bounds/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/bounds/package.json b/packages/bounds/package.json index ee135f653..247d6c9ca 100644 --- a/packages/bounds/package.json +++ b/packages/bounds/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/bounds", - "version": "0.0.112", + "version": "0.0.114", "description": "Primitives for tracking HTML element size and position on screen as it changes.", "author": "Damian Tarnawski ", "contributors": [], @@ -46,11 +46,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "devDependencies": { "@solid-primitives/scheduled": "workspace:^" diff --git a/packages/broadcast-channel/dev/index.html b/packages/broadcast-channel/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/broadcast-channel/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/broadcast-channel/dev/index.tsx b/packages/broadcast-channel/dev/index.tsx index 967e8f2a5..348293009 100644 --- a/packages/broadcast-channel/dev/index.tsx +++ b/packages/broadcast-channel/dev/index.tsx @@ -1,7 +1,6 @@ import { Component, createEffect, createSignal, For, on, Show } from "solid-js"; import { createStore, produce } from "solid-js/store"; -import { render } from "solid-js/web"; -import "uno.css"; + import { createBroadcastChannel, makeBroadcastChannel } from "../src"; import { TPage, useTrackPages } from "./hooks/useTrackPages"; @@ -136,4 +135,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/broadcast-channel/dev/vite.config.ts b/packages/broadcast-channel/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/broadcast-channel/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/broadcast-channel/package.json b/packages/broadcast-channel/package.json index e002c070a..de01539a0 100644 --- a/packages/broadcast-channel/package.json +++ b/packages/broadcast-channel/package.json @@ -45,11 +45,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/clipboard/CHANGELOG.md b/packages/clipboard/CHANGELOG.md index 24bd09bba..46caea61a 100644 --- a/packages/clipboard/CHANGELOG.md +++ b/packages/clipboard/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/clipboard +## 1.5.6 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.5.5 ### Patch Changes diff --git a/packages/clipboard/README.md b/packages/clipboard/README.md index 3176682aa..92ec5f048 100644 --- a/packages/clipboard/README.md +++ b/packages/clipboard/README.md @@ -145,7 +145,7 @@ function newItem(type: string, data: ClipboardItemData): ClipboardItem; ## Demo -You may view a working example in [the /dev playground](./dev/index.tsx) deplayed on [solidjs-community.github.io/solid-primitives/clipboard](https://solidjs-community.github.io/solid-primitives/clipboard/) +You may view a working example in [the /dev playground](./dev/index.tsx) deplayed on [primitives.solidjs.community/playground/clipboard](https://primitives.solidjs.community/playground/clipboard/) ## Changelog diff --git a/packages/clipboard/dev/index.html b/packages/clipboard/dev/index.html deleted file mode 100644 index 00a1515a1..000000000 --- a/packages/clipboard/dev/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/clipboard/dev/index.tsx b/packages/clipboard/dev/index.tsx index 4e0d39262..7c11d64ab 100644 --- a/packages/clipboard/dev/index.tsx +++ b/packages/clipboard/dev/index.tsx @@ -1,9 +1,8 @@ import { Component, createSignal, Suspense, For, Switch, Match } from "solid-js"; import { createClipboard, copyToClipboard, newClipboardItem, input } from "../src"; -import { render } from "solid-js/web"; + import img from "./img.png"; import img2 from "./img2.png"; -import "uno.css"; copyToClipboard; @@ -75,4 +74,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")); +export default App; diff --git a/packages/clipboard/dev/tsconfig.json b/packages/clipboard/dev/tsconfig.json deleted file mode 100644 index e27ffb701..000000000 --- a/packages/clipboard/dev/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", - "types": ["vite/client"] - } -} diff --git a/packages/clipboard/dev/vite.config.ts b/packages/clipboard/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/clipboard/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/clipboard/package.json b/packages/clipboard/package.json index 39c35d76c..fd55f4b47 100644 --- a/packages/clipboard/package.json +++ b/packages/clipboard/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/clipboard", - "version": "1.5.5", + "version": "1.5.6", "description": "Primitives for reading and writing to clipboard.", "author": "David Di Biase ", "contributors": [ @@ -41,11 +41,11 @@ }, "scripts": { "start": "vite serve dev", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "clipboard", diff --git a/packages/connectivity/CHANGELOG.md b/packages/connectivity/CHANGELOG.md index 087129abc..483875c19 100644 --- a/packages/connectivity/CHANGELOG.md +++ b/packages/connectivity/CHANGELOG.md @@ -1,5 +1,21 @@ # @solid-primitives/connectivity +## 0.3.15 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/event-listener@2.2.13 + - @solid-primitives/rootless@1.4.1 + +## 0.3.14 + +### Patch Changes + +- Updated dependencies [f03c47b0] + - @solid-primitives/event-listener@2.2.12 + ## 0.3.13 ### Patch Changes diff --git a/packages/connectivity/dev/index.html b/packages/connectivity/dev/index.html deleted file mode 100644 index 0eae9654f..000000000 --- a/packages/connectivity/dev/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/connectivity/dev/index.tsx b/packages/connectivity/dev/index.tsx index 0615aea00..3913aab9b 100644 --- a/packages/connectivity/dev/index.tsx +++ b/packages/connectivity/dev/index.tsx @@ -1,7 +1,6 @@ import type { Component } from "solid-js"; -import { render } from "solid-js/web"; + import { createConnectivitySignal } from "../src"; -import "uno.css"; const App: Component = () => { const onLine = createConnectivitySignal(); @@ -13,4 +12,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/connectivity/dev/vite.config.ts b/packages/connectivity/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/connectivity/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/connectivity/package.json b/packages/connectivity/package.json index 90eccccc0..2b6422a72 100644 --- a/packages/connectivity/package.json +++ b/packages/connectivity/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/connectivity", - "version": "0.3.13", + "version": "0.3.15", "description": "A navigator.onLine signal.", "author": "Klemen Slavič ", "contributors": [ @@ -39,11 +39,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "network", diff --git a/packages/context/dev/index.html b/packages/context/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/context/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/context/dev/index.tsx b/packages/context/dev/index.tsx index bcb968367..acbf150ab 100644 --- a/packages/context/dev/index.tsx +++ b/packages/context/dev/index.tsx @@ -7,8 +7,6 @@ import { untrack, useContext, } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; const [CounterProvider, useCounter] = createContextProvider((props: { initial: number }) => { const [count, setCount] = createSignal(props.initial); @@ -68,4 +66,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/context/dev/vite.config.ts b/packages/context/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/context/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/context/package.json b/packages/context/package.json index e0fcaddc3..f87825348 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -39,11 +39,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "provider", diff --git a/packages/controlled-props/CHANGELOG.md b/packages/controlled-props/CHANGELOG.md index ce452ee83..5aef59b3a 100644 --- a/packages/controlled-props/CHANGELOG.md +++ b/packages/controlled-props/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/controlled-props +## 0.0.11 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.0.10 ### Patch Changes diff --git a/packages/controlled-props/README.md b/packages/controlled-props/README.md index ccd09e9cb..8224b96f1 100644 --- a/packages/controlled-props/README.md +++ b/packages/controlled-props/README.md @@ -106,7 +106,7 @@ fields == JSX.Element[]; ### Demo -https://solidjs-community.github.io/solid-primitives/controlled-props/ +https://primitives.solidjs.community/playground/controlled-props/ ## Changelog diff --git a/packages/controlled-props/dev/index.html b/packages/controlled-props/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/controlled-props/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/controlled-props/dev/index.tsx b/packages/controlled-props/dev/index.tsx index 33ce889b4..c6a5e4cbf 100644 --- a/packages/controlled-props/dev/index.tsx +++ b/packages/controlled-props/dev/index.tsx @@ -1,6 +1,5 @@ import { Component, createSignal, JSX } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { createControlledProps } from "../src"; const App: Component = () => { @@ -24,4 +23,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/controlled-props/dev/vite.config.ts b/packages/controlled-props/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/controlled-props/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/controlled-props/package.json b/packages/controlled-props/package.json index 0fe2a5777..62374d468 100644 --- a/packages/controlled-props/package.json +++ b/packages/controlled-props/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/controlled-props", - "version": "0.0.10", + "version": "0.0.11", "description": "The primitives in this package allow you to create controlls for component props.", "author": "Alex Lohr ", "contributors": [], @@ -38,12 +38,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "controlled props", diff --git a/packages/cursor/CHANGELOG.md b/packages/cursor/CHANGELOG.md index 5d0dde54a..6f5a2b0e6 100644 --- a/packages/cursor/CHANGELOG.md +++ b/packages/cursor/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/cursor +## 0.0.111 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.0.110 ### Patch Changes diff --git a/packages/cursor/dev/index.html b/packages/cursor/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/cursor/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/cursor/dev/index.tsx b/packages/cursor/dev/index.tsx index 476b96540..c6e910c77 100644 --- a/packages/cursor/dev/index.tsx +++ b/packages/cursor/dev/index.tsx @@ -1,5 +1,3 @@ -import { render } from "solid-js/web"; -import "uno.css"; import { App } from "./App"; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/cursor/dev/vite.config.ts b/packages/cursor/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/cursor/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/cursor/package.json b/packages/cursor/package.json index e58dc5d6a..6219005cd 100644 --- a/packages/cursor/package.json +++ b/packages/cursor/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/cursor", - "version": "0.0.110", + "version": "0.0.111", "description": "Two simple primitives for setting cursor css property reactively.", "author": "Damian Tarnawski ", "contributors": [], @@ -46,11 +46,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "dependencies": { "@solid-primitives/utils": "workspace:^" diff --git a/packages/date/CHANGELOG.md b/packages/date/CHANGELOG.md index f83b5a387..e5aad2db2 100644 --- a/packages/date/CHANGELOG.md +++ b/packages/date/CHANGELOG.md @@ -1,5 +1,20 @@ # @solid-primitives/date +## 2.0.14 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/memo@1.3.1 + +## 2.0.13 + +### Patch Changes + +- Updated dependencies [5e1f19e0] + - @solid-primitives/memo@1.3.0 + ## 2.0.12 ### Patch Changes diff --git a/packages/date/dev/index.html b/packages/date/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/date/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/date/dev/index.tsx b/packages/date/dev/index.tsx index a7cef0f42..c2dad383f 100644 --- a/packages/date/dev/index.tsx +++ b/packages/date/dev/index.tsx @@ -9,10 +9,9 @@ import { createCountdown, } from "../src"; import { Component, createMemo, createSignal } from "solid-js"; -import { render } from "solid-js/web"; + import { format, formatRelative } from "date-fns"; import { Slider } from "./lib"; -import "uno.css"; const App: Component = () => { const timeRange = YEAR; @@ -83,4 +82,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/date/dev/vite.config.ts b/packages/date/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/date/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/date/package.json b/packages/date/package.json index 18aa33d9d..31adfea86 100644 --- a/packages/date/package.json +++ b/packages/date/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/date", - "version": "2.0.12", + "version": "2.0.14", "description": "Collection of reactive primitives and utility functions, providing easier ways to deal with dates in SolidJS", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -42,11 +42,11 @@ }, "scripts": { "start": "vite serve dev", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "date", diff --git a/packages/deep/dev/index.html b/packages/deep/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/deep/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/deep/dev/index.tsx b/packages/deep/dev/index.tsx index 3dcc7570a..e2e5113e6 100644 --- a/packages/deep/dev/index.tsx +++ b/packages/deep/dev/index.tsx @@ -1,6 +1,4 @@ import { Component, createSignal } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; const App: Component = () => { const [count, setCount] = createSignal(0); @@ -19,4 +17,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/deep/dev/vite.config.ts b/packages/deep/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/deep/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/deep/package.json b/packages/deep/package.json index fc466f4db..8d0517a15 100644 --- a/packages/deep/package.json +++ b/packages/deep/package.json @@ -44,11 +44,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/destructure/CHANGELOG.md b/packages/destructure/CHANGELOG.md index 997b559a8..b46211e44 100644 --- a/packages/destructure/CHANGELOG.md +++ b/packages/destructure/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/destructure +## 0.1.13 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.1.12 ### Patch Changes diff --git a/packages/destructure/dev/index.html b/packages/destructure/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/destructure/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/destructure/dev/index.tsx b/packages/destructure/dev/index.tsx index 96d8a775a..ad128c4f0 100644 --- a/packages/destructure/dev/index.tsx +++ b/packages/destructure/dev/index.tsx @@ -1,7 +1,5 @@ import { destructure } from "../src"; import { Component, createEffect, createSignal } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; const Inner: Component<{ seconds: number; count: number; list: { n?: number }[] }> = props => { const { seconds, count } = destructure(props, { lazy: true }); @@ -48,4 +46,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/destructure/dev/tsconfig.json b/packages/destructure/dev/tsconfig.json deleted file mode 100644 index aee2b1ccb..000000000 --- a/packages/destructure/dev/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "types": ["vite/client"] - } -} diff --git a/packages/destructure/dev/vite.config.ts b/packages/destructure/dev/vite.config.ts deleted file mode 100644 index 36ff0f017..000000000 --- a/packages/destructure/dev/vite.config.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { defineConfig } from "vite"; -import solidPlugin from "vite-plugin-solid"; -import Unocss from "unocss/vite"; - -export default defineConfig({ - plugins: [ - solidPlugin(), - Unocss({ - shortcuts: { - "center-child": "flex justify-center items-center", - caption: "text-sm font-mono leading-tight", - btn: "bg-teal-600 border-1 border-teal-500 hover:bg-teal-500 rounded cursor-pointer center-child select-none text-white font-semibold p-4 py-3 m-2", - "wrapper-h": - "p-6 flex justify-center items-center space-x-4 space-y-0 bg-gray-700 rounded-2xl", - "wrapper-v": "wrapper-h flex-col space-x-0 space-y-4", - node: "p-4 bg-orange-600 rounded m-2", - }, - }), - ], - build: { - target: "esnext", - polyfillDynamicImport: false, - }, -}); diff --git a/packages/destructure/package.json b/packages/destructure/package.json index 58347c7a5..4f8370ecb 100644 --- a/packages/destructure/package.json +++ b/packages/destructure/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/destructure", - "version": "0.1.12", + "version": "0.1.13", "description": "Primitives for destructuring reactive objects – like props or stores – or signals of them into a separate accessors updated individually.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -38,11 +38,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "props", diff --git a/packages/devices/README.md b/packages/devices/README.md index 4aa6ce0cd..d66cddd1c 100644 --- a/packages/devices/README.md +++ b/packages/devices/README.md @@ -43,7 +43,7 @@ const gyroscope = createGyroscope(); ## Demo You may view a working example here: -https://solidjs-community.github.io/solid-primitives/devices/ +https://primitives.solidjs.community/playground/devices/ ## Reference diff --git a/packages/devices/dev/index.html b/packages/devices/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/devices/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/devices/dev/index.tsx b/packages/devices/dev/index.tsx index d2c6cfe81..7c10a9a3e 100644 --- a/packages/devices/dev/index.tsx +++ b/packages/devices/dev/index.tsx @@ -1,9 +1,8 @@ import { Component, For, Show } from "solid-js"; -import { render } from "solid-js/web"; + import { createAccelerometer, createCameras, createMicrophones, createSpeakers } from "../src"; import { createPermission } from "../../permission"; import { createMediaPermissionRequest } from "../../stream"; -import "uno.css"; const Cameras: Component = () => { const cameras = createCameras(); @@ -72,4 +71,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/devices/dev/vite.config.ts b/packages/devices/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/devices/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/devices/package.json b/packages/devices/package.json index 1b20c96c7..c774ec3c0 100644 --- a/packages/devices/package.json +++ b/packages/devices/package.json @@ -42,11 +42,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "media", diff --git a/packages/event-bus/CHANGELOG.md b/packages/event-bus/CHANGELOG.md index 61ad932f3..f66496c85 100644 --- a/packages/event-bus/CHANGELOG.md +++ b/packages/event-bus/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/event-bus +## 1.0.7 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.0.6 ### Patch Changes diff --git a/packages/event-bus/dev/index.html b/packages/event-bus/dev/index.html deleted file mode 100644 index 21dc5e091..000000000 --- a/packages/event-bus/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/event-bus/dev/index.tsx b/packages/event-bus/dev/index.tsx index 8ac7eb3a1..d5f043c7c 100644 --- a/packages/event-bus/dev/index.tsx +++ b/packages/event-bus/dev/index.tsx @@ -1,7 +1,5 @@ import { createEventHub, Listen, createEventStack, EventStack, Emit, createEventBus } from "../src"; import { Component, createSignal, For, onMount } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; const App: Component = () => { return ( @@ -186,4 +184,4 @@ const Toaster: Component<{ ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/event-bus/dev/vite.config.ts b/packages/event-bus/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/event-bus/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/event-bus/package.json b/packages/event-bus/package.json index 24fcfeb15..57575a141 100644 --- a/packages/event-bus/package.json +++ b/packages/event-bus/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/event-bus", - "version": "1.0.6", + "version": "1.0.7", "description": "A collection of SolidJS primitives providing various features of a pubsub/event-emitter/event-bus.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -38,12 +38,12 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", "start": "vite serve dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "eventbus", diff --git a/packages/event-dispatcher/dev/index.html b/packages/event-dispatcher/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/event-dispatcher/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/event-dispatcher/dev/index.tsx b/packages/event-dispatcher/dev/index.tsx index d19c4a18a..f923f699d 100644 --- a/packages/event-dispatcher/dev/index.tsx +++ b/packages/event-dispatcher/dev/index.tsx @@ -1,8 +1,6 @@ import { sendEmailDefault, sendEmailAlternative } from "./utils"; import { createEventDispatcher } from "../src"; import { Component, createSignal } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; const App: Component = () => { const [count, setCount] = createSignal(0); @@ -80,4 +78,4 @@ const EmailForm: Component<{ ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/event-dispatcher/dev/vite.config.ts b/packages/event-dispatcher/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/event-dispatcher/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/event-dispatcher/package.json b/packages/event-dispatcher/package.json index 80aaee5c5..6f59a79df 100644 --- a/packages/event-dispatcher/package.json +++ b/packages/event-dispatcher/package.json @@ -46,11 +46,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/event-listener/CHANGELOG.md b/packages/event-listener/CHANGELOG.md index b36fe69eb..642641af8 100644 --- a/packages/event-listener/CHANGELOG.md +++ b/packages/event-listener/CHANGELOG.md @@ -1,5 +1,18 @@ # @solid-primitives/event-listener +## 2.2.13 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + +## 2.2.12 + +### Patch Changes + +- f03c47b0: Improve types of `createEventListenerMap` + ## 2.2.11 ### Patch Changes diff --git a/packages/event-listener/README.md b/packages/event-listener/README.md index 225fc4ac9..45d85e5b8 100644 --- a/packages/event-listener/README.md +++ b/packages/event-listener/README.md @@ -240,14 +240,11 @@ createEventListenerMap( // createEventListenerMap can be used to listen to custom events // fill both type generics for the best type support -createEventListenerMap< - { - myEvent: MyEvent; - custom: Event; - other: Event; - }, - "myEvent" | "custom" ->(target, { +createEventListenerMap<{ + myEvent: MyEvent; + custom: Event; + other: Event; +}>(target, { myEvent: e => {}, custom: e => {}, }); diff --git a/packages/event-listener/dev/index.html b/packages/event-listener/dev/index.html deleted file mode 100644 index 1c67ab9b3..000000000 --- a/packages/event-listener/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/event-listener/dev/index.tsx b/packages/event-listener/dev/index.tsx index da8bcaeb0..4bda55ec1 100644 --- a/packages/event-listener/dev/index.tsx +++ b/packages/event-listener/dev/index.tsx @@ -1,8 +1,8 @@ import { WindowEventListener, eventListener, createEventListener, createEventSignal } from "../src"; import { Component, createSignal, For, Show } from "solid-js"; -import { render } from "solid-js/web"; + import { DisplayRecord } from "./components"; -import "uno.css"; + eventListener; const App: Component = () => { @@ -123,4 +123,4 @@ const EventMap: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/event-listener/dev/vite.config.ts b/packages/event-listener/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/event-listener/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/event-listener/package.json b/packages/event-listener/package.json index d94f6fa75..ca17c5823 100644 --- a/packages/event-listener/package.json +++ b/packages/event-listener/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/event-listener", - "version": "2.2.11", + "version": "2.2.13", "description": "SolidJS Primitives to manage creating event listeners.", "author": "David Di Biase ", "contributors": [ @@ -42,12 +42,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "event", diff --git a/packages/event-listener/src/eventListenerMap.ts b/packages/event-listener/src/eventListenerMap.ts index c8c33322d..370493444 100644 --- a/packages/event-listener/src/eventListenerMap.ts +++ b/packages/event-listener/src/eventListenerMap.ts @@ -1,4 +1,4 @@ -import { entries, Many, MaybeAccessor } from "@solid-primitives/utils"; +import { AnyFunction, entries, Many, MaybeAccessor } from "@solid-primitives/utils"; import { createEventListener } from "./eventListener"; import { EventMapOf, TargetWithEventMap, EventListenerOptions } from "./types"; import { isServer } from "solid-js/web"; @@ -25,16 +25,6 @@ export type EventHandlersMap = { * }); */ -// Custom Events -export function createEventListenerMap< - EventMap extends Record, - UsedEvents extends keyof EventMap = keyof EventMap, ->( - target: MaybeAccessor>, - handlersMap: Partial, UsedEvents>>, - options?: EventListenerOptions, -): void; - // DOM Events export function createEventListenerMap< Target extends TargetWithEventMap, @@ -46,9 +36,16 @@ export function createEventListenerMap< options?: EventListenerOptions, ): void; +// Custom Events +export function createEventListenerMap>( + target: MaybeAccessor>, + handlersMap: Partial>, + options?: EventListenerOptions, +): void; + export function createEventListenerMap( targets: MaybeAccessor>, - handlersMap: Record, + handlersMap: Record, options?: EventListenerOptions, ): void { if (isServer) { @@ -59,35 +56,28 @@ export function createEventListenerMap( } } -// /* Type Check */ -// const mouseHandler = (e: MouseEvent) => {}; -// const touchHandler = (e: TouchEvent) => {}; -// const eventHandler = (e: Event) => {}; +// /* TypeCheck */ + // const el = document.createElement("div"); + // createEventListenerMap(el, { -// mousemove: mouseHandler, -// mouseenter: e => {}, -// touchend: touchHandler +// mouseenter: e => e.clientX, +// touchend: e => e.touches, +// // @ts-expect-error +// keydown: e => e.clientX, +// }); + +// createEventListenerMap(el, { +// keydown: e => e.key, // }); // createEventListenerMap<{ // test: Event; -// custom: MouseEvent; +// custom: KeyboardEvent; // unused: Event; // }>(el, { -// test: eventHandler, -// custom: e => {} -// }); - -// createEventListenerMap< -// { -// test: Event; -// custom: MouseEvent; -// unused: Event; -// }, -// "test" | "custom" -// >(el, { -// test: eventHandler, -// custom: e => {}, -// unused: e => {} // ERROR +// test: e => e, +// custom: e => e.key, +// // @ts-expect-error +// wrong: () => {}, // }); diff --git a/packages/event-listener/test/eventListenerMap.test.ts b/packages/event-listener/test/event-listener-map.test.ts similarity index 100% rename from packages/event-listener/test/eventListenerMap.test.ts rename to packages/event-listener/test/event-listener-map.test.ts diff --git a/packages/event-listener/test/eventListener.test.ts b/packages/event-listener/test/event-listener.test.ts similarity index 100% rename from packages/event-listener/test/eventListener.test.ts rename to packages/event-listener/test/event-listener.test.ts diff --git a/packages/event-listener/test/setup.ts b/packages/event-listener/test/setup.ts index 8897ce8e9..6b7e9167c 100644 --- a/packages/event-listener/test/setup.ts +++ b/packages/event-listener/test/setup.ts @@ -3,15 +3,19 @@ const globalListeners: Record void>> = {}; // @ts-ignore window.addEventListener = (name: string, callback: (e: Event) => void, o: any) => { if (!globalListeners[name]) globalListeners[name] = new Set(); + // @ts-ignore globalListeners[name].add(callback); }; // @ts-ignore window.removeEventListener = (name: string, callback: (e: Event) => void, o: any) => { if (!globalListeners[name]) return; + // @ts-ignore globalListeners[name].delete(callback); }; export const dispatchFakeEvent = (name: string, event: Event) => { + // @ts-ignore if (!globalListeners[name]) return; + // @ts-ignore [...globalListeners[name]].forEach(fn => fn(event)); }; diff --git a/packages/event-props/package.json b/packages/event-props/package.json index 9af9d9133..e1044b69f 100644 --- a/packages/event-props/package.json +++ b/packages/event-props/package.json @@ -37,10 +37,12 @@ "scripts": { "prebuild": "npm run clean", "clean": "rimraf dist/", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", "typecheck": "tsc --noEmit src/* test/*;", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "event", diff --git a/packages/fetch/dev/index.html b/packages/fetch/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/fetch/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/fetch/dev/index.tsx b/packages/fetch/dev/index.tsx index 22f3a8b6e..261e72d34 100644 --- a/packages/fetch/dev/index.tsx +++ b/packages/fetch/dev/index.tsx @@ -1,6 +1,5 @@ import { Component } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { withAbort } from "../src/modifiers"; import { createFetch } from "../src/fetch"; @@ -31,4 +30,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/fetch/dev/vite.config.ts b/packages/fetch/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/fetch/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/fetch/package.json b/packages/fetch/package.json index 0e02e0446..273739862 100644 --- a/packages/fetch/package.json +++ b/packages/fetch/package.json @@ -35,10 +35,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "pnpm run start", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "fetch", diff --git a/packages/filesystem/README.md b/packages/filesystem/README.md index 2df5f420d..1a6e82a61 100644 --- a/packages/filesystem/README.md +++ b/packages/filesystem/README.md @@ -140,7 +140,7 @@ rsync(srcFs, srcPath, destFs, destPath): Promise; ## Demo You may view a working example of createFileSystem/makeVirtualFileSystem/makeWebAccessFileSystem here: -https://solidjs-community.github.io/solid-primitives/filesystem/ +https://primitives.solidjs.community/playground/filesystem/ ## Changelog diff --git a/packages/filesystem/dev/index.html b/packages/filesystem/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/filesystem/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/filesystem/dev/index.tsx b/packages/filesystem/dev/index.tsx index 8ddb837ed..d1f73690a 100644 --- a/packages/filesystem/dev/index.tsx +++ b/packages/filesystem/dev/index.tsx @@ -7,7 +7,7 @@ import { ErrorBoundary, createMemo, } from "solid-js"; -import { render } from "solid-js/web"; + import { AsyncFileSystem, createFileSystem, @@ -16,7 +16,6 @@ import { SyncFileSystem, getItemName, } from "../src/index"; -import "uno.css"; const FsFile = (props: { fs: SyncFileSystem | AsyncFileSystem; path: string }) => { const [open, setOpen] = createSignal(false); @@ -131,4 +130,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/filesystem/dev/vite.config.ts b/packages/filesystem/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/filesystem/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/filesystem/package.json b/packages/filesystem/package.json index 23cd5bb0a..bc7f43245 100644 --- a/packages/filesystem/package.json +++ b/packages/filesystem/package.json @@ -53,11 +53,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts --node", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "devDependencies": { "@tauri-apps/api": "^1.2.0", diff --git a/packages/flux-store/dev/index.html b/packages/flux-store/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/flux-store/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/flux-store/dev/index.tsx b/packages/flux-store/dev/index.tsx index 6fa4d199f..457b98bcb 100644 --- a/packages/flux-store/dev/index.tsx +++ b/packages/flux-store/dev/index.tsx @@ -4,8 +4,6 @@ import { counterStore } from "./stores/counter-store"; import { getPeople, getWizards } from "./stores/ages-store"; import { CounterControls, BoxesDemo } from "./components"; -import "uno.css"; - const App: Component = () => { const { state, @@ -53,4 +51,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/flux-store/dev/vite.config.ts b/packages/flux-store/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/flux-store/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/flux-store/package.json b/packages/flux-store/package.json index 55c861875..765101d76 100644 --- a/packages/flux-store/package.json +++ b/packages/flux-store/package.json @@ -51,11 +51,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/fullscreen/package.json b/packages/fullscreen/package.json index b31b1d4f3..e7a02788b 100644 --- a/packages/fullscreen/package.json +++ b/packages/fullscreen/package.json @@ -37,9 +37,11 @@ "scripts": { "prebuild": "npm run clean", "clean": "rimraf dist/", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "fullscreen", diff --git a/packages/geolocation/CHANGELOG.md b/packages/geolocation/CHANGELOG.md index ddef9a0d9..8d73d8338 100644 --- a/packages/geolocation/CHANGELOG.md +++ b/packages/geolocation/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/geolocation +## 1.4.10 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/static-store@0.0.4 + ## 1.4.9 ### Patch Changes diff --git a/packages/geolocation/dev/client.tsx b/packages/geolocation/dev/client.tsx new file mode 100644 index 000000000..e8bff59b0 --- /dev/null +++ b/packages/geolocation/dev/client.tsx @@ -0,0 +1,59 @@ +import { Component, createEffect, onMount, Show } from "solid-js"; +import { createGeolocation } from "../src/index"; + +import * as L from "leaflet"; + +import "leaflet/dist/leaflet.css"; + +const Client: Component = () => { + let ref: HTMLDivElement; + let map: L.Map; + let marker: L.Marker; + const [location] = createGeolocation({ + enableHighAccuracy: false, + maximumAge: 0, + timeout: Number.POSITIVE_INFINITY, + }); + onMount(() => { + map = L.map(ref).setView([37.0643592, -26.1593362], 1); + L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { + maxZoom: 19, + attribution: "© OpenStreetMap", + }).addTo(map); + }); + createEffect(() => { + const coordinates = location(); + if (map && coordinates && !location.error) { + const latLng: L.LatLngExpression = [coordinates.latitude, coordinates.longitude]; + map.setView(latLng, 14); + marker = L.marker(latLng).addTo(map); + } + }); + return ( +
+
+
+ Could not detect coordinates, check permissions.
} + when={!location.error} + > +
+
+ Accuracy: {(location()?.accuracy || 0).toFixed(2)} +
+
+ Altitude: {(location()?.altitude || 0).toFixed(2)} +
+
+ +
(ref = el)} /> +
+ {location()?.latitude}, {location()?.longitude} +
+
+
+
+ ); +}; + +export default Client; diff --git a/packages/geolocation/dev/index.html b/packages/geolocation/dev/index.html deleted file mode 100644 index e2cd96664..000000000 --- a/packages/geolocation/dev/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - Solid App - - - - -
- - - - diff --git a/packages/geolocation/dev/index.tsx b/packages/geolocation/dev/index.tsx index c54e5224b..f8637800a 100644 --- a/packages/geolocation/dev/index.tsx +++ b/packages/geolocation/dev/index.tsx @@ -1,59 +1,12 @@ -import { Component, createEffect, onMount, Show } from "solid-js"; -import { render } from "solid-js/web"; -import * as L from "leaflet"; -import "uno.css"; -import "leaflet/dist/leaflet.css"; -import { createGeolocation } from "../src/index"; +import { Component, Suspense, createSignal, lazy, onMount } from "solid-js"; + +const Client = lazy(() => import("./client")); const App: Component = () => { - let ref: HTMLDivElement; - let map: L.Map; - let marker: L.Marker; - const [location] = createGeolocation({ - enableHighAccuracy: false, - maximumAge: 0, - timeout: Number.POSITIVE_INFINITY, - }); - onMount(() => { - map = L.map(ref).setView([37.0643592, -26.1593362], 1); - L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { - maxZoom: 19, - attribution: "© OpenStreetMap", - }).addTo(map); - }); - createEffect(() => { - const coordinates = location(); - if (map && coordinates && !location.error) { - const latLng: L.LatLngExpression = [coordinates.latitude, coordinates.longitude]; - map.setView(latLng, 14); - marker = L.marker(latLng).addTo(map); - } - }); - return ( -
-
-
- Could not detect coordinates, check permissions.
} - when={!location.error} - > -
-
- Accuracy: {(location()?.accuracy || 0).toFixed(2)} -
-
- Altitude: {(location()?.altitude || 0).toFixed(2)} -
-
- -
(ref = el)} /> -
- {location()?.latitude}, {location()?.longitude} -
-
-
-
- ); + const [mounted, setMounted] = createSignal(false); + onMount(() => setMounted(true)); + + return {mounted() && }; }; -render(() => , document.getElementById("root") as HTMLElement); +export default App; diff --git a/packages/geolocation/dev/vite.config.ts b/packages/geolocation/dev/vite.config.ts deleted file mode 100644 index 110baf399..000000000 --- a/packages/geolocation/dev/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -import mkcert from "vite-plugin-mkcert"; - -viteConfig.server = { https: true }; -viteConfig.plugins.push(mkcert()); - -export default viteConfig; diff --git a/packages/geolocation/package.json b/packages/geolocation/package.json index 0a70ea008..0ddf65cc8 100644 --- a/packages/geolocation/package.json +++ b/packages/geolocation/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/geolocation", - "version": "1.4.9", + "version": "1.4.10", "description": "Primitives to query geolocation and observe changes.", "author": "David Di Biase ", "license": "MIT", @@ -42,11 +42,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "devDependencies": { "@types/leaflet": "^1.9.3", diff --git a/packages/gestures/dev/index.html b/packages/gestures/dev/index.html deleted file mode 100644 index ff752026f..000000000 --- a/packages/gestures/dev/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/gestures/dev/index.tsx b/packages/gestures/dev/index.tsx index f1c0b87dd..b5acacfae 100644 --- a/packages/gestures/dev/index.tsx +++ b/packages/gestures/dev/index.tsx @@ -1,7 +1,6 @@ import { pan } from "../src"; import { Component, createSignal, onMount } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + pan; const App: Component = () => { @@ -47,4 +46,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")); +export default App; diff --git a/packages/gestures/dev/tsconfig.json b/packages/gestures/dev/tsconfig.json deleted file mode 100644 index e27ffb701..000000000 --- a/packages/gestures/dev/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", - "types": ["vite/client"] - } -} diff --git a/packages/gestures/dev/vite.config.ts b/packages/gestures/dev/vite.config.ts deleted file mode 100644 index 6bb63fec8..000000000 --- a/packages/gestures/dev/vite.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { defineConfig } from "vite"; -import solidPlugin from "vite-plugin-solid"; -import Unocss from "unocss/vite"; - -export default defineConfig({ - plugins: [ - solidPlugin(), - Unocss({ - shortcuts: { - "center-child": "flex justify-center items-center", - caption: "text-sm font-mono leading-tight", - btn: "bg-teal-600 border-1 border-teal-500 hover:bg-teal-500 rounded cursor-pointer center-child select-none text-white font-semibold p-4 py-3", - "node-h": "p-8 flex justify-center items-center space-x-8 bg-gray-700 rounded-2xl", - "node-v": "node-h flex-col space-x-0 space-y-8", - }, - }), - ], - build: { - target: "esnext", - polyfillDynamicImport: false, - }, -}); diff --git a/packages/gestures/package.json b/packages/gestures/package.json index ed7f80482..67fde6500 100644 --- a/packages/gestures/package.json +++ b/packages/gestures/package.json @@ -26,12 +26,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/graphql/CHANGELOG.md b/packages/graphql/CHANGELOG.md index 6ffdae647..9f5242ed0 100644 --- a/packages/graphql/CHANGELOG.md +++ b/packages/graphql/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/graphql +## 1.5.9 + +### Patch Changes + +- c4fd5890: fix resource states by omitting `initialValue` option if passed `undefined` +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.5.8 ### Patch Changes diff --git a/packages/graphql/dev/index.html b/packages/graphql/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/graphql/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/graphql/dev/index.tsx b/packages/graphql/dev/index.tsx index 7ad8b4c40..8855b7fab 100644 --- a/packages/graphql/dev/index.tsx +++ b/packages/graphql/dev/index.tsx @@ -1,8 +1,7 @@ import { Component, createSignal, Show, For } from "solid-js"; -import { render } from "solid-js/web"; + import { gql, createGraphQLClient, request, multipartRequest } from "../src"; import { CountryQueryDocument } from "./gqlgen"; -import "uno.css"; // This query will be used by `graphql-code-generator` to generate `CountryQueryDocument`. // Normally it would be defined inside it's own file, but this is just @@ -89,4 +88,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/graphql/dev/vite.config.ts b/packages/graphql/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/graphql/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/graphql/package.json b/packages/graphql/package.json index e9114c392..c62059418 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/graphql", - "version": "1.5.8", + "version": "1.5.9", "description": "Primitive that generates a client and reactive GraphQL queries", "author": "David Di Biase ", "contributors": [ @@ -39,12 +39,12 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", "gqlgen": "graphql-codegen --config dev/codegen.yml", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "graphql", diff --git a/packages/graphql/src/index.ts b/packages/graphql/src/index.ts index 42065df46..cf1731d55 100644 --- a/packages/graphql/src/index.ts +++ b/packages/graphql/src/index.ts @@ -50,7 +50,7 @@ export const createGraphQLClient = const variables = typeof vars === "boolean" ? {} : vars; return request(access(url), query, { ...options, variables }); }, - { initialValue }, + initialValue !== undefined ? { initialValue } : undefined, ); /** diff --git a/packages/history/CHANGELOG.md b/packages/history/CHANGELOG.md new file mode 100644 index 000000000..d887898e2 --- /dev/null +++ b/packages/history/CHANGELOG.md @@ -0,0 +1,8 @@ +# @solid-primitives/history + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 diff --git a/packages/history/LICENSE b/packages/history/LICENSE new file mode 100644 index 000000000..38b41d975 --- /dev/null +++ b/packages/history/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Solid Primitives Working Group + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/history/README.md b/packages/history/README.md new file mode 100644 index 000000000..5c6a10cce --- /dev/null +++ b/packages/history/README.md @@ -0,0 +1,182 @@ +

+ Solid Primitives history +

+ +# @solid-primitives/history + +[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/) +[![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/history?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/history) +[![version](https://img.shields.io/npm/v/@solid-primitives/history?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/history) +[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) + +Primitives for managing undo/redo history in Solid. + +## Installation + +```bash +npm install @solid-primitives/history +# or +yarn add @solid-primitives/history +# or +pnpm add @solid-primitives/history +``` + +## `createUndoHistory` + +Creates an undo history from a reactive source for going back and forth between state snapshots. + +### How to use it + +`createUndoHistory` takes two arguments: + +- `source` - A function or an array thereof that tracks the state to be restored, and returns a callback to restore it. +- `options` - Configuration object. Optional. + - `limit` - The maximum number of history states. Defaults to `100`. + +```tsx +import { createUndoHistory } from "@solid-primitives/history"; + +const [count, setCount] = createSignal(0); + +const history = createUndoHistory(() => { + // track the changes to the state (and clone if you need to) + const v = count(); + // return a callback to set the state back to the tracked value + return () => setCount(v); +}); + +// undo the last change +history.undo(); + +// redo the last change +history.redo(); + +// check if there are any changes to undo/redo with .canUndo() and .canRedo() +return ( + <> + + + +); +``` + +### Observing stores + +Stores have many independent points of updates, so you can choose how and what to track. + +But for the most part, you may want to track and copy the whole store value. + +Copying is important so that the history points are not affected by future mutations to the store. + +```ts +const [state, setState] = createStore({ a: 0, b: 0 }); + +const history = createUndoHistory(() => { + // track and clone the whole state + const stateVal = structuredClone(state); + // reconcile the state back to the tracked value + return () => setState(reconcile(stateVal)); +}); +``` + +### Observing multiple sources + +You can track as many signals in the `source` callback as you want. Then any updates will create a point in history for all of them. + +```ts +const [a, setA] = createSignal(0); +const [b, setB] = createSignal(0); + +const history = createUndoHistory(() => { + const aVal = a(); + const bVal = b(); + return () => { + setA(aVal); + setB(bVal); + }; +}); + +// set them both at the same time, to only create one point in history +batch(() => { + setA(1); + setB(1); +}); +``` + +### Observing multiple independent sources + +If you want to track multiple independent sources, you can pass an array of source functions to `createUndoHistory`. + +This way the undo history will still be shared, but the individual source and setter functions will be called when needed, instead of all at once. This is useful for tracking multiple stores where you want to avoid unnecessary cloning and reconciliation. + +```ts +const [a, setA] = createSignal(0); +const [b, setB] = createSignal(0); + +const history = createUndoHistory([ + () => { + const aVal = a(); + return () => setA(aVal); + }, + () => { + const bVal = b(); + return () => setB(bVal); + }, +]); + +// e.g. +setA(1); +history.undo(); // will only call setA(0) +``` + +### Changing souces or clearing history + +If you want to change what sources get tracked, or clear the history, you can wrap the `createUndoHistory` call in a `createMemo`: + +Example of clearing the history: + +```ts +const [trackClear, clear] = createSignal(undefined, { equals: false }); + +const history = createMemo(() => { + // track what should rerun the memo + trackClear(); + return createUndoHistory(/* ... */); +}); + +// history is now a signal +history().undo(); + +// clear the history +clear(); +``` + +Example of changing the source: + +```ts +const [a, setA] = createSignal(0); +const [b, setB] = createSignal(0); +const [useA, setUseA] = createSignal(true); + +const history = createMemo(() => + createUndoHistory( + useA() + ? () => { + const aVal = a(); + return () => setA(aVal); + } + : () => { + const bVal = b(); + return () => setB(bVal); + }, + ), +); +``` + +## Changelog + +See [CHANGELOG.md](./CHANGELOG.md) diff --git a/packages/history/dev/index.tsx b/packages/history/dev/index.tsx new file mode 100644 index 000000000..4df393e87 --- /dev/null +++ b/packages/history/dev/index.tsx @@ -0,0 +1,74 @@ +import { Component, JSX, createSignal } from "solid-js"; +import { render } from "solid-js/web"; + +import { createUndoHistory } from "../src"; + +const Button = (props: { + onClick: () => void; + onRightClick: () => void; + children: JSX.Element; +}) => ( + +); + +const App: Component = () => { + const [a, setA] = createSignal(0); + const [b, setB] = createSignal(0); + + const history = createUndoHistory( + // createMultiHistorySource( + ( + [ + ["a", a, setA], + ["b", b, setB], + ] as const + ).map(([name, get, set]) => () => { + const v = get(); + return () => { + console.log("set", name, v); + set(v); + }; + }), + // ), + ); + + return ( +
+
+

Counter component

+

it's very important...

+
+ + +
+
+
+

History

+ + + {/* */} +
+
+ ); +}; + +export default App; diff --git a/packages/history/package.json b/packages/history/package.json new file mode 100644 index 000000000..497d9fd30 --- /dev/null +++ b/packages/history/package.json @@ -0,0 +1,63 @@ +{ + "name": "@solid-primitives/history", + "version": "0.0.2", + "description": "Primitives for managing undo/redo history in Solid.", + "author": "Damian Tarnawski ", + "contributors": [], + "license": "MIT", + "homepage": "https://github.com/solidjs-community/solid-primitives/tree/main/packages/history#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/solidjs-community/solid-primitives.git" + }, + "bugs": { + "url": "https://github.com/solidjs-community/solid-primitives/issues" + }, + "primitive": { + "name": "history", + "stage": 0, + "list": [ + "createUndoHistory" + ], + "category": "Utilities" + }, + "keywords": [ + "solid", + "primitives", + "undo", + "redo", + "history", + "time travel" + ], + "private": false, + "sideEffects": false, + "files": [ + "dist" + ], + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "browser": {}, + "exports": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": "./dist/index.cjs" + }, + "typesVersions": {}, + "scripts": { + "dev": "jiti ../../scripts/dev.ts", + "build": "jiti ../../scripts/build.ts", + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + }, + "dependencies": { + "@solid-primitives/utils": "workspace:^" + } +} diff --git a/packages/history/src/index.ts b/packages/history/src/index.ts new file mode 100644 index 000000000..4c0da59dc --- /dev/null +++ b/packages/history/src/index.ts @@ -0,0 +1,139 @@ +import { Many, createMicrotask, falseFn, noop } from "@solid-primitives/utils"; +import { Accessor, Signal, batch, createMemo, createSignal, untrack } from "solid-js"; +import { isServer } from "solid-js/web"; + +/** + * Configuration object for {@link createUndoHistory}. + */ +export type UndoHistoryOptions = { + /** + * The maximum number of undo steps to keep in memory. + * @default 100 + */ + limit?: number; +}; + +/** + * Return type of {@link createUndoHistory}. + */ +export type UndoHistoryReturn = { + /** + * @returns `true` if an undo step is available, `false` otherwise. + * + * @see {@link UndoHistoryReturn.undo} + */ + canUndo: Accessor; + /** + * @returns `true` if an redo step is available, `false` otherwise. + * + * @see {@link UndoHistoryReturn.redo} + */ + canRedo: Accessor; + /** + * Undo the last step. Does nothing if {@link UndoHistoryReturn.canUndo} is `false`. + * + * It calls the callback returned from the {@link createUndoHistory} source. + */ + undo: VoidFunction; + /** + * Redo the last step. Does nothing if {@link UndoHistoryReturn.canRedo} is `false`. + * + * It calls the callback returned from the {@link createUndoHistory} source. + */ + redo: VoidFunction; +}; + +/** + * Creates an undo history from a reactive source for going back and forth between state snapshots. + * + * @param source A function or an array thereof that tracks the state to be restored, and returns a callback to restore it. + * @param options Configuration object. See {@link UndoHistoryOptions}. + * @returns An object for interacting with the undo history. See {@link UndoHistoryReturn}. + * + * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/history#createUndoHistory + * + * @example + * ```ts + * const [count, setCount] = createSignal(0); + * + * const history = createUndoHistory(() => { + * // track the changes to the state (and clone if you need to) + * const v = count(); + * // return a callback to set the state back to the tracked value + * return () => setCount(v); + * }); + * + * // undo the last change + * history.undo(); + * + * // redo the last change + * history.redo(); + * ``` + */ +export function createUndoHistory( + source: Many>, + options?: UndoHistoryOptions, +): UndoHistoryReturn { + if (isServer) { + return { + canUndo: falseFn, + canRedo: falseFn, + undo: noop, + redo: noop, + }; + } + + let ignoreNext = false; + + const limit = options?.limit ?? 100, + sources = Array.isArray(source) ? source.map(s => createMemo(s)) : [source], + clearIgnore = createMicrotask(() => (ignoreNext = false)), + history = createMemo<{ count: Signal; list: VoidFunction[][] }>( + p => { + // always track the sources + const setters = sources.map(s => s()); + + if (ignoreNext) { + ignoreNext = false; + return p; + } + + const count = untrack(p.count[0]), + newLength = p.list.length - count, + newHistory = p.list.slice(Math.max(0, newLength - limit), newLength); + newHistory.push(setters); + + return { count: count ? createSignal(0) : p.count, list: newHistory }; + }, + { list: [], count: createSignal(0) }, + ), + canUndo = createMemo(() => { + const h = history(); + return h.list.length - h.count[0]() > 1; + }), + canRedo = createMemo(() => history().count[0]() > 0), + move = (n: -1 | 1) => { + ignoreNext = true; + clearIgnore(); + const h = history(), + newCount = h.count[1](p => p + n), + newIndex = h.list.length - newCount - 1, + prevSetters = h.list[newIndex + n]!, + setters = h.list[newIndex]!; + for (let i = 0; i < setters.length; i++) { + // only call the setter if the current value is different + if (setters[i] !== prevSetters[i]) setters[i]!(); + } + }; + + return { + canUndo, + canRedo, + undo() { + untrack(() => canUndo() && batch(() => move(1))); + }, + redo() { + untrack(() => canRedo() && batch(() => move(-1))); + }, + }; +} diff --git a/packages/history/test/index.test.ts b/packages/history/test/index.test.ts new file mode 100644 index 000000000..be6cdd5b8 --- /dev/null +++ b/packages/history/test/index.test.ts @@ -0,0 +1,237 @@ +import { describe, test, expect } from "vitest"; +import { batch, createRoot, createSignal } from "solid-js"; +import { createUndoHistory } from "../src"; + +describe("createUndoHistory", () => { + test("single source", () => + createRoot(dispose => { + const [a, setA] = createSignal(0); + + const history = createUndoHistory(() => { + const v = a(); + return () => setA(v); + }); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(false); + + setA(1); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + + history.undo(); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(true); + expect(a()).toBe(0); + + history.redo(); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + expect(a()).toBe(1); + + setA(2); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + + history.undo(); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(true); + expect(a()).toBe(1); + + history.undo(); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(true); + expect(a()).toBe(0); + + setA(3); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + + history.undo(); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(true); + expect(a()).toBe(0); + + dispose(); + })); + + test("going over limit", () => { + createRoot(dispose => { + const [a, setA] = createSignal(0); + + const history = createUndoHistory( + () => { + const v = a(); + return () => setA(v); + }, + { limit: 0 }, + ); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(false); + + setA(1); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(false); + + dispose(); + }); + }); + + test("combined single source", () => { + createRoot(dispose => { + const [a, setA] = createSignal(0), + [b, setB] = createSignal(0); + + const history = createUndoHistory(() => { + const aValue = a(); + const bValue = b(); + return () => { + setA(aValue); + setB(bValue); + }; + }); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(false); + + setA(1); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + + setB(1); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + + history.undo(); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(true); + expect(a()).toBe(1); + expect(b()).toBe(0); + + history.undo(); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(true); + expect(a()).toBe(0); + expect(b()).toBe(0); + + dispose(); + }); + }); + + test("multiple sources", () => { + createRoot(dispose => { + const [a, setA] = createSignal(0), + [b, setB] = createSignal(0); + + let aCount = 0, + bCount = 0; + + const history = createUndoHistory([ + () => { + const v = a(); + return () => { + aCount++; + setA(v); + }; + }, + () => { + const v = b(); + return () => { + bCount++; + setB(v); + }; + }, + ]); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(false); + expect(aCount).toBe(0); + expect(bCount).toBe(0); + + setA(1); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + expect(aCount).toBe(0); + expect(bCount).toBe(0); + + setB(1); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + expect(aCount).toBe(0); + expect(bCount).toBe(0); + + history.undo(); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(true); + expect(aCount).toBe(0); + expect(bCount).toBe(1); + expect(a()).toBe(1); + expect(b()).toBe(0); + + history.undo(); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(true); + expect(aCount).toBe(1); + expect(bCount).toBe(1); + expect(a()).toBe(0); + expect(b()).toBe(0); + + history.redo(); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(true); + expect(aCount).toBe(2); + expect(bCount).toBe(1); + expect(a()).toBe(1); + expect(b()).toBe(0); + + batch(() => { + setA(2); + setB(2); + }); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(false); + expect(aCount).toBe(2); + expect(bCount).toBe(1); + + history.undo(); + + expect(history.canUndo()).toBe(true); + expect(history.canRedo()).toBe(true); + expect(aCount).toBe(3); + expect(bCount).toBe(2); + expect(a()).toBe(1); + expect(b()).toBe(0); + + history.undo(); + + expect(history.canUndo()).toBe(false); + expect(history.canRedo()).toBe(true); + expect(aCount).toBe(4); + expect(bCount).toBe(2); + expect(a()).toBe(0); + expect(b()).toBe(0); + + dispose(); + }); + }); +}); diff --git a/packages/history/tsconfig.json b/packages/history/tsconfig.json new file mode 100644 index 000000000..4082f16a5 --- /dev/null +++ b/packages/history/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md index 0b7531c9e..66b286784 100644 --- a/packages/i18n/CHANGELOG.md +++ b/packages/i18n/CHANGELOG.md @@ -1,5 +1,17 @@ # @solid-primitives/i18n +## 1.4.0 + +### Minor Changes + +- 9e3a57ed: Add better typing for `useI18n` and `useScopedI18n` + +## 1.3.0 + +### Minor Changes + +- c0e23e82: Add `useScopedI18n` helper for creating a module-specific translate + ## 1.2.4 ### Patch Changes diff --git a/packages/i18n/README.md b/packages/i18n/README.md index 2d255c7fc..896c455f8 100644 --- a/packages/i18n/README.md +++ b/packages/i18n/README.md @@ -142,6 +142,36 @@ const App: Component = () => { ; ``` +## `useScopedI18n` + +Use `useScopedI18n` to create a module-specific translate. + +```tsx + +const dict = { + en: { + login: { + username: 'User name', + password: 'Password', + login: 'Login' + }, + fr: { + ... + } + } +} + +export const LoginView = () => { + const [t] = useScopedI18n('login'); + return <> +
{t('username')}
+
{t('password')}
+ + +} + +``` + ## Demo You may view a working example of createI18nContext here: https://codesandbox.io/s/use-i18n-rd7jq?file=/src/index.tsx diff --git a/packages/i18n/dev/index.html b/packages/i18n/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/i18n/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/i18n/dev/index.tsx b/packages/i18n/dev/index.tsx index cafddab18..a08c6e119 100644 --- a/packages/i18n/dev/index.tsx +++ b/packages/i18n/dev/index.tsx @@ -1,9 +1,7 @@ -import { render } from "solid-js/web"; - import { ChainedContextApp } from "./chainedContext"; import { NoContextI18nApp } from "./createChained"; -const Root = () => { +const App = () => { return (
@@ -13,4 +11,4 @@ const Root = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/i18n/dev/vite.config.ts b/packages/i18n/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/i18n/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 1bb513df1..c67695c59 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/i18n", - "version": "1.2.4", + "version": "1.4.0", "description": "Primitive to create and use i18n primitives.", "author": "Alexandre Mouton-Brady ", "contributors": [ @@ -40,11 +40,11 @@ }, "typesVersions": {}, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "i18n", diff --git a/packages/i18n/src/i18n.ts b/packages/i18n/src/i18n.ts index 27537e09d..c6e3559a6 100644 --- a/packages/i18n/src/i18n.ts +++ b/packages/i18n/src/i18n.ts @@ -1,5 +1,6 @@ import { createContext, createSignal, useContext } from "solid-js"; import { createStore } from "solid-js/store"; +import type { UseScopedI18n, I18nContextInterface } from "./types"; /** * Safely access deep values in an object via a string path seperated by `.` @@ -162,10 +163,17 @@ export const createI18nContext = ( */ dict: (lang: string) => deepReadObject(dict, lang), }; - return [translate, actions as any]; + return [translate, actions]; }; -export type I18nContextInterface = ReturnType; - export const I18nContext = createContext({} as I18nContextInterface); -export const useI18n = () => useContext(I18nContext); + +export const useI18n = () => useContext(I18nContext) as I18nContextInterface; + +export const useScopedI18n: UseScopedI18n = (scope: string) => { + const [translate, actions] = useI18n(); + return [ + (key, ...rest) => translate(`${scope}.${key}`, ...rest), + actions, + ] satisfies I18nContextInterface as unknown as I18nContextInterface; +}; diff --git a/packages/i18n/src/index.ts b/packages/i18n/src/index.ts index 805aacde2..b9326acb1 100644 --- a/packages/i18n/src/index.ts +++ b/packages/i18n/src/index.ts @@ -1,5 +1,5 @@ -export { createI18nContext, I18nContext, useI18n } from "./i18n"; -export type { I18nContextInterface } from "./i18n"; +export { createI18nContext, I18nContext, useI18n, useScopedI18n } from "./i18n"; +export type { I18nContextInterface } from "./types"; export { createChainedI18nDictionary, diff --git a/packages/i18n/src/types.ts b/packages/i18n/src/types.ts new file mode 100644 index 000000000..df74fcfdf --- /dev/null +++ b/packages/i18n/src/types.ts @@ -0,0 +1,34 @@ +export type NestedKeyOf = { + [Key in keyof T & (string | number)]: T[Key] extends object + ? `${Key}` | `${Key}.${NestedKeyOf}` + : `${Key}`; +}[keyof T & (string | number)]; + +export type NestedValueOf | string> = K extends keyof T & + (string | number) + ? T[K] + : K extends `${infer P extends keyof T & (string | number)}.${infer R}` + ? T[P] extends object + ? NestedValueOf + : unknown + : unknown; + +export type Translate = T extends object + ? (key: NestedKeyOf, params?: Record, defaultValue?: string) => string + : (key: string, params?: Record, defaultValue?: string) => string; + +export type I18nAction = { + add(lang: string, table: Record): void; + locale: (lang?: string) => string; + dict: (lang: string) => Record>; +}; + +export type I18nContextInterface = [Translate, I18nAction]; + +export type UseScopedI18n = T extends object + ? >(scope: K) => I18nContextInterface> + : + | (>( + scope: K, + ) => I18nContextInterface>) + | ((scope: string) => I18nContextInterface); diff --git a/packages/idle/dev/index.html b/packages/idle/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/idle/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/idle/dev/index.tsx b/packages/idle/dev/index.tsx index 8138bda7f..7eca3e3c0 100644 --- a/packages/idle/dev/index.tsx +++ b/packages/idle/dev/index.tsx @@ -1,5 +1,4 @@ import { Component, Switch, Match } from "solid-js"; -import { render } from "solid-js/web"; import { createIdleTimer } from "../src"; @@ -45,4 +44,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/idle/dev/vite.config.ts b/packages/idle/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/idle/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/idle/package.json b/packages/idle/package.json index a1f0a67ec..d11f07b5f 100644 --- a/packages/idle/package.json +++ b/packages/idle/package.json @@ -39,12 +39,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "solid", diff --git a/packages/immutable/CHANGELOG.md b/packages/immutable/CHANGELOG.md index c04336b2e..6ddb9b559 100644 --- a/packages/immutable/CHANGELOG.md +++ b/packages/immutable/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/immutable +## 1.0.2 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/keyed@1.2.0 + ## 1.0.1 ### Patch Changes diff --git a/packages/immutable/README.md b/packages/immutable/README.md index 1b077e717..1928fdba4 100644 --- a/packages/immutable/README.md +++ b/packages/immutable/README.md @@ -126,7 +126,7 @@ refetch(); ## Demo -You can see the live demo [here](https://solidjs-community.github.io/solid-primitives/immutable). +You can see the live demo [here](https://primitives.solidjs.community/playground/immutable). [Source code](./dev/index.tsx) diff --git a/packages/immutable/dev/index.html b/packages/immutable/dev/index.html deleted file mode 100644 index c768a70c2..000000000 --- a/packages/immutable/dev/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - Solid App - - - - -
- - - - diff --git a/packages/immutable/dev/index.tsx b/packages/immutable/dev/index.tsx index 470c74d06..1d9d82167 100644 --- a/packages/immutable/dev/index.tsx +++ b/packages/immutable/dev/index.tsx @@ -1,11 +1,8 @@ import { Component, For, createSignal } from "solid-js"; -import { render } from "solid-js/web"; + import { TransitionGroup } from "solid-transition-group"; import { createImmutable } from "../src"; import { PayloadAction, createSlice, configureStore } from "@reduxjs/toolkit"; -import { createStore, reconcile } from "solid-js/store"; - -import "uno.css"; type Todo = { id: number; @@ -178,12 +175,11 @@ const Todos: Component<{ slice: typeof todoArray | typeof todoObject }> = props ); }; -render( - () => ( +export default function App() { + return ( <> - ), - document.getElementById("root")!, -); + ); +} diff --git a/packages/immutable/dev/vite.config.ts b/packages/immutable/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/immutable/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/immutable/package.json b/packages/immutable/package.json index e77ad1718..bc48e77a1 100644 --- a/packages/immutable/package.json +++ b/packages/immutable/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/immutable", - "version": "1.0.1", + "version": "1.0.2", "description": "Primitive for rectifying immutable values and dealing with immutability in Solid.", "author": "Damian Tarnawski ", "contributors": [], @@ -46,11 +46,11 @@ }, "typesVersions": {}, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/input-mask/dev/index.html b/packages/input-mask/dev/index.html deleted file mode 100644 index 361cc34af..000000000 --- a/packages/input-mask/dev/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/input-mask/dev/index.tsx b/packages/input-mask/dev/index.tsx index be534469c..503f76201 100644 --- a/packages/input-mask/dev/index.tsx +++ b/packages/input-mask/dev/index.tsx @@ -1,7 +1,6 @@ import { Component } from "solid-js"; -import { render } from "solid-js/web"; + import { anyMaskToFn, createInputMask, maskArrayToFn, Selection } from "../src"; -import "uno.css"; const App: Component = () => { // ISO Date @@ -91,4 +90,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/input-mask/dev/vite.config.ts b/packages/input-mask/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/input-mask/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/input-mask/package.json b/packages/input-mask/package.json index 08c764583..612c5fab5 100644 --- a/packages/input-mask/package.json +++ b/packages/input-mask/package.json @@ -38,11 +38,11 @@ "dist" ], "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "solid", diff --git a/packages/intersection-observer/CHANGELOG.md b/packages/intersection-observer/CHANGELOG.md index 7fba47427..040fdcd63 100644 --- a/packages/intersection-observer/CHANGELOG.md +++ b/packages/intersection-observer/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/intersection-observer +## 2.1.2 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 2.1.1 ### Patch Changes diff --git a/packages/intersection-observer/README.md b/packages/intersection-observer/README.md index 49fb56377..be2921054 100644 --- a/packages/intersection-observer/README.md +++ b/packages/intersection-observer/README.md @@ -179,7 +179,7 @@ function createViewportObserver( ## Demo -[a working example](https://solidjs-community.github.io/solid-primitives/intersection-observer/) ([source](https://github.com/solidjs-community/solid-primitives/tree/main/packages/intersection-observer/dev)) +[a working example](https://primitives.solidjs.community/playground/intersection-observer/) ([source](https://github.com/solidjs-community/solid-primitives/tree/main/packages/intersection-observer/dev)) ## Changelog diff --git a/packages/intersection-observer/dev/index.html b/packages/intersection-observer/dev/index.html deleted file mode 100644 index 0eae9654f..000000000 --- a/packages/intersection-observer/dev/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/intersection-observer/dev/index.tsx b/packages/intersection-observer/dev/index.tsx index 8f65d4153..3ad442dcb 100644 --- a/packages/intersection-observer/dev/index.tsx +++ b/packages/intersection-observer/dev/index.tsx @@ -1,8 +1,7 @@ import { Component, createSignal } from "solid-js"; -import { render } from "solid-js/web"; + import { Repeat } from "@solid-primitives/range"; import { createVisibilityObserver, withDirection, withOccurrence, DirectionY } from "../src"; -import "uno.css"; const App: Component = () => { const useVisibilityObserver = createVisibilityObserver( @@ -65,4 +64,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/intersection-observer/dev/vite.config.ts b/packages/intersection-observer/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/intersection-observer/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/intersection-observer/package.json b/packages/intersection-observer/package.json index b28b11367..a50902741 100644 --- a/packages/intersection-observer/package.json +++ b/packages/intersection-observer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/intersection-observer", - "version": "2.1.1", + "version": "2.1.2", "description": "Primitives to support using the intersection observer API.", "author": "David Di Biase ", "contributors": [ @@ -41,12 +41,11 @@ }, "typesVersions": {}, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "intersection", diff --git a/packages/jsx-tokenizer/CHANGELOG.md b/packages/jsx-tokenizer/CHANGELOG.md index a42011be0..fc074ce11 100644 --- a/packages/jsx-tokenizer/CHANGELOG.md +++ b/packages/jsx-tokenizer/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/jsx-tokenizer +## 1.0.6 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.0.5 ### Patch Changes diff --git a/packages/jsx-tokenizer/README.md b/packages/jsx-tokenizer/README.md index 95e48a906..d5c83d441 100644 --- a/packages/jsx-tokenizer/README.md +++ b/packages/jsx-tokenizer/README.md @@ -293,7 +293,7 @@ isToken([tokenizer1, tokenizer2, MyTokenComponent], token); ## Demo -[Live Example](https://solidjs-community.github.io/solid-primitives/) | [Source Code](./dev/index.tsx) +[Live Example](https://primitives.solidjs.community/playground/) | [Source Code](./dev/index.tsx) ## Changelog diff --git a/packages/jsx-tokenizer/dev/index.html b/packages/jsx-tokenizer/dev/index.html deleted file mode 100644 index 38e477282..000000000 --- a/packages/jsx-tokenizer/dev/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/jsx-tokenizer/dev/index.tsx b/packages/jsx-tokenizer/dev/index.tsx index 20cbbdf5c..7d6e78d75 100644 --- a/packages/jsx-tokenizer/dev/index.tsx +++ b/packages/jsx-tokenizer/dev/index.tsx @@ -1,6 +1,5 @@ import { Component, JSX, ParentComponent } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { createTokenizer, createToken, isToken, resolveTokens } from "../src"; type Props = { @@ -93,4 +92,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/jsx-tokenizer/dev/vite.config.ts b/packages/jsx-tokenizer/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/jsx-tokenizer/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/jsx-tokenizer/package.json b/packages/jsx-tokenizer/package.json index a4030f9c1..44196495b 100644 --- a/packages/jsx-tokenizer/package.json +++ b/packages/jsx-tokenizer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/jsx-tokenizer", - "version": "1.0.5", + "version": "1.0.6", "description": "A primitive to tokenize your solid-components to enable custom parsing.", "author": "Vincent Van Dijck ", "contributors": [ @@ -50,11 +50,11 @@ }, "typesVersions": {}, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "dependencies": { "@solid-primitives/utils": "workspace:^" diff --git a/packages/keyboard/CHANGELOG.md b/packages/keyboard/CHANGELOG.md index 7a29a8ef0..9e99f80a7 100644 --- a/packages/keyboard/CHANGELOG.md +++ b/packages/keyboard/CHANGELOG.md @@ -1,5 +1,21 @@ # @solid-primitives/keyboard +## 1.2.3 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/event-listener@2.2.13 + - @solid-primitives/rootless@1.4.1 + +## 1.2.2 + +### Patch Changes + +- Updated dependencies [f03c47b0] + - @solid-primitives/event-listener@2.2.12 + ## 1.2.1 ### Patch Changes diff --git a/packages/keyboard/dev/index.html b/packages/keyboard/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/keyboard/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/keyboard/dev/index.tsx b/packages/keyboard/dev/index.tsx index f7a29fcca..5801fecbc 100644 --- a/packages/keyboard/dev/index.tsx +++ b/packages/keyboard/dev/index.tsx @@ -1,7 +1,6 @@ /* @refresh reload */ import { Component, createSignal, For } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { useKeyDownList, createKeyHold, createShortcut } from "../src"; const MessageStack: Component<{ @@ -70,4 +69,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/keyboard/dev/vite.config.ts b/packages/keyboard/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/keyboard/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/keyboard/package.json b/packages/keyboard/package.json index a15e06d6f..f1056eef9 100644 --- a/packages/keyboard/package.json +++ b/packages/keyboard/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/keyboard", - "version": "1.2.1", + "version": "1.2.3", "description": "A library of reactive promitives helping handling user's keyboard input.", "author": "Damian Tarnwski ", "contributors": [], @@ -50,11 +50,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "dependencies": { "@solid-primitives/event-listener": "workspace:^", diff --git a/packages/keyed/dev/index.html b/packages/keyed/dev/index.html deleted file mode 100644 index 1c5586c54..000000000 --- a/packages/keyed/dev/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/keyed/dev/index.tsx b/packages/keyed/dev/index.tsx index 2480c8cd7..65579c579 100644 --- a/packages/keyed/dev/index.tsx +++ b/packages/keyed/dev/index.tsx @@ -1,7 +1,6 @@ import { Component } from "solid-js"; -import { render } from "solid-js/web"; + import Key from "./key"; -import "uno.css"; const App: Component = () => { return ( @@ -10,4 +9,4 @@ const App: Component = () => {
); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/keyed/dev/vite.config.ts b/packages/keyed/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/keyed/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/keyed/package.json b/packages/keyed/package.json index ea1a3f14d..d261ba8b0 100644 --- a/packages/keyed/package.json +++ b/packages/keyed/package.json @@ -43,11 +43,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "devDependencies": { "@solid-primitives/refs": "workspace:^", diff --git a/packages/lifecycle/README.md b/packages/lifecycle/README.md index a841e62f8..f21fedaa8 100644 --- a/packages/lifecycle/README.md +++ b/packages/lifecycle/README.md @@ -122,7 +122,7 @@ However, it is not certain that the elements are actually connected to the DOM w ## Demo -You can see the primitives in action in the following sandbox: https://solidjs-community.github.io/solid-primitives/lifecycle/ +You can see the primitives in action in the following sandbox: https://primitives.solidjs.community/playground/lifecycle/ ## Changelog diff --git a/packages/lifecycle/dev/index.html b/packages/lifecycle/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/lifecycle/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/lifecycle/dev/index.tsx b/packages/lifecycle/dev/index.tsx index fda511410..dba1a6c4b 100644 --- a/packages/lifecycle/dev/index.tsx +++ b/packages/lifecycle/dev/index.tsx @@ -1,9 +1,8 @@ import { children, createSignal, JSX, onMount } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { onElementConnect } from "../src"; -function App() { +function Button() { const [count, setCount] = createSignal(1); const increment = () => setCount(count() + 1); @@ -24,9 +23,11 @@ function App() { ); } -render(() => { - const r = children(() => ); +function App() { + const r = children(() => + +
+ I am the stuff! +
+
+
+ ); +}; +``` + +### `createPresence` switching example + +The first argument of `createPresence` is a signal accessor of arbitrary type. This allows you to use it with any kind of data, not just booleans. This is useful if you want to animate between different items. If you utilize the returned `mountedItem` property, you can get the data which should be currently mounted regardless of the animation state + +```tsx +const SecondExample = () => { + const items = ["foo", "bar", "baz", "qux"]; + const [activeItem, setActiveItem] = createSignal(items[0]); + const presence = createPresence(activeItem, { + transitionDuration: 500, + }); + + return ( +
+ + {item => ( + + )} + + +
+ {presence.mountedItem()} +
+
+
+ ); +}; +``` + +### `createPresence` options API + +```ts +function createPresence( + item: Accessor, + options: Options, +): PresenceResult; + +type Options = { + /** Duration in milliseconds used both for enter and exit transitions. */ + transitionDuration: MaybeAccessor; + /** Duration in milliseconds used for enter transitions (overrides `transitionDuration` if provided). */ + enterDuration: MaybeAccessor; + /** Duration in milliseconds used for exit transitions (overrides `transitionDuration` if provided). */ + exitDuration: MaybeAccessor; + /** Opt-in to animating the entering of an element if `isVisible` is `true` during the initial mount. */ + initialEnter?: boolean; +}; + +type PresenceResult = { + /** Should the component be returned from render? */ + isMounted: Accessor; + /** The item that is currently mounted. */ + mountedItem: Accessor; + /** Should the component have its visible styles applied? */ + isVisible: Accessor; + /** Is the component either entering or exiting currently? */ + isAnimating: Accessor; + /** Is the component entering currently? */ + isEntering: Accessor; + /** Is the component exiting currently? */ + isExiting: Accessor; +}; +``` + +## Demo + +Demo can be seen [here](https://stackblitz.com/edit/presence-demo). + +## Changelog + +See [CHANGELOG.md](./CHANGELOG.md) + +## Related + +- [`use-presence`](https://www.npmjs.com/package/use-presence) +- [`@solid-primitives/transition-group`](https://www.npmjs.com/package/@solid-primitives/transition-group) diff --git a/packages/presence/dev/index.tsx b/packages/presence/dev/index.tsx new file mode 100644 index 000000000..352f5a626 --- /dev/null +++ b/packages/presence/dev/index.tsx @@ -0,0 +1,102 @@ +import { Component, For, Show, createSignal } from "solid-js"; +import { createPresence } from "../src"; + +const App: Component = () => { + return ( + <> + + + + ); +}; + +const FirstExample = () => { + const [showStuff, setShowStuff] = createSignal(true); + const { isVisible, isMounted } = createPresence(showStuff, { + transitionDuration: 500, + }); + + return ( +
+ + +
+ I am the stuff! +
+
+
+ ); +}; + +const SecondExample = () => { + const items = ["foo", "bar", "baz", "qux"]; + const [item, setItem] = createSignal<(typeof items)[number] | undefined>(items[0]); + const { isMounted, mountedItem, isEntering, isVisible, isExiting } = createPresence(item, { + transitionDuration: 500, + }); + + return ( +
+ + {currItem => ( + + )} + + +
+ {mountedItem()} +
+
+
+ ); +}; + +export default App; diff --git a/packages/presence/package.json b/packages/presence/package.json new file mode 100644 index 000000000..829ed5f75 --- /dev/null +++ b/packages/presence/package.json @@ -0,0 +1,57 @@ +{ + "name": "@solid-primitives/presence", + "version": "0.0.2", + "description": "Utility to animate the presence of an element based on the existence of data or lack thereof.", + "author": "Ethan Standel ", + "license": "MIT", + "homepage": "https://github.com/solidjs-community/solid-primitives/tree/main/packages/presence#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/solidjs-community/solid-primitives.git" + }, + "primitive": { + "name": "presence", + "stage": 0, + "list": [ + "createPresence" + ], + "category": "Animation" + }, + "files": [ + "dist" + ], + "private": false, + "sideEffects": false, + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "browser": {}, + "exports": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": "./dist/index.cjs" + }, + "keywords": [ + "animation", + "animate", + "presence", + "transition" + ], + "scripts": { + "dev": "jiti ../../scripts/dev.ts", + "build": "jiti ../../scripts/build.ts", + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" + }, + "dependencies": { + "@solid-primitives/utils": "workspace:^" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + }, + "typesVersions": {} +} diff --git a/packages/presence/src/index.ts b/packages/presence/src/index.ts new file mode 100644 index 000000000..e720e1c4b --- /dev/null +++ b/packages/presence/src/index.ts @@ -0,0 +1,181 @@ +/* + +MIT License (MIT) +Inspired by & directly forked from use-presence by Jan Amann @amannn +See https://github.com/amannn/react-hooks/tree/main/packages/use-presence + +*/ + +import { + createSignal, + createEffect, + onCleanup, + type Accessor, + createMemo, + untrack, +} from "solid-js"; +import { MaybeAccessor, asAccessor } from "@solid-primitives/utils"; + +export type SharedTransitionConfig = { + /** Duration in milliseconds used both for enter and exit transitions. */ + transitionDuration: MaybeAccessor; +}; + +export type SeparateTransitionConfig = { + /** Duration in milliseconds used for enter transitions (overrides `transitionDuration` if provided). */ + enterDuration: MaybeAccessor; + /** Duration in milliseconds used for exit transitions (overrides `transitionDuration` if provided). */ + exitDuration: MaybeAccessor; +}; + +export type Options = ( + | SharedTransitionConfig + | SeparateTransitionConfig + | (SharedTransitionConfig & SeparateTransitionConfig) +) & { + /** Opt-in to animating the entering of an element if `isVisible` is `true` during the initial mount. */ + initialEnter?: boolean; +}; + +/** + * Animates the appearance of its children. + * + * @internal - to be combined with `createPresence` in the future + */ +function createPresenceBase( + /** Indicates whether the component that the resulting values will be used upon should be visible to the user. */ + source: Accessor, + options: Options, +) { + const exitDuration = asAccessor( + "exitDuration" in options ? options.exitDuration : options.transitionDuration, + ); + const enterDuration = asAccessor( + "enterDuration" in options ? options.enterDuration : options.transitionDuration, + ); + + const initialSource = untrack(source); + const initialState = options.initialEnter ? false : initialSource; + const [isVisible, setIsVisible] = createSignal(initialState); + const [isMounted, setIsMounted] = createSignal(initialSource); + const [hasEntered, setHasEntered] = createSignal(initialState); + + const isExiting = createMemo(() => isMounted() && !source()); + const isEntering = createMemo(() => source() && !hasEntered()); + const isAnimating = createMemo(() => isEntering() || isExiting()); + + createEffect(() => { + if (source()) { + // `animateVisible` needs to be set to `true` in a second step, as + // when both flags would be flipped at the same time, there would + // be no transition. See the second effect below. + setIsMounted(true); + } else { + setHasEntered(false); + setIsVisible(false); + + const timeoutId = setTimeout(() => { + setIsMounted(false); + }, exitDuration()); + + onCleanup(() => clearTimeout(timeoutId)); + } + }); + + createEffect(() => { + if (source() && isMounted() && !isVisible()) { + document.body.offsetHeight; // force reflow + + const animationFrameId = requestAnimationFrame(() => { + setIsVisible(true); + }); + + onCleanup(() => cancelAnimationFrame(animationFrameId)); + } + }); + + createEffect(() => { + if (isVisible() && !hasEntered()) { + const timeoutId = setTimeout(() => { + setHasEntered(true); + }, enterDuration()); + + onCleanup(() => clearTimeout(timeoutId)); + } + }); + + return { + isMounted, + isVisible, + isAnimating, + isEntering, + isExiting, + }; +} + +const itemShouldBeMounted = (item: TItem) => item !== false && item != null; + +/** + * The result of {@link createPresence}. + */ +export type PresenceResult = { + /** Should the component be returned from render? */ + isMounted: Accessor; + /** The item that is currently mounted. */ + mountedItem: Accessor; + /** Should the component have its visible styles applied? */ + isVisible: Accessor; + /** Is the component either entering or exiting currently? */ + isAnimating: Accessor; + /** Is the component entering currently? */ + isEntering: Accessor; + /** Is the component exiting currently? */ + isExiting: Accessor; +}; + +/** + * Utility to animate the presence of an element based on the existence of data or lack thereof. + * + * @param item a reactive value driving the transition + * @param options options to configure the transition, see {@link Options} + * @returns an object with reactive accessors representing the state of the transition. See {@link PresenceResult}. + * + * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/presence#createPresence + * + * @example + * ```ts + * const items = ["foo", "bar", "baz", "qux"]; + * const [activeItem, setActiveItem] = createSignal(items[0]); + * const presence = createPresence(activeItem); + * ``` + */ +export function createPresence( + item: Accessor, + options: Options, +): PresenceResult { + const initial = untrack(item); + const [mountedItem, setMountedItem] = createSignal(initial); + const [shouldBeMounted, setShouldBeMounted] = createSignal(itemShouldBeMounted(initial)); + const { isMounted, ...rest } = createPresenceBase(shouldBeMounted, options); + + createEffect(() => { + if (mountedItem() !== item()) { + if (isMounted()) { + setShouldBeMounted(false); + } else if (itemShouldBeMounted(item())) { + setMountedItem(() => item()); + setShouldBeMounted(true); + } + } else if (!itemShouldBeMounted(item())) { + setShouldBeMounted(false); + } else if (itemShouldBeMounted(item())) { + setShouldBeMounted(true); + } + }); + + return { + ...rest, + isMounted: () => isMounted() && mountedItem() !== undefined, + mountedItem, + }; +} diff --git a/packages/presence/test/createPresence.test.ts b/packages/presence/test/createPresence.test.ts new file mode 100644 index 000000000..5dd1dbe1a --- /dev/null +++ b/packages/presence/test/createPresence.test.ts @@ -0,0 +1,191 @@ +import { describe, it, expect } from "vitest"; +import { createRoot, createSignal } from "solid-js"; +import { createPresence } from "../src"; + +const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); +// The state transitions often take an extra ~20ms to changeover +// because the transition currently has an awaited animation frame +// which Vitest seems to just assume is (1 / 60Hz) seconds +// So 50 is added onto wait times for safety +const transitionTimeOffset = 50; + +describe("createPresence", () => { + it("initially marks the element's mounted & visibility status based on the initial state", () => + createRoot(dispose => { + const [shouldRender] = createSignal(true); + const first = createPresence(shouldRender, { + transitionDuration: 50, + }); + expect(first.isMounted()).toBe(true); + expect(first.isVisible()).toBe(true); + + const [shouldNotRender] = createSignal(false); + const second = createPresence(shouldNotRender, { + transitionDuration: 50, + }); + expect(second.isMounted()).toBe(false); + expect(second.isVisible()).toBe(false); + dispose(); + })); + + it("initially is never animating by default", () => + createRoot(dispose => { + const [shouldRender] = createSignal(true); + const first = createPresence(shouldRender, { + transitionDuration: 50, + }); + expect(first.isAnimating()).toBe(false); + + const [shouldNotRender] = createSignal(false); + const second = createPresence(shouldNotRender, { + transitionDuration: 50, + }); + expect(second.isAnimating()).toBe(false); + dispose(); + })); + + it("is animating if the initial render state is true and the initialEnter option is provided as true", () => + createRoot(dispose => { + const [shouldRender] = createSignal(true); + const first = createPresence(shouldRender, { + transitionDuration: 50, + initialEnter: true, + }); + expect(first.isAnimating()).toBe(true); + + const [shouldNotRender] = createSignal(false); + const second = createPresence(shouldNotRender, { + transitionDuration: 50, + initialEnter: true, + }); + // not animating because it doesn't exist initially + expect(second.isAnimating()).toBe(false); + dispose(); + })); + + it("is in a mounted & animating state for the transitionDuration and then it is only in a mounted state", () => + createRoot(async dispose => { + const [shouldRender, setShouldRender] = createSignal(false); + const transitionDuration = 50; + const { isMounted, isAnimating } = createPresence(shouldRender, { + transitionDuration, + }); + expect(isMounted()).toBe(false); + expect(isAnimating()).toBe(false); + setShouldRender(true); + await sleep(0); + expect(isMounted()).toBe(true); + expect(isAnimating()).toBe(true); + await sleep(transitionDuration + transitionTimeOffset); + expect(isMounted()).toBe(true); + expect(isAnimating()).toBe(false); + setShouldRender(false); + await sleep(0); + expect(isMounted()).toBe(true); + expect(isAnimating()).toBe(true); + await sleep(transitionDuration + transitionTimeOffset); + expect(isMounted()).toBe(false); + expect(isAnimating()).toBe(false); + dispose(); + })); + + it("swaps between a mounted & unmounted state based on unique enter & exit transition states", () => + createRoot(async dispose => { + const [shouldRender, setShouldRender] = createSignal(false); + // using longer durations to ensure that the transitionTimeOffset + // is doesn't play into the test timings + const enterDuration = 300; + const exitDuration = 150; + const { isMounted, isAnimating } = createPresence(shouldRender, { + enterDuration, + exitDuration, + }); + expect(isMounted()).toBe(false); + expect(isAnimating()).toBe(false); + setShouldRender(true); + await sleep(0); + expect(isMounted()).toBe(true); + expect(isAnimating()).toBe(true); + // ensure that we're not done animating after the shorter time + await sleep(exitDuration + transitionTimeOffset); + expect(isAnimating()).toBe(true); + await sleep(exitDuration + transitionTimeOffset); + expect(isMounted()).toBe(true); + expect(isAnimating()).toBe(false); + setShouldRender(false); + await sleep(0); + expect(isMounted()).toBe(true); + expect(isAnimating()).toBe(true); + await sleep(exitDuration + transitionTimeOffset); + expect(isMounted()).toBe(false); + expect(isAnimating()).toBe(false); + dispose(); + })); + + // data switching tests + + type Data = "foo" | "bar" | "baz" | undefined; + + it("initially identifies as not mounted if the initial data is undefined", () => + createRoot(dispose => { + const [data] = createSignal(); + const { mountedItem, isMounted } = createPresence(data, { + transitionDuration: 50, + }); + expect(mountedItem()).toBe(undefined); + expect(isMounted()).toBe(false); + dispose(); + })); + + it("initially identifies as mounted if the initial data is defined", () => + createRoot(dispose => { + const [data] = createSignal("foo"); + const { mountedItem, isMounted } = createPresence(data, { + transitionDuration: 50, + }); + expect(mountedItem()).toBe("foo"); + expect(isMounted()).toBe(true); + dispose(); + })); + + it("initially animates if the initial data is defined", () => + createRoot(async dispose => { + const [data] = createSignal("foo"); + const transitionDuration = 50; + const { mountedItem, isAnimating } = createPresence(data, { + transitionDuration, + initialEnter: true, + }); + expect(mountedItem()).toBe("foo"); + expect(isAnimating()).toBe(true); + await sleep(transitionDuration + transitionTimeOffset); + expect(isAnimating()).toBe(false); + dispose(); + })); + + it("initially exchanges the data over the transition time", () => + createRoot(async dispose => { + const [data, setData] = createSignal("foo"); + const transitionDuration = 150; + const { mountedItem, isAnimating, isEntering, isExiting } = createPresence(data, { + transitionDuration, + }); + expect(isAnimating()).toBe(false); + setData("bar"); + await sleep(0); + expect(isAnimating()).toBe(true); + expect(mountedItem()).toBe("foo"); + expect(isExiting()).toBe(true); + expect(isEntering()).toBe(false); + await sleep(transitionDuration + transitionTimeOffset); + expect(isAnimating()).toBe(true); + expect(mountedItem()).toBe("bar"); + expect(isEntering()).toBe(true); + expect(isExiting()).toBe(false); + await sleep(transitionDuration + transitionTimeOffset); + expect(isAnimating()).toBe(false); + expect(isEntering()).toBe(false); + expect(isExiting()).toBe(false); + dispose(); + })); +}); diff --git a/packages/presence/test/server.test.ts b/packages/presence/test/server.test.ts new file mode 100644 index 000000000..53458ebfe --- /dev/null +++ b/packages/presence/test/server.test.ts @@ -0,0 +1,43 @@ +import { describe, test, expect } from "vitest"; +import { createPresence } from "../src"; +import { createSignal } from "solid-js"; + +describe("on server", () => { + test("createPresence initializes requested state as expected", () => { + const [shouldRender] = createSignal(true); + const first = createPresence(shouldRender, { transitionDuration: 50, initialEnter: true }); + expect(first.isAnimating()).toBe(true); + expect(first.isEntering()).toBe(true); + expect(first.isExiting()).toBe(false); + expect(first.isMounted()).toBe(true); + expect(first.isVisible()).toBe(false); + + const [shouldNotRender] = createSignal(false); + const second = createPresence(shouldNotRender, { transitionDuration: 50 }); + expect(second.isAnimating()).toBe(false); + expect(second.isEntering()).toBe(false); + expect(second.isExiting()).toBe(false); + expect(second.isMounted()).toBe(false); + expect(second.isVisible()).toBe(false); + }); + + test("createPresence initializes requested switching state as expected", () => { + const [data] = createSignal("foo"); + const first = createPresence(data, { transitionDuration: 50, initialEnter: true }); + expect(first.mountedItem()).toBe("foo"); + expect(first.isAnimating()).toBe(true); + expect(first.isEntering()).toBe(true); + expect(first.isExiting()).toBe(false); + expect(first.isMounted()).toBe(true); + expect(first.isVisible()).toBe(false); + + const [noData] = createSignal(); + const second = createPresence(noData, { transitionDuration: 50 }); + expect(second.mountedItem()).toBe(undefined); + expect(second.isAnimating()).toBe(false); + expect(second.isEntering()).toBe(false); + expect(second.isExiting()).toBe(false); + expect(second.isMounted()).toBe(false); + expect(second.isVisible()).toBe(false); + }); +}); diff --git a/packages/presence/tsconfig.json b/packages/presence/tsconfig.json new file mode 100644 index 000000000..4082f16a5 --- /dev/null +++ b/packages/presence/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/packages/promise/CHANGELOG.md b/packages/promise/CHANGELOG.md index ca4bb6411..db56da359 100644 --- a/packages/promise/CHANGELOG.md +++ b/packages/promise/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/until +## 1.0.12 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.0.11 ### Patch Changes diff --git a/packages/promise/package.json b/packages/promise/package.json index e81061c53..5257caf62 100644 --- a/packages/promise/package.json +++ b/packages/promise/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/promise", - "version": "1.0.11", + "version": "1.0.12", "description": "Promised one-time watch for changes. Await a reactive condition.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -37,9 +37,11 @@ "dist" ], "scripts": { + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "until", diff --git a/packages/props/CHANGELOG.md b/packages/props/CHANGELOG.md index cc55b935a..49f1d1fc8 100644 --- a/packages/props/CHANGELOG.md +++ b/packages/props/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/props +## 3.1.6 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 3.1.5 ### Patch Changes diff --git a/packages/props/dev/index.html b/packages/props/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/props/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/props/dev/index.tsx b/packages/props/dev/index.tsx index 067911161..95b3b9af4 100644 --- a/packages/props/dev/index.tsx +++ b/packages/props/dev/index.tsx @@ -1,6 +1,5 @@ import { Component, ComponentProps, createSignal, Show } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { combineProps } from "../src"; const Button = (props: ComponentProps<"button">) => { @@ -68,4 +67,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/props/dev/vite.config.ts b/packages/props/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/props/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/props/package.json b/packages/props/package.json index f617352b9..05a7bc59e 100644 --- a/packages/props/package.json +++ b/packages/props/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/props", - "version": "3.1.5", + "version": "3.1.6", "description": "Library of primitives focused around component props.", "author": "Damian Tarnawski ", "contributors": [], @@ -42,11 +42,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "dependencies": { "@solid-primitives/utils": "workspace:^" diff --git a/packages/raf/CHANGELOG.md b/packages/raf/CHANGELOG.md index aee8af029..998fd9a20 100644 --- a/packages/raf/CHANGELOG.md +++ b/packages/raf/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/raf +## 2.1.12 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 2.1.11 ### Patch Changes diff --git a/packages/raf/dev/index.html b/packages/raf/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/raf/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/raf/dev/index.tsx b/packages/raf/dev/index.tsx index 57eccdddb..36bb09ac5 100644 --- a/packages/raf/dev/index.tsx +++ b/packages/raf/dev/index.tsx @@ -1,5 +1,5 @@ import { Component, createSignal, Show, createEffect } from "solid-js"; -import { render } from "solid-js/web"; + import RAF from "./raf"; const App: Component = () => { @@ -25,4 +25,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/raf/dev/vite.config.ts b/packages/raf/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/raf/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/raf/package.json b/packages/raf/package.json index 2dd88f0d8..1fabc1ee8 100644 --- a/packages/raf/package.json +++ b/packages/raf/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/raf", - "version": "2.1.11", + "version": "2.1.12", "description": "Primitive that facilitates RAF functionality", "author": "David Di Biase ", "contributors": [ @@ -40,10 +40,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", - "build": "jiti ../../scripts/build.ts" + "dev": "jiti ../../scripts/dev.ts", + "build": "jiti ../../scripts/build.ts", + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "raf", diff --git a/packages/range/CHANGELOG.md b/packages/range/CHANGELOG.md index 309543d0c..ede9d702c 100644 --- a/packages/range/CHANGELOG.md +++ b/packages/range/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/range +## 0.1.14 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.1.13 ### Patch Changes diff --git a/packages/range/dev/index.html b/packages/range/dev/index.html deleted file mode 100644 index 1c5586c54..000000000 --- a/packages/range/dev/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/range/dev/index.tsx b/packages/range/dev/index.tsx index 6b2afe8a0..10dd7f404 100644 --- a/packages/range/dev/index.tsx +++ b/packages/range/dev/index.tsx @@ -1,8 +1,8 @@ import { Repeat, Range, IndexRange } from "../src"; import { Component, createSignal, onCleanup } from "solid-js"; -import { render } from "solid-js/web"; + import { TransitionGroup } from "solid-transition-group"; -import "uno.css"; + import { createStore } from "solid-js/store"; const Ball = (props: { n: number }) => ( @@ -78,4 +78,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/range/dev/vite.config.ts b/packages/range/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/range/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/range/package.json b/packages/range/package.json index f1255bac0..048698c8f 100644 --- a/packages/range/package.json +++ b/packages/range/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/range", - "version": "0.1.13", + "version": "0.1.14", "description": "Control Flow Primitives for displaying given number or a number range of elements.", "author": "Damian Tarnawski @thetarnav ", "contributors": [], @@ -51,11 +51,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "devDependencies": { "solid-transition-group": "^0.2.2" diff --git a/packages/refs/CHANGELOG.md b/packages/refs/CHANGELOG.md index e0a378fa0..53967f517 100644 --- a/packages/refs/CHANGELOG.md +++ b/packages/refs/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/refs +## 1.0.4 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.0.3 ### Patch Changes diff --git a/packages/refs/dev/index.html b/packages/refs/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/refs/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/refs/dev/index.tsx b/packages/refs/dev/index.tsx index 50e250bc3..69c9303cc 100644 --- a/packages/refs/dev/index.tsx +++ b/packages/refs/dev/index.tsx @@ -1,7 +1,6 @@ import { Component, lazy } from "solid-js"; -import { render } from "solid-js/web"; + import { Router, Routes, Route, Link } from "solid-app-router"; -import "uno.css"; const Key = lazy(() => import("./key")); @@ -24,4 +23,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/refs/dev/vite.config.ts b/packages/refs/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/refs/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/refs/package.json b/packages/refs/package.json index a27a1bef6..9ec6a519a 100644 --- a/packages/refs/package.json +++ b/packages/refs/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/refs", - "version": "1.0.3", + "version": "1.0.4", "description": "Library of primitives, components and directives for SolidJS that help managing references to JSX elements.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -40,11 +40,11 @@ }, "typesVersions": {}, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "elements", diff --git a/packages/resize-observer/CHANGELOG.md b/packages/resize-observer/CHANGELOG.md index dcbd3882e..b104b213b 100644 --- a/packages/resize-observer/CHANGELOG.md +++ b/packages/resize-observer/CHANGELOG.md @@ -1,5 +1,22 @@ # @solid-primitives/resize-observer +## 2.0.18 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/event-listener@2.2.13 + - @solid-primitives/rootless@1.4.1 + - @solid-primitives/static-store@0.0.4 + +## 2.0.17 + +### Patch Changes + +- Updated dependencies [f03c47b0] + - @solid-primitives/event-listener@2.2.12 + ## 2.0.16 ### Patch Changes diff --git a/packages/resize-observer/dev/index.html b/packages/resize-observer/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/resize-observer/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/resize-observer/dev/index.tsx b/packages/resize-observer/dev/index.tsx index 58fce94d9..8c8d94101 100644 --- a/packages/resize-observer/dev/index.tsx +++ b/packages/resize-observer/dev/index.tsx @@ -1,6 +1,5 @@ import { Component, createSignal, Setter } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { createElementSize, createWindowSize, createResizeObserver } from "../src"; const NumberInput: Component<{ value: number; setValue: Setter; name: string }> = props => { @@ -60,4 +59,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/resize-observer/dev/vite.config.ts b/packages/resize-observer/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/resize-observer/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/resize-observer/package.json b/packages/resize-observer/package.json index cf4bbcfe3..56390a3a7 100644 --- a/packages/resize-observer/package.json +++ b/packages/resize-observer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/resize-observer", - "version": "2.0.16", + "version": "2.0.18", "description": "Reactive primitives for observing resizing of HTML elements.", "author": "Moshe Udimar", "contributors": [ @@ -46,11 +46,11 @@ "primitives" ], "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "dependencies": { "@solid-primitives/event-listener": "workspace:^", diff --git a/packages/resource/README.md b/packages/resource/README.md index d7294310c..6e2d02f05 100644 --- a/packages/resource/README.md +++ b/packages/resource/README.md @@ -249,7 +249,7 @@ Just use an interval with refetch; ideally, also use [`makeAbortable`](#makeabor ## Demo You may view a working example of createFileSystem/makeVirtualFileSystem/makeWebAccessFileSystem here: -https://solidjs-community.github.io/solid-primitives/resource/ +https://primitives.solidjs.community/playground/resource/ ## Changelog diff --git a/packages/resource/dev/index.html b/packages/resource/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/resource/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/resource/dev/index.tsx b/packages/resource/dev/index.tsx index 45529efea..6ae48d14e 100644 --- a/packages/resource/dev/index.tsx +++ b/packages/resource/dev/index.tsx @@ -1,7 +1,6 @@ import { Component, createResource, createSignal, For, onCleanup, Show } from "solid-js"; -import { render } from "solid-js/web"; + import { makeAbortable, makeCache, makeRetrying } from "../src"; -import "uno.css"; const setsPath = "https://api.tcgdex.net/v2/en/sets"; const cardPath = "https://api.tcgdex.net/v2/en/cards"; @@ -191,4 +190,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/resource/dev/vite.config.ts b/packages/resource/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/resource/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/resource/package.json b/packages/resource/package.json index feb8d1406..f737d894a 100644 --- a/packages/resource/package.json +++ b/packages/resource/package.json @@ -47,11 +47,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/rootless/CHANGELOG.md b/packages/rootless/CHANGELOG.md index 7a8566ad9..188a8b2e3 100644 --- a/packages/rootless/CHANGELOG.md +++ b/packages/rootless/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/rootless +## 1.4.1 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.4.0 ### Minor Changes diff --git a/packages/rootless/dev/index.html b/packages/rootless/dev/index.html deleted file mode 100644 index c768a70c2..000000000 --- a/packages/rootless/dev/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - Solid App - - - - -
- - - - diff --git a/packages/rootless/dev/index.tsx b/packages/rootless/dev/index.tsx index 80bbb1ae4..d2ca14e1e 100644 --- a/packages/rootless/dev/index.tsx +++ b/packages/rootless/dev/index.tsx @@ -1,8 +1,5 @@ import { Accessor, Component, For, batch, createSignal } from "solid-js"; import { StoreSetter, createStore, unwrap } from "solid-js/store"; -import { render } from "solid-js/web"; - -import "uno.css"; import { createRootPool } from "../src"; type TodoItem = { title: string; done: boolean }; @@ -65,4 +62,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/rootless/dev/vite.config.ts b/packages/rootless/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/rootless/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/rootless/package.json b/packages/rootless/package.json index b70021a5d..0c266d6e4 100644 --- a/packages/rootless/package.json +++ b/packages/rootless/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/rootless", - "version": "1.4.0", + "version": "1.4.1", "description": "A collection of helpers that aim to simplify using reactive primitives outside of reactive roots, and managing disposal of reactive roots.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -40,11 +40,11 @@ }, "typesVersions": {}, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "solid", diff --git a/packages/scheduled/dev/index.html b/packages/scheduled/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/scheduled/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/scheduled/dev/index.tsx b/packages/scheduled/dev/index.tsx index 69ee8add9..c68ab96bf 100644 --- a/packages/scheduled/dev/index.tsx +++ b/packages/scheduled/dev/index.tsx @@ -1,8 +1,8 @@ /* @refresh reload */ import { Component } from "solid-js"; -import { render } from "solid-js/web"; + import { Router, Routes, Route, A } from "@solidjs/router"; -import "uno.css"; + import Timeline from "./timeline"; import Reactive from "./reactive"; @@ -27,4 +27,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/scheduled/dev/vite.config.ts b/packages/scheduled/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/scheduled/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/scheduled/package.json b/packages/scheduled/package.json index 34784b085..d48b1ffc2 100644 --- a/packages/scheduled/package.json +++ b/packages/scheduled/package.json @@ -45,12 +45,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "solid", diff --git a/packages/script-loader/package.json b/packages/script-loader/package.json index 9b9a43a73..f6065ffa2 100644 --- a/packages/script-loader/package.json +++ b/packages/script-loader/package.json @@ -38,9 +38,11 @@ "require": "./dist/index.cjs" }, "scripts": { + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/scroll/CHANGELOG.md b/packages/scroll/CHANGELOG.md index c93768059..51bcd8b7c 100644 --- a/packages/scroll/CHANGELOG.md +++ b/packages/scroll/CHANGELOG.md @@ -1,5 +1,20 @@ # @solid-primitives/scroll +## 2.0.17 + +### Patch Changes + +- @solid-primitives/event-listener@2.2.13 +- @solid-primitives/rootless@1.4.1 +- @solid-primitives/static-store@0.0.4 + +## 2.0.16 + +### Patch Changes + +- Updated dependencies [f03c47b0] + - @solid-primitives/event-listener@2.2.12 + ## 2.0.15 ### Patch Changes diff --git a/packages/scroll/dev/index.html b/packages/scroll/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/scroll/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/scroll/dev/index.tsx b/packages/scroll/dev/index.tsx index 75670a06e..a0e5222d6 100644 --- a/packages/scroll/dev/index.tsx +++ b/packages/scroll/dev/index.tsx @@ -1,6 +1,5 @@ import { Component } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { createScrollPosition } from "../src"; const App: Component = () => { @@ -29,4 +28,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/scroll/dev/vite.config.ts b/packages/scroll/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/scroll/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/scroll/package.json b/packages/scroll/package.json index 7fa7199f1..31bb60bbf 100644 --- a/packages/scroll/package.json +++ b/packages/scroll/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/scroll", - "version": "2.0.15", + "version": "2.0.17", "description": "Reactive primitives to react to element/window scrolling.", "author": "David Di Biase ", "contributors": [ @@ -39,12 +39,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr", + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr", "test:watch": "watchlist src test -- npm test" }, "keywords": [ diff --git a/packages/selection/README.md b/packages/selection/README.md index f5a000694..bfa5072a0 100644 --- a/packages/selection/README.md +++ b/packages/selection/README.md @@ -81,7 +81,7 @@ At some point, this might move into the [utils](../utils/README.md) package if u ### DEMO -https://solidjs-community.github.io/solid-primitives/selection +https://primitives.solidjs.community/playground/selection ## Changelog diff --git a/packages/selection/dev/index.html b/packages/selection/dev/index.html deleted file mode 100644 index b9cd3d4fa..000000000 --- a/packages/selection/dev/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/selection/dev/index.tsx b/packages/selection/dev/index.tsx index d173d4527..47a89c30b 100644 --- a/packages/selection/dev/index.tsx +++ b/packages/selection/dev/index.tsx @@ -1,7 +1,6 @@ import { Component, createEffect, createSignal } from "solid-js"; -import { render } from "solid-js/web"; + import { createSelection } from "../src"; -import "uno.css"; const App: Component = () => { const [selection, setSelection] = createSelection(); @@ -75,4 +74,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/selection/dev/vite.config.ts b/packages/selection/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/selection/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/selection/package.json b/packages/selection/package.json index 0b0831987..c5891ffde 100644 --- a/packages/selection/package.json +++ b/packages/selection/package.json @@ -38,12 +38,11 @@ "dist" ], "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "solid", diff --git a/packages/set/CHANGELOG.md b/packages/set/CHANGELOG.md index 88c9c27b3..c0d95ba41 100644 --- a/packages/set/CHANGELOG.md +++ b/packages/set/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/set +## 0.4.5 + +### Patch Changes + +- @solid-primitives/trigger@1.0.7 + ## 0.4.4 ### Patch Changes diff --git a/packages/set/dev/index.html b/packages/set/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/set/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/set/dev/index.tsx b/packages/set/dev/index.tsx index 71b25dd25..857fa5ac5 100644 --- a/packages/set/dev/index.tsx +++ b/packages/set/dev/index.tsx @@ -1,7 +1,6 @@ import { Component, createEffect, For } from "solid-js"; -import { render } from "solid-js/web"; + import { ReactiveSet } from "../src"; -import "uno.css"; const App: Component = () => { const set = new ReactiveSet([1, 2, 3]); @@ -25,4 +24,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/set/dev/vite.config.ts b/packages/set/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/set/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/set/package.json b/packages/set/package.json index 575986a6e..b70ae6059 100644 --- a/packages/set/package.json +++ b/packages/set/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/set", - "version": "0.4.4", + "version": "0.4.5", "description": "The Set & WeakSet data structures as a reactive signals.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -43,11 +43,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/share/dev/index.html b/packages/share/dev/index.html deleted file mode 100644 index 20d81f14d..000000000 --- a/packages/share/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/share/dev/index.tsx b/packages/share/dev/index.tsx index 800b701da..eab8445f0 100644 --- a/packages/share/dev/index.tsx +++ b/packages/share/dev/index.tsx @@ -1,6 +1,4 @@ import { Component, createEffect, createSignal } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; import { createWebShare } from "../src/index"; @@ -28,4 +26,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/share/dev/vite.config.ts b/packages/share/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/share/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/share/package.json b/packages/share/package.json index 8866139f8..52e853489 100644 --- a/packages/share/package.json +++ b/packages/share/package.json @@ -46,11 +46,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/signal-builders/CHANGELOG.md b/packages/signal-builders/CHANGELOG.md index d4efcbad9..71973ba36 100644 --- a/packages/signal-builders/CHANGELOG.md +++ b/packages/signal-builders/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/signal-builders +## 0.1.13 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.1.12 ### Patch Changes diff --git a/packages/signal-builders/package.json b/packages/signal-builders/package.json index 75e6f9188..5ce6477fe 100644 --- a/packages/signal-builders/package.json +++ b/packages/signal-builders/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/signal-builders", - "version": "0.1.12", + "version": "0.1.13", "description": "A collection of chainable and composable reactive signal calculations, aka Signal Builders.", "author": "Your Name ", "license": "MIT", @@ -40,9 +40,11 @@ "require": "./dist/index.cjs" }, "scripts": { + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "dependencies": { "@solid-primitives/utils": "workspace:^" diff --git a/packages/start/LICENSE b/packages/start/LICENSE new file mode 100644 index 000000000..38b41d975 --- /dev/null +++ b/packages/start/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Solid Primitives Working Group + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/start/README.md b/packages/start/README.md new file mode 100644 index 000000000..591a7aa6e --- /dev/null +++ b/packages/start/README.md @@ -0,0 +1,75 @@ +

+ Solid Primitives start +

+ +# @solid-primitives/start + +[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/) +[![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/start?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/start) +[![version](https://img.shields.io/npm/v/@solid-primitives/start?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/start) +[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Ffd.xuwubk.eu.org%3A443%2Fhttps%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) + +A set of primitives for Solid Start + +- [`createServerCookie`](#createservercookie) - Provides a getter and setter for a reactive cookie, which works isomorphically. +- [`createUserTheme`](#createusertheme) - Creates a Server Cookie providing a type safe way to store a theme and access it on the server or client. + +## Installation + +```bash +npm install @solid-primitives/start +# or +yarn add @solid-primitives/start +# or +pnpm add @solid-primitives/start +``` + +## How to use it + +## `createServerCookie` + +A primitive for creating a cookie that can be accessed isomorphically on the client, or the server. + +```ts +const [cookie, setCookie] = createServerCookie("cookieName"); + +cookie(); // => string | undefined +``` + +### Custom serialization + +Custom cookie serializers and deserializers can also be implemented + +```ts +const [serverCookie, setServerCookie] = createServerCookie("coolCookie", { + deserialize: str => (str ? str.split(" ") : []), // Deserializes cookie into a string[] + serialize: val => (val ? val.join(" ") : ""), // serializes the value back into a string +}); + +serverCookie(); // => string[] +``` + +## `createUserTheme` + +Composes `createServerCookie` to provide a type safe way to store a theme and access it on the server or client. + +```ts +const [theme, setTheme] = createUserTheme("cookieName"); + +theme(); // => "light" | "dark" | undefined + +// with default value +const [theme, setTheme] = createUserTheme("cookieName", { + defaultValue: "light", +}); + +theme(); // => "light" | "dark" +``` + +## Demo + +You can view a demo of this primitive here: + +## Changelog + +See [CHANGELOG.md](./CHANGELOG.md) diff --git a/packages/start/dev/index.tsx b/packages/start/dev/index.tsx new file mode 100644 index 000000000..340378c0f --- /dev/null +++ b/packages/start/dev/index.tsx @@ -0,0 +1,21 @@ +import { Component, createSignal } from "solid-js"; + +const App: Component = () => { + const [count, setCount] = createSignal(0); + const increment = () => setCount(count() + 1); + return ( +
+
+
+

Counter component

+

it's very important...

+ +
+
+
+ ); +}; + +export default App; diff --git a/packages/start/package.json b/packages/start/package.json new file mode 100644 index 000000000..a646afa33 --- /dev/null +++ b/packages/start/package.json @@ -0,0 +1,62 @@ +{ + "name": "@solid-primitives/start", + "version": "0.0.1", + "description": "A set of primitives for Solid Start", + "author": "Thomas", + "contributors": [ + "Damian Tarnawski " + ], + "license": "MIT", + "homepage": "https://github.com/solidjs-community/solid-primitives/tree/main/packages/start#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/solidjs-community/solid-primitives.git" + }, + "bugs": { + "url": "https://github.com/solidjs-community/solid-primitives/issues" + }, + "primitive": { + "name": "start", + "stage": 0, + "list": [ + "createServerCookie", + "createUserTheme" + ], + "category": "Solid Start" + }, + "keywords": [ + "solid", + "primitives", + "solid-start", + "ssr" + ], + "private": false, + "sideEffects": false, + "files": [ + "dist" + ], + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "browser": {}, + "exports": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": "./dist/index.cjs" + }, + "typesVersions": {}, + "scripts": { + "dev": "jiti ../../scripts/dev.ts", + "build": "jiti ../../scripts/build.ts", + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" + }, + "peerDependencies": { + "solid-js": "^1.6.12", + "solid-start": "^0.2.26" + } +} diff --git a/packages/start/src/index.ts b/packages/start/src/index.ts new file mode 100644 index 000000000..259879c0e --- /dev/null +++ b/packages/start/src/index.ts @@ -0,0 +1,101 @@ +import { createSignal, createEffect, Signal } from "solid-js"; +import { isServer } from "solid-js/web"; +import { parseCookie } from "solid-start"; +import { useRequest } from "solid-start/server"; + +export type MaxAgeOptions = { + /** + * The maximum age of the cookie in seconds. Defaults to 1 year. + */ + cookieMaxAge?: number; +}; + +export type ServerCookieOptions = MaxAgeOptions & { + /** + * A function to deserialize the cookie value to be used as signal value + */ + deserialize?: (str: string | undefined) => T; + /** + * A function to serialize the signal value to be used as cookie value + */ + serialize?: (value: T) => string; +}; + +const YEAR = 365 * 24 * 60 * 60; + +/** + * A primitive for creating a cookie that can be accessed isomorphically on the client, or the server + * + * @param name The name of the cookie to be set + * @param options Options for the cookie {@see ServerCookieOptions} + * @return Returns an accessor and setter to manage the user's current theme + */ +export function createServerCookie( + name: string, + options: ServerCookieOptions & { + deserialize: (str: string | undefined) => T; + serialize: (value: T) => string; + }, +): Signal; +export function createServerCookie( + name: string, + options?: ServerCookieOptions, +): Signal; +export function createServerCookie( + name: string, + options?: ServerCookieOptions, +): Signal { + const { + deserialize = (v: any) => v as T, + serialize = String, + cookieMaxAge = YEAR, + } = options ?? {}; + + const [cookie, setCookie] = createSignal( + deserialize( + parseCookie(isServer ? useRequest().request.headers.get("cookie") ?? "" : document.cookie)[ + name + ], + ), + ); + + createEffect(p => { + const string = serialize(cookie()); + if (p !== string) document.cookie = `${name}=${string};max-age=${cookieMaxAge}`; + return string; + }); + + return [cookie, setCookie]; +} + +export type Theme = "light" | "dark"; + +export type UserThemeOptions = MaxAgeOptions & { + /** + * The default theme to be used if the cookie is not set + */ + defaultValue?: Theme; +}; + +/** + * Composes {@link createServerCookie} to provide a type safe way to store a theme and access it on the server or client. + * + * @param name The name of the cookie to be set + * @param options Options for the cookie {@link UserThemeOptions} + */ +export function createUserTheme( + name: string | undefined, + options: UserThemeOptions & { defaultValue: Theme }, +): Signal; +export function createUserTheme( + name?: string, + options?: UserThemeOptions, +): Signal; +export function createUserTheme(name = "theme", options?: UserThemeOptions): Signal { + const defaultValue = options?.defaultValue; + return createServerCookie(name, { + ...options, + deserialize: str => (str === "light" || str === "dark" ? str : defaultValue), + serialize: String, + }); +} diff --git a/packages/start/tsconfig.json b/packages/start/tsconfig.json new file mode 100644 index 000000000..4082f16a5 --- /dev/null +++ b/packages/start/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/packages/static-store/CHANGELOG.md b/packages/static-store/CHANGELOG.md index c6d272da1..c085b8b7a 100644 --- a/packages/static-store/CHANGELOG.md +++ b/packages/static-store/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/static-store +## 0.0.4 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.0.3 ### Patch Changes diff --git a/packages/static-store/dev/index.html b/packages/static-store/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/static-store/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/static-store/dev/index.tsx b/packages/static-store/dev/index.tsx index 3dcc7570a..e2e5113e6 100644 --- a/packages/static-store/dev/index.tsx +++ b/packages/static-store/dev/index.tsx @@ -1,6 +1,4 @@ import { Component, createSignal } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; const App: Component = () => { const [count, setCount] = createSignal(0); @@ -19,4 +17,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/static-store/dev/vite.config.ts b/packages/static-store/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/static-store/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/static-store/package.json b/packages/static-store/package.json index d857d391c..8696092f9 100644 --- a/packages/static-store/package.json +++ b/packages/static-store/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/static-store", - "version": "0.0.3", + "version": "0.0.4", "description": "Primitives for creating small reactive objects that doesn't change their shape over time - don't need a proxy wrapper.", "author": "Damian Tarnawski ", "contributors": [], @@ -45,11 +45,11 @@ }, "typesVersions": {}, "scripts": { - "dev": "vite serve dev", - "page": "echo TODO", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "peerDependencies": { "solid-js": "^1.6.12" diff --git a/packages/storage/CHANGELOG.md b/packages/storage/CHANGELOG.md index d845ea047..e5d862778 100644 --- a/packages/storage/CHANGELOG.md +++ b/packages/storage/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/storage +## 1.3.11 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 1.3.10 ### Patch Changes diff --git a/packages/storage/package.json b/packages/storage/package.json index 4e2a48bf2..a07f5947c 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/storage", - "version": "1.3.10", + "version": "1.3.11", "description": "Primitive that provides reactive wrappers for storage access", "author": "Alex Lohr ", "contributors": [ @@ -43,9 +43,11 @@ "require": "./dist/index.cjs" }, "scripts": { + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "localStorage", diff --git a/packages/stream/CHANGELOG.md b/packages/stream/CHANGELOG.md index 605a84cbb..f57dbed38 100644 --- a/packages/stream/CHANGELOG.md +++ b/packages/stream/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/stream +## 0.6.10 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + ## 0.6.9 ### Patch Changes diff --git a/packages/stream/README.md b/packages/stream/README.md index 8cd12ab46..b4ce14970 100644 --- a/packages/stream/README.md +++ b/packages/stream/README.md @@ -40,7 +40,7 @@ createMediaPermissionRequest(target?: 'audio' | 'video' | MediaStreamConstraints ## Demo -https://solidjs-community.github.io/solid-primitives/stream +https://primitives.solidjs.community/playground/stream ## Changelog diff --git a/packages/stream/demo/index.tsx b/packages/stream/demo/index.tsx index 36d46d873..77082dad3 100644 --- a/packages/stream/demo/index.tsx +++ b/packages/stream/demo/index.tsx @@ -1,12 +1,9 @@ -import { render } from "solid-js/web"; import { type Component, type JSX, createEffect, createSignal } from "solid-js"; import { createStore } from "solid-js/store"; import { createStream } from "../src"; import { createPermission } from "../../permission/src"; import { createCameras, createMicrophones } from "../../devices/src"; -import "uno.css"; - declare module "solid-js" { namespace JSX { interface ExplicitProperties { @@ -173,4 +170,4 @@ const App: Component = (): JSX.Element => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/stream/dev/index.html b/packages/stream/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/stream/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/stream/dev/index.tsx b/packages/stream/dev/index.tsx index b33666040..0b8db465a 100644 --- a/packages/stream/dev/index.tsx +++ b/packages/stream/dev/index.tsx @@ -1,13 +1,12 @@ import type { Component, JSX } from "solid-js"; import { createSignal, Show } from "solid-js"; -import { render } from "solid-js/web"; + import { createStream, createAmplitudeStream, createMediaPermissionRequest, createScreen, } from "../src"; -import "uno.css"; declare module "solid-js" { namespace JSX { @@ -58,4 +57,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/stream/dev/vite.config.ts b/packages/stream/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/stream/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/stream/package.json b/packages/stream/package.json index 7f0a2e8b9..ab9ba950b 100644 --- a/packages/stream/package.json +++ b/packages/stream/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/stream", - "version": "0.6.9", + "version": "0.6.10", "description": "Primitive that gets a user media stream from microphone, camera or screen", "author": "Alex Lohr ", "license": "MIT", @@ -39,12 +39,11 @@ "require": "./dist/index.cjs" }, "scripts": { + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr", - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr", "demo": "vite serve demo --host" }, "keywords": [ diff --git a/packages/styles/CHANGELOG.md b/packages/styles/CHANGELOG.md index 194359bdd..8864d990f 100644 --- a/packages/styles/CHANGELOG.md +++ b/packages/styles/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/styles +## 0.0.110 + +### Patch Changes + +- Updated dependencies [3c007b92] + - @solid-primitives/utils@6.2.0 + - @solid-primitives/rootless@1.4.1 + ## 0.0.109 ### Patch Changes diff --git a/packages/styles/dev/index.html b/packages/styles/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/styles/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/styles/dev/index.tsx b/packages/styles/dev/index.tsx index f0a208341..59f9535cc 100644 --- a/packages/styles/dev/index.tsx +++ b/packages/styles/dev/index.tsx @@ -1,6 +1,5 @@ import { Component } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { createRemSize } from "../src"; const App: Component = () => { @@ -15,4 +14,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/styles/dev/vite.config.ts b/packages/styles/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/styles/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/styles/package.json b/packages/styles/package.json index 4b5858622..6cf4dd1a3 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/styles", - "version": "0.0.109", + "version": "0.0.110", "description": "Collection of reactive primitives focused on styles.", "author": "Damian Tarnawski ", "contributors": [ @@ -41,12 +41,11 @@ "require": "./dist/index.cjs" }, "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "solid", diff --git a/packages/timer/dev/index.html b/packages/timer/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/timer/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/timer/dev/index.tsx b/packages/timer/dev/index.tsx index 3ab50139d..ca43b4644 100644 --- a/packages/timer/dev/index.tsx +++ b/packages/timer/dev/index.tsx @@ -1,6 +1,5 @@ import { Component, createSignal, createEffect } from "solid-js"; -import { render } from "solid-js/web"; -import "uno.css"; + import { createTimer } from "../src"; const Counter: Component<{ timer: typeof setTimeout | typeof setInterval }> = props => { @@ -44,4 +43,4 @@ const App: Component = () => { ); }; -render(() => , document.getElementById("root")!); +export default App; diff --git a/packages/timer/dev/vite.config.ts b/packages/timer/dev/vite.config.ts deleted file mode 100644 index 7ca66a520..000000000 --- a/packages/timer/dev/vite.config.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { viteConfig } from "../../../configs/vite.config"; -export default viteConfig; diff --git a/packages/timer/package.json b/packages/timer/package.json index 72d6f68b1..453d8fbf0 100644 --- a/packages/timer/package.json +++ b/packages/timer/package.json @@ -46,12 +46,11 @@ "dist" ], "scripts": { - "start": "vite serve dev --host", - "dev": "vite serve dev", - "page": "vite build dev", + "dev": "jiti ../../scripts/dev.ts", "build": "jiti ../../scripts/build.ts", - "test": "vitest -c ../../configs/vitest.config.ts", - "test:ssr": "pnpm run test --mode ssr" + "vitest": "vitest -c ../../configs/vitest.config.ts", + "test": "pnpm run vitest", + "test:ssr": "pnpm run vitest --mode ssr" }, "keywords": [ "setInterval", diff --git a/packages/transition-group/README.md b/packages/transition-group/README.md index cdf9e2240..7c675885c 100644 --- a/packages/transition-group/README.md +++ b/packages/transition-group/README.md @@ -186,7 +186,7 @@ return createListTransition(resolved.toArray, { ## Demo -[Deployed example](https://solidjs-community.github.io/solid-primitives/transition-group) | [Source code](https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group/dev) +[Deployed example](https://primitives.solidjs.community/playground/transition-group) | [Source code](https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group/dev) ## Usage references diff --git a/packages/transition-group/dev/index.html b/packages/transition-group/dev/index.html deleted file mode 100644 index 65f53c4b6..000000000 --- a/packages/transition-group/dev/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Solid App - - - - - -
- - - - diff --git a/packages/transition-group/dev/index.tsx b/packages/transition-group/dev/index.tsx index a4c9580f0..dee91d4cf 100644 --- a/packages/transition-group/dev/index.tsx +++ b/packages/transition-group/dev/index.tsx @@ -1,12 +1,10 @@ import { A, Route, Router, Routes } from "@solidjs/router"; -import { render } from "solid-js/web"; + import ListPage from "./list-page"; import SwitchPage from "./switch-page"; -import "uno.css"; - -render( - () => ( +function App() { + return (