From d8054700bdc0567dcb32f203e14d3f28c28b0073 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 25 Feb 2023 17:32:18 +0100 Subject: [PATCH 01/33] Add transition-group pkg with `createSwitchTransition` primitive dev playground Add `findFirst` and `resolveFirst` to `refs` pkg --- .changeset/dirty-kiwis-exist.md | 5 + .prettierrc | 2 +- configs/vite.config.ts | 4 + package.json | 3 +- packages/refs/dev/refs.tsx | 4 +- packages/refs/src/index.ts | 28 + packages/transition-group/LICENSE | 21 + packages/transition-group/README.md | 38 + packages/transition-group/dev/index.html | 37 + packages/transition-group/dev/index.tsx | 28 + packages/transition-group/dev/list-page.tsx | 90 + packages/transition-group/dev/switch-page.tsx | 99 + packages/transition-group/dev/vite.config.ts | 2 + packages/transition-group/package.json | 77 + packages/transition-group/src/index.ts | 85 + packages/transition-group/test/index.test.ts | 14 + packages/transition-group/test/server.test.ts | 9 + pnpm-lock.yaml | 2063 ++++++++++++++++- 18 files changed, 2483 insertions(+), 126 deletions(-) create mode 100644 .changeset/dirty-kiwis-exist.md create mode 100644 packages/transition-group/LICENSE create mode 100644 packages/transition-group/README.md create mode 100644 packages/transition-group/dev/index.html create mode 100644 packages/transition-group/dev/index.tsx create mode 100644 packages/transition-group/dev/list-page.tsx create mode 100644 packages/transition-group/dev/switch-page.tsx create mode 100644 packages/transition-group/dev/vite.config.ts create mode 100644 packages/transition-group/package.json create mode 100644 packages/transition-group/src/index.ts create mode 100644 packages/transition-group/test/index.test.ts create mode 100644 packages/transition-group/test/server.test.ts diff --git a/.changeset/dirty-kiwis-exist.md b/.changeset/dirty-kiwis-exist.md new file mode 100644 index 000000000..1edfad13f --- /dev/null +++ b/.changeset/dirty-kiwis-exist.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/refs": minor +--- + +Add `findFirst` and `resolveFirst` primitives diff --git a/.prettierrc b/.prettierrc index c91d99274..d3afb7d49 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,5 @@ { - "trailingComma": "none", + "trailingComma": "all", "tabWidth": 2, "printWidth": 100, "semi": true, diff --git a/configs/vite.config.ts b/configs/vite.config.ts index 761472864..1e62abc8b 100644 --- a/configs/vite.config.ts +++ b/configs/vite.config.ts @@ -1,4 +1,5 @@ import { defineConfig } from "vitest/config"; +import devtools from "solid-devtools/vite"; import solid from "vite-plugin-solid"; import Unocss from "unocss/vite"; @@ -7,6 +8,9 @@ export const viteConfig = defineConfig({ port: 3000 }, plugins: [ + devtools({ + autoname: true + }), solid(), Unocss({ shortcuts: { diff --git a/package.json b/package.json index e30f5fa17..cbff98963 100644 --- a/package.json +++ b/package.json @@ -31,14 +31,15 @@ "@typescript-eslint/parser": "^5.52.0", "cross-env": "^7.0.3", "eslint": "^8.34.0", + "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-solid": "^0.9.4", - "eslint-plugin-eslint-comments": "^3.2.0", "fs-extra": "^11.1.0", "jiti": "^1.17.1", "jsdom": "^21.1.0", "json-to-markdown-table": "^1.0.0", "prettier": "^2.8.4", + "solid-devtools": "^0.26.0", "solid-js": "^1.6.11", "tsup": "^6.6.3", "tsup-preset-solid": "^0.1.8", diff --git a/packages/refs/dev/refs.tsx b/packages/refs/dev/refs.tsx index f8129e0b1..47eb82377 100644 --- a/packages/refs/dev/refs.tsx +++ b/packages/refs/dev/refs.tsx @@ -1,10 +1,10 @@ -import { children } from "solid-js"; +import { children, ParentComponent } from "solid-js"; import { elements, mapRemoved, unmount } from "../src"; import { Component, createSignal, For, Show } from "solid-js"; import { createCallbackStack } from "@solid-primitives/utils"; unmount; -const Keep: Component<{ +const Keep: ParentComponent<{ getClear?: (fn: VoidFunction) => void; }> = props => { const resolved = children(() => props.children); diff --git a/packages/refs/src/index.ts b/packages/refs/src/index.ts index 47bd1c236..3283ec7fe 100644 --- a/packages/refs/src/index.ts +++ b/packages/refs/src/index.ts @@ -148,6 +148,34 @@ function getResolvedElements(value: unknown): HTMLElement | HTMLElement[] | null return value instanceof HTMLElement ? value : null; } +export function findFirst( + value: JSX.Element, + predicate: (item: unknown | T) => item is T +): T | null { + if (predicate(value)) return value; + if (typeof value === "function" && !value.length) return findFirst(value(), predicate); + if (Array.isArray(value)) { + for (const item of value) { + const result = findFirst(item, predicate); + if (result) return result; + } + } + return null; +} + +export function resolveFirst(fn: Accessor): Accessor; +export function resolveFirst( + fn: Accessor, + predicate: (item: unknown | T) => item is T +): Accessor; +export function resolveFirst( + fn: Accessor, + predicate = (item: unknown | Element): item is Element => item instanceof Element +): Accessor { + const memo = createMemo(fn); + return createMemo(() => findFirst(memo(), predicate)); +} + /** * Reactive signal that filters out non-element items from a signal array. * @param fn Array signal diff --git a/packages/transition-group/LICENSE b/packages/transition-group/LICENSE new file mode 100644 index 000000000..38b41d975 --- /dev/null +++ b/packages/transition-group/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/transition-group/README.md b/packages/transition-group/README.md new file mode 100644 index 000000000..c26978a69 --- /dev/null +++ b/packages/transition-group/README.md @@ -0,0 +1,38 @@ +

+ Solid Primitives transition +

+ +# @solid-primitives/transition-group + +[![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/transition-group?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/transition-group) +[![version](https://img.shields.io/npm/v/@solid-primitives/transition-group?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/transition-group) +[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) + +A sample primitive that is made up for templating with the following options: + +`createPrimitiveTemplate` - Provides a getter and setter for the primitive. + +## Installation + +```bash +npm install @solid-primitives/transition-group +# or +yarn add @solid-primitives/transition-group +# or +pnpm add @solid-primitives/transition-group +``` + +## How to use it + +```ts +const [value, setValue] = createPrimitiveTemplate(false); +``` + +## Demo + +You can use this template for publishing your demo on CodeSandbox: https://codesandbox.io/s/solid-primitives-demo-template-sz95h + +## Changelog + +See [CHANGELOG.md](./CHANGELOG.md) diff --git a/packages/transition-group/dev/index.html b/packages/transition-group/dev/index.html new file mode 100644 index 000000000..9c4d05fc2 --- /dev/null +++ b/packages/transition-group/dev/index.html @@ -0,0 +1,37 @@ + + + + + + + + Solid App + + + + + +
+ + + + + diff --git a/packages/transition-group/dev/index.tsx b/packages/transition-group/dev/index.tsx new file mode 100644 index 000000000..8b0c62d1e --- /dev/null +++ b/packages/transition-group/dev/index.tsx @@ -0,0 +1,28 @@ +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( + () => ( + + +
+ + } /> + } /> + +
+
+ ), + document.getElementById("root")! +); diff --git a/packages/transition-group/dev/list-page.tsx b/packages/transition-group/dev/list-page.tsx new file mode 100644 index 000000000..33e8d5257 --- /dev/null +++ b/packages/transition-group/dev/list-page.tsx @@ -0,0 +1,90 @@ +import { children, ParentComponent } from "solid-js"; +import { elements, mapRemoved } from "@solid-primitives/refs"; +import { Component, createSignal, For, Show } from "solid-js"; +import { createCallbackStack } from "@solid-primitives/utils"; + +const Keep: ParentComponent<{ + getClear?: (fn: VoidFunction) => void; +}> = props => { + const resolved = children(() => props.children); + const refs = elements(resolved, HTMLElement); + const stack = createCallbackStack(); + props.getClear?.(stack.execute); + const combined = mapRemoved(refs, (ref, i) => { + const [el, setEl] = createSignal(ref); + console.log("REMOVED", i()); + stack.push(() => setEl(undefined)); + ref!.style.filter = "grayscale(100%)"; + ref!.style.position = "relative"; + ref!.appendChild((
{i()}
) as Element); + + ref!.addEventListener("click", () => setEl(undefined)); + + return el; + }); + return combined; +}; + +const ListPage: Component = () => { + const [show, setShow] = createSignal(false); + const [show1, setShow1] = createSignal(false); + const [show2, setShow2] = createSignal(true); + const [showWrapper, setShowWrapper] = createSignal(true); + const [count, setCount] = createSignal(5); + + let clear!: VoidFunction; + + return ( + <> +
+ + + + + + + +
+
+ (clear = fn)}> + +

Hello

+ World + {show() &&
ID 0
} + {/* + ref={el => console.log(el)} + onMount={el => console.log("Mounted", el)} + > */} + +
ID 1
+
+ {/* */} + +
ID 2
+
ID 3
+
+ i)}> + {i =>
{i + 1}.
} +
+
+
+
+ + ); +}; + +export default ListPage; diff --git a/packages/transition-group/dev/switch-page.tsx b/packages/transition-group/dev/switch-page.tsx new file mode 100644 index 000000000..ab9851617 --- /dev/null +++ b/packages/transition-group/dev/switch-page.tsx @@ -0,0 +1,99 @@ +import { Component, createSignal, onCleanup, Show, untrack } from "solid-js"; +import { resolveFirst } from "@solid-primitives/refs"; +import { createSwitchTransition } from "../src"; + +const SwitchPage: Component = () => { + const [toggle, setToggle] = createSignal(true); + + return ( + <> +
+ +
+
+ {untrack(() => { + let i = 0; + + const el = resolveFirst( + () => ( + onCleanup(() => (el.style.filter = "grayscale(60%)"))} + > + B{i++} +
+ } + > +
onCleanup(() => (el.style.filter = "grayscale(60%)"))} + > + A{i++} +
+ + ), + (item): item is HTMLElement => item instanceof HTMLElement, + ); + + const animateIn = (el: HTMLElement, done: VoidFunction) => { + if (!el.isConnected) throw el.textContent + " is not connected!!"; + const a = el.animate( + [ + { opacity: 0, transform: "translate(100px)" }, + { opacity: 1, transform: "translate(0)" }, + ], + { duration: 800 }, + ); + animationMap.set(el, a); + const complete = () => { + done(); + animationMap.delete(el); + }; + a.finished.then(complete).catch(complete); + }; + + const animateOut = (el: HTMLElement, done: VoidFunction) => { + if (!el.isConnected) throw el.textContent + " is not connected!!"; + el.style.position = "absolute"; + const left1 = el.getBoundingClientRect().left; + animationMap.get(el)?.cancel(); + const left2 = el.getBoundingClientRect().left; + el.animate( + [ + { opacity: 1, transform: `translate(${left1 - left2}px)` }, + { opacity: 0, transform: "translate(-100px)" }, + ], + { duration: 1000 }, + ) + .finished.then(done) + .catch(done); + }; + + const animationMap = new Map(); + + return createSwitchTransition(el, { + onEnter(el, done) { + // console.log("onEnter", el); + requestAnimationFrame(() => { + animateIn(el, done); + }); + }, + onExit(el, done) { + // console.log("onExit", el); + animateOut(el, done); + }, + // mode: "in-out", + appear: false, + }); + })} + + + ); +}; + +export default SwitchPage; diff --git a/packages/transition-group/dev/vite.config.ts b/packages/transition-group/dev/vite.config.ts new file mode 100644 index 000000000..7ca66a520 --- /dev/null +++ b/packages/transition-group/dev/vite.config.ts @@ -0,0 +1,2 @@ +import { viteConfig } from "../../../configs/vite.config"; +export default viteConfig; diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json new file mode 100644 index 000000000..c206704b1 --- /dev/null +++ b/packages/transition-group/package.json @@ -0,0 +1,77 @@ +{ + "name": "@solid-primitives/transition-group", + "version": "0.0.100", + "description": "A template primitive example.", + "author": "Damian Tarnawski ", + "contributors": [], + "license": "MIT", + "homepage": "https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition#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": "transition", + "stage": 0, + "list": [ + "createSwitchTransition", + "createListTransition" + ], + "category": "Animation" + }, + "keywords": [ + "solid", + "primitives" + ], + "private": false, + "sideEffects": false, + "files": [ + "dist" + ], + "type": "module", + "main": "./dist/server.cjs", + "module": "./dist/server.js", + "browser": { + "./dist/server.cjs": "./dist/index.cjs", + "./dist/server.js": "./dist/index.js" + }, + "types": "./dist/index.d.ts", + "exports": { + "worker": { + "import": "./dist/server.js", + "require": "./dist/server.cjs" + }, + "browser": { + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "deno": { + "import": "./dist/server.js", + "require": "./dist/server.cjs" + }, + "node": { + "import": "./dist/server.js", + "require": "./dist/server.cjs" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "scripts": { + "dev": "vite serve dev", + "page": "vite build dev", + "build": "jiti ../../scripts/build.ts --ssr", + "test": "vitest -c ../../configs/vitest.config.ts", + "test:ssr": "pnpm run test --mode ssr" + }, + "peerDependencies": { + "solid-js": "^1.6.0" + }, + "devDependencies": { + "@solid-primitives/refs": "workspace:^0.3.6", + "@solid-primitives/utils": "workspace:^5.2.0", + "@solidjs/router": "^0.7.0" + } +} diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts new file mode 100644 index 000000000..2ddb1041c --- /dev/null +++ b/packages/transition-group/src/index.ts @@ -0,0 +1,85 @@ +import { FalsyValue, noop } from "@solid-primitives/utils"; +import { Accessor, batch, createComputed, createSignal, untrack } from "solid-js"; + +const logEl = (el: any) => (el ? el.textContent : null); + +const noopTransition = (el: any, done: () => void) => done(); + +export function createSwitchTransition( + source: Accessor, + props: { + onEnter?: (el: T, done: () => void) => void; + onExit?: (el: T, done: () => void) => void; + mode?: "out-in" | "in-out" | "parallel"; + appear?: boolean; + }, +): Accessor { + if (process.env.SSR) { + let el: any = source(); + el = el ? [el] : []; + return () => el; + } + + // eslint-disable-next-line prefer-const + let { onEnter = noopTransition, onExit = noopTransition } = props; + + // prevent the first enter transition if appear is disabled + let init = true; + if (!props.appear) { + const _onEnter = onEnter; + onEnter = (el, done) => { + onEnter = _onEnter; + init ? done() : onEnter(el, done); + }; + } + + const [returned, setReturned] = createSignal([]); + + let next: T | undefined; + let isExiting = false; + + function exitTransition(el: T | undefined, after?: () => void) { + if (!el) return after?.(); + isExiting = true; + onExit(el, () => { + batch(() => { + isExiting = false; + setReturned(p => p.filter(e => e !== el)); + after?.(); + }); + }); + } + + function enterTransition(after?: () => void) { + const el = next; + if (!el) return after?.(); + next = undefined; + setReturned(p => [el, ...p]); + onEnter(el, after ?? noop); + } + + const transition: (prev: T | undefined) => void = + props.mode === "out-in" + ? // exit -> enter + prev => isExiting || exitTransition(prev, enterTransition) + : props.mode === "in-out" + ? // enter -> exit + prev => enterTransition(() => exitTransition(prev)) + : // exit & enter + prev => { + enterTransition(); + exitTransition(prev); + }; + + createComputed((prev: T | undefined) => { + const el = source() || undefined; + if (el !== prev) { + next = el; + untrack(() => batch(() => transition(prev))); + } + return el; + }); + + init = false; + return returned; +} diff --git a/packages/transition-group/test/index.test.ts b/packages/transition-group/test/index.test.ts new file mode 100644 index 000000000..b7722a209 --- /dev/null +++ b/packages/transition-group/test/index.test.ts @@ -0,0 +1,14 @@ +import { describe, test, expect } from "vitest"; +import { createRoot } from "solid-js"; +import { createPrimitiveTemplate } from "../src"; + +describe("createPrimitiveTemplate", () => { + test("createPrimitiveTemplate return values", () => + createRoot(dispose => { + const [value, setValue] = createPrimitiveTemplate(true); + expect(value(), "initial value should be true").toBe(true); + setValue(false); + expect(value(), "value after change should be false").toBe(false); + dispose(); + })); +}); diff --git a/packages/transition-group/test/server.test.ts b/packages/transition-group/test/server.test.ts new file mode 100644 index 000000000..887e271dc --- /dev/null +++ b/packages/transition-group/test/server.test.ts @@ -0,0 +1,9 @@ +import { describe, test, expect } from "vitest"; +import { createPrimitiveTemplate } from "../src"; + +describe("createPrimitiveTemplate", () => { + test("doesn't break in SSR", () => { + const [value, setValue] = createPrimitiveTemplate(true); + expect(value(), "initial value should be true").toBe(true); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd1276f7f..ae18d7c1e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,7 @@ importers: jsdom: ^21.1.0 json-to-markdown-table: ^1.0.0 prettier: ^2.8.4 + solid-devtools: ^0.26.0 solid-js: ^1.6.11 tsup: ^6.6.3 tsup-preset-solid: ^0.1.8 @@ -47,13 +48,14 @@ importers: jsdom: 21.1.0 json-to-markdown-table: 1.0.0 prettier: 2.8.4 + solid-devtools: 0.26.0_g6qi5asgsopwckrc6btee5ag3u solid-js: 1.6.11 tsup: 6.6.3_typescript@4.9.5 tsup-preset-solid: 0.1.8_mpb67xq6yqcmwxkx4udi7xjn6u turbo: 1.7.4 type-fest: 3.6.0 typescript: 4.9.5 - unocss: 0.49.6_vite@4.1.1 + unocss: 0.49.6_rollup@3.15.0+vite@4.1.1 vite: 4.1.1_@types+node@18.13.0 vite-plugin-solid: 2.5.0_solid-js@1.6.11+vite@4.1.1 vitest: 0.28.5_jsdom@21.1.0 @@ -634,6 +636,19 @@ importers: dependencies: solid-js: 1.6.9 + packages/transition-group: + specifiers: + '@solid-primitives/refs': workspace:^0.3.6 + '@solid-primitives/utils': workspace:^5.2.0 + '@solidjs/router': ^0.7.0 + solid-js: ^1.6.0 + dependencies: + solid-js: 1.6.11 + devDependencies: + '@solid-primitives/refs': link:../refs + '@solid-primitives/utils': link:../utils + '@solidjs/router': 0.7.0_solid-js@1.6.11 + packages/trigger: specifiers: '@solid-primitives/utils': workspace:^5.0.0 @@ -788,6 +803,15 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: + resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-explode-assignable-expression': 7.18.6 + '@babel/types': 7.20.7 + dev: true + optional: true + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} @@ -821,11 +845,68 @@ packages: - supports-color dev: true + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.20.12: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /@babel/helper-create-regexp-features-plugin/7.21.0_@babel+core@7.20.12: + resolution: {integrity: sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.3.1 + dev: true + optional: true + + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: true + /@babel/helper-explode-assignable-expression/7.18.6: + resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + optional: true + /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} @@ -834,6 +915,15 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.2 + dev: true + optional: true + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} @@ -848,6 +938,14 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/helper-member-expression-to-functions/7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + dev: true + optional: true + /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} @@ -883,6 +981,22 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /@babel/helper-replace-supers/7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} @@ -933,6 +1047,19 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-wrap-function/7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.19.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /@babel/helpers/7.20.7: resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} engines: {node: '>=6.9.0'} @@ -961,6 +1088,46 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.20.12 + dev: true + optional: true + + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -974,162 +1141,195 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + /@babel/plugin-proposal-class-static-block/7.21.0_@babel+core@7.20.12: + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.14 '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: + '@babel/compat-data': 7.20.14 '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 dev: true - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.20.12: + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 dev: true + optional: true - /@babel/plugin-transform-block-scoping/7.20.15_@babel+core@7.20.12: - resolution: {integrity: sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==} + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color dev: true + optional: true - /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} + /@babel/plugin-proposal-private-property-in-object/7.21.0_@babel+core@7.20.12: + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true + optional: true - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 dev: true + optional: true - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true + optional: true - /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.20.12: - resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 dev: true - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1137,31 +1337,30 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true + optional: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 dev: true + optional: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true + optional: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1170,35 +1369,28 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - transitivePeerDependencies: - - supports-color dev: true + optional: true - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1207,42 +1399,501 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true + optional: true - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true + optional: true - /@babel/plugin-transform-react-jsx/7.20.13_@babel+core@7.20.12: - resolution: {integrity: sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==} + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoping/7.20.15_@babel+core@7.20.12: + resolution: {integrity: sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 + dev: true + + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.20.12: + resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 + dev: true + + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: + resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.12: + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-jsx/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 + dev: true + + /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.12: + resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + regenerator-transform: 0.15.1 + dev: true + optional: true + + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: true + + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + optional: true + + /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 - '@babel/types': 7.20.7 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.12: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1250,41 +1901,120 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true + optional: true - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true + optional: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + /@babel/preset-env/7.20.2_@babel+core@7.20.12: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: + '@babel/compat-data': 7.20.14 '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-class-static-block': 7.21.0_@babel+core@7.20.12 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.20.12 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.20.12 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoping': 7.20.15_@babel+core@7.20.12 + '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.12 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 + '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 + '@babel/types': 7.20.7 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 + core-js-compat: 3.28.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color dev: true + optional: true - /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} - engines: {node: '>=6.9.0'} + /@babel/preset-modules/0.1.5_@babel+core@7.20.12: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 + esutils: 2.0.3 dev: true + optional: true /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} @@ -1300,6 +2030,11 @@ packages: - supports-color dev: true + /@babel/regjsgen/0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + optional: true + /@babel/runtime/7.20.13: resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} @@ -1350,6 +2085,16 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types/7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + optional: true + /@changesets/apply-release-plan/6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: @@ -1721,6 +2466,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64/0.16.17: resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} engines: {node: '>=12'} @@ -2473,6 +3227,18 @@ packages: dependencies: graphql: 16.6.0 + /@hapi/hoek/9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: true + optional: true + + /@hapi/topo/5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: true + optional: true + /@humanwhocodes/config-array/0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} @@ -2537,6 +3303,14 @@ packages: engines: {node: '>=6.0.0'} dev: true + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + optional: true + /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true @@ -2786,7 +3560,7 @@ packages: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true - /@rollup/pluginutils/5.0.2: + /@rollup/pluginutils/5.0.2_rollup@3.15.0: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2798,6 +3572,79 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 + rollup: 3.15.0 + dev: true + + /@sideway/address/4.1.4: + resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: true + optional: true + + /@sideway/formula/3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: true + optional: true + + /@sideway/pinpoint/2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: true + optional: true + + /@solid-devtools/debugger/0.21.0_solid-js@1.6.11: + resolution: {integrity: sha512-5m7JLkh4WgFm0DZrs9JSzTDdZ68rXMv4ixkz4e529aETfhM/Bmek/6jpWSlxsxAn6EwbKHThYWqOyLDAKVQw5w==} + peerDependencies: + solid-js: ^1.6.9 + dependencies: + '@solid-devtools/shared': 0.11.0_solid-js@1.6.11 + '@solid-primitives/bounds': 0.0.107_solid-js@1.6.11 + '@solid-primitives/cursor': 0.0.105_solid-js@1.6.11 + '@solid-primitives/event-bus': 1.0.0_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/keyboard': 1.0.7_solid-js@1.6.11 + '@solid-primitives/platform': 0.0.103_solid-js@1.6.11 + '@solid-primitives/scheduled': 1.3.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + type-fest: 3.6.0 + dev: true + + /@solid-devtools/shared/0.11.0_solid-js@1.6.11: + resolution: {integrity: sha512-iAIIgpGUucb+2pVlCEvv44C24Fd7J+stOO1a/Mww9OpfQqgZhCOnozAIdHurcMGyILyYgkI+ZJFBGsH+6tiaCA==} + peerDependencies: + solid-js: ^1.6.9 + dependencies: + '@solid-primitives/event-bus': 1.0.0_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/media': 2.1.1_solid-js@1.6.11 + '@solid-primitives/refs': 0.3.6_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 + '@solid-primitives/scheduled': 1.3.0_solid-js@1.6.11 + '@solid-primitives/styles': 0.0.101_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + type-fest: 3.6.0 + dev: true + + /@solid-primitives/bounds/0.0.107_solid-js@1.6.11: + resolution: {integrity: sha512-pkW2zpOBsc+TaW0QcXbARLUC/GP0HYsyk6nIZxtITfPct9Ixulx54au09mQBC3egjrakmrUdT1siWWhPrT0JpQ==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/resize-observer': 2.0.9_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/cursor/0.0.105_solid-js@1.6.11: + resolution: {integrity: sha512-/DdttvMytHWvGOTr6e2BesOFg85I1+zPz3ffGw6uwSFrUcBcxSiG3i5Rn9rKgWXyEZ+Sl1Ov8HoYJBo6NAgqrQ==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 dev: true /@solid-primitives/debounce/1.3.0_solid-js@1.6.9: @@ -2809,6 +3656,112 @@ packages: solid-js: 1.6.9 dev: false + /@solid-primitives/event-bus/1.0.0_solid-js@1.6.11: + resolution: {integrity: sha512-Z8Nv0J3Rmc5/D+zN59qFvwPk5cWvrAJ7yjGiNGQBqGVDdHEtnZmhSb5BeFDlkga4TthIIbuYapVyr5T9AQ9FhA==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/immutable': 0.1.6_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/event-listener/2.2.6_solid-js@1.6.11: + resolution: {integrity: sha512-Lb2q888Apv8wqgZ3WvPlt8ic2rEmHx6QT8d3pgi+JRSIRNwAysE6PZDmbwT6/hzzP1TIQG0IRZwh5tomfuqlaQ==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/immutable/0.1.6_solid-js@1.6.11: + resolution: {integrity: sha512-P4wbDogtytijTV5En+bm6jfFbf4ZOMnfmttUJ8642MQ0tJ2VS2z8iJplg9YFJIltXz7W/+2mdfw2XczlkTxeGg==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/keyboard/1.0.7_solid-js@1.6.11: + resolution: {integrity: sha512-28fzmKBhHS1CPa439zCEN0ZH9sSQ/AEao5TyWFDtOsJnozdbaT8s1IAw6BgQSbn54vOyWkgbkJ/aYN7+tSJPtQ==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/media/2.1.1_solid-js@1.6.11: + resolution: {integrity: sha512-0lMEIDereGYCKNnl0zIAd8v2kiJIUNP9om0VJKF6gD4kItUE+pdcSBok9CdEhjQzSS/HdsNo1smCYHNzdES09Q==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/platform/0.0.103_solid-js@1.6.11: + resolution: {integrity: sha512-C/S4STL0cHb3+AOa3uljdph0UVWovDJOF9D/BvNKhin+QGTeHYV5N5Ypsmx8SDG4zgp9ZyuIuV6OOnxSsUzTIg==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + solid-js: 1.6.11 + dev: true + + /@solid-primitives/refs/0.3.6_solid-js@1.6.11: + resolution: {integrity: sha512-8PkCzIxnHd+kY3IaLKWvix0G15iUS6hffMOooM9fWnkQy2p5PYjOWtC/qucOBGfn6skaOAMq5rnoP40WNi9YXw==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/immutable': 0.1.6_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/resize-observer/2.0.9_solid-js@1.6.11: + resolution: {integrity: sha512-N9apMcfL7LSPa/L9g86dhZlIZq3sM1NrFAMgNufzuJWfgHnC/vDQLQpuzc/b2q8O4KpfRs9DTRdFA6t6CK6Plw==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/rootless/1.2.4_solid-js@1.6.11: + resolution: {integrity: sha512-wsxpJzmCTeKt7gM1sDN3aKs5Sb8dmD3xVBdXUA+xZWcO5v/CVR5Gq690YvXvWSK+Thjv8jvDNHI582CDP/gFzQ==} + peerDependencies: + solid-js: ^1.6.11 + dependencies: + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + + /@solid-primitives/scheduled/1.3.0_solid-js@1.6.11: + resolution: {integrity: sha512-9B1eQ069vduoDorKwaDjZmcWO3ojEf3hpAcoIQA4CWGkk+QCfJnMWHv/XGYHvytQfr382EQQ1j1nxZBDLOWEQQ==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + solid-js: 1.6.11 + dev: true + + /@solid-primitives/styles/0.0.101_solid-js@1.6.11: + resolution: {integrity: sha512-tHkeUMntlS/w+/zDzXJv82hhMy3J3q7tVV3ZTbahRo0hZienAM8ZJrCYZNK/fu2px8NHVSZFRufxv9qhIclPTw==} + peerDependencies: + solid-js: ^1.5.0 + dependencies: + '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 + solid-js: 1.6.11 + dev: true + /@solid-primitives/throttle/1.2.0_solid-js@1.6.9: resolution: {integrity: sha512-qYKYEgGl/nSCF+wq7H6zFFi8s2e/woFZJkZbCbyUrtbEIvCze4xSZRr64Xi067GlBE+T/N4LZX/htJmLfwkAeg==} deprecated: throttle primitive moved to @solid-primitives/scheduled @@ -2818,6 +3771,31 @@ packages: solid-js: 1.6.9 dev: false + /@solid-primitives/utils/5.2.0_solid-js@1.6.11: + resolution: {integrity: sha512-9sJSBv0IshaQ6qks9FW9ErKZS9qeAv+uYYrsAAXnu5XtDeifRtMk0k6Smje4XxzpxGH/8P4nwS2kk/9vt6KsBg==} + peerDependencies: + solid-js: ^1.6.0 + dependencies: + solid-js: 1.6.11 + dev: true + + /@solidjs/meta/0.28.2_solid-js@1.6.11: + resolution: {integrity: sha512-avlLgBPdk4KVxzRGFlYp/MIJo8B5jVgXPgk6OUnUP8km21Z+ovO+DUd7ZPA7ejv8PBdWi9GE3zCzw8RU2YuV2Q==} + peerDependencies: + solid-js: '>=1.4.0' + dependencies: + solid-js: 1.6.11 + dev: true + optional: true + + /@solidjs/router/0.7.0_solid-js@1.6.11: + resolution: {integrity: sha512-8HI84twe5FjYRebSLMAhtkL9bRuTDIlxJK56kjfjU9WKGoUCTaWpCnkuj8Hqde1bWZ0X+GOZxKDfNkn1CjtjxA==} + peerDependencies: + solid-js: ^1.5.3 + dependencies: + solid-js: 1.6.11 + dev: true + /@solidjs/router/0.7.0_solid-js@1.6.9: resolution: {integrity: sha512-8HI84twe5FjYRebSLMAhtkL9bRuTDIlxJK56kjfjU9WKGoUCTaWpCnkuj8Hqde1bWZ0X+GOZxKDfNkn1CjtjxA==} peerDependencies: @@ -2885,6 +3863,11 @@ packages: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true + /@types/cookie/0.5.1: + resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} + dev: true + optional: true + /@types/estree/1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true @@ -3100,24 +4083,24 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@unocss/astro/0.49.6_vite@4.1.1: + /@unocss/astro/0.49.6_rollup@3.15.0+vite@4.1.1: resolution: {integrity: sha512-0+vXBLLoS8B8Itvx+43GYeEABbRur4XxdsMKjU1/F/zXJXEoQm2A1e7TM555dJSfHD7ZVcpP12Wygo5fCAfWVw==} dependencies: '@unocss/core': 0.49.6 '@unocss/reset': 0.49.6 - '@unocss/vite': 0.49.6_vite@4.1.1 + '@unocss/vite': 0.49.6_rollup@3.15.0+vite@4.1.1 transitivePeerDependencies: - rollup - vite dev: true - /@unocss/cli/0.49.6: + /@unocss/cli/0.49.6_rollup@3.15.0: resolution: {integrity: sha512-XdMeZzTZqe4Ds2Sf4VPUrQ1fnNlQwpi83cVDDbTtRgh7Lu2hgZFP/Baeq+IJ5Y5EEcf5nb+q2dp2K824/f9pZA==} engines: {node: '>=14'} hasBin: true dependencies: '@ampproject/remapping': 2.2.0 - '@rollup/pluginutils': 5.0.2 + '@rollup/pluginutils': 5.0.2_rollup@3.15.0 '@unocss/config': 0.49.6 '@unocss/core': 0.49.6 '@unocss/preset-uno': 0.49.6 @@ -3241,13 +4224,13 @@ packages: '@unocss/core': 0.49.6 dev: true - /@unocss/vite/0.49.6_vite@4.1.1: + /@unocss/vite/0.49.6_rollup@3.15.0+vite@4.1.1: resolution: {integrity: sha512-9wpl5t+WoXN+qpVRd9VprFQzSJtknA5eCTDvbNQwTPTmoCbIeIHBXsQrX9swj8jA3W9lVVS3ulDQCny8Qfwl8A==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 dependencies: '@ampproject/remapping': 2.2.0 - '@rollup/pluginutils': 5.0.2 + '@rollup/pluginutils': 5.0.2_rollup@3.15.0 '@unocss/config': 0.49.6 '@unocss/core': 0.49.6 '@unocss/inspector': 0.49.6 @@ -3349,6 +4332,15 @@ packages: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + optional: true + /acorn-globals/7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: @@ -3546,28 +4538,76 @@ packages: engines: {node: '>= 0.4'} dev: true - /axios/1.3.3_debug@4.3.4: - resolution: {integrity: sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==} + /axios/0.25.0_debug@4.3.4: + resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + dependencies: + follow-redirects: 1.15.2_debug@4.3.4 + transitivePeerDependencies: + - debug + dev: true + optional: true + + /axios/1.3.3_debug@4.3.4: + resolution: {integrity: sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==} + dependencies: + follow-redirects: 1.15.2_debug@4.3.4 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + + /babel-plugin-jsx-dom-expressions/0.35.16_@babel+core@7.20.12: + resolution: {integrity: sha512-Z8vaeXRdtI4qyq3bmQiLjiZnbjn2Rr0mjpXMwN+QxHbWjtlAFOJSHlkcxbrwPz/DdcfSgkmZM0Atvt/zMLeLyA==} + peerDependencies: + '@babel/core': ^7.20.12 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 + html-entities: 2.3.3 + validate-html-nesting: 1.2.1 + dev: true + + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.20.14 + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - follow-redirects: 1.15.2_debug@4.3.4 - form-data: 4.0.0 - proxy-from-env: 1.1.0 + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + core-js-compat: 3.28.0 transitivePeerDependencies: - - debug + - supports-color dev: true + optional: true - /babel-plugin-jsx-dom-expressions/0.35.16_@babel+core@7.20.12: - resolution: {integrity: sha512-Z8vaeXRdtI4qyq3bmQiLjiZnbjn2Rr0mjpXMwN+QxHbWjtlAFOJSHlkcxbrwPz/DdcfSgkmZM0Atvt/zMLeLyA==} + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: - '@babel/core': ^7.20.12 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 - '@babel/types': 7.20.7 - html-entities: 2.3.3 - validate-html-nesting: 1.2.1 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color dev: true + optional: true /babel-plugin-syntax-trailing-function-commas/7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} @@ -3691,6 +4731,18 @@ packages: update-browserslist-db: 1.0.10_browserslist@4.21.4 dev: true + /browserslist/4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001457 + electron-to-chromium: 1.4.284 + node-releases: 2.0.8 + update-browserslist-db: 1.0.10_browserslist@4.21.5 + dev: true + optional: true + /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -3729,6 +4781,12 @@ packages: streamsearch: 1.1.0 dev: true + /bytes/3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + optional: true + /cac/6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -3771,6 +4829,11 @@ packages: resolution: {integrity: sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==} dev: true + /caniuse-lite/1.0.30001457: + resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} + dev: true + optional: true + /capital-case/1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: @@ -3961,6 +5024,11 @@ packages: delayed-stream: 1.0.0 dev: true + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + optional: true + /commander/4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -3971,10 +5039,47 @@ packages: engines: {node: '>=4.0.0'} dev: true + /compressible/2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + optional: true + + /compression/1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true + /connect/3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /consola/2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} dev: true @@ -3991,6 +5096,13 @@ packages: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true + /core-js-compat/3.28.0: + resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==} + dependencies: + browserslist: 4.21.5 + dev: true + optional: true + /cosmiconfig-typescript-loader/4.3.0_ubrymuwlz4ufngznlqsmh7e3bi: resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} @@ -4143,6 +5255,18 @@ packages: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} dev: true + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + optional: true + /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -4211,6 +5335,12 @@ packages: clone: 1.0.4 dev: true + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + optional: true + /define-properties/1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} @@ -4245,6 +5375,12 @@ packages: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} dev: true + /dequal/2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + optional: true + /destr/1.2.2: resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} dev: true @@ -4324,6 +5460,11 @@ packages: safe-buffer: 5.2.1 dev: true + /ee-first/1.1.1: + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + dev: true + optional: true + /electron-to-chromium/1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true @@ -4336,6 +5477,12 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + optional: true + /enquirer/2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -4407,6 +5554,11 @@ packages: stop-iteration-iterator: 1.0.0 dev: true + /es-module-lexer/1.2.0: + resolution: {integrity: sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==} + dev: true + optional: true + /es-set-tostringtag/2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} @@ -4431,6 +5583,166 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-plugin-solid/0.4.2_bve56rijdtklnf27lceyb3zzei: + resolution: {integrity: sha512-T5GphLoud3RumjeNYO3K9WVjWDzVKG5evlS7hUEUI0n9tiCL+CnbvJh3SSwFi3xeeXpZRrnZc1gd6FWQsVobTg==} + peerDependencies: + esbuild: '>=0.12' + solid-js: '>= 1.0' + dependencies: + '@babel/core': 7.20.12 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 + babel-preset-solid: 1.6.10_@babel+core@7.20.12 + esbuild: 0.14.54 + solid-js: 1.6.11 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /esbuild-plugin-solid/0.5.0_53k565wzpp55uni6zxdi7b642e: resolution: {integrity: sha512-ITK6n+0ayGFeDVUZWNMxX+vLsasEN1ILrg4pISsNOQ+mq4ljlJJiuXotInd+HE0MzwTcA9wExT1yzDE2hsqPsg==} peerDependencies: @@ -4446,6 +5758,72 @@ packages: - supports-color dev: true + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: true + optional: true + /esbuild/0.16.17: resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} engines: {node: '>=12'} @@ -4511,6 +5889,11 @@ packages: engines: {node: '>=6'} dev: true + /escape-html/1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + optional: true + /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -4836,6 +6219,22 @@ packages: to-regex-range: 5.0.1 dev: true + /finalhandler/1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -4997,6 +6396,12 @@ packages: has-symbols: 1.0.3 dev: true + /get-port/6.1.2: + resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + optional: true + /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -5457,6 +6862,13 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + optional: true + /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -5644,6 +7056,14 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + optional: true + /isarray/2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -5674,6 +7094,17 @@ packages: hasBin: true dev: true + /joi/17.8.3: + resolution: {integrity: sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.4 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + dev: true + optional: true + /joycon/3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -5743,6 +7174,12 @@ packages: - utf-8-validate dev: true + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + optional: true + /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -5950,6 +7387,11 @@ packages: p-locate: 5.0.0 dev: true + /lodash.debounce/4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + optional: true + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -6212,11 +7654,22 @@ packages: ufo: 1.1.0 dev: true + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + optional: true + /mrmime/1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} dev: true + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + optional: true + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -6260,6 +7713,12 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + optional: true + /no-case/3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: @@ -6393,6 +7852,20 @@ packages: ufo: 1.1.0 dev: true + /on-finished/2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + optional: true + + /on-headers/1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + optional: true + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -6406,6 +7879,16 @@ packages: mimic-fn: 2.1.0 dev: true + /open/8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + optional: true + /optionator/0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -6546,12 +8029,23 @@ packages: lines-and-columns: 1.2.4 dev: true + /parse-multipart-data/1.5.0: + resolution: {integrity: sha512-ck5zaMF0ydjGfejNMnlo5YU2oJ+pT+80Jb1y4ybanT27j+zbVP/jkYmCrUGsEln0Ox/hZmuvgy8Ra7AxbXP2Mw==} + dev: true + optional: true + /parse5/7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: true + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + optional: true + /pascal-case/3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: @@ -6836,10 +8330,30 @@ packages: strip-indent: 3.0.0 dev: true + /regenerate-unicode-properties/10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + optional: true + + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + optional: true + /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true + /regenerator-transform/0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + dependencies: + '@babel/runtime': 7.20.13 + dev: true + optional: true + /regexp.prototype.flags/1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} @@ -6854,6 +8368,27 @@ packages: engines: {node: '>=8'} dev: true + /regexpu-core/5.3.1: + resolution: {integrity: sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + optional: true + + /regjsparser/0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + optional: true + /relay-runtime/12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: @@ -6938,6 +8473,35 @@ packages: glob: 7.2.3 dev: true + /rollup-plugin-visualizer/5.9.0_rollup@3.15.0: + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + rollup: 3.15.0 + source-map: 0.7.4 + yargs: 17.7.0 + dev: true + optional: true + + /rollup-route-manifest/1.0.0_rollup@3.15.0: + resolution: {integrity: sha512-3CmcMmCLAzJDUXiO3z6386/Pt8/k9xTZv8gIHyXI8hYGoAInnYdOsFXiGGzQRMy6TXR1jUZme2qbdwjH2nFMjg==} + engines: {node: '>=8'} + peerDependencies: + rollup: '>=2.0.0' + dependencies: + rollup: 3.15.0 + route-sort: 1.0.0 + dev: true + optional: true + /rollup/3.15.0: resolution: {integrity: sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -6946,6 +8510,12 @@ packages: fsevents: 2.3.2 dev: true + /route-sort/1.0.0: + resolution: {integrity: sha512-SFgmvjoIhp5S4iBEDW3XnbT+7PRuZ55oRuNjY+CDB1SGZkyCG9bqQ3/dhaZTctTBYMAvDxd2Uy9dStuaUfgJqQ==} + engines: {node: '>= 6'} + dev: true + optional: true + /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -6967,6 +8537,19 @@ packages: tslib: 2.5.0 dev: true + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + optional: true + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + optional: true + /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true @@ -7024,6 +8607,11 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true + /set-cookie-parser/2.5.1: + resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} + dev: true + optional: true + /setimmediate/1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true @@ -7144,6 +8732,38 @@ packages: solid-js: 1.6.9 dev: true + /solid-devtools/0.26.0_g6qi5asgsopwckrc6btee5ag3u: + resolution: {integrity: sha512-YNvdOj2SsAzArmclh5cdCPQNZlDaYp8TsYQWftCGEA7eQ0UJ2dfz+IDEw7KkW6d44tyfd5iUgjDeoht0+B5klA==} + peerDependencies: + solid-js: ^1.6.9 + vite: ^2.2.3 || ^3.0.0 || ^4.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/types': 7.20.7 + '@solid-devtools/debugger': 0.21.0_solid-js@1.6.11 + '@solid-devtools/shared': 0.11.0_solid-js@1.6.11 + '@solid-primitives/event-bus': 1.0.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + solid-js: 1.6.11 + type-fest: 3.6.0 + vite: 4.1.1_@types+node@18.13.0 + optionalDependencies: + solid-start: 0.2.21_g6qi5asgsopwckrc6btee5ag3u + transitivePeerDependencies: + - '@solidjs/meta' + - '@solidjs/router' + - solid-start-aws + - solid-start-cloudflare-pages + - solid-start-cloudflare-workers + - solid-start-deno + - solid-start-netlify + - solid-start-node + - solid-start-static + - solid-start-vercel + - supports-color + dev: true + /solid-heroicons/3.1.1_solid-js@1.6.9: resolution: {integrity: sha512-wfU/SqxqxWxInvfFlKJfCBPnJ94Zq1GQFiFL3M0KwZzT81lSF5yIC4HA/Czp3DYrn+dUumjO0qdrx8Ab3cy2sA==} peerDependencies: @@ -7181,6 +8801,81 @@ packages: solid-js: 1.6.11 dev: true + /solid-start/0.2.21_g6qi5asgsopwckrc6btee5ag3u: + resolution: {integrity: sha512-igh1vI6d8sBm9BeGGcJOE7ewEOSlhzmL3f4iVX0bg5oz+9xtqAf1EA0MvNkTLTvq5YKsVKYy80oJmm/xg0F8jw==} + hasBin: true + requiresBuild: true + peerDependencies: + '@solidjs/meta': ^0.28.0 + '@solidjs/router': ^0.7.0 + solid-js: ^1.6.2 + solid-start-aws: '*' + solid-start-cloudflare-pages: '*' + solid-start-cloudflare-workers: '*' + solid-start-deno: '*' + solid-start-netlify: '*' + solid-start-node: '*' + solid-start-static: '*' + solid-start-vercel: '*' + vite: ^3.1.8 + peerDependenciesMeta: + solid-start-aws: + optional: true + solid-start-cloudflare-pages: + optional: true + solid-start-cloudflare-workers: + optional: true + solid-start-deno: + optional: true + solid-start-netlify: + optional: true + solid-start-node: + optional: true + solid-start-static: + optional: true + solid-start-vercel: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 + '@babel/template': 7.20.7 + '@solidjs/meta': 0.28.2_solid-js@1.6.11 + '@solidjs/router': 0.7.0_solid-js@1.6.11 + '@types/cookie': 0.5.1 + chokidar: 3.5.3 + compression: 1.7.4 + connect: 3.7.0 + debug: 4.3.4 + dequal: 2.0.3 + dotenv: 16.0.3 + es-module-lexer: 1.2.0 + esbuild: 0.14.54 + esbuild-plugin-solid: 0.4.2_bve56rijdtklnf27lceyb3zzei + fast-glob: 3.2.12 + get-port: 6.1.2 + parse-multipart-data: 1.5.0 + picocolors: 1.0.0 + rollup: 3.15.0 + rollup-plugin-visualizer: 5.9.0_rollup@3.15.0 + rollup-route-manifest: 1.0.0_rollup@3.15.0 + sade: 1.8.1 + set-cookie-parser: 2.5.1 + sirv: 2.0.2 + solid-js: 1.6.11 + terser: 5.16.5 + undici: 5.20.0 + vite: 4.1.1_@types+node@18.13.0 + vite-plugin-inspect: 0.7.15_rollup@3.15.0+vite@4.1.1 + vite-plugin-solid: 2.5.0_solid-js@1.6.11+vite@4.1.1 + wait-on: 6.0.1_debug@4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /solid-transition-group/0.0.13_solid-js@1.6.9: resolution: {integrity: sha512-VA1V0ip4dsNOQJ/dCluCiAPBUuHspYFm4WYG91jpNmcP4rC4DY1S1EGds44JjiUAP7qEoEZdMhPaiS6lqTF7AA==} peerDependencies: @@ -7206,6 +8901,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /source-map/0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + optional: true + /source-map/0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} @@ -7256,6 +8957,12 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /statuses/1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + optional: true + /std-env/3.3.2: resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} dev: true @@ -7423,6 +9130,18 @@ packages: engines: {node: '>=8'} dev: true + /terser/5.16.5: + resolution: {integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.8.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + optional: true + /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -7808,6 +9527,41 @@ packages: jiti: 1.17.1 dev: true + /undici/5.20.0: + resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} + engines: {node: '>=12.18'} + dependencies: + busboy: 1.6.0 + dev: true + optional: true + + /unicode-canonical-property-names-ecmascript/2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + optional: true + + /unicode-match-property-ecmascript/2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + optional: true + + /unicode-match-property-value-ecmascript/2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + optional: true + + /unicode-property-aliases-ecmascript/2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + optional: true + /universal-user-agent/6.0.0: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} dev: true @@ -7834,7 +9588,7 @@ packages: normalize-path: 2.1.1 dev: true - /unocss/0.49.6_vite@4.1.1: + /unocss/0.49.6_rollup@3.15.0+vite@4.1.1: resolution: {integrity: sha512-/KAZyGA2Jb/mOzOxxZXji+njY8qAzkKWanOGGyupUqq0f3D4SSBQ/QE9Htn+Gw+4yo6nQLSMCyxBd418C+GSOA==} engines: {node: '>=14'} peerDependencies: @@ -7843,8 +9597,8 @@ packages: '@unocss/webpack': optional: true dependencies: - '@unocss/astro': 0.49.6_vite@4.1.1 - '@unocss/cli': 0.49.6 + '@unocss/astro': 0.49.6_rollup@3.15.0+vite@4.1.1 + '@unocss/cli': 0.49.6_rollup@3.15.0 '@unocss/core': 0.49.6 '@unocss/preset-attributify': 0.49.6 '@unocss/preset-icons': 0.49.6 @@ -7859,13 +9613,19 @@ packages: '@unocss/transformer-compile-class': 0.49.6 '@unocss/transformer-directives': 0.49.6 '@unocss/transformer-variant-group': 0.49.6 - '@unocss/vite': 0.49.6_vite@4.1.1 + '@unocss/vite': 0.49.6_rollup@3.15.0+vite@4.1.1 transitivePeerDependencies: - rollup - supports-color - vite dev: true + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + optional: true + /update-browserslist-db/1.0.10_browserslist@4.21.4: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -7877,6 +9637,18 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db/1.0.10_browserslist@4.21.5: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + optional: true + /upper-case-first/2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: @@ -7912,6 +9684,12 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true + /utils-merge/1.0.1: + resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + engines: {node: '>= 0.4.0'} + dev: true + optional: true + /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true @@ -7932,6 +9710,12 @@ packages: engines: {node: '>=12'} dev: true + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + optional: true + /vite-node/0.28.5_@types+node@18.13.0: resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} engines: {node: '>=v14.16.0'} @@ -7955,6 +9739,26 @@ packages: - terser dev: true + /vite-plugin-inspect/0.7.15_rollup@3.15.0+vite@4.1.1: + resolution: {integrity: sha512-oxeZCljacA/slhGFbDNlBqdhDU9fgdHL84i7Nz7DnaAIE7DhTiW2djanw3d/BKuZtduKUY82vRUQ4iaG917t2A==} + engines: {node: '>=14'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0 + dependencies: + '@antfu/utils': 0.7.2 + '@rollup/pluginutils': 5.0.2_rollup@3.15.0 + debug: 4.3.4 + fs-extra: 11.1.0 + kolorist: 1.7.0 + sirv: 2.0.2 + ufo: 1.1.0 + vite: 4.1.1_@types+node@18.13.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + optional: true + /vite-plugin-mkcert/1.13.1_vite@4.1.1: resolution: {integrity: sha512-0daZMGEpQDN6LniLn1b9J7IRk2Ddp+euN4Wly/CGe4XkOoB2OHJM7ucpMfSS2MVjfd3GrO1hxyV7Ma0OeTsG7A==} engines: {node: '>=v16.7.0'} @@ -8138,6 +9942,21 @@ packages: xml-name-validator: 4.0.0 dev: true + /wait-on/6.0.1_debug@4.3.4: + resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + axios: 0.25.0_debug@4.3.4 + joi: 17.8.3 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.0 + transitivePeerDependencies: + - debug + dev: true + optional: true + /wcwidth/1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: From a615e05ff2386ba84d23e20330aacd2118cb7484 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 25 Feb 2023 18:49:33 +0100 Subject: [PATCH 02/33] Improve switch transition demo and add tests --- packages/transition-group/dev/switch-page.tsx | 188 ++++++++++-------- packages/transition-group/src/index.ts | 4 +- packages/transition-group/test/index.test.ts | 14 -- .../test/switch-transition.test.ts | 187 +++++++++++++++++ 4 files changed, 292 insertions(+), 101 deletions(-) delete mode 100644 packages/transition-group/test/index.test.ts create mode 100644 packages/transition-group/test/switch-transition.test.ts diff --git a/packages/transition-group/dev/switch-page.tsx b/packages/transition-group/dev/switch-page.tsx index ab9851617..d09a82f6f 100644 --- a/packages/transition-group/dev/switch-page.tsx +++ b/packages/transition-group/dev/switch-page.tsx @@ -1,97 +1,113 @@ -import { Component, createSignal, onCleanup, Show, untrack } from "solid-js"; +import { Component, createSignal, JSX, onCleanup, ParentProps, Show } from "solid-js"; import { resolveFirst } from "@solid-primitives/refs"; -import { createSwitchTransition } from "../src"; +import { createSwitchTransition, TransitionMode } from "../src"; -const SwitchPage: Component = () => { - const [toggle, setToggle] = createSignal(true); +function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element { + const el = resolveFirst( + () => props.children, + (item): item is HTMLElement => item instanceof HTMLElement, + ); - return ( - <> -
- -
-
- {untrack(() => { - let i = 0; + const animateIn = (el: HTMLElement, done: VoidFunction) => { + if (!el.isConnected) throw el.textContent + " is not connected!!"; + const a = el.animate( + [ + { opacity: 0, transform: "translate(100px)" }, + { opacity: 1, transform: "translate(0)" }, + ], + { duration: 800 }, + ); + animationMap.set(el, a); + const complete = () => { + done(); + animationMap.delete(el); + }; + a.finished.then(complete).catch(complete); + }; - const el = resolveFirst( - () => ( - onCleanup(() => (el.style.filter = "grayscale(60%)"))} - > - B{i++} -
- } - > -
onCleanup(() => (el.style.filter = "grayscale(60%)"))} - > - A{i++} -
- - ), - (item): item is HTMLElement => item instanceof HTMLElement, - ); + const animateOut = (el: HTMLElement, done: VoidFunction) => { + if (!el.isConnected) throw el.textContent + " is not connected!!"; + const left1 = el.getBoundingClientRect().left; + animationMap.get(el)?.cancel(); + const left2 = el.getBoundingClientRect().left; + el.animate( + [ + { opacity: 1, transform: `translate(${left1 - left2}px)` }, + { opacity: 0, transform: "translate(-100px)" }, + ], + { duration: 1000 }, + ) + .finished.then(done) + .catch(done); + }; - const animateIn = (el: HTMLElement, done: VoidFunction) => { - if (!el.isConnected) throw el.textContent + " is not connected!!"; - const a = el.animate( - [ - { opacity: 0, transform: "translate(100px)" }, - { opacity: 1, transform: "translate(0)" }, - ], - { duration: 800 }, - ); - animationMap.set(el, a); - const complete = () => { - done(); - animationMap.delete(el); - }; - a.finished.then(complete).catch(complete); - }; + const animationMap = new Map(); - const animateOut = (el: HTMLElement, done: VoidFunction) => { - if (!el.isConnected) throw el.textContent + " is not connected!!"; - el.style.position = "absolute"; - const left1 = el.getBoundingClientRect().left; - animationMap.get(el)?.cancel(); - const left2 = el.getBoundingClientRect().left; - el.animate( - [ - { opacity: 1, transform: `translate(${left1 - left2}px)` }, - { opacity: 0, transform: "translate(-100px)" }, - ], - { duration: 1000 }, - ) - .finished.then(done) - .catch(done); - }; + return createSwitchTransition(el, { + onEnter(el, done) { + // console.log("onEnter", el); + requestAnimationFrame(() => { + animateIn(el, done); + }); + }, + onExit(el, done) { + // console.log("onExit", el); + animateOut(el, done); + }, + mode: props.mode, + }); +} + +const grayOutOnDispose = (el: HTMLElement) => { + onCleanup(() => { + el.style.filter = "grayscale(60%)"; + el.style.zIndex = "0"; + }); +}; - const animationMap = new Map(); +function Example(props: { mode: TransitionMode; withFallback?: true }): JSX.Element { + const { withFallback, mode } = props; + const [toggle, setToggle] = createSignal(true); - return createSwitchTransition(el, { - onEnter(el, done) { - // console.log("onEnter", el); - requestAnimationFrame(() => { - animateIn(el, done); - }); - }, - onExit(el, done) { - // console.log("onExit", el); - animateOut(el, done); - }, - // mode: "in-out", - appear: false, - }); - })} - + let i = 0; + + return ( +
+

{mode}

+ + + + B{i++} +
+ ) + } + > +
+ A{i++} +
+ + + + ); +} + +const SwitchPage: Component = () => { + return ( + <> +

Toggle

+ + + +

Switch

+ + + ); }; diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index 2ddb1041c..bb4c6f24f 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -1,6 +1,8 @@ import { FalsyValue, noop } from "@solid-primitives/utils"; import { Accessor, batch, createComputed, createSignal, untrack } from "solid-js"; +export type TransitionMode = "out-in" | "in-out" | "parallel"; + const logEl = (el: any) => (el ? el.textContent : null); const noopTransition = (el: any, done: () => void) => done(); @@ -10,7 +12,7 @@ export function createSwitchTransition( props: { onEnter?: (el: T, done: () => void) => void; onExit?: (el: T, done: () => void) => void; - mode?: "out-in" | "in-out" | "parallel"; + mode?: TransitionMode; appear?: boolean; }, ): Accessor { diff --git a/packages/transition-group/test/index.test.ts b/packages/transition-group/test/index.test.ts deleted file mode 100644 index b7722a209..000000000 --- a/packages/transition-group/test/index.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { describe, test, expect } from "vitest"; -import { createRoot } from "solid-js"; -import { createPrimitiveTemplate } from "../src"; - -describe("createPrimitiveTemplate", () => { - test("createPrimitiveTemplate return values", () => - createRoot(dispose => { - const [value, setValue] = createPrimitiveTemplate(true); - expect(value(), "initial value should be true").toBe(true); - setValue(false); - expect(value(), "value after change should be false").toBe(false); - dispose(); - })); -}); diff --git a/packages/transition-group/test/switch-transition.test.ts b/packages/transition-group/test/switch-transition.test.ts new file mode 100644 index 000000000..01453f999 --- /dev/null +++ b/packages/transition-group/test/switch-transition.test.ts @@ -0,0 +1,187 @@ +import { describe, it, expect, vi } from "vitest"; +import { createRoot, createSignal } from "solid-js"; +import { createSwitchTransition } from "../src"; + +describe("createSwitchTransition", () => { + const el1 = document.createElement("div"); + const el2 = document.createElement("div"); + + it("renders items immediately on the initial run", () => + createRoot(dispose => { + const result = createSwitchTransition(() => el1, {}); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); + dispose(); + })); + + it("reacts to changes to children", () => + createRoot(dispose => { + const [children, setChildren] = createSignal(); + const result = createSwitchTransition(children, {}); + expect(result()).toHaveLength(0); + + setChildren(el1); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); + dispose(); + })); + + it("transitions element out", () => { + return createRoot(dispose => { + const [children, setChildren] = createSignal(el1); + const fn = vi.fn(); + const result = createSwitchTransition(children, { + onExit: fn, + }); + expect(result()).toHaveLength(1); + + setChildren(null); + expect(result()).toHaveLength(1); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); + + const done = fn.mock.calls[0]![1]; + done(); + expect(result()).toHaveLength(0); + + dispose(); + }); + }); + + it("transitions element in", () => { + return createRoot(dispose => { + const [children, setChildren] = createSignal(null); + const fn = vi.fn(); + const result = createSwitchTransition(children, { + onEnter: fn, + }); + expect(result()).toHaveLength(0); + + setChildren(el1); + expect(result()).toHaveLength(1); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); + + dispose(); + }); + }); + + it("transitions element in on appear", () => { + return createRoot(dispose => { + const fn = vi.fn(); + const result = createSwitchTransition(() => el1, { + onEnter: fn, + appear: true, + }); + expect(result()).toHaveLength(1); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); + + dispose(); + }); + }); + + it("toggles between two elements", () => { + return createRoot(dispose => { + const [children, setChildren] = createSignal(el1); + const enterCb = vi.fn(); + const exitCb = vi.fn(); + const result = createSwitchTransition(children, { + onExit: exitCb, + onEnter: enterCb, + }); + expect(result()).toHaveLength(1); + expect(enterCb).not.toHaveBeenCalled(); + expect(exitCb).not.toHaveBeenCalled(); + + setChildren(el2); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el1); + expect(enterCb).toHaveBeenCalledOnce(); + expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); + expect(exitCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); + + const exitDone = exitCb.mock.calls[0]![1]; + exitDone(); + expect(result()).toHaveLength(1); + + dispose(); + }); + }); + + it("toggles between two elements out-in", () => { + return createRoot(dispose => { + const [children, setChildren] = createSignal(el1); + const enterCb = vi.fn(); + const exitCb = vi.fn(); + const result = createSwitchTransition(children, { + onExit: exitCb, + onEnter: enterCb, + mode: "out-in", + }); + expect(result()).toHaveLength(1); + expect(enterCb).not.toHaveBeenCalled(); + expect(exitCb).not.toHaveBeenCalled(); + + setChildren(el2); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); + expect(enterCb).not.toHaveBeenCalled(); + expect(exitCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); + + const exitDone = exitCb.mock.calls[0]![1]; + exitDone(); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el2); + expect(enterCb).toHaveBeenCalledOnce(); + expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); + + dispose(); + }); + }); + + it("toggles between two elements in-out", () => { + return createRoot(dispose => { + const [children, setChildren] = createSignal(el1); + const enterCb = vi.fn(); + const exitCb = vi.fn(); + const result = createSwitchTransition(children, { + onExit: exitCb, + onEnter: enterCb, + mode: "in-out", + }); + expect(result()).toHaveLength(1); + expect(enterCb).not.toHaveBeenCalled(); + expect(exitCb).not.toHaveBeenCalled(); + + setChildren(el2); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el1); + expect(enterCb).toHaveBeenCalledOnce(); + expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); + expect(exitCb).not.toHaveBeenCalled(); + + const enterDone = enterCb.mock.calls[0]![1]; + enterDone(); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el1); + expect(enterCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); + + const exitDone = exitCb.mock.calls[0]![1]; + exitDone(); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el2); + expect(enterCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledOnce(); + + dispose(); + }); + }); +}); From 95d326c44b0dda55a68019d3fd801c8174162353 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sun, 26 Feb 2023 21:18:13 +0100 Subject: [PATCH 03/33] Add `createListTransition` to transition-group --- packages/transition-group/dev/list-page.tsx | 169 ++++++++++++++------ packages/transition-group/src/index.ts | 133 ++++++++++++--- 2 files changed, 228 insertions(+), 74 deletions(-) diff --git a/packages/transition-group/dev/list-page.tsx b/packages/transition-group/dev/list-page.tsx index 33e8d5257..3768cf6d8 100644 --- a/packages/transition-group/dev/list-page.tsx +++ b/packages/transition-group/dev/list-page.tsx @@ -1,28 +1,13 @@ -import { children, ParentComponent } from "solid-js"; -import { elements, mapRemoved } from "@solid-primitives/refs"; +import { children, onCleanup, untrack } from "solid-js"; +import { elements } from "@solid-primitives/refs"; import { Component, createSignal, For, Show } from "solid-js"; -import { createCallbackStack } from "@solid-primitives/utils"; +import { createListTransition } from "../src"; -const Keep: ParentComponent<{ - getClear?: (fn: VoidFunction) => void; -}> = props => { - const resolved = children(() => props.children); - const refs = elements(resolved, HTMLElement); - const stack = createCallbackStack(); - props.getClear?.(stack.execute); - const combined = mapRemoved(refs, (ref, i) => { - const [el, setEl] = createSignal(ref); - console.log("REMOVED", i()); - stack.push(() => setEl(undefined)); - ref!.style.filter = "grayscale(100%)"; - ref!.style.position = "relative"; - ref!.appendChild((
{i()}
) as Element); - - ref!.addEventListener("click", () => setEl(undefined)); - - return el; +const grayOutOnDispose = (el: HTMLElement) => { + onCleanup(() => { + el.style.filter = "grayscale(60%)"; + el.style.zIndex = "0"; }); - return combined; }; const ListPage: Component = () => { @@ -30,17 +15,22 @@ const ListPage: Component = () => { const [show1, setShow1] = createSignal(false); const [show2, setShow2] = createSignal(true); const [showWrapper, setShowWrapper] = createSignal(true); - const [count, setCount] = createSignal(5); - let clear!: VoidFunction; + const [list, setList] = createSignal([{ n: 1 }, { n: 2 }, { n: 3 }, { n: 4 }, { n: 5 }]); return ( <>
- - -
-
- (clear = fn)}> - -

Hello

- World - {show() &&
ID 0
} - {/* - ref={el => console.log(el)} - onMount={el => console.log("Mounted", el)} - > */} - -
ID 1
-
- {/* */} - -
ID 2
-
ID 3
+
+ {untrack(() => { + const resolved = children(() => ( + +

Hello

+ World + {show() && ( +
+ ID 0 +
+ )} + +
+ ID 1 +
+
+ +
+ ID 2 +
+
+ ID 3 +
+
+ + {({ n }, i) => ( +
+ setList(p => { + const copy = p.slice(); + copy.splice(i(), 1); + return copy; + }) + } + ref={grayOutOnDispose} + > + {n + 1}. +
+ )} +
- i)}> - {i =>
{i + 1}.
} -
- - + )); + const refs = elements(resolved, HTMLElement); + + const options = { duration: 600, easing: "cubic-bezier(0.4, 0, 0.2, 1)" }; + + return createListTransition(refs, { + appear: true, + onChange({ added, finishRemoved, moved, removed }) { + added.forEach(el => { + el.style.opacity = "0"; + el.style.transform = "translateY(10px)"; + requestAnimationFrame(() => { + el.animate( + [ + { opacity: 0, transform: "translateY(-36px)" }, + { opacity: 1, transform: "translateY(0)" }, + ], + { ...options, fill: "both" }, + ); + }); + }); + + moved.forEach(el => { + const { left: left1, top: top1 } = el.getBoundingClientRect(); + requestAnimationFrame(() => { + const { left: left2, top: top2 } = el.getBoundingClientRect(); + el.animate( + [ + { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, + { transform: "none" }, + ], + options, + ); + }); + }); + + const removedRects = removed.map(el => el.getBoundingClientRect()); + removed.forEach(el => { + el.style.transform = "none"; + el.style.position = "absolute"; + }); + removed.forEach((el, i) => { + const { left: left1, top: top1 } = removedRects[i]!; + const { left: left2, top: top2 } = el.getBoundingClientRect(); + + const a = el.animate( + [ + { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, + { + opacity: 0, + transform: `translate(${left1 - left2}px, ${top1 - top2 + 36}px)`, + }, + ], + options, + ); + + i === removed.length - 1 && a.finished.then(() => finishRemoved(removed)); + }); + }, + }); + })}
); diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index bb4c6f24f..c02893dd2 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -1,21 +1,23 @@ -import { FalsyValue, noop } from "@solid-primitives/utils"; -import { Accessor, batch, createComputed, createSignal, untrack } from "solid-js"; +import { Accessor, batch, createComputed, createSignal, untrack, $TRACK } from "solid-js"; + +const noop = () => {}; +const noopTransition = (el: any, done: () => void) => done(); export type TransitionMode = "out-in" | "in-out" | "parallel"; -const logEl = (el: any) => (el ? el.textContent : null); +export type OnTransition = (el: NonNullable, done: () => void) => void; -const noopTransition = (el: any, done: () => void) => done(); +export type SwitchTransitionOptions = { + onEnter?: OnTransition; + onExit?: OnTransition; + mode?: TransitionMode; + appear?: boolean; +}; -export function createSwitchTransition( - source: Accessor, - props: { - onEnter?: (el: T, done: () => void) => void; - onExit?: (el: T, done: () => void) => void; - mode?: TransitionMode; - appear?: boolean; - }, -): Accessor { +export function createSwitchTransition( + source: Accessor, + options: SwitchTransitionOptions, +): Accessor[]> { if (process.env.SSR) { let el: any = source(); el = el ? [el] : []; @@ -23,11 +25,11 @@ export function createSwitchTransition( } // eslint-disable-next-line prefer-const - let { onEnter = noopTransition, onExit = noopTransition } = props; + let { onEnter = noopTransition, onExit = noopTransition } = options; - // prevent the first enter transition if appear is disabled + // skip the first enter transition if appear is disabled let init = true; - if (!props.appear) { + if (!options.appear) { const _onEnter = onEnter; onEnter = (el, done) => { onEnter = _onEnter; @@ -35,36 +37,36 @@ export function createSwitchTransition( }; } - const [returned, setReturned] = createSignal([]); + const [returned, setReturned] = createSignal[]>([]); let next: T | undefined; let isExiting = false; function exitTransition(el: T | undefined, after?: () => void) { - if (!el) return after?.(); + if (!el) return after && after(); isExiting = true; onExit(el, () => { batch(() => { isExiting = false; setReturned(p => p.filter(e => e !== el)); - after?.(); + after && after(); }); }); } function enterTransition(after?: () => void) { const el = next; - if (!el) return after?.(); + if (!el) return after && after(); next = undefined; setReturned(p => [el, ...p]); onEnter(el, after ?? noop); } const transition: (prev: T | undefined) => void = - props.mode === "out-in" + options.mode === "out-in" ? // exit -> enter prev => isExiting || exitTransition(prev, enterTransition) - : props.mode === "in-out" + : options.mode === "in-out" ? // enter -> exit prev => enterTransition(() => exitTransition(prev)) : // exit & enter @@ -74,7 +76,7 @@ export function createSwitchTransition( }; createComputed((prev: T | undefined) => { - const el = source() || undefined; + const el = source(); if (el !== prev) { next = el; untrack(() => batch(() => transition(prev))); @@ -85,3 +87,88 @@ export function createSwitchTransition( init = false; return returned; } + +export type OnListChange = (payload: { + added: T[]; + removed: T[]; + moved: T[]; + finishRemoved: (els: T[]) => void; +}) => void; + +export type ListTransitionOptions = { + onChange: OnListChange; + appear?: boolean; +}; + +export function createListTransition( + source: Accessor[]>, + options: ListTransitionOptions>, +): Accessor[]> { + if (process.env.SSR) { + const copy = source().slice(); + return () => copy; + } + + type V = NonNullable; + + let { onChange } = options; + + // skip the first enter transition if appear is disabled + let init = true; + if (!options.appear) { + const _onChange = onChange; + onChange = data => { + onChange = _onChange; + init || onChange(data); + }; + } + + const [returned, setReturned] = createSignal([]); + + let prevSet: ReadonlySet = new Set(); + const exiting = new Set(); + + function finishRemoved(els: V[]): void { + setReturned(p => p.filter(e => !els.includes(e))); + for (const el of els) exiting.delete(el); + } + + createComputed(() => { + const list = source(); + (list as any)[$TRACK]; // top level store tracking + + untrack(() => { + setReturned(prev => { + const nextSet: ReadonlySet = new Set(list); + const next: V[] = list.slice(); + + const added: V[] = []; + const removed: V[] = []; + const moved: V[] = []; + + for (const el of list) { + (prevSet.has(el) ? moved : added).push(el); + } + + for (let i = 0; i < prev.length; i++) { + const el = prev[i]!; + if (!nextSet.has(el)) { + if (!exiting.has(el)) { + removed.push(el); + exiting.add(el); + } + next.splice(i, 0, el); + } + } + + onChange({ added, removed, moved, finishRemoved }); + + prevSet = nextSet; + return next; + }); + }); + }); + + init = false; + return returned; +} From 6f0a0e587c01ed9c7fd351b58700b16ac5c77a73 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sun, 26 Feb 2023 22:41:21 +0100 Subject: [PATCH 04/33] Test `createListTransition`, add ssr tests --- packages/transition-group/src/index.ts | 4 +- .../test/list-transition.test.ts | 129 ++++++++++++++++++ packages/transition-group/test/server.test.ts | 25 +++- 3 files changed, 151 insertions(+), 7 deletions(-) create mode 100644 packages/transition-group/test/list-transition.test.ts diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index c02893dd2..c0ec84679 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -5,7 +5,7 @@ const noopTransition = (el: any, done: () => void) => done(); export type TransitionMode = "out-in" | "in-out" | "parallel"; -export type OnTransition = (el: NonNullable, done: () => void) => void; +export type OnTransition = (el: T, done: () => void) => void; export type SwitchTransitionOptions = { onEnter?: OnTransition; @@ -16,7 +16,7 @@ export type SwitchTransitionOptions = { export function createSwitchTransition( source: Accessor, - options: SwitchTransitionOptions, + options: SwitchTransitionOptions>, ): Accessor[]> { if (process.env.SSR) { let el: any = source(); diff --git a/packages/transition-group/test/list-transition.test.ts b/packages/transition-group/test/list-transition.test.ts new file mode 100644 index 000000000..ff075b93d --- /dev/null +++ b/packages/transition-group/test/list-transition.test.ts @@ -0,0 +1,129 @@ +import { describe, it, expect, vi } from "vitest"; +import { createRoot, createSignal } from "solid-js"; +import { createListTransition, ListTransitionOptions } from "../src"; + +describe("createListTransition", () => { + const el1 = document.createElement("div"); + const el2 = document.createElement("div"); + const el3 = document.createElement("div"); + const el4 = document.createElement("div"); + + it("renders items immediately on the initial run", () => + createRoot(dispose => { + const result = createListTransition(() => [el1, el2], { + onChange: () => {}, + }); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el1); + expect(result()[1]).toBe(el2); + dispose(); + })); + + it("reacts to changes to children", () => + createRoot(dispose => { + const [children, setChildren] = createSignal([]); + const result = createListTransition(children, { + onChange: () => {}, + }); + expect(result()).toHaveLength(0); + + setChildren([el1, el2]); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el1); + expect(result()[1]).toBe(el2); + dispose(); + })); + + it("transitions added, removed and moved elements", () => { + return createRoot(dispose => { + const [children, setChildren] = createSignal([el1, el2]); + const fn = vi.fn(); + const result = createListTransition(children, { + onChange: fn, + }); + expect(result()).toHaveLength(2); + + setChildren([el3, el1, el4]); + expect(result()).toHaveLength(4); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + added: [el3, el4], + removed: [el2], + moved: [el1], + finishRemoved: expect.any(Function), + } satisfies Parameters["onChange"]>[0]); + + const done = fn.mock.calls[0]![0].finishRemoved; + done([el2]); + expect(result()).toHaveLength(3); + + dispose(); + }); + }); + + it("transitions element in on appear", () => { + return createRoot(dispose => { + const fn = vi.fn(); + const result = createListTransition(() => [el1, el2], { + onChange: fn, + appear: true, + }); + expect(result()).toHaveLength(2); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + added: [el1, el2], + removed: [], + moved: [], + finishRemoved: expect.any(Function), + }); + + dispose(); + }); + }); + + it("can transition multiple leaving elements", () => { + return createRoot(dispose => { + const [children, setChildren] = createSignal([el1, el2]); + const fn = vi.fn(); + const result = createListTransition(children, { + onChange: fn, + }); + expect(result()).toHaveLength(2); + + setChildren([el2, el3]); + expect(result()).toHaveLength(3); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + added: [el3], + removed: [el1], + moved: [el2], + finishRemoved: expect.any(Function), + }); + + const done1 = fn.mock.calls[0]![0].finishRemoved; + + setChildren([]); + + expect(result()).toHaveLength(3); + expect(fn).toHaveBeenCalledTimes(2); + expect(fn).toHaveBeenLastCalledWith({ + added: [], + removed: [el2, el3], + moved: [], + finishRemoved: expect.any(Function), + }); + + const done2 = fn.mock.calls[1]![0].finishRemoved; + + done1([el1]); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el3); + + done2([el2, el3]); + expect(result()).toHaveLength(0); + + dispose(); + }); + }); +}); diff --git a/packages/transition-group/test/server.test.ts b/packages/transition-group/test/server.test.ts index 887e271dc..b97cf5f08 100644 --- a/packages/transition-group/test/server.test.ts +++ b/packages/transition-group/test/server.test.ts @@ -1,9 +1,24 @@ import { describe, test, expect } from "vitest"; -import { createPrimitiveTemplate } from "../src"; +import { createSwitchTransition, createListTransition } from "../src"; -describe("createPrimitiveTemplate", () => { - test("doesn't break in SSR", () => { - const [value, setValue] = createPrimitiveTemplate(true); - expect(value(), "initial value should be true").toBe(true); +const el1 = { t: "
1
" }; +const el2 = { t: "
2
" }; + +describe("createSwitchTransition", () => { + test("returns initial elements", () => { + const result = createSwitchTransition(() => el1, {}); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); + }); +}); + +describe("createListTransition", () => { + test("returns initial elements", () => { + const result = createListTransition(() => [el1, el2], { + onChange: () => {}, + }); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el1); + expect(result()[1]).toBe(el2); }); }); From e049ea6484b4f260612ed330757a8173437c1d07 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Mon, 27 Feb 2023 14:22:02 +0100 Subject: [PATCH 05/33] Support suspending transition-group primitives --- packages/transition-group/dev/list-page.tsx | 205 +++++++------ packages/transition-group/dev/switch-page.tsx | 93 ++++-- packages/transition-group/src/index.ts | 105 ++++--- .../test/list-transition.test.ts | 203 ++++++++----- packages/transition-group/test/server.test.ts | 19 +- .../test/switch-transition.test.ts | 277 +++++++++++------- 6 files changed, 555 insertions(+), 347 deletions(-) diff --git a/packages/transition-group/dev/list-page.tsx b/packages/transition-group/dev/list-page.tsx index 3768cf6d8..13beb69de 100644 --- a/packages/transition-group/dev/list-page.tsx +++ b/packages/transition-group/dev/list-page.tsx @@ -1,4 +1,11 @@ -import { children, onCleanup, untrack } from "solid-js"; +import { + children, + createRenderEffect, + createResource, + onCleanup, + Suspense, + untrack, +} from "solid-js"; import { elements } from "@solid-primitives/refs"; import { Component, createSignal, For, Show } from "solid-js"; import { createListTransition } from "../src"; @@ -18,8 +25,21 @@ const ListPage: Component = () => { const [list, setList] = createSignal([{ n: 1 }, { n: 2 }, { n: 3 }, { n: 4 }, { n: 5 }]); + const [runResource, setRunResource] = createSignal(false); + let resolve = () => {}; + const [res] = createResource(runResource, () => new Promise(r => (resolve = r))); + return ( <> +
- {untrack(() => { - const resolved = children(() => ( - -

Hello

- World - {show() && ( -
- ID 0 -
- )} - -
- ID 1 -
-
- -
- ID 2 -
-
- ID 3 -
-
- - {({ n }, i) => ( -
- setList(p => { - const copy = p.slice(); - copy.splice(i(), 1); - return copy; - }) - } - ref={grayOutOnDispose} - > - {n + 1}. + Suspended

}> + {untrack(() => { + // track the resource + createRenderEffect(res); + + const resolved = children(() => ( + +

Hello

+ World + {show() && ( +
+ ID 0
)} - -
- )); - const refs = elements(resolved, HTMLElement); + +
+ ID 1 +
+
+ +
+ ID 2 +
+
+ ID 3 +
+
+ + {({ n }, i) => ( +
+ setList(p => { + const copy = p.slice(); + copy.splice(i(), 1); + return copy; + }) + } + ref={grayOutOnDispose} + > + {n + 1}. +
+ )} +
+ + )); + const refs = elements(resolved, HTMLElement); - const options = { duration: 600, easing: "cubic-bezier(0.4, 0, 0.2, 1)" }; + const options = { duration: 600, easing: "cubic-bezier(0.4, 0, 0.2, 1)" }; - return createListTransition(refs, { - appear: true, - onChange({ added, finishRemoved, moved, removed }) { - added.forEach(el => { - el.style.opacity = "0"; - el.style.transform = "translateY(10px)"; - requestAnimationFrame(() => { - el.animate( - [ - { opacity: 0, transform: "translateY(-36px)" }, - { opacity: 1, transform: "translateY(0)" }, - ], - { ...options, fill: "both" }, - ); + return createListTransition(refs, { + appear: true, + onChange({ added, finishRemoved, moved, removed }) { + added.forEach(el => { + el.style.opacity = "0"; + el.style.transform = "translateY(10px)"; + requestAnimationFrame(() => { + el.animate( + [ + { opacity: 0, transform: "translateY(-36px)" }, + { opacity: 1, transform: "translateY(0)" }, + ], + { ...options, fill: "both" }, + ); + }); + }); + + moved.forEach(el => { + const { left: left1, top: top1 } = el.getBoundingClientRect(); + requestAnimationFrame(() => { + const { left: left2, top: top2 } = el.getBoundingClientRect(); + el.animate( + [ + { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, + { transform: "none" }, + ], + options, + ); + }); }); - }); - moved.forEach(el => { - const { left: left1, top: top1 } = el.getBoundingClientRect(); - requestAnimationFrame(() => { + const removedRects = removed.map(el => el.getBoundingClientRect()); + removed.forEach(el => { + el.style.transform = "none"; + el.style.position = "absolute"; + }); + removed.forEach((el, i) => { + const { left: left1, top: top1 } = removedRects[i]!; const { left: left2, top: top2 } = el.getBoundingClientRect(); - el.animate( + + const a = el.animate( [ { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, - { transform: "none" }, + { + opacity: 0, + transform: `translate(${left1 - left2}px, ${top1 - top2 + 36}px)`, + }, ], options, ); - }); - }); - - const removedRects = removed.map(el => el.getBoundingClientRect()); - removed.forEach(el => { - el.style.transform = "none"; - el.style.position = "absolute"; - }); - removed.forEach((el, i) => { - const { left: left1, top: top1 } = removedRects[i]!; - const { left: left2, top: top2 } = el.getBoundingClientRect(); - const a = el.animate( - [ - { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, - { - opacity: 0, - transform: `translate(${left1 - left2}px, ${top1 - top2 + 36}px)`, - }, - ], - options, - ); - - i === removed.length - 1 && a.finished.then(() => finishRemoved(removed)); - }); - }, - }); - })} + i === removed.length - 1 && a.finished.then(() => finishRemoved(removed)); + }); + }, + }); + })} +
); diff --git a/packages/transition-group/dev/switch-page.tsx b/packages/transition-group/dev/switch-page.tsx index d09a82f6f..670e3b3e3 100644 --- a/packages/transition-group/dev/switch-page.tsx +++ b/packages/transition-group/dev/switch-page.tsx @@ -1,4 +1,15 @@ -import { Component, createSignal, JSX, onCleanup, ParentProps, Show } from "solid-js"; +import { + Component, + createRenderEffect, + createResource, + createSignal, + JSX, + onCleanup, + ParentProps, + Show, + Suspense, + untrack, +} from "solid-js"; import { resolveFirst } from "@solid-primitives/refs"; import { createSwitchTransition, TransitionMode } from "../src"; @@ -9,7 +20,7 @@ function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element ); const animateIn = (el: HTMLElement, done: VoidFunction) => { - if (!el.isConnected) throw el.textContent + " is not connected!!"; + if (!el.isConnected) console.warn(el.textContent + " is not connected on enter!!"); const a = el.animate( [ { opacity: 0, transform: "translate(100px)" }, @@ -26,7 +37,7 @@ function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element }; const animateOut = (el: HTMLElement, done: VoidFunction) => { - if (!el.isConnected) throw el.textContent + " is not connected!!"; + if (!el.isConnected) console.warn(el.textContent + " is not connected on exit!!"); const left1 = el.getBoundingClientRect().left; animationMap.get(el)?.cancel(); const left2 = el.getBoundingClientRect().left; @@ -55,6 +66,7 @@ function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element animateOut(el, done); }, mode: props.mode, + // appear: true, }); } @@ -65,7 +77,11 @@ const grayOutOnDispose = (el: HTMLElement) => { }); }; -function Example(props: { mode: TransitionMode; withFallback?: true }): JSX.Element { +function Example(props: { + mode: TransitionMode; + withFallback?: true; + resource: VoidFunction; +}): JSX.Element { const { withFallback, mode } = props; const [toggle, setToggle] = createSignal(true); @@ -77,37 +93,62 @@ function Example(props: { mode: TransitionMode; withFallback?: true }): JSX.Elem - - - B{i++} -
- ) - } - > -
- A{i++} -
-
- + Suspended

}> + {untrack(() => { + // track the resource + createRenderEffect(props.resource); + + return ( + + + B{i++} +
+ ) + } + > +
+ A{i++} +
+ + + ); + })} + ); } const SwitchPage: Component = () => { + const [runResource, setRunResource] = createSignal(false); + let resolve = () => {}; + const [res] = createResource(runResource, () => new Promise(r => (resolve = r))); + return ( <> +

Toggle

- - - + + +

Switch

- - - + + + ); }; diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index c0ec84679..d9fff8332 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -1,4 +1,4 @@ -import { Accessor, batch, createComputed, createSignal, untrack, $TRACK } from "solid-js"; +import { Accessor, batch, createSignal, untrack, $TRACK, createEffect } from "solid-js"; const noop = () => {}; const noopTransition = (el: any, done: () => void) => done(); @@ -18,26 +18,19 @@ export function createSwitchTransition( source: Accessor, options: SwitchTransitionOptions>, ): Accessor[]> { + const initSource = untrack(source); + // if appear is enabled, the initial list will be empty (to be updated in effect) + // otherwise, it will be the initial source + // this way it will be consistent between server and client + const initReturned = options.appear ? [] : initSource ? [initSource] : []; + if (process.env.SSR) { - let el: any = source(); - el = el ? [el] : []; - return () => el; + return () => initReturned; } - // eslint-disable-next-line prefer-const - let { onEnter = noopTransition, onExit = noopTransition } = options; - - // skip the first enter transition if appear is disabled - let init = true; - if (!options.appear) { - const _onEnter = onEnter; - onEnter = (el, done) => { - onEnter = _onEnter; - init ? done() : onEnter(el, done); - }; - } + const { onEnter = noopTransition, onExit = noopTransition } = options; - const [returned, setReturned] = createSignal[]>([]); + const [returned, setReturned] = createSignal[]>(initReturned); let next: T | undefined; let isExiting = false; @@ -75,16 +68,30 @@ export function createSwitchTransition( exitTransition(prev); }; - createComputed((prev: T | undefined) => { - const el = source(); - if (el !== prev) { - next = el; - untrack(() => batch(() => transition(prev))); - } - return el; - }); + let shouldRun = options.appear; + + // update elements and call transitions in effect to suspend under Suspense + createEffect( + (prev: T | undefined) => { + const el = source(); + + // skip the first transition if appear is disabled + if (!shouldRun) { + setReturned(el ? [el] : []); + shouldRun = true; + return el; + } + + if (el !== prev) { + next = el; + untrack(() => transition(prev)); + } + + return el; + }, + options.appear ? undefined : initSource, + ); - init = false; return returned; } @@ -104,28 +111,23 @@ export function createListTransition( source: Accessor[]>, options: ListTransitionOptions>, ): Accessor[]> { - if (process.env.SSR) { - const copy = source().slice(); - return () => copy; - } - type V = NonNullable; - let { onChange } = options; + const initSource = untrack(source); + // if appear is enabled, the initial list will be empty (to be updated in effect) + // otherwise, it will be the initial source + // this way it will be consistent between server and client + const initialReturned = options.appear ? [] : initSource.slice(); - // skip the first enter transition if appear is disabled - let init = true; - if (!options.appear) { - const _onChange = onChange; - onChange = data => { - onChange = _onChange; - init || onChange(data); - }; + if (process.env.SSR) { + return () => initialReturned; } - const [returned, setReturned] = createSignal([]); + const { onChange } = options; + + const [returned, setReturned] = createSignal(initialReturned); - let prevSet: ReadonlySet = new Set(); + let prevSet: ReadonlySet = new Set(options.appear ? undefined : initSource); const exiting = new Set(); function finishRemoved(els: V[]): void { @@ -133,11 +135,21 @@ export function createListTransition( for (const el of els) exiting.delete(el); } - createComputed(() => { + let shouldRun = options.appear; + // update elements and call transitions in effect to suspend under Suspense + createEffect(() => { const list = source(); (list as any)[$TRACK]; // top level store tracking - untrack(() => { + // skip the first transition if appear is disabled + if (!shouldRun) { + shouldRun = true; + prevSet = new Set(list); + setReturned(list.slice()); + return; + } + + untrack(() => setReturned(prev => { const nextSet: ReadonlySet = new Set(list); const next: V[] = list.slice(); @@ -165,10 +177,9 @@ export function createListTransition( prevSet = nextSet; return next; - }); - }); + }), + ); }); - init = false; return returned; } diff --git a/packages/transition-group/test/list-transition.test.ts b/packages/transition-group/test/list-transition.test.ts index ff075b93d..734e1a483 100644 --- a/packages/transition-group/test/list-transition.test.ts +++ b/packages/transition-group/test/list-transition.test.ts @@ -1,12 +1,12 @@ import { describe, it, expect, vi } from "vitest"; -import { createRoot, createSignal } from "solid-js"; +import { createRenderEffect, createResource, createRoot, createSignal, Suspense } from "solid-js"; import { createListTransition, ListTransitionOptions } from "../src"; describe("createListTransition", () => { const el1 = document.createElement("div"); - const el2 = document.createElement("div"); - const el3 = document.createElement("div"); - const el4 = document.createElement("div"); + const el2 = document.createElement("span"); + const el3 = document.createElement("button"); + const el4 = document.createElement("section"); it("renders items immediately on the initial run", () => createRoot(dispose => { @@ -19,111 +19,170 @@ describe("createListTransition", () => { dispose(); })); - it("reacts to changes to children", () => - createRoot(dispose => { - const [children, setChildren] = createSignal([]); + it("reacts to changes to children", () => { + const [children, setChildren] = createSignal([]); + + const { result, dispose } = createRoot(dispose => { const result = createListTransition(children, { onChange: () => {}, }); expect(result()).toHaveLength(0); + return { result, dispose }; + }); + expect(result()).toHaveLength(0); - setChildren([el1, el2]); - expect(result()).toHaveLength(2); - expect(result()[0]).toBe(el1); - expect(result()[1]).toBe(el2); - dispose(); - })); + setChildren([el1, el2]); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el1); + expect(result()[1]).toBe(el2); + + dispose(); + }); it("transitions added, removed and moved elements", () => { - return createRoot(dispose => { - const [children, setChildren] = createSignal([el1, el2]); - const fn = vi.fn(); + const [children, setChildren] = createSignal([el1, el2]); + const fn = vi.fn(); + + const { result, dispose } = createRoot(dispose => { const result = createListTransition(children, { onChange: fn, }); expect(result()).toHaveLength(2); - - setChildren([el3, el1, el4]); - expect(result()).toHaveLength(4); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith({ - added: [el3, el4], - removed: [el2], - moved: [el1], - finishRemoved: expect.any(Function), - } satisfies Parameters["onChange"]>[0]); - - const done = fn.mock.calls[0]![0].finishRemoved; - done([el2]); - expect(result()).toHaveLength(3); - - dispose(); + expect(fn).not.toHaveBeenCalled(); + return { result, dispose }; }); + expect(result()).toHaveLength(2); + expect(fn).not.toHaveBeenCalled(); + + setChildren([el3, el1, el4]); + expect(result()).toHaveLength(4); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + added: [el3, el4], + removed: [el2], + moved: [el1], + finishRemoved: expect.any(Function), + } satisfies Parameters["onChange"]>[0]); + + const done = fn.mock.calls[0]![0].finishRemoved; + done([el2]); + expect(result()).toHaveLength(3); + + dispose(); }); it("transitions element in on appear", () => { - return createRoot(dispose => { - const fn = vi.fn(); + const fn = vi.fn(); + + const { dispose, result } = createRoot(dispose => { const result = createListTransition(() => [el1, el2], { onChange: fn, appear: true, }); - expect(result()).toHaveLength(2); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith({ - added: [el1, el2], - removed: [], - moved: [], - finishRemoved: expect.any(Function), - }); + expect(result()).toHaveLength(0); + expect(fn).not.toHaveBeenCalled(); + return { dispose, result }; + }); - dispose(); + expect(result()).toHaveLength(2); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + added: [el1, el2], + removed: [], + moved: [], + finishRemoved: expect.any(Function), }); + + dispose(); }); it("can transition multiple leaving elements", () => { - return createRoot(dispose => { - const [children, setChildren] = createSignal([el1, el2]); - const fn = vi.fn(); + const [children, setChildren] = createSignal([el1, el2]); + const fn = vi.fn(); + + const { result, dispose } = createRoot(dispose => { const result = createListTransition(children, { onChange: fn, }); expect(result()).toHaveLength(2); + return { dispose, result }; + }); - setChildren([el2, el3]); - expect(result()).toHaveLength(3); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith({ - added: [el3], - removed: [el1], - moved: [el2], - finishRemoved: expect.any(Function), - }); + setChildren([el2, el3]); + expect(result()).toHaveLength(3); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + added: [el3], + removed: [el1], + moved: [el2], + finishRemoved: expect.any(Function), + }); + + const done1 = fn.mock.calls[0]![0].finishRemoved; - const done1 = fn.mock.calls[0]![0].finishRemoved; + setChildren([]); - setChildren([]); + expect(result()).toHaveLength(3); + expect(fn).toHaveBeenCalledTimes(2); + expect(fn).toHaveBeenLastCalledWith({ + added: [], + removed: [el2, el3], + moved: [], + finishRemoved: expect.any(Function), + }); + + const done2 = fn.mock.calls[1]![0].finishRemoved; + + done1([el1]); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el3); + + done2([el2, el3]); + expect(result()).toHaveLength(0); + + dispose(); + }); - expect(result()).toHaveLength(3); - expect(fn).toHaveBeenCalledTimes(2); - expect(fn).toHaveBeenLastCalledWith({ - added: [], - removed: [el2, el3], - moved: [], - finishRemoved: expect.any(Function), + it("suspends under Suspense", () => { + const onChange = vi.fn(); + + const [children, setChildren] = createSignal([el1]); + const [runResource, setRunResource] = createSignal(true); + let resolve = () => {}; + + const dispose = createRoot(dispose => { + const [res] = createResource(runResource, () => new Promise(r => (resolve = r))); + Suspense({ + get children() { + createRenderEffect(res); + return createListTransition(children, { onChange }); + }, }); + return dispose; + }); - const done2 = fn.mock.calls[1]![0].finishRemoved; + expect(onChange).not.toHaveBeenCalled(); - done1([el1]); - expect(result()).toHaveLength(2); - expect(result()[0]).toBe(el2); - expect(result()[1]).toBe(el3); + setChildren([el2]); - done2([el2, el3]); - expect(result()).toHaveLength(0); + expect(onChange).not.toHaveBeenCalled(); - dispose(); + resolve(); + setRunResource(false); + + expect(onChange).not.toHaveBeenCalled(); + + setChildren([el1, el3]); + + expect(onChange).toHaveBeenCalledOnce(); + expect(onChange).toHaveBeenLastCalledWith({ + added: [el1, el3], + removed: [el2], + moved: [], + finishRemoved: expect.any(Function), }); + + dispose(); }); }); diff --git a/packages/transition-group/test/server.test.ts b/packages/transition-group/test/server.test.ts index b97cf5f08..ee33804c6 100644 --- a/packages/transition-group/test/server.test.ts +++ b/packages/transition-group/test/server.test.ts @@ -1,19 +1,24 @@ -import { describe, test, expect } from "vitest"; +import { describe, it, expect } from "vitest"; import { createSwitchTransition, createListTransition } from "../src"; const el1 = { t: "
1
" }; const el2 = { t: "
2
" }; describe("createSwitchTransition", () => { - test("returns initial elements", () => { + it("returns initial elements", () => { const result = createSwitchTransition(() => el1, {}); expect(result()).toHaveLength(1); expect(result()[0]).toBe(el1); }); + + it("returns empty array if appear is enabled", () => { + const result = createSwitchTransition(() => el1, { appear: true }); + expect(result()).toHaveLength(0); + }); }); describe("createListTransition", () => { - test("returns initial elements", () => { + it("returns initial elements", () => { const result = createListTransition(() => [el1, el2], { onChange: () => {}, }); @@ -21,4 +26,12 @@ describe("createListTransition", () => { expect(result()[0]).toBe(el1); expect(result()[1]).toBe(el2); }); + + it("returns empty array if appear is enabled", () => { + const result = createListTransition(() => [el1, el2], { + onChange: () => {}, + appear: true, + }); + expect(result()).toHaveLength(0); + }); }); diff --git a/packages/transition-group/test/switch-transition.test.ts b/packages/transition-group/test/switch-transition.test.ts index 01453f999..6a1e75bd0 100644 --- a/packages/transition-group/test/switch-transition.test.ts +++ b/packages/transition-group/test/switch-transition.test.ts @@ -1,10 +1,11 @@ import { describe, it, expect, vi } from "vitest"; -import { createRoot, createSignal } from "solid-js"; +import { createRenderEffect, createResource, createRoot, createSignal, Suspense } from "solid-js"; import { createSwitchTransition } from "../src"; describe("createSwitchTransition", () => { const el1 = document.createElement("div"); const el2 = document.createElement("div"); + const el3 = document.createElement("div"); it("renders items immediately on the initial run", () => createRoot(dispose => { @@ -14,78 +15,88 @@ describe("createSwitchTransition", () => { dispose(); })); - it("reacts to changes to children", () => - createRoot(dispose => { - const [children, setChildren] = createSignal(); + it("reacts to changes to children", () => { + const [children, setChildren] = createSignal(); + + const { result, dispose } = createRoot(dispose => { const result = createSwitchTransition(children, {}); expect(result()).toHaveLength(0); + return { result, dispose }; + }); + expect(result()).toHaveLength(0); - setChildren(el1); - expect(result()).toHaveLength(1); - expect(result()[0]).toBe(el1); - dispose(); - })); + setChildren(el1); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); + dispose(); + }); it("transitions element out", () => { - return createRoot(dispose => { - const [children, setChildren] = createSignal(el1); - const fn = vi.fn(); - const result = createSwitchTransition(children, { - onExit: fn, - }); - expect(result()).toHaveLength(1); + const [children, setChildren] = createSignal(el1); + const fn = vi.fn(); - setChildren(null); + const { result, dispose } = createRoot(dispose => { + const result = createSwitchTransition(children, { onExit: fn }); expect(result()).toHaveLength(1); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); + return { result, dispose }; + }); - const done = fn.mock.calls[0]![1]; - done(); - expect(result()).toHaveLength(0); + setChildren(null); + expect(result()).toHaveLength(1); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); - dispose(); - }); + const done = fn.mock.calls[0]![1]; + done(); + expect(result()).toHaveLength(0); + + dispose(); }); it("transitions element in", () => { - return createRoot(dispose => { - const [children, setChildren] = createSignal(null); - const fn = vi.fn(); - const result = createSwitchTransition(children, { - onEnter: fn, - }); + const [children, setChildren] = createSignal(null); + const fn = vi.fn(); + + const { result, dispose } = createRoot(dispose => { + const result = createSwitchTransition(children, { onEnter: fn }); expect(result()).toHaveLength(0); + return { result, dispose }; + }); - setChildren(el1); - expect(result()).toHaveLength(1); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); + setChildren(el1); + expect(result()).toHaveLength(1); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); - dispose(); - }); + dispose(); }); it("transitions element in on appear", () => { - return createRoot(dispose => { - const fn = vi.fn(); + const fn = vi.fn(); + + const { dispose, result } = createRoot(dispose => { const result = createSwitchTransition(() => el1, { onEnter: fn, appear: true, }); - expect(result()).toHaveLength(1); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); - - dispose(); + expect(result()).toHaveLength(0); + expect(fn).not.toHaveBeenCalled(); + return { result, dispose }; }); + + expect(result()).toHaveLength(1); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); + + dispose(); }); it("toggles between two elements", () => { - return createRoot(dispose => { - const [children, setChildren] = createSignal(el1); - const enterCb = vi.fn(); - const exitCb = vi.fn(); + const [children, setChildren] = createSignal(el1); + const enterCb = vi.fn(); + const exitCb = vi.fn(); + + const { result, dispose } = createRoot(dispose => { const result = createSwitchTransition(children, { onExit: exitCb, onEnter: enterCb, @@ -93,29 +104,31 @@ describe("createSwitchTransition", () => { expect(result()).toHaveLength(1); expect(enterCb).not.toHaveBeenCalled(); expect(exitCb).not.toHaveBeenCalled(); + return { result, dispose }; + }); - setChildren(el2); - expect(result()).toHaveLength(2); - expect(result()[0]).toBe(el2); - expect(result()[1]).toBe(el1); - expect(enterCb).toHaveBeenCalledOnce(); - expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); - expect(exitCb).toHaveBeenCalledOnce(); - expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); - - const exitDone = exitCb.mock.calls[0]![1]; - exitDone(); - expect(result()).toHaveLength(1); + setChildren(el2); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el1); + expect(enterCb).toHaveBeenCalledOnce(); + expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); + expect(exitCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); - dispose(); - }); + const exitDone = exitCb.mock.calls[0]![1]; + exitDone(); + expect(result()).toHaveLength(1); + + dispose(); }); it("toggles between two elements out-in", () => { - return createRoot(dispose => { - const [children, setChildren] = createSignal(el1); - const enterCb = vi.fn(); - const exitCb = vi.fn(); + const [children, setChildren] = createSignal(el1); + const enterCb = vi.fn(); + const exitCb = vi.fn(); + + const { result, dispose } = createRoot(dispose => { const result = createSwitchTransition(children, { onExit: exitCb, onEnter: enterCb, @@ -124,30 +137,32 @@ describe("createSwitchTransition", () => { expect(result()).toHaveLength(1); expect(enterCb).not.toHaveBeenCalled(); expect(exitCb).not.toHaveBeenCalled(); - - setChildren(el2); - expect(result()).toHaveLength(1); - expect(result()[0]).toBe(el1); - expect(enterCb).not.toHaveBeenCalled(); - expect(exitCb).toHaveBeenCalledOnce(); - expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); - - const exitDone = exitCb.mock.calls[0]![1]; - exitDone(); - expect(result()).toHaveLength(1); - expect(result()[0]).toBe(el2); - expect(enterCb).toHaveBeenCalledOnce(); - expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); - - dispose(); + return { result, dispose }; }); + + setChildren(el2); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); + expect(enterCb).not.toHaveBeenCalled(); + expect(exitCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); + + const exitDone = exitCb.mock.calls[0]![1]; + exitDone(); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el2); + expect(enterCb).toHaveBeenCalledOnce(); + expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); + + dispose(); }); it("toggles between two elements in-out", () => { - return createRoot(dispose => { - const [children, setChildren] = createSignal(el1); - const enterCb = vi.fn(); - const exitCb = vi.fn(); + const [children, setChildren] = createSignal(el1); + const enterCb = vi.fn(); + const exitCb = vi.fn(); + + const { result, dispose } = createRoot(dispose => { const result = createSwitchTransition(children, { onExit: exitCb, onEnter: enterCb, @@ -156,32 +171,76 @@ describe("createSwitchTransition", () => { expect(result()).toHaveLength(1); expect(enterCb).not.toHaveBeenCalled(); expect(exitCb).not.toHaveBeenCalled(); + return { result, dispose }; + }); - setChildren(el2); - expect(result()).toHaveLength(2); - expect(result()[0]).toBe(el2); - expect(result()[1]).toBe(el1); - expect(enterCb).toHaveBeenCalledOnce(); - expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); - expect(exitCb).not.toHaveBeenCalled(); - - const enterDone = enterCb.mock.calls[0]![1]; - enterDone(); - expect(result()).toHaveLength(2); - expect(result()[0]).toBe(el2); - expect(result()[1]).toBe(el1); - expect(enterCb).toHaveBeenCalledOnce(); - expect(exitCb).toHaveBeenCalledOnce(); - expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); - - const exitDone = exitCb.mock.calls[0]![1]; - exitDone(); - expect(result()).toHaveLength(1); - expect(result()[0]).toBe(el2); - expect(enterCb).toHaveBeenCalledOnce(); - expect(exitCb).toHaveBeenCalledOnce(); + setChildren(el2); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el1); + expect(enterCb).toHaveBeenCalledOnce(); + expect(enterCb).toHaveBeenCalledWith(el2, expect.any(Function)); + expect(exitCb).not.toHaveBeenCalled(); + + const enterDone = enterCb.mock.calls[0]![1]; + enterDone(); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el2); + expect(result()[1]).toBe(el1); + expect(enterCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledWith(el1, expect.any(Function)); + + const exitDone = exitCb.mock.calls[0]![1]; + exitDone(); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el2); + expect(enterCb).toHaveBeenCalledOnce(); + expect(exitCb).toHaveBeenCalledOnce(); + + dispose(); + }); - dispose(); + it("suspends under Suspense", () => { + const onEnter = vi.fn(); + const onExit = vi.fn(); + + const [children, setChildren] = createSignal(el1); + const [runResource, setRunResource] = createSignal(true); + let resolve = () => {}; + + const dispose = createRoot(dispose => { + const [res] = createResource(runResource, () => new Promise(r => (resolve = r))); + Suspense({ + get children() { + createRenderEffect(res); + return createSwitchTransition(children, { onEnter, onExit }); + }, + }); + return dispose; }); + + expect(onEnter).not.toHaveBeenCalled(); + expect(onExit).not.toHaveBeenCalled(); + + setChildren(el2); + + expect(onEnter).not.toHaveBeenCalled(); + expect(onExit).not.toHaveBeenCalled(); + + resolve(); + setRunResource(false); + + expect(onEnter).not.toHaveBeenCalled(); + expect(onExit).not.toHaveBeenCalled(); + + setChildren(el3); + + expect(onEnter).toHaveBeenCalledOnce(); + expect(onEnter).toHaveBeenCalledWith(el3, expect.any(Function)); + expect(onExit).toHaveBeenCalledOnce(); + expect(onExit).toHaveBeenCalledWith(el1, expect.any(Function)); + + dispose(); }); }); From 1ba2f0378a3317025603d9886c2cb4fa323714dc Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Mon, 27 Feb 2023 17:20:03 +0100 Subject: [PATCH 06/33] Enter prerelease mode and version packages --- .changeset/fresh-maps-worry.md | 5 ++ .changeset/pre.json | 77 ++++++++++++++++++++++++++ packages/keyed/package.json | 2 +- packages/refs/CHANGELOG.md | 6 ++ packages/refs/package.json | 2 +- packages/transition-group/CHANGELOG.md | 7 +++ packages/transition-group/package.json | 4 +- 7 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 .changeset/fresh-maps-worry.md create mode 100644 .changeset/pre.json create mode 100644 packages/transition-group/CHANGELOG.md diff --git a/.changeset/fresh-maps-worry.md b/.changeset/fresh-maps-worry.md new file mode 100644 index 000000000..37b7a00b7 --- /dev/null +++ b/.changeset/fresh-maps-worry.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/transition-group": major +--- + +Initial release. Adds `createSwitchTransition` and `createListTransition` primitives. diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000..8e9ea7b7e --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,77 @@ +{ + "mode": "pre", + "tag": "beta", + "initialVersions": { + "@solid-primitives/active-element": "2.0.8", + "@solid-primitives/analytics": "0.1.3", + "@solid-primitives/audio": "1.3.7", + "@solid-primitives/autofocus": "0.0.100", + "@solid-primitives/bounds": "0.0.107", + "@solid-primitives/broadcast-channel": "0.0.101", + "@solid-primitives/clipboard": "1.5.0", + "@solid-primitives/composites": "1.1.2", + "@solid-primitives/connectivity": "0.3.7", + "@solid-primitives/context": "0.1.3", + "@solid-primitives/controlled-props": "0.0.5", + "@solid-primitives/cursor": "0.0.105", + "@solid-primitives/date": "2.0.7", + "@solid-primitives/destructure": "0.1.7", + "@solid-primitives/devices": "1.2.2", + "@solid-primitives/event-bus": "1.0.0", + "@solid-primitives/event-dispatcher": "0.0.103", + "@solid-primitives/event-listener": "2.2.6", + "@solid-primitives/event-props": "0.2.3", + "@solid-primitives/fetch": "2.4.3", + "@solid-primitives/fullscreen": "1.2.2", + "@solid-primitives/geolocation": "1.4.4", + "@solid-primitives/gestures": "1.1.3", + "@solid-primitives/graphql": "1.5.2", + "@solid-primitives/i18n": "1.2.0", + "@solid-primitives/idle": "0.0.103", + "@solid-primitives/immutable": "0.1.6", + "@solid-primitives/input-mask": "0.1.5", + "@solid-primitives/intersection-observer": "2.0.6", + "@solid-primitives/jsx-parser": "0.1.1", + "@solid-primitives/keyboard": "1.0.7", + "@solid-primitives/keyed": "1.1.7", + "@solid-primitives/map": "0.4.0", + "@solid-primitives/media": "2.1.1", + "@solid-primitives/memo": "1.1.4", + "@solid-primitives/mouse": "2.0.6", + "@solid-primitives/mutation-observer": "1.1.6", + "@solid-primitives/page-visibility": "2.0.4", + "@solid-primitives/pagination": "0.2.0", + "@solid-primitives/permission": "1.2.2", + "@solid-primitives/platform": "0.0.103", + "@solid-primitives/pointer": "0.2.5", + "@solid-primitives/promise": "1.0.6", + "@solid-primitives/props": "3.0.6", + "@solid-primitives/raf": "2.1.6", + "@solid-primitives/range": "0.1.6", + "@solid-primitives/refs": "0.3.6", + "@solid-primitives/resize-observer": "2.0.9", + "@solid-primitives/rootless": "1.2.4", + "@solid-primitives/scheduled": "1.3.0", + "@solid-primitives/script-loader": "2.0.0", + "@solid-primitives/scroll": "2.0.8", + "@solid-primitives/selection": "0.0.4", + "@solid-primitives/set": "0.4.0", + "@solid-primitives/share": "2.0.2", + "@solid-primitives/signal-builders": "0.1.6", + "@solid-primitives/storage": "1.3.5", + "@solid-primitives/stream": "0.6.4", + "@solid-primitives/styles": "0.0.103", + "@solid-primitives/timer": "1.3.5", + "@solid-primitives/transition-group": "0.0.100", + "@solid-primitives/trigger": "1.0.0", + "@solid-primitives/tween": "1.2.4", + "@solid-primitives/upload": "0.0.107", + "@solid-primitives/utils": "5.2.0", + "@solid-primitives/websocket": "0.3.4", + "@solid-primitives/workers": "0.2.3" + }, + "changesets": [ + "dirty-kiwis-exist", + "fresh-maps-worry" + ] +} diff --git a/packages/keyed/package.json b/packages/keyed/package.json index e56db1f74..b68e4ab56 100644 --- a/packages/keyed/package.json +++ b/packages/keyed/package.json @@ -82,7 +82,7 @@ }, "devDependencies": { "@solid-primitives/immutable": "^0.1.6", - "@solid-primitives/refs": "^0.3.6", + "@solid-primitives/refs": "^0.4.0-beta.0", "@solid-primitives/utils": "^5.0.0", "solid-transition-group": "^0.0.13" }, diff --git a/packages/refs/CHANGELOG.md b/packages/refs/CHANGELOG.md index 3e752ec93..51cf0a99c 100644 --- a/packages/refs/CHANGELOG.md +++ b/packages/refs/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/refs +## 0.4.0-beta.0 + +### Minor Changes + +- d8054700: Add `findFirst` and `resolveFirst` primitives + ## 0.3.6 ### Patch Changes diff --git a/packages/refs/package.json b/packages/refs/package.json index 5afa2556c..a67170306 100644 --- a/packages/refs/package.json +++ b/packages/refs/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/refs", - "version": "0.3.6", + "version": "0.4.0-beta.0", "description": "Library of primitives, components and directives for SolidJS that help managing references to JSX elements.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", diff --git a/packages/transition-group/CHANGELOG.md b/packages/transition-group/CHANGELOG.md new file mode 100644 index 000000000..1394b45b4 --- /dev/null +++ b/packages/transition-group/CHANGELOG.md @@ -0,0 +1,7 @@ +# @solid-primitives/transition-group + +## 0.0.1-beta.0 + +### Major Changes + +- Initial release. Adds `createSwitchTransition` and `createListTransition` primitives. diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json index c206704b1..98aa7e881 100644 --- a/packages/transition-group/package.json +++ b/packages/transition-group/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/transition-group", - "version": "0.0.100", + "version": "0.0.1-beta.0", "description": "A template primitive example.", "author": "Damian Tarnawski ", "contributors": [], @@ -70,7 +70,7 @@ "solid-js": "^1.6.0" }, "devDependencies": { - "@solid-primitives/refs": "workspace:^0.3.6", + "@solid-primitives/refs": "workspace:^0.4.0-beta.0", "@solid-primitives/utils": "workspace:^5.2.0", "@solidjs/router": "^0.7.0" } From 6a4e530a039b81b3fa179cd92965f218b88e5b78 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Mon, 27 Feb 2023 17:20:39 +0100 Subject: [PATCH 07/33] Update lock --- pnpm-lock.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 21725bf0a..e79793bb6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -351,7 +351,7 @@ importers: packages/keyed: specifiers: '@solid-primitives/immutable': ^0.1.6 - '@solid-primitives/refs': ^0.3.6 + '@solid-primitives/refs': ^0.4.0-beta.0 '@solid-primitives/utils': ^5.0.0 solid-js: ^1.6.0 solid-transition-group: ^0.0.13 @@ -640,7 +640,7 @@ importers: packages/transition-group: specifiers: - '@solid-primitives/refs': workspace:^0.3.6 + '@solid-primitives/refs': workspace:^0.4.0-beta.0 '@solid-primitives/utils': workspace:^5.2.0 '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 From aeaec59fa6e998a8c88fae9b5169bcc2b84b5e7c Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Mon, 27 Feb 2023 17:21:48 +0100 Subject: [PATCH 08/33] Update prerelease config --- .changeset/pre.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8e9ea7b7e..ed0bd2bde 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -62,7 +62,7 @@ "@solid-primitives/stream": "0.6.4", "@solid-primitives/styles": "0.0.103", "@solid-primitives/timer": "1.3.5", - "@solid-primitives/transition-group": "0.0.100", + "@solid-primitives/transition-group": "0.0.0", "@solid-primitives/trigger": "1.0.0", "@solid-primitives/tween": "1.2.4", "@solid-primitives/upload": "0.0.107", @@ -70,8 +70,5 @@ "@solid-primitives/websocket": "0.3.4", "@solid-primitives/workers": "0.2.3" }, - "changesets": [ - "dirty-kiwis-exist", - "fresh-maps-worry" - ] + "changesets": ["dirty-kiwis-exist", "fresh-maps-worry"] } From 8fb992042574692a46d6ce9b6b338c5fff2b1031 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Mon, 27 Feb 2023 19:04:02 +0100 Subject: [PATCH 09/33] Add basic docs to transition-group --- packages/transition-group/README.md | 99 ++++++++++++++++++++++++-- packages/transition-group/package.json | 11 +-- packages/transition-group/src/index.ts | 66 +++++++++++++++++ 3 files changed, 166 insertions(+), 10 deletions(-) diff --git a/packages/transition-group/README.md b/packages/transition-group/README.md index c26978a69..8c2708f00 100644 --- a/packages/transition-group/README.md +++ b/packages/transition-group/README.md @@ -7,11 +7,12 @@ [![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/transition-group?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/transition-group) [![version](https://img.shields.io/npm/v/@solid-primitives/transition-group?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/transition-group) -[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) +[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) -A sample primitive that is made up for templating with the following options: +Provides reactive primitives for implementing transition effects on a group of elements. -`createPrimitiveTemplate` - Provides a getter and setter for the primitive. +- [`createSwitchTransition`](#createSwitchTransition) - Create an element transition interface for switching between single elements. +- [`createListTransition`](#createListTransition) - Create an element list transition interface for changes to the list of elements. ## Installation @@ -23,15 +24,101 @@ yarn add @solid-primitives/transition-group pnpm add @solid-primitives/transition-group ``` -## How to use it +## `createSwitchTransition` + +Create an element transition interface for switching between single elements. +It can be used to implement own transition effect, or a custom ``-like component. + +### How to use it + +It will observe the source and return a signal with array of elements to be rendered (current one and exiting ones). + +`createSwitchTransition` takes two parameters: + +- `source` a signal with the current element. Any nullish value will mean there is no element. + Any object can used as the source, but most likely you will want to use a `HTMLElement` or `SVGElement`. + +- `options` transition options: + - `onEnter` - a function to be called when a new element is entering. It receives the element and a callback to be called when the transition is done. + - `onExit` - a function to be called when an exiting element is leaving. It receives the element and a callback to be called when the transition is done. + - `mode` - transition mode. Defaults to `"parallel"`. Other options are `"out-in"` and `"in-out"`. + - `appear` - whether to run the transition on the initial element. Defaults to `false`. If `true`, the initial element won't be rendered until the first clinet-side effect is run. + +Returns a signal with an array of the current element and exiting previous elements. + +```ts +import { createSwitchTransition } from "@solid-primitives/transition-group"; + +const [el, setEl] = createSignal(); + +const rendered = createSwitchTransition(el, { + onEnter(el, done) { + // the enter callback is called before the element is inserted into the DOM + // so run the animation in the next animation frame + requestAnimationFrame(() => { + /*...*/ + }); + }, + onExit(el, done) { + // the exitting element is kept in the DOM until the done() callback is called + }, +}); + +// change the source to trigger the transition +setEl(refToHtmlElement); +``` + +## `createListTransition` + +Create an element list transition interface for changes to the list of elements. +It can be used to implement own transition effect, or a custom ``-like component. + +### How to use it + +It will observe the source and return a signal with array of elements to be rendered (current ones and exiting ones). + +`createListTransition` takes two parameters: + +- `source` a signal with the current list of elements. + Any object can used as the element, but most likely you will want to use a `HTMLElement` or `SVGElement`. + +- `options` transition options: + - `onChange` - a function to be called when the list changes. It receives the list of added elements, removed elements, and moved elements. It also receives a callback to be called when the removed elements are finished animating (they can be removed from the DOM). + - `appear` - whether to run the transition on the initial elements. Defaults to `false`. If `true`, the initial elements won't be rendered until the first clinet-side effect is run. + +Returns a signal with an array of the current elements and exiting previous elements. ```ts -const [value, setValue] = createPrimitiveTemplate(false); +import { createListTransition } from "@solid-primitives/transition-group"; + +const [els, setEls] = createSignal([]); + +const rendered = createListTransition(els, { + onChange({ added, removed, moved, finishRemoved }) { + // the callback is called before the added elements are inserted into the DOM + // so run the animation in the next animation frame + requestAnimationFrame(() => { + /*...*/ + }); + + // the removed elements are kept in the DOM until the finishRemoved() callback is called + finishRemoved(removed); + }, +}); + +// change the source to trigger the transition +setEls([...refsToHTMLElements]); ``` ## Demo -You can use this template for publishing your demo on CodeSandbox: https://codesandbox.io/s/solid-primitives-demo-template-sz95h +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 ## Changelog diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json index 98aa7e881..404de4c51 100644 --- a/packages/transition-group/package.json +++ b/packages/transition-group/package.json @@ -1,7 +1,7 @@ { "name": "@solid-primitives/transition-group", "version": "0.0.1-beta.0", - "description": "A template primitive example.", + "description": "Reactive primitives for implementing transition effects in SolidJS", "author": "Damian Tarnawski ", "contributors": [], "license": "MIT", @@ -14,8 +14,8 @@ "url": "https://github.com/solidjs-community/solid-primitives/issues" }, "primitive": { - "name": "transition", - "stage": 0, + "name": "transition-group", + "stage": 1, "list": [ "createSwitchTransition", "createListTransition" @@ -24,7 +24,10 @@ }, "keywords": [ "solid", - "primitives" + "primitives", + "transition", + "animation", + "transition-group" ], "private": false, "sideEffects": false, diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index d9fff8332..a205187f4 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -14,6 +14,40 @@ export type SwitchTransitionOptions = { appear?: boolean; }; +/** + * Create an element transition interface for switching between single elements. + * It can be used to implement own transition effect, or a custom ``-like component. + * + * It will observe {@link source} and return a signal with array of elements to be rendered (current one and exiting ones). + * + * @param source a signal with the current element. Any nullish value will mean there is no element. + * Any object can used as the source, but most likely you will want to use a `HTMLElement` or `SVGElement`. + * @param options transition options: + * - `onEnter` - a function to be called when a new element is entering. It receives the element and a callback to be called when the transition is done. + * - `onExit` - a function to be called when an exiting element is leaving. It receives the element and a callback to be called when the transition is done. + * - `mode` - transition mode. Defaults to `"parallel"`. Other options are `"out-in"` and `"in-out"`. + * - `appear` - whether to run the transition on the initial element. Defaults to `false`. If `true`, the initial element won't be rendered until the first clinet-side effect is run. + * @returns a signal with an array of the current element and exiting previous elements. + * + * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createSwitchTransition + * + * @example + * const [el, setEl] = createSignal(); + * + * const rendered = createSwitchTransition(el, { + * onEnter(el, done) { + * // the enter callback is called before the element is inserted into the DOM + * // so run the animation in the next animation frame + * requestAnimationFrame(() => { ... }) + * }, + * onExit(el, done) { + * // the exitting element is kept in the DOM until the done() callback is called + * }, + * }) + * + * // change the source to trigger the transition + * setEl(refToHtmlElement); + */ export function createSwitchTransition( source: Accessor, options: SwitchTransitionOptions>, @@ -107,6 +141,38 @@ export type ListTransitionOptions = { appear?: boolean; }; +/** + * Create an element list transition interface for changes to the list of elements. + * It can be used to implement own transition effect, or a custom ``-like component. + * + * It will observe {@link source} and return a signal with array of elements to be rendered (current ones and exiting ones). + * + * @param source a signal with the current list of elements. + * Any object can used as the element, but most likely you will want to use a `HTMLElement` or `SVGElement`. + * @param options transition options: + * - `onChange` - a function to be called when the list changes. It receives the list of added elements, removed elements, and moved elements. It also receives a callback to be called when the removed elements are finished animating (they can be removed from the DOM). + * - `appear` - whether to run the transition on the initial elements. Defaults to `false`. If `true`, the initial elements won't be rendered until the first clinet-side effect is run. + * @returns a signal with an array of the current elements and exiting previous elements. + * + * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createListTransition + * + * @example + * const [els, setEls] = createSignal([]); + * + * const rendered = createListTransition(els, { + * onChange({ added, removed, moved, finishRemoved }) { + * // the callback is called before the added elements are inserted into the DOM + * // so run the animation in the next animation frame + * requestAnimationFrame(() => { ... }) + * + * // the removed elements are kept in the DOM until the finishRemoved() callback is called + * finishRemoved(removed); + * } + * }) + * + * // change the source to trigger the transition + * setEls([...refsToHTMLElements]); + */ export function createListTransition( source: Accessor[]>, options: ListTransitionOptions>, From 2b4fb9bebc161eb2a7cd640ce7e4fe02ebbee6c0 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Mon, 27 Feb 2023 23:27:32 +0100 Subject: [PATCH 10/33] Improve `appear` SSR - always render the initial items. --- .changeset/itchy-suits-attack.md | 5 ++ packages/transition-group/README.md | 12 +++- packages/transition-group/src/index.ts | 59 ++++++++++--------- .../test/list-transition.test.ts | 16 +++-- packages/transition-group/test/server.test.ts | 11 ++-- .../test/switch-transition.test.ts | 14 +++-- 6 files changed, 70 insertions(+), 47 deletions(-) create mode 100644 .changeset/itchy-suits-attack.md diff --git a/.changeset/itchy-suits-attack.md b/.changeset/itchy-suits-attack.md new file mode 100644 index 000000000..ae36e59ab --- /dev/null +++ b/.changeset/itchy-suits-attack.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/transition-group": patch +--- + +Improve `appear` SSR - always render the initial items. diff --git a/packages/transition-group/README.md b/packages/transition-group/README.md index 8c2708f00..cb6871f14 100644 --- a/packages/transition-group/README.md +++ b/packages/transition-group/README.md @@ -9,7 +9,7 @@ [![version](https://img.shields.io/npm/v/@solid-primitives/transition-group?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/transition-group) [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) -Provides reactive primitives for implementing transition effects on a group of elements. +Provides reactive primitives for implementing transition effects on a group of elements, or your own `` and `` components. - [`createSwitchTransition`](#createSwitchTransition) - Create an element transition interface for switching between single elements. - [`createListTransition`](#createListTransition) - Create an element list transition interface for changes to the list of elements. @@ -39,10 +39,13 @@ It will observe the source and return a signal with array of elements to be rend Any object can used as the source, but most likely you will want to use a `HTMLElement` or `SVGElement`. - `options` transition options: + - `onEnter` - a function to be called when a new element is entering. It receives the element and a callback to be called when the transition is done. - `onExit` - a function to be called when an exiting element is leaving. It receives the element and a callback to be called when the transition is done. - `mode` - transition mode. Defaults to `"parallel"`. Other options are `"out-in"` and `"in-out"`. - - `appear` - whether to run the transition on the initial element. Defaults to `false`. If `true`, the initial element won't be rendered until the first clinet-side effect is run. + - `appear` - whether to run the transition on the initial element. Defaults to `false`. + + If enabled, the initial element will still be included in the initial render (for SSR), but the transition fill happen when the first client-side effect is run. So to avoid the initial element to be visible, you can set the initial element's style to `display: none` and set it to `display: block` in the `onEnter` callback. Returns a signal with an array of the current element and exiting previous elements. @@ -83,8 +86,11 @@ It will observe the source and return a signal with array of elements to be rend Any object can used as the element, but most likely you will want to use a `HTMLElement` or `SVGElement`. - `options` transition options: + - `onChange` - a function to be called when the list changes. It receives the list of added elements, removed elements, and moved elements. It also receives a callback to be called when the removed elements are finished animating (they can be removed from the DOM). - - `appear` - whether to run the transition on the initial elements. Defaults to `false`. If `true`, the initial elements won't be rendered until the first clinet-side effect is run. + - `appear` - whether to run the transition on the initial elements. Defaults to `false`. + + If enabled, the initial elements will still be included in the initial render (for SSR), but the transition fill happen when the first client-side effect is run. So to avoid the initial elements to be visible, you can set the initial element's style to `display: none` and set it to `display: block` in the `onEnter` callback. Returns a signal with an array of the current elements and exiting previous elements. diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index a205187f4..45e5ab03f 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -26,7 +26,7 @@ export type SwitchTransitionOptions = { * - `onEnter` - a function to be called when a new element is entering. It receives the element and a callback to be called when the transition is done. * - `onExit` - a function to be called when an exiting element is leaving. It receives the element and a callback to be called when the transition is done. * - `mode` - transition mode. Defaults to `"parallel"`. Other options are `"out-in"` and `"in-out"`. - * - `appear` - whether to run the transition on the initial element. Defaults to `false`. If `true`, the initial element won't be rendered until the first clinet-side effect is run. + * - `appear` - whether to run the transition on the initial element. Defaults to `false`. * @returns a signal with an array of the current element and exiting previous elements. * * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createSwitchTransition @@ -53,16 +53,14 @@ export function createSwitchTransition( options: SwitchTransitionOptions>, ): Accessor[]> { const initSource = untrack(source); - // if appear is enabled, the initial list will be empty (to be updated in effect) - // otherwise, it will be the initial source - // this way it will be consistent between server and client - const initReturned = options.appear ? [] : initSource ? [initSource] : []; + const initReturned = initSource ? [initSource] : []; if (process.env.SSR) { return () => initReturned; } const { onEnter = noopTransition, onExit = noopTransition } = options; + let { appear } = options; const [returned, setReturned] = createSignal[]>(initReturned); @@ -102,18 +100,16 @@ export function createSwitchTransition( exitTransition(prev); }; - let shouldRun = options.appear; - // update elements and call transitions in effect to suspend under Suspense createEffect( (prev: T | undefined) => { const el = source(); - // skip the first transition if appear is disabled - if (!shouldRun) { - setReturned(el ? [el] : []); - shouldRun = true; - return el; + if (appear) { + appear = false; + // the initial element is already in the rendered array + // so it needs to be removed to be added again during the enter transition + setReturned([]); } if (el !== prev) { @@ -123,7 +119,10 @@ export function createSwitchTransition( return el; }, - options.appear ? undefined : initSource, + // enabling appear always animates the initial element in + // otherwise the element won't be animated, + // or will animate the transition if the source is different from the initial value + appear ? undefined : initSource, ); return returned; @@ -151,7 +150,7 @@ export type ListTransitionOptions = { * Any object can used as the element, but most likely you will want to use a `HTMLElement` or `SVGElement`. * @param options transition options: * - `onChange` - a function to be called when the list changes. It receives the list of added elements, removed elements, and moved elements. It also receives a callback to be called when the removed elements are finished animating (they can be removed from the DOM). - * - `appear` - whether to run the transition on the initial elements. Defaults to `false`. If `true`, the initial elements won't be rendered until the first clinet-side effect is run. + * - `appear` - whether to run the transition on the initial elements. Defaults to `false`. * @returns a signal with an array of the current elements and exiting previous elements. * * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createListTransition @@ -179,21 +178,20 @@ export function createListTransition( ): Accessor[]> { type V = NonNullable; - const initSource = untrack(source); - // if appear is enabled, the initial list will be empty (to be updated in effect) - // otherwise, it will be the initial source - // this way it will be consistent between server and client - const initialReturned = options.appear ? [] : initSource.slice(); + const initSource = untrack(source).slice(); if (process.env.SSR) { - return () => initialReturned; + return () => initSource; } const { onChange } = options; + let { appear } = options; - const [returned, setReturned] = createSignal(initialReturned); + const [returned, setReturned] = createSignal(initSource); - let prevSet: ReadonlySet = new Set(options.appear ? undefined : initSource); + // if appear is enabled, the initial transition won't have any previous elements. + // otherwise the elements will match and transition skipped, or transitioned if the source is different from the initial value + let prevSet: ReadonlySet = new Set(appear ? undefined : initSource); const exiting = new Set(); function finishRemoved(els: V[]): void { @@ -201,18 +199,16 @@ export function createListTransition( for (const el of els) exiting.delete(el); } - let shouldRun = options.appear; // update elements and call transitions in effect to suspend under Suspense createEffect(() => { const list = source(); (list as any)[$TRACK]; // top level store tracking - // skip the first transition if appear is disabled - if (!shouldRun) { - shouldRun = true; - prevSet = new Set(list); - setReturned(list.slice()); - return; + if (appear) { + appear = false; + // the initial element is already in the rendered array + // so it needs to be removed to be added again during the enter transition + setReturned([]); } untrack(() => @@ -228,6 +224,7 @@ export function createListTransition( (prevSet.has(el) ? moved : added).push(el); } + let sameOrder = true; for (let i = 0; i < prev.length; i++) { const el = prev[i]!; if (!nextSet.has(el)) { @@ -237,8 +234,12 @@ export function createListTransition( } next.splice(i, 0, el); } + if (sameOrder && el !== next[i]) sameOrder = false; } + // skip if nothing changed + if (!added.length && !removed.length && sameOrder) return prev; + onChange({ added, removed, moved, finishRemoved }); prevSet = nextSet; diff --git a/packages/transition-group/test/list-transition.test.ts b/packages/transition-group/test/list-transition.test.ts index 734e1a483..5d7eaa063 100644 --- a/packages/transition-group/test/list-transition.test.ts +++ b/packages/transition-group/test/list-transition.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect, vi } from "vitest"; import { createRenderEffect, createResource, createRoot, createSignal, Suspense } from "solid-js"; -import { createListTransition, ListTransitionOptions } from "../src"; +import { createListTransition, OnListChange } from "../src"; describe("createListTransition", () => { const el1 = document.createElement("div"); @@ -62,7 +62,7 @@ describe("createListTransition", () => { removed: [el2], moved: [el1], finishRemoved: expect.any(Function), - } satisfies Parameters["onChange"]>[0]); + } satisfies Parameters>[0]); const done = fn.mock.calls[0]![0].finishRemoved; done([el2]); @@ -79,7 +79,7 @@ describe("createListTransition", () => { onChange: fn, appear: true, }); - expect(result()).toHaveLength(0); + expect(result()).toHaveLength(2); expect(fn).not.toHaveBeenCalled(); return { dispose, result }; }); @@ -171,11 +171,17 @@ describe("createListTransition", () => { resolve(); setRunResource(false); - expect(onChange).not.toHaveBeenCalled(); + expect(onChange).toHaveBeenCalledOnce(); + expect(onChange).toHaveBeenLastCalledWith({ + added: [el2], + removed: [el1], + moved: [], + finishRemoved: expect.any(Function), + }); setChildren([el1, el3]); - expect(onChange).toHaveBeenCalledOnce(); + expect(onChange).toHaveBeenCalledTimes(2); expect(onChange).toHaveBeenLastCalledWith({ added: [el1, el3], removed: [el2], diff --git a/packages/transition-group/test/server.test.ts b/packages/transition-group/test/server.test.ts index ee33804c6..25b30a191 100644 --- a/packages/transition-group/test/server.test.ts +++ b/packages/transition-group/test/server.test.ts @@ -11,9 +11,10 @@ describe("createSwitchTransition", () => { expect(result()[0]).toBe(el1); }); - it("returns empty array if appear is enabled", () => { + it("returns initial elements if appear is enabled", () => { const result = createSwitchTransition(() => el1, { appear: true }); - expect(result()).toHaveLength(0); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); }); }); @@ -27,11 +28,13 @@ describe("createListTransition", () => { expect(result()[1]).toBe(el2); }); - it("returns empty array if appear is enabled", () => { + it("returns initial elements if appear is enabled", () => { const result = createListTransition(() => [el1, el2], { onChange: () => {}, appear: true, }); - expect(result()).toHaveLength(0); + expect(result()).toHaveLength(2); + expect(result()[0]).toBe(el1); + expect(result()[1]).toBe(el2); }); }); diff --git a/packages/transition-group/test/switch-transition.test.ts b/packages/transition-group/test/switch-transition.test.ts index 6a1e75bd0..41ebe4042 100644 --- a/packages/transition-group/test/switch-transition.test.ts +++ b/packages/transition-group/test/switch-transition.test.ts @@ -79,7 +79,7 @@ describe("createSwitchTransition", () => { onEnter: fn, appear: true, }); - expect(result()).toHaveLength(0); + expect(result()).toHaveLength(1); expect(fn).not.toHaveBeenCalled(); return { result, dispose }; }); @@ -231,15 +231,17 @@ describe("createSwitchTransition", () => { resolve(); setRunResource(false); - expect(onEnter).not.toHaveBeenCalled(); - expect(onExit).not.toHaveBeenCalled(); + expect(onEnter).toHaveBeenCalledOnce(); + expect(onEnter).toHaveBeenCalledWith(el2, expect.any(Function)); + expect(onExit).toHaveBeenCalledOnce(); + expect(onExit).toHaveBeenCalledWith(el1, expect.any(Function)); setChildren(el3); - expect(onEnter).toHaveBeenCalledOnce(); + expect(onEnter).toHaveBeenCalledTimes(2); expect(onEnter).toHaveBeenCalledWith(el3, expect.any(Function)); - expect(onExit).toHaveBeenCalledOnce(); - expect(onExit).toHaveBeenCalledWith(el1, expect.any(Function)); + expect(onExit).toHaveBeenCalledTimes(2); + expect(onExit).toHaveBeenCalledWith(el2, expect.any(Function)); dispose(); }); From c56d280bc0e746a88e74b35cb95eec8562b02c7d Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Mon, 27 Feb 2023 23:28:59 +0100 Subject: [PATCH 11/33] Release 0.0.1-beta.1 --- .changeset/pre.json | 6 +++++- packages/transition-group/CHANGELOG.md | 6 ++++++ packages/transition-group/package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ed0bd2bde..731425b9c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -70,5 +70,9 @@ "@solid-primitives/websocket": "0.3.4", "@solid-primitives/workers": "0.2.3" }, - "changesets": ["dirty-kiwis-exist", "fresh-maps-worry"] + "changesets": [ + "dirty-kiwis-exist", + "fresh-maps-worry", + "itchy-suits-attack" + ] } diff --git a/packages/transition-group/CHANGELOG.md b/packages/transition-group/CHANGELOG.md index 1394b45b4..37048765b 100644 --- a/packages/transition-group/CHANGELOG.md +++ b/packages/transition-group/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/transition-group +## 0.0.1-beta.1 + +### Patch Changes + +- 2b4fb9be: Improve `appear` SSR - always render the initial items. + ## 0.0.1-beta.0 ### Major Changes diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json index 404de4c51..a01d261b6 100644 --- a/packages/transition-group/package.json +++ b/packages/transition-group/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/transition-group", - "version": "0.0.1-beta.0", + "version": "0.0.1-beta.1", "description": "Reactive primitives for implementing transition effects in SolidJS", "author": "Damian Tarnawski ", "contributors": [], From ddc12685a086e9854263dd2450e90c3b26dd56b9 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Tue, 28 Feb 2023 17:18:26 +0100 Subject: [PATCH 12/33] Add an options to reverse the callbacks in `combineProps` --- .changeset/sharp-llamas-burn.md | 5 ++++ .changeset/wild-peas-flash.md | 5 ++++ packages/props/README.md | 13 +++++++++ packages/props/src/combineProps.ts | 36 ++++++++++++++++++++---- packages/props/test/combineProps.test.ts | 25 ++++++++++++++++ packages/utils/src/index.ts | 16 +++++++++-- 6 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 .changeset/sharp-llamas-burn.md create mode 100644 .changeset/wild-peas-flash.md diff --git a/.changeset/sharp-llamas-burn.md b/.changeset/sharp-llamas-burn.md new file mode 100644 index 000000000..ced5ad173 --- /dev/null +++ b/.changeset/sharp-llamas-burn.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/props": minor +--- + +Add an overload to `combineProps` which allows for passing an options object, with `reverseEventHandlers` option. This option when enabled will cause the event handlers to be called right to left. diff --git a/.changeset/wild-peas-flash.md b/.changeset/wild-peas-flash.md new file mode 100644 index 000000000..5a242f337 --- /dev/null +++ b/.changeset/wild-peas-flash.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/utils": minor +--- + +Add `reverseChain` util as an alternative to `chain` diff --git a/packages/props/README.md b/packages/props/README.md index c307c784b..ca9b50967 100644 --- a/packages/props/README.md +++ b/packages/props/README.md @@ -74,6 +74,19 @@ const combined = combineProps( // combined.onClick() will call all 3 of the functions above ``` +The default order of execution is left-to-right. If you want to change it, you can use an options object as the last argument: + +```ts +const combined = combineProps( + // props need to be passed in an array + [{ onClick: () => console.log("parent") }, { onClick: () => console.log("parent") }], + { + reverseEventHandlers: true, + }, +); +combined.onClick(); // "child" "parent" +``` + ##### For better reference of how exactly `combineProps` works, see the [TESTS](https://github.com/solidjs-community/solid-primitives/blob/main/packages/props/test/combineProps.test.ts) ### Additional helpers diff --git a/packages/props/src/combineProps.ts b/packages/props/src/combineProps.ts index 32b74a92e..839d3d179 100644 --- a/packages/props/src/combineProps.ts +++ b/packages/props/src/combineProps.ts @@ -1,5 +1,5 @@ import { JSX, mergeProps, MergeProps } from "solid-js"; -import { access, AnyObject, chain, MaybeAccessor } from "@solid-primitives/utils"; +import { access, chain, reverseChain, MaybeAccessor } from "@solid-primitives/utils"; import { propTraps } from "./propTraps"; const extractCSSregex = /([^:; ]*):\s*([^;]*)/g; @@ -53,7 +53,7 @@ type PropsInput = { classList?: Record; style?: JSX.CSSProperties | string; ref?: Element | ((el: any) => void); -} & AnyObject; +} & Record; const reduce = ( sources: MaybeAccessor[], @@ -69,6 +69,15 @@ const reduce = ( return v; }; +export type CombinePropsOptions = { + /** + * by default the event handlers will be called left-to-right, + * following the order of the sources. + * If this option is set to true, the handlers will be called right-to-left. + */ + reverseEventHandlers?: boolean; +}; + /** * A helper that reactively merges multiple props objects together while smartly combining some of Solid's JSX/DOM attributes. * @@ -87,9 +96,26 @@ const reduce = ( * * ``` */ -export function combineProps[]>(...sources: T): MergeProps { +export function combineProps[]>( + sources: T, + options?: CombinePropsOptions, +): MergeProps; +export function combineProps[]>( + ...sources: T +): MergeProps; +export function combineProps[]>( + ...args: T | [sources: T, options?: CombinePropsOptions] +): MergeProps { + const restArgs = Array.isArray(args[0]); + const sources = (restArgs ? args[0] : args) as T; + if (sources.length === 1) return sources[0] as MergeProps; + const chainFn = + restArgs && (args[1] as CombinePropsOptions | undefined)?.reverseEventHandlers + ? reverseChain + : chain; + // create a map of event listeners to be chained const listeners: Record void)[]> = {}; @@ -135,13 +161,13 @@ export function combineProps[]>(...sources: const cb = access(props)[key] as ((el: any) => void) | undefined; if (typeof cb === "function") callbacks.push(cb); } - return chain(callbacks); + return chainFn(callbacks); } // Chain event listeners if (key[0] === "o" && key[1] === "n" && key[2]) { const callbacks = listeners[key.toLowerCase()]; - return callbacks ? chain(callbacks) : Reflect.get(merge, key); + return callbacks ? chainFn(callbacks) : Reflect.get(merge, key); } // Merge classes or classNames diff --git a/packages/props/test/combineProps.test.ts b/packages/props/test/combineProps.test.ts index da4e6b4ea..b5e744508 100644 --- a/packages/props/test/combineProps.test.ts +++ b/packages/props/test/combineProps.test.ts @@ -41,6 +41,31 @@ describe("combineProps", () => { }); }); + it("calls handlers in reverse", () => { + createRoot(dispose => { + const mockFn = spy(); + const message1 = "click1"; + const message2 = "click2"; + const message3 = "click3"; + + const combinedProps = combineProps( + [ + { onEvent: () => mockFn(message1) }, + { onEvent: () => mockFn(message2) }, + { onEvent: () => mockFn(message3) }, + ], + { reverseEventHandlers: true }, + ); + + combinedProps.onEvent(); + + expect(mockFn.callCount).toBe(3); + expect(mockFn.calls).toEqual([[message3], [message2], [message1]]); + + dispose(); + }); + }); + it("event handlers can be overwritten", async () => { createRoot(async dispose => { const mockFn = spy(); diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index f25bd02da..39a4bb9ee 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -70,8 +70,20 @@ export function chain(callbacks: { [Symbol.iterator](): IterableIterator<((...args: Args) => any) | undefined>; }): (...args: Args) => void { return (...args: Args) => { - for (const callback of callbacks) { - if (typeof callback === "function") callback(...args); + for (const callback of callbacks) callback && callback(...args); + }; +} + +/** + * Returns a function that will call all functions in the reversed order with the same arguments. + */ +export function reverseChain( + callbacks: (((...args: Args) => any) | undefined)[], +): (...args: Args) => void { + return (...args: Args) => { + for (let i = callbacks.length - 1; i >= 0; i--) { + const callback = callbacks[i]; + callback && callback(...args); } }; } From 29530caf0d46b023ff2c1ec5807df506868e44eb Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Tue, 28 Feb 2023 17:19:45 +0100 Subject: [PATCH 13/33] Update readme --- packages/props/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/props/README.md b/packages/props/README.md index ca9b50967..523068abc 100644 --- a/packages/props/README.md +++ b/packages/props/README.md @@ -74,12 +74,12 @@ const combined = combineProps( // combined.onClick() will call all 3 of the functions above ``` -The default order of execution is left-to-right. If you want to change it, you can use an options object as the last argument: +The default order of execution is left-to-right. If you want to change it, you can use an options object as the last argument: (`reverseEventHandlers: true`) ```ts const combined = combineProps( // props need to be passed in an array - [{ onClick: () => console.log("parent") }, { onClick: () => console.log("parent") }], + [{ onClick: () => console.log("parent") }, { onClick: () => console.log("child") }], { reverseEventHandlers: true, }, From 278267818462d92e283b70eb92e61d07ab5a2bff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Feb 2023 16:20:29 +0000 Subject: [PATCH 14/33] Version Packages --- .changeset/sharp-llamas-burn.md | 5 ----- .changeset/wild-peas-flash.md | 5 ----- packages/props/CHANGELOG.md | 11 +++++++++++ packages/props/package.json | 4 ++-- packages/utils/CHANGELOG.md | 6 ++++++ packages/utils/package.json | 2 +- pnpm-lock.yaml | 2 +- 7 files changed, 21 insertions(+), 14 deletions(-) delete mode 100644 .changeset/sharp-llamas-burn.md delete mode 100644 .changeset/wild-peas-flash.md diff --git a/.changeset/sharp-llamas-burn.md b/.changeset/sharp-llamas-burn.md deleted file mode 100644 index ced5ad173..000000000 --- a/.changeset/sharp-llamas-burn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/props": minor ---- - -Add an overload to `combineProps` which allows for passing an options object, with `reverseEventHandlers` option. This option when enabled will cause the event handlers to be called right to left. diff --git a/.changeset/wild-peas-flash.md b/.changeset/wild-peas-flash.md deleted file mode 100644 index 5a242f337..000000000 --- a/.changeset/wild-peas-flash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/utils": minor ---- - -Add `reverseChain` util as an alternative to `chain` diff --git a/packages/props/CHANGELOG.md b/packages/props/CHANGELOG.md index 7d8c404b8..4dfa70558 100644 --- a/packages/props/CHANGELOG.md +++ b/packages/props/CHANGELOG.md @@ -1,5 +1,16 @@ # @solid-primitives/props +## 3.1.0 + +### Minor Changes + +- ddc12685: Add an overload to `combineProps` which allows for passing an options object, with `reverseEventHandlers` option. This option when enabled will cause the event handlers to be called right to left. + +### Patch Changes + +- Updated dependencies [ddc12685] + - @solid-primitives/utils@5.3.0 + ## 3.0.7 ### Patch Changes diff --git a/packages/props/package.json b/packages/props/package.json index 5e7457314..1cb08767c 100644 --- a/packages/props/package.json +++ b/packages/props/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/props", - "version": "3.0.7", + "version": "3.1.0", "description": "Library of primitives focused around component props.", "author": "Damian Tarnawski ", "contributors": [], @@ -49,7 +49,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.3.0" }, "devDependencies": { "nanospy": "^0.5.0" diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 58562c325..0ba538f00 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/utils +## 5.3.0 + +### Minor Changes + +- ddc12685: Add `reverseChain` util as an alternative to `chain` + ## 5.2.1 ### Patch Changes diff --git a/packages/utils/package.json b/packages/utils/package.json index 4d80d339f..e69cc0701 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/utils", - "version": "5.2.1", + "version": "5.3.0", "description": "A bunch of reactive utility types and functions, for building primitives with Solid.js", "author": "Damian Tarnawski @thetarnav ", "contributors": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86c59fef4..b2f410961 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -480,7 +480,7 @@ importers: packages/props: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.3.0 nanospy: ^0.5.0 solid-js: ^1.6.0 dependencies: From d7b907e6ec6a571d2762877192fd9114dc9315fd Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Tue, 28 Feb 2023 22:45:23 +0100 Subject: [PATCH 15/33] Major improvements to createWritableMemo and createLatest --- .changeset/seven-onions-smile.md | 5 ++ packages/memo/dev/index.tsx | 4 +- packages/memo/dev/writable-page.tsx | 32 +++++++++++ packages/memo/dev/writable.tsx | 26 --------- packages/memo/package.json | 2 +- packages/memo/src/index.ts | 89 ++++++++--------------------- packages/memo/test/writable.test.ts | 49 +++++++++++++++- pnpm-lock.yaml | 84 ++++++++++++++------------- 8 files changed, 156 insertions(+), 135 deletions(-) create mode 100644 .changeset/seven-onions-smile.md create mode 100644 packages/memo/dev/writable-page.tsx delete mode 100644 packages/memo/dev/writable.tsx diff --git a/.changeset/seven-onions-smile.md b/.changeset/seven-onions-smile.md new file mode 100644 index 000000000..6df1c1cc6 --- /dev/null +++ b/.changeset/seven-onions-smile.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/memo": minor +--- + +Major improvements to how createWritableMemo and createLatest works. diff --git a/packages/memo/dev/index.tsx b/packages/memo/dev/index.tsx index bc24e38c0..53108276e 100644 --- a/packages/memo/dev/index.tsx +++ b/packages/memo/dev/index.tsx @@ -1,7 +1,7 @@ /* @refresh reload */ import { Component, lazy } from "solid-js"; import { render } from "solid-js/web"; -import { Router, Routes, Route, Link } from "solid-app-router"; +import { Router, Routes, Route, Link } from "@solidjs/router"; import "uno.css"; const Lazy = lazy(() => import("./lazy")); @@ -9,7 +9,7 @@ const LazySuspense = lazy(() => import("./lazy-suspense")); const Async = lazy(() => import("./async")); const Grouped = lazy(() => import("./grouped")); const Cache = lazy(() => import("./cache")); -const Writable = lazy(() => import("./writable")); +const Writable = lazy(() => import("./writable-page")); const App: Component = () => { return ( diff --git a/packages/memo/dev/writable-page.tsx b/packages/memo/dev/writable-page.tsx new file mode 100644 index 000000000..6f902ad8f --- /dev/null +++ b/packages/memo/dev/writable-page.tsx @@ -0,0 +1,32 @@ +import { batch, createEffect, createSignal } from "solid-js"; +import { createWritableMemo } from "../src"; + +export default function Cache() { + const [source, setSource] = createSignal(1); + const [memo, setMemo] = createWritableMemo(p => (source(), ++p), -2); + const [memo2, setMemo2] = createWritableMemo(source, -2); + + batch(() => { + setSource(2); + console.log(2, source(), memo2()); + }); + + batch(() => { + setMemo2(-3); + console.log(-3, memo2()); + }); + + return ( + <> +

Signal:

+ +

Setter:

+ +

Result: {memo()}

+ + ); +} diff --git a/packages/memo/dev/writable.tsx b/packages/memo/dev/writable.tsx deleted file mode 100644 index 9f1a297fd..000000000 --- a/packages/memo/dev/writable.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { createEffect, createSignal } from "solid-js"; -import { createWritableMemo } from "../src"; - -export default function Cache() { - const [source, setSource] = createSignal(1); - const [memo, setMemo] = createWritableMemo(() => source()); - - const [setterCount, setSetterCount] = createSignal(1); - createEffect(() => { - setMemo(setterCount()); - }); - - return ( - <> -

Signal:

- -

Setter:

- -

Result: {memo()}

- - ); -} diff --git a/packages/memo/package.json b/packages/memo/package.json index f8951e979..a6a176235 100644 --- a/packages/memo/package.json +++ b/packages/memo/package.json @@ -97,7 +97,7 @@ }, "devDependencies": { "@solid-primitives/mouse": "^2.0.7", - "solid-app-router": "^0.4.2" + "@solidjs/router": "^0.7.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/memo/src/index.ts b/packages/memo/src/index.ts index dcf92f31f..e6242b349 100644 --- a/packages/memo/src/index.ts +++ b/packages/memo/src/index.ts @@ -19,17 +19,11 @@ import { SignalOptions, } from "solid-js"; import { debounce, throttle } from "@solid-primitives/scheduled"; -import { ItemsOf, noop, EffectOptions } from "@solid-primitives/utils"; +import { noop, EffectOptions } from "@solid-primitives/utils"; export type MemoOptionsWithValue = MemoOptions & { value?: T }; export type AsyncMemoCalculation = (prev: T | Init) => Promise | T; -const set = - (setter: Setter) => - (v: T): void => { - setter(() => v); - }; - const callbackWith = (fn: (a: A) => T, v: Accessor): (() => T) => fn.length > 0 ? () => fn(untrack(v)) : (fn as () => T); @@ -109,27 +103,13 @@ export function createPureReaction( */ export function createLatest[]>( sources: T, - value: ReturnType>, - options: SignalOptions>>, -): Accessor>>; -export function createLatest[]>( - sources: T, - value?: ReturnType>, - options?: SignalOptions> | undefined>, -): Accessor> | undefined>; -export function createLatest( - sources: Accessor[], - value: any, - options: SignalOptions = {}, -): Accessor { - const [last, setLast] = createSignal(value, options); - for (const fn of sources) createComputed(on(fn, set(setLast), { defer: true })); - return last; + options?: SignalOptions>, +): Accessor> { + const [signal, setSignal] = createSignal(0); + const memos = sources.map((source, i) => createMemo(() => (setSignal(i), source()))); + return createMemo(() => memos.map(m => m())[signal()]!, undefined, options); } -/** @deprecated use `createLatest` instead */ -export const createCurtain = createLatest; - /** * Solid's `createMemo` which value can be overwritten by a setter. Signal value will be the last one, set by a setter or a memo calculation. * @param fn callback that calculates the value @@ -142,53 +122,34 @@ export const createCurtain = createLatest; * const [result, setResult] = createWritableMemo(() => count() * 2); * setResult(5) // overwrites calculation result */ -export function createWritableMemo( - fn: (prev: T) => T, - value: T, - options?: MemoOptions, -): [signal: Accessor, setter: Setter]; -export function createWritableMemo( - fn: (prev: T | undefined) => T, - value?: undefined, - options?: MemoOptions, -): [signal: Accessor, setter: Setter]; +export function createWritableMemo( + fn: EffectFunction, Next>, +): [signal: Accessor, setter: Setter]; +export function createWritableMemo( + fn: EffectFunction, + value: Init, + options?: MemoOptions, +): [signal: Accessor, setter: Setter]; export function createWritableMemo( fn: (prev: T | undefined) => T, value?: T, options?: MemoOptions, ): [signal: Accessor, setter: Setter] { - const [signal, setSignal] = createSignal(fn(value), options); - const calc = callbackWith(fn, signal); - createComputed(on(calc, set(setSignal), { defer: true })); - return [signal, setSignal]; -} + let combined: Accessor = () => value as T; + const [signal, setSignal] = createSignal(value as T), + memo = createMemo( + callbackWith(fn, () => combined()), + value, + ); -/* - -alternative implementation to try: - -export function createWritableMemo(fn: () => T, initialValue: T) { - let latest: Accessor; - const [value, setValue] = createSignal(initialValue); - const memo = createMemo(fn, initialValue); - latest = memo; - const combined = createMemo(() => { - const s = value(); - const m = memo(); - if (value === latest) return s; - else return m; - }); return [ - combined, - (v: T) => { - latest = value; - return setValue(() => v); - } - ] as const; + (combined = createLatest([signal, memo], options)), + ((setter: any): T => + setSignal(() => (typeof setter === "function" ? setter(untrack(combined)) : setter)) + .v) as Setter, + ]; } -*/ - /** * Solid's `createMemo` which returned signal is debounced. *(The {@link fn} callback is not debounced!)* * diff --git a/packages/memo/test/writable.test.ts b/packages/memo/test/writable.test.ts index 82974f98d..c31226c7e 100644 --- a/packages/memo/test/writable.test.ts +++ b/packages/memo/test/writable.test.ts @@ -1,6 +1,6 @@ import { describe, test, expect } from "vitest"; import { createWritableMemo } from "../src"; -import { createRoot, createSignal } from "solid-js"; +import { batch, createRoot, createSignal } from "solid-js"; describe("createWritableMemo", () => { test("behaves like a memo", () => @@ -27,4 +27,51 @@ describe("createWritableMemo", () => { expect(result()).toBe(3); dispose(); })); + + test("consistency of previous value in the callbacks", () => { + const [count, setCount] = createSignal(1); + let prevCb: number | undefined; + const { result, setResult, dispose } = createRoot(dispose => { + const [result, setResult] = createWritableMemo(p => ((prevCb = p), count() * 2), -2); + expect(prevCb).toBe(-2); + expect(result()).toBe(2); + return { result, dispose, setResult }; + }); + setResult(p => { + expect(p).toBe(2); + return 5; + }); + expect(result()).toBe(5); + expect(prevCb).toBe(-2); + setCount(5); + expect(result()).toBe(count() * 2); + expect(prevCb).toBe(5); + setCount(7); + expect(prevCb).toBe(10); + setResult(p => { + expect(p).toBe(14); + return 3; + }); + expect(result()).toBe(3); + dispose(); + }); + + test("updating and reading in a batch", () => { + createRoot(dispose => { + const [source, setSource] = createSignal(1); + const [memo, setMemo] = createWritableMemo(source, -2); + + batch(() => { + setSource(2); + expect(memo()).toBe(2); + }); + + batch(() => { + setMemo(-3); + expect(memo()).toBe(-3); + }); + + dispose(); + }); + }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 119cd3d51..e8c1f23e1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -388,7 +388,7 @@ importers: '@solid-primitives/mouse': ^2.0.7 '@solid-primitives/scheduled': ^1.3.1 '@solid-primitives/utils': ^5.2.1 - solid-app-router: ^0.4.2 + '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/scheduled': link:../scheduled @@ -396,7 +396,7 @@ importers: solid-js: 1.6.9 devDependencies: '@solid-primitives/mouse': link:../mouse - solid-app-router: 0.4.2_solid-js@1.6.9 + '@solidjs/router': 0.7.0_solid-js@1.6.9 packages/mouse: specifiers: @@ -640,11 +640,13 @@ importers: packages/transition-group: specifiers: + '@solid-primitives/memo': workspace:^1.1.5 '@solid-primitives/refs': workspace:^0.4.0-beta.0 '@solid-primitives/utils': workspace:^5.2.0 '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 dependencies: + '@solid-primitives/memo': link:../memo solid-js: 1.6.11 devDependencies: '@solid-primitives/refs': link:../refs @@ -3603,11 +3605,11 @@ packages: '@solid-primitives/bounds': 0.0.107_solid-js@1.6.11 '@solid-primitives/cursor': 0.0.105_solid-js@1.6.11 '@solid-primitives/event-bus': 1.0.0_solid-js@1.6.11 - '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.7_solid-js@1.6.11 '@solid-primitives/keyboard': 1.0.7_solid-js@1.6.11 '@solid-primitives/platform': 0.0.103_solid-js@1.6.11 - '@solid-primitives/scheduled': 1.3.0_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/scheduled': 1.3.1_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 type-fest: 3.6.0 dev: true @@ -3618,13 +3620,13 @@ packages: solid-js: ^1.6.9 dependencies: '@solid-primitives/event-bus': 1.0.0_solid-js@1.6.11 - '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.7_solid-js@1.6.11 '@solid-primitives/media': 2.1.1_solid-js@1.6.11 '@solid-primitives/refs': 0.3.6_solid-js@1.6.11 - '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 - '@solid-primitives/scheduled': 1.3.0_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.5_solid-js@1.6.11 + '@solid-primitives/scheduled': 1.3.1_solid-js@1.6.11 '@solid-primitives/styles': 0.0.101_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 type-fest: 3.6.0 dev: true @@ -3634,9 +3636,9 @@ packages: peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.7_solid-js@1.6.11 '@solid-primitives/resize-observer': 2.0.9_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true @@ -3645,7 +3647,7 @@ packages: peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true @@ -3663,26 +3665,26 @@ packages: peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/immutable': 0.1.6_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/immutable': 0.1.7_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true - /@solid-primitives/event-listener/2.2.6_solid-js@1.6.11: - resolution: {integrity: sha512-Lb2q888Apv8wqgZ3WvPlt8ic2rEmHx6QT8d3pgi+JRSIRNwAysE6PZDmbwT6/hzzP1TIQG0IRZwh5tomfuqlaQ==} + /@solid-primitives/event-listener/2.2.7_solid-js@1.6.11: + resolution: {integrity: sha512-rvu4ZbeM3Z9ncYc+nVI7y1KY/XqN2uDkhc0wvXzmVempSr5WfbsFEieuah8SAUd0ypi/qvy7aaFXh5fYKOgnOw==} peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true - /@solid-primitives/immutable/0.1.6_solid-js@1.6.11: - resolution: {integrity: sha512-P4wbDogtytijTV5En+bm6jfFbf4ZOMnfmttUJ8642MQ0tJ2VS2z8iJplg9YFJIltXz7W/+2mdfw2XczlkTxeGg==} + /@solid-primitives/immutable/0.1.7_solid-js@1.6.11: + resolution: {integrity: sha512-V824C1PDHfnFQJxrBfc7zRRCqa1tFY+L/JpKTCr1OKk1kc3MaGCPghI5GNqwsCwKJZvvXHxBsiRsBMX1OPSI8Q==} peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true @@ -3691,9 +3693,9 @@ packages: peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 - '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.7_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.5_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true @@ -3702,9 +3704,9 @@ packages: peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 - '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.7_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.5_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true @@ -3721,9 +3723,9 @@ packages: peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/immutable': 0.1.6_solid-js@1.6.11 - '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/immutable': 0.1.7_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.5_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true @@ -3732,23 +3734,23 @@ packages: peerDependencies: solid-js: ^1.6.0 dependencies: - '@solid-primitives/event-listener': 2.2.6_solid-js@1.6.11 - '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/event-listener': 2.2.7_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.5_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true - /@solid-primitives/rootless/1.2.4_solid-js@1.6.11: - resolution: {integrity: sha512-wsxpJzmCTeKt7gM1sDN3aKs5Sb8dmD3xVBdXUA+xZWcO5v/CVR5Gq690YvXvWSK+Thjv8jvDNHI582CDP/gFzQ==} + /@solid-primitives/rootless/1.2.5_solid-js@1.6.11: + resolution: {integrity: sha512-HLtF965ptJ0IYXPWluzpCVyTwWeiYNTpjiINlZeaSoAY8Ba6NnbSAV587emdvbt4bbrgi2Y8Gmav+/00AQJ6Hw==} peerDependencies: solid-js: ^1.6.11 dependencies: - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 dev: true - /@solid-primitives/scheduled/1.3.0_solid-js@1.6.11: - resolution: {integrity: sha512-9B1eQ069vduoDorKwaDjZmcWO3ojEf3hpAcoIQA4CWGkk+QCfJnMWHv/XGYHvytQfr382EQQ1j1nxZBDLOWEQQ==} + /@solid-primitives/scheduled/1.3.1_solid-js@1.6.11: + resolution: {integrity: sha512-3tEyYAoGteeSMjXh1HfX1MteU9PpEP8cq0w26ffa3xScaN/EklonZZiy1ajJJuen/WQ5f2zZ3WmHCMnLMbURow==} peerDependencies: solid-js: ^1.6.0 dependencies: @@ -3760,7 +3762,7 @@ packages: peerDependencies: solid-js: ^1.5.0 dependencies: - '@solid-primitives/rootless': 1.2.4_solid-js@1.6.11 + '@solid-primitives/rootless': 1.2.5_solid-js@1.6.11 solid-js: 1.6.11 dev: true @@ -3773,8 +3775,8 @@ packages: solid-js: 1.6.9 dev: false - /@solid-primitives/utils/5.2.0_solid-js@1.6.11: - resolution: {integrity: sha512-9sJSBv0IshaQ6qks9FW9ErKZS9qeAv+uYYrsAAXnu5XtDeifRtMk0k6Smje4XxzpxGH/8P4nwS2kk/9vt6KsBg==} + /@solid-primitives/utils/5.3.0_solid-js@1.6.11: + resolution: {integrity: sha512-YlMvXtJxm5zWQC+EW24qO9kMoUdfR5I4bi6zsL9RlETyfJEPrmTY2ztU0T9lPq5hC3Qwn3q+ifd4tz4js3fTUA==} peerDependencies: solid-js: ^1.6.0 dependencies: @@ -8746,7 +8748,7 @@ packages: '@solid-devtools/debugger': 0.21.0_solid-js@1.6.11 '@solid-devtools/shared': 0.11.0_solid-js@1.6.11 '@solid-primitives/event-bus': 1.0.0_solid-js@1.6.11 - '@solid-primitives/utils': 5.2.0_solid-js@1.6.11 + '@solid-primitives/utils': 5.3.0_solid-js@1.6.11 solid-js: 1.6.11 type-fest: 3.6.0 vite: 4.1.1_@types+node@18.13.0 From f4ed25f76485bfc6d9060e05940686f610d5c8e0 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Tue, 28 Feb 2023 23:39:53 +0100 Subject: [PATCH 16/33] Update createSwitchTransition signal in a pure computation --- packages/transition-group/src/index.ts | 73 +++++++++++++------ .../test/switch-transition.test.ts | 42 ++++++++++- pnpm-lock.yaml | 2 - 3 files changed, 91 insertions(+), 26 deletions(-) diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index 45e5ab03f..02759a58e 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -1,4 +1,12 @@ -import { Accessor, batch, createSignal, untrack, $TRACK, createEffect } from "solid-js"; +import { + Accessor, + batch, + createSignal, + untrack, + $TRACK, + createEffect, + createComputed, +} from "solid-js"; const noop = () => {}; const noopTransition = (el: any, done: () => void) => done(); @@ -63,6 +71,7 @@ export function createSwitchTransition( let { appear } = options; const [returned, setReturned] = createSignal[]>(initReturned); + const [transitions, startTransitions] = createSignal([], { equals: false }); let next: T | undefined; let isExiting = false; @@ -70,13 +79,20 @@ export function createSwitchTransition( function exitTransition(el: T | undefined, after?: () => void) { if (!el) return after && after(); isExiting = true; - onExit(el, () => { - batch(() => { - isExiting = false; - setReturned(p => p.filter(e => e !== el)); - after && after(); - }); - }); + startTransitions( + p => ( + p.push(() => + onExit(el, () => { + batch(() => { + isExiting = false; + setReturned(p => p.filter(e => e !== el)); + after && after(); + }); + }), + ), + p + ), + ); } function enterTransition(after?: () => void) { @@ -84,10 +100,10 @@ export function createSwitchTransition( if (!el) return after && after(); next = undefined; setReturned(p => [el, ...p]); - onEnter(el, after ?? noop); + startTransitions(p => (p.push(() => onEnter(el, after ?? noop)), p)); } - const transition: (prev: T | undefined) => void = + const triggerTransitions: (prev: T | undefined) => void = options.mode === "out-in" ? // exit -> enter prev => isExiting || exitTransition(prev, enterTransition) @@ -100,22 +116,25 @@ export function createSwitchTransition( exitTransition(prev); }; - // update elements and call transitions in effect to suspend under Suspense - createEffect( + // update returned array in a pure computation + // so that the updated list is available in user effects + createComputed( (prev: T | undefined) => { const el = source(); - if (appear) { - appear = false; - // the initial element is already in the rendered array - // so it needs to be removed to be added again during the enter transition - setReturned([]); - } + batch(() => { + if (appear) { + appear = false; + // the initial element is already in the rendered array + // so it needs to be removed to be added again during the enter transition + setReturned([]); + } - if (el !== prev) { - next = el; - untrack(() => transition(prev)); - } + if (el !== prev) { + next = el; + untrack(() => triggerTransitions(prev)); + } + }); return el; }, @@ -125,6 +144,16 @@ export function createSwitchTransition( appear ? undefined : initSource, ); + // call transitions in effect to suspend them under Suspense + createEffect(() => { + const queue = transitions(); + const copy = queue.slice(); + queue.length = 0; + untrack(() => { + for (const cb of copy) cb(); + }); + }); + return returned; } diff --git a/packages/transition-group/test/switch-transition.test.ts b/packages/transition-group/test/switch-transition.test.ts index 41ebe4042..bc97a2d64 100644 --- a/packages/transition-group/test/switch-transition.test.ts +++ b/packages/transition-group/test/switch-transition.test.ts @@ -1,5 +1,12 @@ -import { describe, it, expect, vi } from "vitest"; -import { createRenderEffect, createResource, createRoot, createSignal, Suspense } from "solid-js"; +import { describe, it, expect, vi, test } from "vitest"; +import { + createEffect, + createRenderEffect, + createResource, + createRoot, + createSignal, + Suspense, +} from "solid-js"; import { createSwitchTransition } from "../src"; describe("createSwitchTransition", () => { @@ -245,4 +252,35 @@ describe("createSwitchTransition", () => { dispose(); }); + + test("updated list should be available in user effects", () => { + let effRuns = 0; + + const dispose = createRoot(dispose => { + const [children, setChildren] = createSignal(el1); + + createEffect(() => { + effRuns++; + children(); + if (effRuns === 1) { + expect(result(), "effect after root").toHaveLength(2); + } else { + expect(result(), "affect after transitions").toHaveLength(1); + expect(result()[0]).toBe(el2); + } + }); + + const result = createSwitchTransition(children, {}); + expect(result(), "initial").toHaveLength(1); + + setChildren(el2); + expect(result(), "after sync assign").toHaveLength(2); + + return dispose; + }); + + expect(effRuns).toBe(2); + + dispose(); + }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8c1f23e1..be0c5cdb7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -640,13 +640,11 @@ importers: packages/transition-group: specifiers: - '@solid-primitives/memo': workspace:^1.1.5 '@solid-primitives/refs': workspace:^0.4.0-beta.0 '@solid-primitives/utils': workspace:^5.2.0 '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 dependencies: - '@solid-primitives/memo': link:../memo solid-js: 1.6.11 devDependencies: '@solid-primitives/refs': link:../refs From 90ae2b456974174bdd05e24e5900b5ef1ab6c961 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Wed, 1 Mar 2023 13:12:18 +0100 Subject: [PATCH 17/33] Fix package title --- packages/jsx-parser/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jsx-parser/README.md b/packages/jsx-parser/README.md index f63368e3b..f5b1dd4ad 100644 --- a/packages/jsx-parser/README.md +++ b/packages/jsx-parser/README.md @@ -2,7 +2,7 @@ Solid Primitives JSX Parser

-# @solid-primitives/parser +# @solid-primitives/jsx-parser A primitive to extend the types of values JSX can return. These JSX-elements are named `tokens`. From 0843a89964e0250f2771e48e431b1520f95bc694 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Wed, 1 Mar 2023 22:16:21 +0100 Subject: [PATCH 18/33] Use a memo instead of effect in createListTransition Also adds different exit methods --- packages/transition-group/dev/list-page.tsx | 259 ++++++++++-------- packages/transition-group/src/index.ts | 179 ++++++------ .../test/list-transition.test.ts | 104 +++++-- 3 files changed, 336 insertions(+), 206 deletions(-) diff --git a/packages/transition-group/dev/list-page.tsx b/packages/transition-group/dev/list-page.tsx index 13beb69de..b1d6e4715 100644 --- a/packages/transition-group/dev/list-page.tsx +++ b/packages/transition-group/dev/list-page.tsx @@ -3,8 +3,10 @@ import { createRenderEffect, createResource, onCleanup, + onMount, Suspense, untrack, + useTransition, } from "solid-js"; import { elements } from "@solid-primitives/refs"; import { Component, createSignal, For, Show } from "solid-js"; @@ -28,18 +30,42 @@ const ListPage: Component = () => { const [runResource, setRunResource] = createSignal(false); let resolve = () => {}; const [res] = createResource(runResource, () => new Promise(r => (resolve = r))); + const [isTransitioning, startTransition] = useTransition(); + + const appear = localStorage.getItem("transition-group-appear") === "true"; return ( <> - +
+ + + +
+
Suspended

}> - {untrack(() => { - // track the resource - createRenderEffect(res); - - const resolved = children(() => ( - -

Hello

- World - {show() && ( -
- ID 0 -
- )} - -
- ID 1 -
-
- -
- ID 2 -
-
- ID 3 -
-
- - {({ n }, i) => ( + + {untrack(() => { + // track the resource + createRenderEffect(res); + + const resolved = children(() => ( + <> +

Hello

+ World + {show() && (
- setList(p => { - const copy = p.slice(); - copy.splice(i(), 1); - return copy; - }) - } - ref={grayOutOnDispose} + class="node" + ref={el => { + onMount(() => console.log("mounted", el.isConnected)); + grayOutOnDispose(el); + }} > - {n + 1}. + ID 0
)} -
-
- )); - const refs = elements(resolved, HTMLElement); - - const options = { duration: 600, easing: "cubic-bezier(0.4, 0, 0.2, 1)" }; - - return createListTransition(refs, { - appear: true, - onChange({ added, finishRemoved, moved, removed }) { - added.forEach(el => { - el.style.opacity = "0"; - el.style.transform = "translateY(10px)"; - requestAnimationFrame(() => { - el.animate( - [ - { opacity: 0, transform: "translateY(-36px)" }, - { opacity: 1, transform: "translateY(0)" }, - ], - { ...options, fill: "both" }, - ); + +
+ ID 1 +
+
+ +
+ ID 2 +
+
+ ID 3 +
+
+ + {({ n }, i) => ( +
+ setList(p => { + const copy = p.slice(); + copy.splice(i(), 1); + return copy; + }) + } + ref={grayOutOnDispose} + > + {n + 1}. +
+ )} +
+ + )); + const refs = elements(resolved, HTMLElement); + + const options = { duration: 600, easing: "cubic-bezier(0.4, 0, 0.2, 1)" }; + + return createListTransition(refs, { + appear, + onChange({ added, finishRemoved, unchanged, removed }) { + added.forEach(el => { + queueMicrotask(() => { + if (!el.isConnected) return; + el.style.opacity = "0"; + el.style.transform = "translateY(10px)"; + el.animate( + [ + { opacity: 0, transform: "translateY(-36px)" }, + { opacity: 1, transform: "translateY(0)" }, + ], + { ...options, fill: "both" }, + ); + }); }); - }); - - moved.forEach(el => { - const { left: left1, top: top1 } = el.getBoundingClientRect(); - requestAnimationFrame(() => { - const { left: left2, top: top2 } = el.getBoundingClientRect(); - el.animate( - [ - { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, - { transform: "none" }, - ], - options, - ); + + unchanged.forEach(el => { + const { left: left1, top: top1 } = el.getBoundingClientRect(); + if (!el.isConnected) return; + queueMicrotask(() => { + const { left: left2, top: top2 } = el.getBoundingClientRect(); + el.animate( + [ + { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, + { transform: "none" }, + ], + options, + ); + }); + }); + + const removedRects = removed.map(el => el.getBoundingClientRect()); + removed.forEach(el => { + el.style.transform = "none"; + el.style.position = "absolute"; + }); + queueMicrotask(() => { + removed.forEach((el, i) => { + if (!el.isConnected) return finishRemoved([el]); + + const { left: left1, top: top1 } = removedRects[i]!; + const { left: left2, top: top2 } = el.getBoundingClientRect(); + + const a = el.animate( + [ + { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, + { + opacity: 0, + transform: `translate(${left1 - left2}px, ${top1 - top2 + 36}px)`, + }, + ], + options, + ); + + i === removed.length - 1 && + a.finished + .then(() => finishRemoved(removed)) + .catch(() => finishRemoved(removed)); + }); }); - }); - - const removedRects = removed.map(el => el.getBoundingClientRect()); - removed.forEach(el => { - el.style.transform = "none"; - el.style.position = "absolute"; - }); - removed.forEach((el, i) => { - const { left: left1, top: top1 } = removedRects[i]!; - const { left: left2, top: top2 } = el.getBoundingClientRect(); - - const a = el.animate( - [ - { transform: `translate(${left1 - left2}px, ${top1 - top2}px)` }, - { - opacity: 0, - transform: `translate(${left1 - left2}px, ${top1 - top2 + 36}px)`, - }, - ], - options, - ); - - i === removed.length - 1 && a.finished.then(() => finishRemoved(removed)); - }); - }, - }); - })} + }, + }); + })} +
diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index 02759a58e..11e55261a 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -6,6 +6,8 @@ import { $TRACK, createEffect, createComputed, + createMemo, + useTransition, } from "solid-js"; const noop = () => {}; @@ -68,10 +70,11 @@ export function createSwitchTransition( } const { onEnter = noopTransition, onExit = noopTransition } = options; - let { appear } = options; - const [returned, setReturned] = createSignal[]>(initReturned); - const [transitions, startTransitions] = createSignal([], { equals: false }); + const [returned, setReturned] = createSignal[]>( + options.appear ? [] : initReturned, + ); + const [transitions, setTransitions] = createSignal([], { equals: false }); let next: T | undefined; let isExiting = false; @@ -79,7 +82,7 @@ export function createSwitchTransition( function exitTransition(el: T | undefined, after?: () => void) { if (!el) return after && after(); isExiting = true; - startTransitions( + setTransitions( p => ( p.push(() => onExit(el, () => { @@ -100,7 +103,7 @@ export function createSwitchTransition( if (!el) return after && after(); next = undefined; setReturned(p => [el, ...p]); - startTransitions(p => (p.push(() => onEnter(el, after ?? noop)), p)); + setTransitions(p => (p.push(() => onEnter(el, after ?? noop)), p)); } const triggerTransitions: (prev: T | undefined) => void = @@ -122,26 +125,17 @@ export function createSwitchTransition( (prev: T | undefined) => { const el = source(); - batch(() => { - if (appear) { - appear = false; - // the initial element is already in the rendered array - // so it needs to be removed to be added again during the enter transition - setReturned([]); - } - - if (el !== prev) { - next = el; - untrack(() => triggerTransitions(prev)); - } - }); + if (el !== prev) { + next = el; + untrack(() => triggerTransitions(prev)); + } return el; }, // enabling appear always animates the initial element in // otherwise the element won't be animated, // or will animate the transition if the source is different from the initial value - appear ? undefined : initSource, + options.appear ? undefined : initSource, ); // call transitions in effect to suspend them under Suspense @@ -149,24 +143,44 @@ export function createSwitchTransition( const queue = transitions(); const copy = queue.slice(); queue.length = 0; - untrack(() => { - for (const cb of copy) cb(); - }); + untrack(() => copy.forEach(cb => cb())); }); return returned; } export type OnListChange = (payload: { + /** full list of elements to be rendered */ + list: T[]; + /** list of elements that were added since the last change */ added: T[]; + /** list of elements that were removed since the last change */ removed: T[]; - moved: T[]; + /** list of elements that were already added before, and are not currently exiting */ + unchanged: T[]; + /** Callback for finishing the transition of exiting elements - removes them from rendered array */ finishRemoved: (els: T[]) => void; }) => void; +export type ExitMethod = "remove" | "move-to-end" | "keep-index"; + export type ListTransitionOptions = { + /** + * A function to be called when the list changes. {@link OnListChange} + * + * It receives the list of current, added, removed, and unchanged elements. + * It also receives a callback to be called when the removed elements are finished animating (they can be removed from the DOM). + */ onChange: OnListChange; + /** whether to run the transition on the initial elements. Defaults to `false` */ appear?: boolean; + /** + * This controls how the elements exit. {@link ExitMethod} + * - `"remove"` removes the element immediately. + * - `"move-to-end"` (default) will move elements which have exited to the end of the array. + * - `"keep-index"` will splice them in at their previous index. + */ + exitMethod?: ExitMethod; }; /** @@ -177,10 +191,7 @@ export type ListTransitionOptions = { * * @param source a signal with the current list of elements. * Any object can used as the element, but most likely you will want to use a `HTMLElement` or `SVGElement`. - * @param options transition options: - * - `onChange` - a function to be called when the list changes. It receives the list of added elements, removed elements, and moved elements. It also receives a callback to be called when the removed elements are finished animating (they can be removed from the DOM). - * - `appear` - whether to run the transition on the initial elements. Defaults to `false`. - * @returns a signal with an array of the current elements and exiting previous elements. + * @param options transition options {@link ListTransitionOptions} * * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createListTransition * @@ -201,59 +212,74 @@ export type ListTransitionOptions = { * // change the source to trigger the transition * setEls([...refsToHTMLElements]); */ -export function createListTransition( - source: Accessor[]>, - options: ListTransitionOptions>, -): Accessor[]> { - type V = NonNullable; - - const initSource = untrack(source).slice(); +export function createListTransition( + source: Accessor, + options: ListTransitionOptions, +): Accessor { + const initSource = untrack(source); if (process.env.SSR) { - return () => initSource; + const copy = initSource.slice(); + return () => copy; } const { onChange } = options; - let { appear } = options; - - const [returned, setReturned] = createSignal(initSource); // if appear is enabled, the initial transition won't have any previous elements. // otherwise the elements will match and transition skipped, or transitioned if the source is different from the initial value - let prevSet: ReadonlySet = new Set(appear ? undefined : initSource); - const exiting = new Set(); + let prevSet: ReadonlySet = new Set(options.appear ? undefined : initSource); + const exiting = new WeakSet(); + + const [toRemove, setToRemove] = createSignal([], { equals: false }); + const [isTransitionPending] = useTransition(); + + const finishRemoved: (els: T[]) => void = + options.exitMethod === "remove" + ? noop + : els => { + setToRemove(p => (p.push.apply(p, els), p)); + for (const el of els) exiting.delete(el); + }; - function finishRemoved(els: V[]): void { - setReturned(p => p.filter(e => !els.includes(e))); - for (const el of els) exiting.delete(el); - } + const handleRemoved: (els: T[], el: T, i: number) => void = + options.exitMethod === "remove" + ? noop + : options.exitMethod === "keep-index" + ? (els, el, i) => els.splice(i, 0, el) + : (els, el) => els.push(el); + + return createMemo( + prev => { + const elsToRemove = toRemove(); + const sourceList = source(); + (sourceList as any)[$TRACK]; // top level store tracking + + if (untrack(isTransitionPending)) { + // wait for pending transition to end before animating + isTransitionPending(); + return prev; + } + + if (elsToRemove.length) { + const next = prev.filter(e => !elsToRemove.includes(e)); + elsToRemove.length = 0; + onChange({ list: next, added: [], removed: [], unchanged: next, finishRemoved }); + return next; + } - // update elements and call transitions in effect to suspend under Suspense - createEffect(() => { - const list = source(); - (list as any)[$TRACK]; // top level store tracking - - if (appear) { - appear = false; - // the initial element is already in the rendered array - // so it needs to be removed to be added again during the enter transition - setReturned([]); - } - - untrack(() => - setReturned(prev => { - const nextSet: ReadonlySet = new Set(list); - const next: V[] = list.slice(); - - const added: V[] = []; - const removed: V[] = []; - const moved: V[] = []; - - for (const el of list) { - (prevSet.has(el) ? moved : added).push(el); + return untrack(() => { + const nextSet: ReadonlySet = new Set(sourceList); + const next: T[] = sourceList.slice(); + + const added: T[] = []; + const removed: T[] = []; + const unchanged: T[] = []; + + for (const el of sourceList) { + (prevSet.has(el) ? unchanged : added).push(el); } - let sameOrder = true; + let nothingChanged = !added.length; for (let i = 0; i < prev.length; i++) { const el = prev[i]!; if (!nextSet.has(el)) { @@ -261,21 +287,20 @@ export function createListTransition( removed.push(el); exiting.add(el); } - next.splice(i, 0, el); + handleRemoved(next, el, i); } - if (sameOrder && el !== next[i]) sameOrder = false; + if (nothingChanged && el !== next[i]) nothingChanged = false; } // skip if nothing changed - if (!added.length && !removed.length && sameOrder) return prev; + if (!removed.length && nothingChanged) return prev; - onChange({ added, removed, moved, finishRemoved }); + onChange({ list: next, added, removed, unchanged, finishRemoved }); prevSet = nextSet; return next; - }), - ); - }); - - return returned; + }); + }, + options.appear ? [] : initSource.slice(), + ); } diff --git a/packages/transition-group/test/list-transition.test.ts b/packages/transition-group/test/list-transition.test.ts index 5d7eaa063..aa233f692 100644 --- a/packages/transition-group/test/list-transition.test.ts +++ b/packages/transition-group/test/list-transition.test.ts @@ -1,7 +1,9 @@ import { describe, it, expect, vi } from "vitest"; -import { createRenderEffect, createResource, createRoot, createSignal, Suspense } from "solid-js"; +import { createRoot, createSignal } from "solid-js"; import { createListTransition, OnListChange } from "../src"; +type OnChangeParams = Parameters>[0]; + describe("createListTransition", () => { const el1 = document.createElement("div"); const el2 = document.createElement("span"); @@ -58,11 +60,12 @@ describe("createListTransition", () => { expect(result()).toHaveLength(4); expect(fn).toHaveBeenCalledOnce(); expect(fn).toHaveBeenCalledWith({ + list: [el3, el1, el4, el2], added: [el3, el4], removed: [el2], - moved: [el1], + unchanged: [el1], finishRemoved: expect.any(Function), - } satisfies Parameters>[0]); + } satisfies OnChangeParams); const done = fn.mock.calls[0]![0].finishRemoved; done([el2]); @@ -72,28 +75,26 @@ describe("createListTransition", () => { }); it("transitions element in on appear", () => { - const fn = vi.fn(); + createRoot(dispose => { + const fn = vi.fn(); - const { dispose, result } = createRoot(dispose => { const result = createListTransition(() => [el1, el2], { onChange: fn, appear: true, }); + expect(result()).toHaveLength(2); - expect(fn).not.toHaveBeenCalled(); - return { dispose, result }; - }); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + list: [el1, el2], + added: [el1, el2], + removed: [], + unchanged: [], + finishRemoved: expect.any(Function), + } satisfies OnChangeParams); - expect(result()).toHaveLength(2); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith({ - added: [el1, el2], - removed: [], - moved: [], - finishRemoved: expect.any(Function), + dispose(); }); - - dispose(); }); it("can transition multiple leaving elements", () => { @@ -112,11 +113,12 @@ describe("createListTransition", () => { expect(result()).toHaveLength(3); expect(fn).toHaveBeenCalledOnce(); expect(fn).toHaveBeenCalledWith({ + list: [el2, el3, el1], added: [el3], removed: [el1], - moved: [el2], + unchanged: [el2], finishRemoved: expect.any(Function), - }); + } satisfies OnChangeParams); const done1 = fn.mock.calls[0]![0].finishRemoved; @@ -125,11 +127,12 @@ describe("createListTransition", () => { expect(result()).toHaveLength(3); expect(fn).toHaveBeenCalledTimes(2); expect(fn).toHaveBeenLastCalledWith({ + list: [el2, el3, el1], added: [], removed: [el2, el3], - moved: [], + unchanged: [], finishRemoved: expect.any(Function), - }); + } satisfies OnChangeParams); const done2 = fn.mock.calls[1]![0].finishRemoved; @@ -144,6 +147,62 @@ describe("createListTransition", () => { dispose(); }); + it("removes elements immediately if enabled", () => { + createRoot(dispose => { + const [children, setChildren] = createSignal([el1, el2]); + const fn = vi.fn(); + + const result = createListTransition(children, { + onChange: fn, + exitMethod: "remove", + }); + expect(result()).toHaveLength(2); + + setChildren([el2, el3]); + expect(result()).toHaveLength(2); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + list: [el2, el3], + added: [el3], + removed: [el1], + unchanged: [el2], + finishRemoved: expect.any(Function), + } satisfies OnChangeParams); + + dispose(); + }); + + it("keeps index if removed elements if enabled", () => { + createRoot(dispose => { + const [children, setChildren] = createSignal([el1, el2, el3]); + const fn = vi.fn(); + + const result = createListTransition(children, { + onChange: fn, + exitMethod: "keep-index", + }); + expect(result()).toHaveLength(2); + + setChildren([el1, el3]); + expect(result()).toHaveLength(3); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith({ + list: [el1, el2, el3], + added: [el3], + removed: [el1], + unchanged: [el2], + finishRemoved: expect.any(Function), + } satisfies OnChangeParams); + + dispose(); + }); + }); + }); + + /* + + Transitions will run even if under suspense. + it("suspends under Suspense", () => { const onChange = vi.fn(); @@ -190,5 +249,8 @@ describe("createListTransition", () => { }); dispose(); + }); + + */ }); From d42815b36ed06936d782685e433bbe9064f684a2 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Wed, 1 Mar 2023 23:51:39 +0100 Subject: [PATCH 19/33] Remove createEffect from createSwitchTransition --- packages/transition-group/dev/switch-page.tsx | 43 ++++++++----- packages/transition-group/src/index.ts | 44 +++++-------- .../test/list-transition.test.ts | 35 ++++++++++- .../test/switch-transition.test.ts | 63 ++++++++----------- 4 files changed, 102 insertions(+), 83 deletions(-) diff --git a/packages/transition-group/dev/switch-page.tsx b/packages/transition-group/dev/switch-page.tsx index 670e3b3e3..867788a9e 100644 --- a/packages/transition-group/dev/switch-page.tsx +++ b/packages/transition-group/dev/switch-page.tsx @@ -13,6 +13,8 @@ import { import { resolveFirst } from "@solid-primitives/refs"; import { createSwitchTransition, TransitionMode } from "../src"; +const appear = localStorage.getItem("transition-group-appear") === "true"; + function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element { const el = resolveFirst( () => props.children, @@ -20,7 +22,7 @@ function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element ); const animateIn = (el: HTMLElement, done: VoidFunction) => { - if (!el.isConnected) console.warn(el.textContent + " is not connected on enter!!"); + if (!el.isConnected) return done(); const a = el.animate( [ { opacity: 0, transform: "translate(100px)" }, @@ -37,7 +39,7 @@ function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element }; const animateOut = (el: HTMLElement, done: VoidFunction) => { - if (!el.isConnected) console.warn(el.textContent + " is not connected on exit!!"); + if (!el.isConnected) return done(); const left1 = el.getBoundingClientRect().left; animationMap.get(el)?.cancel(); const left2 = el.getBoundingClientRect().left; @@ -56,17 +58,13 @@ function Transition(props: ParentProps & { mode: TransitionMode }): JSX.Element return createSwitchTransition(el, { onEnter(el, done) { - // console.log("onEnter", el); - requestAnimationFrame(() => { - animateIn(el, done); - }); + queueMicrotask(() => animateIn(el, done)); }, onExit(el, done) { - // console.log("onExit", el); animateOut(el, done); }, mode: props.mode, - // appear: true, + appear, }); } @@ -132,15 +130,26 @@ const SwitchPage: Component = () => { return ( <> - +
+ + +

Toggle

diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index 11e55261a..7e5cc3e7c 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -4,7 +4,6 @@ import { createSignal, untrack, $TRACK, - createEffect, createComputed, createMemo, useTransition, @@ -74,7 +73,7 @@ export function createSwitchTransition( const [returned, setReturned] = createSignal[]>( options.appear ? [] : initReturned, ); - const [transitions, setTransitions] = createSignal([], { equals: false }); + const [isTransitionPending] = useTransition(); let next: T | undefined; let isExiting = false; @@ -82,20 +81,13 @@ export function createSwitchTransition( function exitTransition(el: T | undefined, after?: () => void) { if (!el) return after && after(); isExiting = true; - setTransitions( - p => ( - p.push(() => - onExit(el, () => { - batch(() => { - isExiting = false; - setReturned(p => p.filter(e => e !== el)); - after && after(); - }); - }), - ), - p - ), - ); + onExit(el, () => { + batch(() => { + isExiting = false; + setReturned(p => p.filter(e => e !== el)); + after && after(); + }); + }); } function enterTransition(after?: () => void) { @@ -103,7 +95,7 @@ export function createSwitchTransition( if (!el) return after && after(); next = undefined; setReturned(p => [el, ...p]); - setTransitions(p => (p.push(() => onEnter(el, after ?? noop)), p)); + onEnter(el, after ?? noop); } const triggerTransitions: (prev: T | undefined) => void = @@ -119,15 +111,19 @@ export function createSwitchTransition( exitTransition(prev); }; - // update returned array in a pure computation - // so that the updated list is available in user effects createComputed( (prev: T | undefined) => { const el = source(); + if (untrack(isTransitionPending)) { + // wait for pending transition to end before animating + isTransitionPending(); + return prev; + } + if (el !== prev) { next = el; - untrack(() => triggerTransitions(prev)); + batch(() => untrack(() => triggerTransitions(prev))); } return el; @@ -138,14 +134,6 @@ export function createSwitchTransition( options.appear ? undefined : initSource, ); - // call transitions in effect to suspend them under Suspense - createEffect(() => { - const queue = transitions(); - const copy = queue.slice(); - queue.length = 0; - untrack(() => copy.forEach(cb => cb())); - }); - return returned; } diff --git a/packages/transition-group/test/list-transition.test.ts b/packages/transition-group/test/list-transition.test.ts index aa233f692..4c85bb976 100644 --- a/packages/transition-group/test/list-transition.test.ts +++ b/packages/transition-group/test/list-transition.test.ts @@ -1,5 +1,5 @@ -import { describe, it, expect, vi } from "vitest"; -import { createRoot, createSignal } from "solid-js"; +import { describe, it, test, expect, vi } from "vitest"; +import { createEffect, createRoot, createSignal, untrack } from "solid-js"; import { createListTransition, OnListChange } from "../src"; type OnChangeParams = Parameters>[0]; @@ -253,4 +253,35 @@ describe("createListTransition", () => { }); */ + + test("updated list should be available in user effects", () => { + let effRuns = 0; + + const dispose = createRoot(dispose => { + const [children, setChildren] = createSignal([]); + + createEffect(() => { + effRuns++; + children(); + expect(untrack(result), "effect after root").toHaveLength(1); + expect(untrack(result)[0]).toBe(el1); + }); + + const result = createListTransition(children, { + onChange: () => {}, + exitMethod: "remove", + }); + expect(result(), "initial").toHaveLength(0); + + setChildren([el1]); + expect(result(), "after sync assign").toHaveLength(1); + expect(result()[0]).toBe(el1); + + return dispose; + }); + + expect(effRuns).toBe(1); + + dispose(); + }); }); diff --git a/packages/transition-group/test/switch-transition.test.ts b/packages/transition-group/test/switch-transition.test.ts index bc97a2d64..60e33d8b4 100644 --- a/packages/transition-group/test/switch-transition.test.ts +++ b/packages/transition-group/test/switch-transition.test.ts @@ -1,18 +1,10 @@ import { describe, it, expect, vi, test } from "vitest"; -import { - createEffect, - createRenderEffect, - createResource, - createRoot, - createSignal, - Suspense, -} from "solid-js"; +import { createEffect, createRoot, createSignal, untrack } from "solid-js"; import { createSwitchTransition } from "../src"; describe("createSwitchTransition", () => { const el1 = document.createElement("div"); const el2 = document.createElement("div"); - const el3 = document.createElement("div"); it("renders items immediately on the initial run", () => createRoot(dispose => { @@ -23,19 +15,17 @@ describe("createSwitchTransition", () => { })); it("reacts to changes to children", () => { - const [children, setChildren] = createSignal(); + createRoot(dispose => { + const [children, setChildren] = createSignal(); - const { result, dispose } = createRoot(dispose => { const result = createSwitchTransition(children, {}); expect(result()).toHaveLength(0); - return { result, dispose }; - }); - expect(result()).toHaveLength(0); - setChildren(el1); - expect(result()).toHaveLength(1); - expect(result()[0]).toBe(el1); - dispose(); + setChildren(el1); + expect(result()).toHaveLength(1); + expect(result()[0]).toBe(el1); + dispose(); + }); }); it("transitions element out", () => { @@ -79,23 +69,20 @@ describe("createSwitchTransition", () => { }); it("transitions element in on appear", () => { - const fn = vi.fn(); + createRoot(dispose => { + const fn = vi.fn(); - const { dispose, result } = createRoot(dispose => { const result = createSwitchTransition(() => el1, { onEnter: fn, appear: true, }); - expect(result()).toHaveLength(1); - expect(fn).not.toHaveBeenCalled(); - return { result, dispose }; - }); - expect(result()).toHaveLength(1); - expect(fn).toHaveBeenCalledOnce(); - expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); + expect(result()).toHaveLength(1); + expect(fn).toHaveBeenCalledOnce(); + expect(fn).toHaveBeenCalledWith(el1, expect.any(Function)); - dispose(); + dispose(); + }); }); it("toggles between two elements", () => { @@ -208,6 +195,10 @@ describe("createSwitchTransition", () => { dispose(); }); + /* + + The transitions are called in a pure computation, so they are still working under suspense + it("suspends under Suspense", () => { const onEnter = vi.fn(); const onExit = vi.fn(); @@ -253,6 +244,8 @@ describe("createSwitchTransition", () => { dispose(); }); + */ + test("updated list should be available in user effects", () => { let effRuns = 0; @@ -262,24 +255,22 @@ describe("createSwitchTransition", () => { createEffect(() => { effRuns++; children(); - if (effRuns === 1) { - expect(result(), "effect after root").toHaveLength(2); - } else { - expect(result(), "affect after transitions").toHaveLength(1); - expect(result()[0]).toBe(el2); - } + expect(untrack(result), "effect after root").toHaveLength(1); + expect(untrack(result)[0]).toBe(el2); }); const result = createSwitchTransition(children, {}); expect(result(), "initial").toHaveLength(1); + expect(result()[0]).toBe(el1); setChildren(el2); - expect(result(), "after sync assign").toHaveLength(2); + expect(result(), "after sync assign").toHaveLength(1); + expect(result()[0]).toBe(el2); return dispose; }); - expect(effRuns).toBe(2); + expect(effRuns).toBe(1); dispose(); }); From 11ac3dc57c579aaaf68036a5c89adf04a549102b Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Thu, 2 Mar 2023 19:34:23 +0100 Subject: [PATCH 20/33] Improve documentation --- packages/transition-group/README.md | 68 +++++++++++++++++++++++--- packages/transition-group/src/index.ts | 33 +++++++++---- 2 files changed, 85 insertions(+), 16 deletions(-) diff --git a/packages/transition-group/README.md b/packages/transition-group/README.md index cb6871f14..7f49b7354 100644 --- a/packages/transition-group/README.md +++ b/packages/transition-group/README.md @@ -41,8 +41,11 @@ It will observe the source and return a signal with array of elements to be rend - `options` transition options: - `onEnter` - a function to be called when a new element is entering. It receives the element and a callback to be called when the transition is done. + - `onExit` - a function to be called when an exiting element is leaving. It receives the element and a callback to be called when the transition is done. + - `mode` - transition mode. Defaults to `"parallel"`. Other options are `"out-in"` and `"in-out"`. + - `appear` - whether to run the transition on the initial element. Defaults to `false`. If enabled, the initial element will still be included in the initial render (for SSR), but the transition fill happen when the first client-side effect is run. So to avoid the initial element to be visible, you can set the initial element's style to `display: none` and set it to `display: block` in the `onEnter` callback. @@ -57,8 +60,8 @@ const [el, setEl] = createSignal(); const rendered = createSwitchTransition(el, { onEnter(el, done) { // the enter callback is called before the element is inserted into the DOM - // so run the animation in the next animation frame - requestAnimationFrame(() => { + // so run the animation in the next animation frame / microtask + queueMicrotask(() => { /*...*/ }); }, @@ -71,6 +74,35 @@ const rendered = createSwitchTransition(el, { setEl(refToHtmlElement); ``` +### Resolving JSX + +Usually the source will be a JSX element, and you will want to resolve it to a DOM element before passing it to `createSwitchTransition`. It leaves the resolving to you, so you can do it in any way you want. + +For example, you can `children` helper from `solid-js`, to get the first found HTML element. + +```ts +import { children } from "solid-js"; +import { createSwitchTransition } from "@solid-primitives/transition-group"; + +const resolved = children(() => props.children); +const filtered = createMemo(() => resolved.asArray().find(el => el instanceof HTMLElement)); +return createSwitchTransition(filtered, { + /*...*/ +}); +``` + +Or use a `resolveFirst` helper from `@solid-primitives/refs` + +```ts +import { resolveFirst } from "@solid-primitives/refs"; +import { createSwitchTransition } from "@solid-primitives/transition-group"; + +const resolved = resolveFirst(() => props.children); +return createSwitchTransition(resolved, { + /*...*/ +}); +``` + ## `createListTransition` Create an element list transition interface for changes to the list of elements. @@ -88,9 +120,16 @@ It will observe the source and return a signal with array of elements to be rend - `options` transition options: - `onChange` - a function to be called when the list changes. It receives the list of added elements, removed elements, and moved elements. It also receives a callback to be called when the removed elements are finished animating (they can be removed from the DOM). + - `appear` - whether to run the transition on the initial elements. Defaults to `false`. - If enabled, the initial elements will still be included in the initial render (for SSR), but the transition fill happen when the first client-side effect is run. So to avoid the initial elements to be visible, you can set the initial element's style to `display: none` and set it to `display: block` in the `onEnter` callback. + If enabled, the initial elements will still be included in the initial render (for SSR), but the transition fill happen when the first client-side effect is run. So to avoid the initial elements to be visible, you can set the initial element's style to `display: none` and set it to `display: block` in the `onChange` callback. + + - `exitMethod` - This controls how the elements exit. + + - `"remove"` removes the element immediately. + - `"move-to-end"` (default) will move elements which have exited to the end of the array. + - `"keep-index"` will splice them in at their previous index. Returns a signal with an array of the current elements and exiting previous elements. @@ -100,10 +139,10 @@ import { createListTransition } from "@solid-primitives/transition-group"; const [els, setEls] = createSignal([]); const rendered = createListTransition(els, { - onChange({ added, removed, moved, finishRemoved }) { + onChange({ list, added, removed, unchanged, finishRemoved }) { // the callback is called before the added elements are inserted into the DOM - // so run the animation in the next animation frame - requestAnimationFrame(() => { + // so run the animation in the next animation frame / microtask + queueMicrotask(() => { /*...*/ }); @@ -116,6 +155,23 @@ const rendered = createListTransition(els, { setEls([...refsToHTMLElements]); ``` +### Resolving JSX + +Usually the source will be a JSX Element, and you will want to resolve it to a list of DOM elements before passing it to `createListTransition`. It leaves the resolving to you, so you can do it in any way you want. + +For example, you can `children` helper from `solid-js`, and filter out non-HTML elements: + +```ts +import { children } from "solid-js"; +import { createListTransition } from "@solid-primitives/transition-group"; + +const resolved = children(() => props.children); +const filtered = createMemo(() => resolved.asArray().filter(el => el instanceof HTMLElement)); +return createListTransition(filtered, { + /*...*/ +}); +``` + ## Demo Deployed example: diff --git a/packages/transition-group/src/index.ts b/packages/transition-group/src/index.ts index 7e5cc3e7c..eda9895e0 100644 --- a/packages/transition-group/src/index.ts +++ b/packages/transition-group/src/index.ts @@ -17,9 +17,26 @@ export type TransitionMode = "out-in" | "in-out" | "parallel"; export type OnTransition = (el: T, done: () => void) => void; export type SwitchTransitionOptions = { + /** + * a function to be called when a new element is entering. {@link OnTransition} + * + * It receives the element and a callback to be called when the transition is done. + */ onEnter?: OnTransition; + /** + * a function to be called when an exiting element is leaving. {@link OnTransition} + * + * It receives the element and a callback to be called when the transition is done. + * The element is kept in the DOM until the done() callback is called. + */ onExit?: OnTransition; + /** + * transition mode. {@link TransitionMode} + * + * Defaults to `"parallel"`. Other options are `"out-in"` and `"in-out"`. + */ mode?: TransitionMode; + /** whether to run the transition on the initial elements. Defaults to `false` */ appear?: boolean; }; @@ -31,11 +48,7 @@ export type SwitchTransitionOptions = { * * @param source a signal with the current element. Any nullish value will mean there is no element. * Any object can used as the source, but most likely you will want to use a `HTMLElement` or `SVGElement`. - * @param options transition options: - * - `onEnter` - a function to be called when a new element is entering. It receives the element and a callback to be called when the transition is done. - * - `onExit` - a function to be called when an exiting element is leaving. It receives the element and a callback to be called when the transition is done. - * - `mode` - transition mode. Defaults to `"parallel"`. Other options are `"out-in"` and `"in-out"`. - * - `appear` - whether to run the transition on the initial element. Defaults to `false`. + * @param options transition options {@link SwitchTransitionOptions} * @returns a signal with an array of the current element and exiting previous elements. * * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createSwitchTransition @@ -46,8 +59,8 @@ export type SwitchTransitionOptions = { * const rendered = createSwitchTransition(el, { * onEnter(el, done) { * // the enter callback is called before the element is inserted into the DOM - * // so run the animation in the next animation frame - * requestAnimationFrame(() => { ... }) + * // so run the animation in the next animation frame / microtask + * queueMicrotask(() => { ... }) * }, * onExit(el, done) { * // the exitting element is kept in the DOM until the done() callback is called @@ -187,10 +200,10 @@ export type ListTransitionOptions = { * const [els, setEls] = createSignal([]); * * const rendered = createListTransition(els, { - * onChange({ added, removed, moved, finishRemoved }) { + * onChange({ list, added, removed, unchanged, finishRemoved }) { * // the callback is called before the added elements are inserted into the DOM - * // so run the animation in the next animation frame - * requestAnimationFrame(() => { ... }) + * // so run the animation in the next animation frame / microtask + * queueMicrotask(() => { ... }) * * // the removed elements are kept in the DOM until the finishRemoved() callback is called * finishRemoved(removed); From ba06b3349180232940da9e1f34e3cb8a47084b63 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Thu, 2 Mar 2023 19:47:16 +0100 Subject: [PATCH 21/33] Bump beta version --- .changeset/fair-kangaroos-beam.md | 5 +++++ .changeset/pre.json | 4 +++- packages/date/CHANGELOG.md | 7 +++++++ packages/date/package.json | 4 ++-- packages/memo/CHANGELOG.md | 6 ++++++ packages/memo/package.json | 2 +- packages/transition-group/CHANGELOG.md | 6 ++++++ packages/transition-group/package.json | 2 +- 8 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 .changeset/fair-kangaroos-beam.md diff --git a/.changeset/fair-kangaroos-beam.md b/.changeset/fair-kangaroos-beam.md new file mode 100644 index 000000000..4e3647407 --- /dev/null +++ b/.changeset/fair-kangaroos-beam.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/transition-group": patch +--- + +Remove effects - change the rendered array and call transitions in a pure computation. diff --git a/.changeset/pre.json b/.changeset/pre.json index 731425b9c..d70daf5a0 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -72,7 +72,9 @@ }, "changesets": [ "dirty-kiwis-exist", + "fair-kangaroos-beam", "fresh-maps-worry", - "itchy-suits-attack" + "itchy-suits-attack", + "seven-onions-smile" ] } diff --git a/packages/date/CHANGELOG.md b/packages/date/CHANGELOG.md index f7e97e5cb..ab82d81e4 100644 --- a/packages/date/CHANGELOG.md +++ b/packages/date/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/date +## 2.0.9-beta.0 + +### Patch Changes + +- Updated dependencies [d7b907e6] + - @solid-primitives/memo@1.2.0-beta.0 + ## 2.0.8 ### Patch Changes diff --git a/packages/date/package.json b/packages/date/package.json index 243ac9dec..d629b32dc 100644 --- a/packages/date/package.json +++ b/packages/date/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/date", - "version": "2.0.8", + "version": "2.0.9-beta.0", "description": "Collection of reactive primitives and utility functions, providing easier ways to deal with dates in SolidJS", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -59,7 +59,7 @@ "date-fns": "^2.29.2" }, "dependencies": { - "@solid-primitives/memo": "^1.1.5", + "@solid-primitives/memo": "^1.2.0-beta.0", "@solid-primitives/timer": "^1.3.6", "@solid-primitives/utils": "^5.2.1" }, diff --git a/packages/memo/CHANGELOG.md b/packages/memo/CHANGELOG.md index 2f1f50097..3d74792c5 100644 --- a/packages/memo/CHANGELOG.md +++ b/packages/memo/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/memo +## 1.2.0-beta.0 + +### Minor Changes + +- d7b907e6: Major improvements to how createWritableMemo and createLatest works. + ## 1.1.5 ### Patch Changes diff --git a/packages/memo/package.json b/packages/memo/package.json index a6a176235..b7173e702 100644 --- a/packages/memo/package.json +++ b/packages/memo/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/memo", - "version": "1.1.5", + "version": "1.2.0-beta.0", "description": "Collection of custom memo primitives. They extend Solid's createMemo functionality while keeping the usage similar.", "author": "Damian Tarnawski @thetarnav ", "contributors": [], diff --git a/packages/transition-group/CHANGELOG.md b/packages/transition-group/CHANGELOG.md index 37048765b..b587a9856 100644 --- a/packages/transition-group/CHANGELOG.md +++ b/packages/transition-group/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/transition-group +## 0.0.1-beta.2 + +### Patch Changes + +- Remove effects - change the rendered array and call transitions in a pure computation. + ## 0.0.1-beta.1 ### Patch Changes diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json index a01d261b6..fa2403d06 100644 --- a/packages/transition-group/package.json +++ b/packages/transition-group/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/transition-group", - "version": "0.0.1-beta.1", + "version": "0.0.1-beta.2", "description": "Reactive primitives for implementing transition effects in SolidJS", "author": "Damian Tarnawski ", "contributors": [], From d1ea0d5c78a54a9a80cd7cc2e6420441cc7db9ad Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Thu, 2 Mar 2023 19:49:26 +0100 Subject: [PATCH 22/33] Update lockfile --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be0c5cdb7..f7fe755d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -171,7 +171,7 @@ importers: packages/date: specifiers: '@solid-primitives/event-listener': ^2.2.7 - '@solid-primitives/memo': ^1.1.5 + '@solid-primitives/memo': ^1.2.0-beta.0 '@solid-primitives/timer': ^1.3.6 '@solid-primitives/utils': ^5.2.1 date-fns: ^2.29.2 From d6559a32e77e96da2c8d5bef414954fe8fc3df47 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Thu, 2 Mar 2023 22:11:33 +0100 Subject: [PATCH 23/33] Major changes to `refs` package Major API changes. Bump stage to 2. `mapRemoved`, `Refs`, `Ref`, `unmount`, `refs`, `getChangedItems`, `getAddedItems` and `getRemovedItems` has been removed. Add `getResolvedElements`, `resolveElements`, `getFirstChild` and `resolveFirst` primitives. Improve `mergeRefs` to allow an array of refs to be passed in. --- .changeset/dirty-kiwis-exist.md | 5 - .changeset/flat-fishes-pay.md | 5 + .changeset/khaki-geckos-punch.md | 11 + packages/refs/README.md | 2 +- packages/refs/package.json | 12 +- packages/refs/src/index.ts | 495 ++---- packages/refs/test/index.test.ts | 10 +- packages/refs/test/mergeRefs.test.tsx | 8 +- packages/transition-group/src/index.ts | 3 - packages/utils/src/types.ts | 7 +- pnpm-lock.yaml | 2265 ++++++++++++------------ 11 files changed, 1237 insertions(+), 1586 deletions(-) delete mode 100644 .changeset/dirty-kiwis-exist.md create mode 100644 .changeset/flat-fishes-pay.md create mode 100644 .changeset/khaki-geckos-punch.md diff --git a/.changeset/dirty-kiwis-exist.md b/.changeset/dirty-kiwis-exist.md deleted file mode 100644 index 1edfad13f..000000000 --- a/.changeset/dirty-kiwis-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/refs": minor ---- - -Add `findFirst` and `resolveFirst` primitives diff --git a/.changeset/flat-fishes-pay.md b/.changeset/flat-fishes-pay.md new file mode 100644 index 000000000..4a531f706 --- /dev/null +++ b/.changeset/flat-fishes-pay.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/utils": minor +--- + +Export `ResolvedJSXElement` and `ResolvedChildren` types from utils diff --git a/.changeset/khaki-geckos-punch.md b/.changeset/khaki-geckos-punch.md new file mode 100644 index 000000000..a2a0b1c00 --- /dev/null +++ b/.changeset/khaki-geckos-punch.md @@ -0,0 +1,11 @@ +--- +"@solid-primitives/refs": major +--- + +Major API changes. Bump stage to 2. + +`mapRemoved`, `Refs`, `Ref`, `unmount`, `refs`, `getChangedItems`, `getAddedItems` and `getRemovedItems` has been removed. + +Add `getResolvedElements`, `resolveElements`, `getFirstChild` and `resolveFirst` primitives. + +Improve `mergeRefs` to allow an array of refs to be passed in. diff --git a/packages/refs/README.md b/packages/refs/README.md index 1256effd0..ff0b2c156 100644 --- a/packages/refs/README.md +++ b/packages/refs/README.md @@ -7,7 +7,7 @@ [![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/refs?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/refs) [![version](https://img.shields.io/npm/v/@solid-primitives/refs?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/refs) -[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) +[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) Collection of primitives, components and directives that help managing references to JSX elements, keeping track of mounted/unmounted elements. diff --git a/packages/refs/package.json b/packages/refs/package.json index 8595c7caf..69012dcc0 100644 --- a/packages/refs/package.json +++ b/packages/refs/package.json @@ -11,16 +11,13 @@ }, "primitive": { "name": "refs", - "stage": 1, + "stage": 2, "list": [ "mergeRefs", + "resolveElements", + "resolveFirst", "elements", - "refs", - "mapRemoved", - "Children", - "Refs", - "Ref", - "unmount" + "Children" ], "category": "Control Flow" }, @@ -56,7 +53,6 @@ ], "dependencies": { "@solid-primitives/immutable": "^0.1.7", - "@solid-primitives/rootless": "^1.2.5", "@solid-primitives/utils": "^5.2.1" }, "devDependencies": { diff --git a/packages/refs/src/index.ts b/packages/refs/src/index.ts index 6f92a0ba2..5af0e4f97 100644 --- a/packages/refs/src/index.ts +++ b/packages/refs/src/index.ts @@ -1,179 +1,178 @@ -import { filterInstance, remove, removeItems } from "@solid-primitives/immutable"; -import { createSubRoot } from "@solid-primitives/rootless"; -import { - access, - asArray, - Directive, - ExtractIfPossible, - ItemsOf, - Many, -} from "@solid-primitives/utils"; -import { - Accessor, - children, - createComputed, - createMemo, - createSignal, - JSX, - on, - onCleanup, - onMount, - untrack, - getOwner, - Setter, -} from "solid-js"; +import { filterInstance } from "@solid-primitives/immutable"; +import { asArray, chain, ExtractIfPossible, Many, ResolvedChildren } from "@solid-primitives/utils"; +import { Accessor, children, createComputed, createMemo, JSX, on, onCleanup } from "solid-js"; -declare module "solid-js" { - namespace JSX { - interface Directives { - unmount: (el: Element) => void; - } - } -} -export type E = JSX.Element; +/** + * Type for the `ref` prop + */ +export type Ref = T | ((el: T) => void) | undefined; /** - * Component properties with types for `ref` + * Component properties with types for `ref` prop * ```ts * { - * ref?: Element | ((el: Element) => void); + * ref?: T | ((el: T) => void); * } * ``` */ -export interface RefProps { - ref?: T | ((el: T) => void); +export interface RefProps { + ref?: Ref; } -/** - * Type of resolved JSX elements provided by Solid's `children` helper. - */ -export type ResolvedChildren = ReturnType>; - /** * Utility for using jsx refs both for local variables and providing it to the `props.ref` for component consumers. - * @param setRef use this to set local variables - * @param propsRef for forwarding the ref to `props.ref` + * @param refs list of ref setters. Can be a `props.ref` prop for ref forwarding or a setter to a local variable (`el => ref = el`). * @example * ```tsx * interface ButtonProps { - * ref?: HTMLButtonElement | ((el: HTMLButtonElement) => void); + * ref?: Ref * } * const Button = (props: ButtonProps) => { - * let ref!: HTMLButtonElement + * let ref: HTMLButtonElement | undefined * onMount(() => { * // use the local ref * }) - * return
- - - - - - - -
- {/* console.log(e)} refs={setRefs}> */} - (clear = fn)}> - -

Hello

- World - {show() &&
ID 0
} - {/* - ref={el => console.log(el)} - onMount={el => console.log("Mounted", el)} - > */} - -
ID 1
-
- {/* */} - -
console.log("Unmounted", el)}> - ID 2 -
-
ID 3
-
- i)}> - {i =>
{i + 1}.
} -
-
-
- {/*
*/} -
- - ); -}; -export default App; diff --git a/packages/refs/package.json b/packages/refs/package.json index 208df0b3e..e6711b791 100644 --- a/packages/refs/package.json +++ b/packages/refs/package.json @@ -16,7 +16,6 @@ "mergeRefs", "resolveElements", "resolveFirst", - "elements", "Children" ], "category": "Control Flow" @@ -84,12 +83,12 @@ "primitives" ], "dependencies": { - "@solid-primitives/immutable": "^0.1.7", "@solid-primitives/utils": "^5.2.1" }, "devDependencies": { "solid-app-router": "^0.4.2", - "solid-transition-group": "^0.0.13" + "solid-transition-group": "^0.0.13", + "@solid-primitives/immutable": "^0.1.7" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/refs/src/index.ts b/packages/refs/src/index.ts index 7b2f292ad..f66fb269c 100644 --- a/packages/refs/src/index.ts +++ b/packages/refs/src/index.ts @@ -1,7 +1,8 @@ -import { filterInstance } from "@solid-primitives/immutable"; -import { asArray, chain, ExtractIfPossible, Many, ResolvedChildren } from "@solid-primitives/utils"; +import { chain, ResolvedChildren } from "@solid-primitives/utils"; import { Accessor, children, createComputed, createMemo, JSX, on, onCleanup } from "solid-js"; +export type { ResolvedChildren, ResolvedJSXElement } from "@solid-primitives/utils"; + /** * Type for the `ref` prop */ @@ -20,14 +21,14 @@ export interface RefProps { } /** - * Utility for using jsx refs both for local variables and providing it to the `props.ref` for component consumers. + * Utility for chaining multiple `ref` assignments with `props.ref` forwarding. * @param refs list of ref setters. Can be a `props.ref` prop for ref forwarding or a setter to a local variable (`el => ref = el`). * @example * ```tsx * interface ButtonProps { * ref?: Ref * } - * const Button = (props: ButtonProps) => { + * function Button (props: ButtonProps) { * let ref: HTMLButtonElement | undefined * onMount(() => { * // use the local ref @@ -191,27 +192,6 @@ export function resolveFirst( return createMemo(() => getFirstChild(children(), process.env.SSR ? serverPredicate : predicate)); } -/** - * Reactive signal that filters out non-element items from a signal array. - * @param fn Array signal - * @returns Array signal - * @example - * const resolved = children(() => props.children); - * const refs = elements(resolved); - * refs() // T: Element[] - * // or narrow down type of the Element - * const refs = elements(resolved, HTMLElement); - * refs() // T: HTMLElement[] - */ -export function elements(fn: Accessor>): Accessor[]>; -export function elements( - fn: Accessor>, - ...types: T -): Accessor>[]>; -export function elements(fn: Accessor, ...types: (typeof Element)[]): Accessor { - return createMemo(() => filterInstance(asArray(fn()), ...(types.length ? types : [Element]))); -} - /** * Solid's `children` helper in component form. Access it's children elements by `get` property. * @property `get` – get resolved elements, fired every time the children change diff --git a/packages/refs/test/index.test.ts b/packages/refs/test/index.test.ts index e6c2d153e..254dd7950 100644 --- a/packages/refs/test/index.test.ts +++ b/packages/refs/test/index.test.ts @@ -1,41 +1,13 @@ import { describe, test, expect } from "vitest"; import { createRoot, createSignal } from "solid-js"; import { removeItems } from "@solid-primitives/immutable"; -import { elements, getResolvedElements, resolveElements } from "../src"; +import { getResolvedElements, resolveElements } from "../src"; const el1 = document.createElement("div"); const el2 = document.createElement("span"); const el3 = document.createElementNS("http://www.w3.org/2000/svg", "svg"); const el4 = document.createElement("h1"); -describe("elements()", () => { - test("get a signal of elements array", () => - createRoot(dispose => { - const _arr = [123456, undefined, el2, NaN, el1, null, "HELLO", el3, el4, [1, 2, 3]]; - const [arr, setArr] = createSignal(_arr); - const els = elements(arr); - - expect(els().length).toBe(4); - els().forEach(el => { - expect(el).instanceOf(Element); - }); - - setArr([]); - expect(els().length).toBe(0); - - const htmlEls = elements(arr, HTMLElement); - expect(htmlEls().length).toBe(0); - - setArr(_arr); - expect(htmlEls().length).toBe(3); - htmlEls().forEach(el => { - expect(el).instanceOf(HTMLElement); - }); - - dispose(); - })); -}); - describe("resolveElements", () => { test("resolves elements", () => { const el1 = document.createElement("div"); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0f7c1fb0..5b1d8e30a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -518,10 +518,10 @@ importers: solid-js: ^1.6.0 solid-transition-group: ^0.0.13 dependencies: - '@solid-primitives/immutable': link:../immutable '@solid-primitives/utils': link:../utils solid-js: 1.6.11 devDependencies: + '@solid-primitives/immutable': link:../immutable solid-app-router: 0.4.2_solid-js@1.6.11 solid-transition-group: 0.0.13_solid-js@1.6.11 From 92dc1cfb4f2cce725a14653f762a0b1befda3e68 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Fri, 3 Mar 2023 09:47:46 +0100 Subject: [PATCH 26/33] Bump beta version --- .changeset/pre.json | 3 ++- packages/active-element/CHANGELOG.md | 8 ++++++++ packages/active-element/package.json | 6 +++--- packages/audio/CHANGELOG.md | 7 +++++++ packages/audio/package.json | 4 ++-- packages/autofocus/CHANGELOG.md | 7 +++++++ packages/autofocus/package.json | 4 ++-- packages/bounds/CHANGELOG.md | 9 +++++++++ packages/bounds/package.json | 8 ++++---- packages/clipboard/CHANGELOG.md | 7 +++++++ packages/clipboard/package.json | 4 ++-- packages/connectivity/CHANGELOG.md | 9 +++++++++ packages/connectivity/package.json | 8 ++++---- packages/controlled-props/CHANGELOG.md | 7 +++++++ packages/controlled-props/package.json | 4 ++-- packages/cursor/CHANGELOG.md | 7 +++++++ packages/cursor/package.json | 4 ++-- packages/date/CHANGELOG.md | 8 ++++++++ packages/date/package.json | 8 ++++---- packages/destructure/CHANGELOG.md | 7 +++++++ packages/destructure/package.json | 4 ++-- packages/event-bus/CHANGELOG.md | 8 ++++++++ packages/event-bus/package.json | 6 +++--- packages/event-listener/CHANGELOG.md | 7 +++++++ packages/event-listener/package.json | 4 ++-- packages/geolocation/CHANGELOG.md | 7 +++++++ packages/geolocation/package.json | 4 ++-- packages/graphql/CHANGELOG.md | 7 +++++++ packages/graphql/package.json | 4 ++-- packages/immutable/CHANGELOG.md | 7 +++++++ packages/immutable/package.json | 4 ++-- packages/intersection-observer/CHANGELOG.md | 7 +++++++ packages/intersection-observer/package.json | 6 +++--- packages/jsx-parser/CHANGELOG.md | 7 +++++++ packages/jsx-parser/package.json | 4 ++-- packages/keyboard/CHANGELOG.md | 9 +++++++++ packages/keyboard/package.json | 8 ++++---- packages/keyed/package.json | 6 +++--- packages/map/CHANGELOG.md | 6 ++++++ packages/map/package.json | 4 ++-- packages/media/CHANGELOG.md | 9 +++++++++ packages/media/package.json | 8 ++++---- packages/memo/CHANGELOG.md | 7 +++++++ packages/memo/package.json | 6 +++--- packages/mouse/CHANGELOG.md | 9 +++++++++ packages/mouse/package.json | 10 +++++----- packages/mutation-observer/CHANGELOG.md | 7 +++++++ packages/mutation-observer/package.json | 4 ++-- packages/page-visibility/CHANGELOG.md | 9 +++++++++ packages/page-visibility/package.json | 8 ++++---- packages/pagination/CHANGELOG.md | 8 ++++++++ packages/pagination/package.json | 6 +++--- packages/pointer/CHANGELOG.md | 10 ++++++++++ packages/pointer/package.json | 10 +++++----- packages/promise/CHANGELOG.md | 7 +++++++ packages/promise/package.json | 4 ++-- packages/props/CHANGELOG.md | 7 +++++++ packages/props/package.json | 4 ++-- packages/raf/CHANGELOG.md | 7 +++++++ packages/raf/package.json | 4 ++-- packages/range/CHANGELOG.md | 7 +++++++ packages/range/package.json | 4 ++-- packages/refs/CHANGELOG.md | 21 +++++++++++++++++++++ packages/refs/package.json | 6 +++--- packages/resize-observer/CHANGELOG.md | 9 +++++++++ packages/resize-observer/package.json | 8 ++++---- packages/rootless/CHANGELOG.md | 7 +++++++ packages/rootless/package.json | 4 ++-- packages/scroll/CHANGELOG.md | 9 +++++++++ packages/scroll/package.json | 8 ++++---- packages/set/CHANGELOG.md | 6 ++++++ packages/set/package.json | 4 ++-- packages/signal-builders/CHANGELOG.md | 8 ++++++++ packages/signal-builders/package.json | 6 +++--- packages/storage/CHANGELOG.md | 7 +++++++ packages/storage/package.json | 4 ++-- packages/stream/CHANGELOG.md | 7 +++++++ packages/stream/package.json | 4 ++-- packages/styles/CHANGELOG.md | 8 ++++++++ packages/styles/package.json | 6 +++--- packages/transition-group/package.json | 4 ++-- packages/trigger/CHANGELOG.md | 7 +++++++ packages/trigger/package.json | 4 ++-- packages/upload/CHANGELOG.md | 7 +++++++ packages/upload/package.json | 4 ++-- packages/utils/CHANGELOG.md | 6 ++++++ packages/utils/package.json | 2 +- 87 files changed, 450 insertions(+), 119 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d70daf5a0..e2c872e96 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -71,10 +71,11 @@ "@solid-primitives/workers": "0.2.3" }, "changesets": [ - "dirty-kiwis-exist", "fair-kangaroos-beam", + "flat-fishes-pay", "fresh-maps-worry", "itchy-suits-attack", + "khaki-geckos-punch", "seven-onions-smile" ] } diff --git a/packages/active-element/CHANGELOG.md b/packages/active-element/CHANGELOG.md index 54af928da..4b6cd9518 100644 --- a/packages/active-element/CHANGELOG.md +++ b/packages/active-element/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/active-element +## 2.0.10-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + ## 2.0.9 ### Patch Changes diff --git a/packages/active-element/package.json b/packages/active-element/package.json index ccc0c09f4..259f75ab2 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.9", + "version": "2.0.10-beta.0", "description": "A reactive document.activeElement. Check which element is currently focused.", "author": "Damian Tarnawski @thetarnav ", "contributors": [ @@ -83,8 +83,8 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "^2.2.7", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/event-listener": "^2.2.8-beta.0", + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/audio/CHANGELOG.md b/packages/audio/CHANGELOG.md index d14476a66..beffee587 100644 --- a/packages/audio/CHANGELOG.md +++ b/packages/audio/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/audio +## 1.3.9-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.3.8 ### Patch Changes diff --git a/packages/audio/package.json b/packages/audio/package.json index 8873557eb..b5fa0ca7e 100644 --- a/packages/audio/package.json +++ b/packages/audio/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/audio", - "version": "1.3.8", + "version": "1.3.9-beta.0", "description": "Primitives to manage audio and single sounds.", "author": "David Di Biase ", "license": "MIT", @@ -85,7 +85,7 @@ "solid-heroicons": "^3.1.1" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/autofocus/CHANGELOG.md b/packages/autofocus/CHANGELOG.md index 48e09833d..2a2bbdb9a 100644 --- a/packages/autofocus/CHANGELOG.md +++ b/packages/autofocus/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/autofocus +## 0.0.102-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.0.101 ### Patch Changes diff --git a/packages/autofocus/package.json b/packages/autofocus/package.json index 1f1188408..e3317616f 100644 --- a/packages/autofocus/package.json +++ b/packages/autofocus/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/autofocus", - "version": "0.0.101", + "version": "0.0.102-beta.0", "description": "Primitives for autofocusing HTML elements", "author": "jer3m01 ", "contributors": [], @@ -56,7 +56,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "typesVersions": {} } diff --git a/packages/bounds/CHANGELOG.md b/packages/bounds/CHANGELOG.md index 80288770a..2decff9ff 100644 --- a/packages/bounds/CHANGELOG.md +++ b/packages/bounds/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/bounds +## 0.0.109-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/resize-observer@2.0.11-beta.0 + ## 0.0.108 ### Patch Changes diff --git a/packages/bounds/package.json b/packages/bounds/package.json index 195add4ee..980fb717c 100644 --- a/packages/bounds/package.json +++ b/packages/bounds/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/bounds", - "version": "0.0.108", + "version": "0.0.109-beta.0", "description": "Primitives for tracking HTML element size and position on screen as it changes.", "author": "Damian Tarnawski ", "contributors": [], @@ -87,9 +87,9 @@ "@solid-primitives/scheduled": "workspace:^1.3.1" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.7", - "@solid-primitives/resize-observer": "workspace:^2.0.10", - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", + "@solid-primitives/resize-observer": "workspace:^2.0.11-beta.0", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/clipboard/CHANGELOG.md b/packages/clipboard/CHANGELOG.md index 9a80402f1..c677981f1 100644 --- a/packages/clipboard/CHANGELOG.md +++ b/packages/clipboard/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/clipboard +## 1.5.2-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.5.1 ### Patch Changes diff --git a/packages/clipboard/package.json b/packages/clipboard/package.json index fae7bc692..b1a0f6a06 100644 --- a/packages/clipboard/package.json +++ b/packages/clipboard/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/clipboard", - "version": "1.5.1", + "version": "1.5.2-beta.0", "description": "Primitives for reading and writing to clipboard.", "author": "David Di Biase ", "contributors": [ @@ -88,7 +88,7 @@ ], "testEnvironment": "jsdom", "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/connectivity/CHANGELOG.md b/packages/connectivity/CHANGELOG.md index ec20ab608..af2a08acd 100644 --- a/packages/connectivity/CHANGELOG.md +++ b/packages/connectivity/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/connectivity +## 0.3.9-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 0.3.8 ### Patch Changes diff --git a/packages/connectivity/package.json b/packages/connectivity/package.json index 978a9aef0..c28eb5b13 100644 --- a/packages/connectivity/package.json +++ b/packages/connectivity/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/connectivity", - "version": "0.3.8", + "version": "0.3.9-beta.0", "description": "A navigator.onLine signal.", "author": "Klemen Slavič ", "contributors": [ @@ -83,9 +83,9 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "^2.2.7", - "@solid-primitives/rootless": "^1.2.5", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/event-listener": "^2.2.8-beta.0", + "@solid-primitives/rootless": "^1.2.6-beta.0", + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/controlled-props/CHANGELOG.md b/packages/controlled-props/CHANGELOG.md index 6ad44ba48..361cd7e21 100644 --- a/packages/controlled-props/CHANGELOG.md +++ b/packages/controlled-props/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/controlled-props +## 0.0.7-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.0.6 ### Patch Changes diff --git a/packages/controlled-props/package.json b/packages/controlled-props/package.json index bd2137d4a..bae980826 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.6", + "version": "0.0.7-beta.0", "description": "The primitives in this package allow you to create controlls for component props.", "author": "Alex Lohr ", "contributors": [], @@ -53,7 +53,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/cursor/CHANGELOG.md b/packages/cursor/CHANGELOG.md index 666633644..85b52d6eb 100644 --- a/packages/cursor/CHANGELOG.md +++ b/packages/cursor/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/cursor +## 0.0.107-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.0.106 ### Patch Changes diff --git a/packages/cursor/package.json b/packages/cursor/package.json index e2f5d15d1..cb43aae06 100644 --- a/packages/cursor/package.json +++ b/packages/cursor/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/cursor", - "version": "0.0.106", + "version": "0.0.107-beta.0", "description": "Two simple primitives for setting cursor css property reactively.", "author": "Damian Tarnawski ", "contributors": [], @@ -84,7 +84,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/date/CHANGELOG.md b/packages/date/CHANGELOG.md index ab82d81e4..6524925eb 100644 --- a/packages/date/CHANGELOG.md +++ b/packages/date/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/date +## 2.0.9-beta.1 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/memo@1.2.0-beta.1 + ## 2.0.9-beta.0 ### Patch Changes diff --git a/packages/date/package.json b/packages/date/package.json index d629b32dc..17a6492b7 100644 --- a/packages/date/package.json +++ b/packages/date/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/date", - "version": "2.0.9-beta.0", + "version": "2.0.9-beta.1", "description": "Collection of reactive primitives and utility functions, providing easier ways to deal with dates in SolidJS", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -55,13 +55,13 @@ "primitives" ], "devDependencies": { - "@solid-primitives/event-listener": "^2.2.7", + "@solid-primitives/event-listener": "^2.2.8-beta.0", "date-fns": "^2.29.2" }, "dependencies": { - "@solid-primitives/memo": "^1.2.0-beta.0", + "@solid-primitives/memo": "^1.2.0-beta.1", "@solid-primitives/timer": "^1.3.6", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/destructure/CHANGELOG.md b/packages/destructure/CHANGELOG.md index ffa0f034e..de33c3267 100644 --- a/packages/destructure/CHANGELOG.md +++ b/packages/destructure/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/destructure +## 0.1.9-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.1.8 ### Patch Changes diff --git a/packages/destructure/package.json b/packages/destructure/package.json index 9dd93de6f..a69db2863 100644 --- a/packages/destructure/package.json +++ b/packages/destructure/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/destructure", - "version": "0.1.8", + "version": "0.1.9-beta.0", "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", @@ -51,7 +51,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/event-bus/CHANGELOG.md b/packages/event-bus/CHANGELOG.md index 64042ec5e..8423d6479 100644 --- a/packages/event-bus/CHANGELOG.md +++ b/packages/event-bus/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/event-bus +## 1.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/immutable@0.1.8-beta.0 + ## 1.0.1 ### Patch Changes diff --git a/packages/event-bus/package.json b/packages/event-bus/package.json index e722e2c5c..873e3683f 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.1", + "version": "1.0.2-beta.0", "description": "A collection of SolidJS primitives providing various features of a pubsub/event-emitter/event-bus.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -54,8 +54,8 @@ "primitives" ], "dependencies": { - "@solid-primitives/immutable": "^0.1.7", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/immutable": "^0.1.8-beta.0", + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/event-listener/CHANGELOG.md b/packages/event-listener/CHANGELOG.md index 86b8ec588..154a98d8b 100644 --- a/packages/event-listener/CHANGELOG.md +++ b/packages/event-listener/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/event-listener +## 2.2.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 2.2.7 ### Patch Changes diff --git a/packages/event-listener/package.json b/packages/event-listener/package.json index dabe92e4f..1962b44eb 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.7", + "version": "2.2.8-beta.0", "description": "SolidJS Primitives to manage creating event listeners.", "author": "David Di Biase ", "contributors": [ @@ -87,7 +87,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/geolocation/CHANGELOG.md b/packages/geolocation/CHANGELOG.md index 33172159a..0d41d1a92 100644 --- a/packages/geolocation/CHANGELOG.md +++ b/packages/geolocation/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/geolocation +## 1.4.6-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.4.5 ### Patch Changes diff --git a/packages/geolocation/package.json b/packages/geolocation/package.json index 45d3f6ac3..40f3a39e2 100644 --- a/packages/geolocation/package.json +++ b/packages/geolocation/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/geolocation", - "version": "1.4.5", + "version": "1.4.6-beta.0", "description": "Primitives to query geolocation and observe changes.", "author": "David Di Biase ", "license": "MIT", @@ -101,7 +101,7 @@ "vite-plugin-mkcert": "^1.13.1" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/graphql/CHANGELOG.md b/packages/graphql/CHANGELOG.md index d2f58cca0..f0eb4d897 100644 --- a/packages/graphql/CHANGELOG.md +++ b/packages/graphql/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/graphql +## 1.5.4-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.5.3 ### Patch Changes diff --git a/packages/graphql/package.json b/packages/graphql/package.json index b474f1a42..1d06f0d8c 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/graphql", - "version": "1.5.3", + "version": "1.5.4-beta.0", "description": "Primitive that generates a client and reactive GraphQL queries", "author": "David Di Biase ", "contributors": [ @@ -60,7 +60,7 @@ }, "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", - "@solid-primitives/utils": "^5.2.1", + "@solid-primitives/utils": "^5.4.0-beta.0", "graphql": "^16.6.0" }, "peerDependencies": { diff --git a/packages/immutable/CHANGELOG.md b/packages/immutable/CHANGELOG.md index be12a24f7..ac29753fc 100644 --- a/packages/immutable/CHANGELOG.md +++ b/packages/immutable/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/immutable +## 0.1.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.1.7 ### Patch Changes diff --git a/packages/immutable/package.json b/packages/immutable/package.json index 69bf05450..8c082d2a3 100644 --- a/packages/immutable/package.json +++ b/packages/immutable/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/immutable", - "version": "0.1.7", + "version": "0.1.8-beta.0", "description": "Functional programming helpers for making non-mutating changes to data. Keeping it immutable.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -46,7 +46,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/intersection-observer/CHANGELOG.md b/packages/intersection-observer/CHANGELOG.md index 34728c936..43998000e 100644 --- a/packages/intersection-observer/CHANGELOG.md +++ b/packages/intersection-observer/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/intersection-observer +## 2.0.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 2.0.7 ### Patch Changes diff --git a/packages/intersection-observer/package.json b/packages/intersection-observer/package.json index f54b59e5c..17cc1664d 100644 --- a/packages/intersection-observer/package.json +++ b/packages/intersection-observer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/intersection-observer", - "version": "2.0.7", + "version": "2.0.8-beta.0", "description": "Primitives to support using the intersection observer API.", "author": "David Di Biase ", "contributors": [ @@ -101,10 +101,10 @@ "primitives" ], "devDependencies": { - "@solid-primitives/range": "workspace:^0.1.7" + "@solid-primitives/range": "workspace:^0.1.8-beta.0" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/jsx-parser/CHANGELOG.md b/packages/jsx-parser/CHANGELOG.md index ee1f8525a..8b93f2062 100644 --- a/packages/jsx-parser/CHANGELOG.md +++ b/packages/jsx-parser/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/jsx-parser +## 0.1.3-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.1.2 ### Patch Changes diff --git a/packages/jsx-parser/package.json b/packages/jsx-parser/package.json index f2a0487c4..8606f0b0f 100644 --- a/packages/jsx-parser/package.json +++ b/packages/jsx-parser/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/jsx-parser", - "version": "0.1.2", + "version": "0.1.3-beta.0", "description": "A primitive to tokenize your solid-components to enable custom parsing.", "author": "Vincent Van Dijck ", "contributors": [ @@ -63,7 +63,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/keyboard/CHANGELOG.md b/packages/keyboard/CHANGELOG.md index 68b78876a..a7808f986 100644 --- a/packages/keyboard/CHANGELOG.md +++ b/packages/keyboard/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/keyboard +## 1.0.9-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 1.0.8 ### Patch Changes diff --git a/packages/keyboard/package.json b/packages/keyboard/package.json index bd99b49e3..22a8f5d1f 100644 --- a/packages/keyboard/package.json +++ b/packages/keyboard/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/keyboard", - "version": "1.0.8", + "version": "1.0.9-beta.0", "description": "A library of reactive promitives helping handling user's keyboard input.", "author": "Damian Tarnwski ", "contributors": [], @@ -88,9 +88,9 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.7", - "@solid-primitives/rootless": "workspace:^1.2.5", - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", + "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/keyed/package.json b/packages/keyed/package.json index 857b4b580..69f9965eb 100644 --- a/packages/keyed/package.json +++ b/packages/keyed/package.json @@ -81,9 +81,9 @@ "test:ssr": "pnpm run test --mode ssr" }, "devDependencies": { - "@solid-primitives/immutable": "^0.1.7", - "@solid-primitives/refs": "^0.4.0-beta.0", - "@solid-primitives/utils": "^5.2.1", + "@solid-primitives/immutable": "^0.1.8-beta.0", + "@solid-primitives/refs": "^1.0.0-beta.1", + "@solid-primitives/utils": "^5.4.0-beta.0", "solid-transition-group": "^0.0.13" }, "peerDependencies": { diff --git a/packages/map/CHANGELOG.md b/packages/map/CHANGELOG.md index e0d98ef43..b4b9aafa4 100644 --- a/packages/map/CHANGELOG.md +++ b/packages/map/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/map +## 0.4.2-beta.0 + +### Patch Changes + +- @solid-primitives/trigger@1.0.2-beta.0 + ## 0.4.1 ### Patch Changes diff --git a/packages/map/package.json b/packages/map/package.json index e418a4c3f..746139635 100644 --- a/packages/map/package.json +++ b/packages/map/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/map", - "version": "0.4.1", + "version": "0.4.2-beta.0", "description": "The Map & WeakMap data structures as a reactive signals.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -55,7 +55,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/trigger": "workspace:^1.0.1" + "@solid-primitives/trigger": "workspace:^1.0.2-beta.0" }, "typesVersions": {} } diff --git a/packages/media/CHANGELOG.md b/packages/media/CHANGELOG.md index 14eba5289..0e53b03fe 100644 --- a/packages/media/CHANGELOG.md +++ b/packages/media/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/media +## 2.1.3-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 2.1.2 ### Patch Changes diff --git a/packages/media/package.json b/packages/media/package.json index 228ea2bdd..f8fe13f9d 100644 --- a/packages/media/package.json +++ b/packages/media/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/media", - "version": "2.1.2", + "version": "2.1.3-beta.0", "description": "Primitives for media query and device features", "author": "David Di Biase ", "contributors": [ @@ -94,9 +94,9 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.7", - "@solid-primitives/rootless": "workspace:^1.2.5", - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", + "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/memo/CHANGELOG.md b/packages/memo/CHANGELOG.md index 3d74792c5..2a4eda7da 100644 --- a/packages/memo/CHANGELOG.md +++ b/packages/memo/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/memo +## 1.2.0-beta.1 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.2.0-beta.0 ### Minor Changes diff --git a/packages/memo/package.json b/packages/memo/package.json index b7173e702..07c23be37 100644 --- a/packages/memo/package.json +++ b/packages/memo/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/memo", - "version": "1.2.0-beta.0", + "version": "1.2.0-beta.1", "description": "Collection of custom memo primitives. They extend Solid's createMemo functionality while keeping the usage similar.", "author": "Damian Tarnawski @thetarnav ", "contributors": [], @@ -93,10 +93,10 @@ ], "dependencies": { "@solid-primitives/scheduled": "^1.3.1", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "devDependencies": { - "@solid-primitives/mouse": "^2.0.7", + "@solid-primitives/mouse": "^2.0.8-beta.0", "@solidjs/router": "^0.7.0" }, "peerDependencies": { diff --git a/packages/mouse/CHANGELOG.md b/packages/mouse/CHANGELOG.md index da10f8b12..93acb0bb8 100644 --- a/packages/mouse/CHANGELOG.md +++ b/packages/mouse/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/mouse +## 2.0.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 2.0.7 ### Patch Changes diff --git a/packages/mouse/package.json b/packages/mouse/package.json index 5a77c82c5..89644c258 100644 --- a/packages/mouse/package.json +++ b/packages/mouse/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/mouse", - "version": "2.0.7", + "version": "2.0.8-beta.0", "description": "A collection of Solid Primitives, that capture current mouse cursor position, and help to deal with common related usecases.", "author": "Damian Tarnawski ", "license": "MIT", @@ -97,12 +97,12 @@ "primitives" ], "devDependencies": { - "@solid-primitives/raf": "workspace:^2.1.7" + "@solid-primitives/raf": "workspace:^2.1.8-beta.0" }, "dependencies": { - "@solid-primitives/event-listener": "^2.2.7", - "@solid-primitives/rootless": "^1.2.5", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/event-listener": "^2.2.8-beta.0", + "@solid-primitives/rootless": "^1.2.6-beta.0", + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/mutation-observer/CHANGELOG.md b/packages/mutation-observer/CHANGELOG.md index fdb2cee3f..e897a9a64 100644 --- a/packages/mutation-observer/CHANGELOG.md +++ b/packages/mutation-observer/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/mutation-observer +## 1.1.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.1.7 ### Patch Changes diff --git a/packages/mutation-observer/package.json b/packages/mutation-observer/package.json index 4e0f355fd..b7611790e 100644 --- a/packages/mutation-observer/package.json +++ b/packages/mutation-observer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/mutation-observer", - "version": "1.1.7", + "version": "1.1.8-beta.0", "description": "Primitive providing the ability to watch for changes made to the DOM tree.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -50,7 +50,7 @@ "@solid-primitives/composites": "workspace:^1.1.3" }, "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/page-visibility/CHANGELOG.md b/packages/page-visibility/CHANGELOG.md index 09f85205c..602d97358 100644 --- a/packages/page-visibility/CHANGELOG.md +++ b/packages/page-visibility/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/page-visibility +## 2.0.6-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 2.0.5 ### Patch Changes diff --git a/packages/page-visibility/package.json b/packages/page-visibility/package.json index 11a464457..1696e5f68 100644 --- a/packages/page-visibility/package.json +++ b/packages/page-visibility/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/page-visibility", - "version": "2.0.5", + "version": "2.0.6-beta.0", "description": "Primitive to track page visibility", "author": "David Di Biase", "contributors": [ @@ -96,9 +96,9 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.7", - "@solid-primitives/rootless": "workspace:^1.2.5", - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", + "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/pagination/CHANGELOG.md b/packages/pagination/CHANGELOG.md index 4d23c4d27..f9b407125 100644 --- a/packages/pagination/CHANGELOG.md +++ b/packages/pagination/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/pagination +## 0.2.2-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/intersection-observer@2.0.8-beta.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/pagination/package.json b/packages/pagination/package.json index 85e6ff9a4..222adb990 100644 --- a/packages/pagination/package.json +++ b/packages/pagination/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/pagination", - "version": "0.2.1", + "version": "0.2.2-beta.0", "description": "A primitive that creates all the reactive data to manage your pagination.", "author": "Alex Lohr ", "contributors": [ @@ -87,8 +87,8 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/intersection-observer": "workspace:^2.0.7", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/intersection-observer": "workspace:^2.0.8-beta.0", + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/pointer/CHANGELOG.md b/packages/pointer/CHANGELOG.md index 15c601817..c68c0172b 100644 --- a/packages/pointer/CHANGELOG.md +++ b/packages/pointer/CHANGELOG.md @@ -1,5 +1,15 @@ # @solid-primitives/pointer +## 0.2.7-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/immutable@0.1.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 0.2.6 ### Patch Changes diff --git a/packages/pointer/package.json b/packages/pointer/package.json index 6e9669e9b..7823cc947 100644 --- a/packages/pointer/package.json +++ b/packages/pointer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/pointer", - "version": "0.2.6", + "version": "0.2.7-beta.0", "description": "A collection of primitives, giving you a nicer API to handle pointer events in a reactive context.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -99,10 +99,10 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "^2.2.7", - "@solid-primitives/immutable": "^0.1.7", - "@solid-primitives/rootless": "^1.2.5", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/event-listener": "^2.2.8-beta.0", + "@solid-primitives/immutable": "^0.1.8-beta.0", + "@solid-primitives/rootless": "^1.2.6-beta.0", + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/promise/CHANGELOG.md b/packages/promise/CHANGELOG.md index 0e0242bc3..366ed61d9 100644 --- a/packages/promise/CHANGELOG.md +++ b/packages/promise/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/until +## 1.0.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.0.7 ### Patch Changes diff --git a/packages/promise/package.json b/packages/promise/package.json index 759fc11de..a6f36c89f 100644 --- a/packages/promise/package.json +++ b/packages/promise/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/promise", - "version": "1.0.7", + "version": "1.0.8-beta.0", "description": "Promised one-time watch for changes. Await a reactive condition.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -95,7 +95,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/props/CHANGELOG.md b/packages/props/CHANGELOG.md index 4dfa70558..7de914297 100644 --- a/packages/props/CHANGELOG.md +++ b/packages/props/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/props +## 3.1.1-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 3.1.0 ### Minor Changes diff --git a/packages/props/package.json b/packages/props/package.json index 1cb08767c..ed7f71ee9 100644 --- a/packages/props/package.json +++ b/packages/props/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/props", - "version": "3.1.0", + "version": "3.1.1-beta.0", "description": "Library of primitives focused around component props.", "author": "Damian Tarnawski ", "contributors": [], @@ -49,7 +49,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.3.0" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "devDependencies": { "nanospy": "^0.5.0" diff --git a/packages/raf/CHANGELOG.md b/packages/raf/CHANGELOG.md index 4eef43e21..807c42b80 100644 --- a/packages/raf/CHANGELOG.md +++ b/packages/raf/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/raf +## 2.1.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 2.1.7 ### Patch Changes diff --git a/packages/raf/package.json b/packages/raf/package.json index d90b94b81..fb0e829fd 100644 --- a/packages/raf/package.json +++ b/packages/raf/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/raf", - "version": "2.1.7", + "version": "2.1.8-beta.0", "description": "Primitive that facilitates RAF functionality", "author": "David Di Biase ", "contributors": [ @@ -98,7 +98,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/range/CHANGELOG.md b/packages/range/CHANGELOG.md index 9d4101a4d..a962376c1 100644 --- a/packages/range/CHANGELOG.md +++ b/packages/range/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/range +## 0.1.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.1.7 ### Patch Changes diff --git a/packages/range/package.json b/packages/range/package.json index 6b3fa7be9..ba2bcbde4 100644 --- a/packages/range/package.json +++ b/packages/range/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/range", - "version": "0.1.7", + "version": "0.1.8-beta.0", "description": "Control Flow Primitives for displaying given number or a number range of elements.", "author": "Damian Tarnawski @thetarnav ", "contributors": [], @@ -68,7 +68,7 @@ "solid-transition-group": "^0.0.13" }, "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/refs/CHANGELOG.md b/packages/refs/CHANGELOG.md index a56436ce6..97be0e659 100644 --- a/packages/refs/CHANGELOG.md +++ b/packages/refs/CHANGELOG.md @@ -1,5 +1,26 @@ # @solid-primitives/refs +## 1.0.0-beta.1 + +### Major Changes + +- d6559a32: Major API changes. Bump stage to 2. + + `mapRemoved`, `Refs`, `Ref`, `unmount`, `refs`, `elements`, `getChangedItems`, `getAddedItems` and `getRemovedItems` has been removed. + + Add `getResolvedElements`, `resolveElements`, `getFirstChild` and `resolveFirst` primitives. + + Improve `mergeRefs` to allow an array of refs to be passed in. + + Ensure SSR support for `resolveElements` and `resolveFirst`. + + Removes `"@solid-primitives/immutable"` dependency. + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.4.0-beta.0 ### Minor Changes diff --git a/packages/refs/package.json b/packages/refs/package.json index e6711b791..ce595fdea 100644 --- a/packages/refs/package.json +++ b/packages/refs/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/refs", - "version": "0.4.0-beta.0", + "version": "1.0.0-beta.1", "description": "Library of primitives, components and directives for SolidJS that help managing references to JSX elements.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -83,12 +83,12 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "devDependencies": { "solid-app-router": "^0.4.2", "solid-transition-group": "^0.0.13", - "@solid-primitives/immutable": "^0.1.7" + "@solid-primitives/immutable": "^0.1.8-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/resize-observer/CHANGELOG.md b/packages/resize-observer/CHANGELOG.md index e8b1cc3a1..83af6546f 100644 --- a/packages/resize-observer/CHANGELOG.md +++ b/packages/resize-observer/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/resize-observer +## 2.0.11-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 2.0.10 ### Patch Changes diff --git a/packages/resize-observer/package.json b/packages/resize-observer/package.json index 5a7cb0797..432e15a13 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.10", + "version": "2.0.11-beta.0", "description": "Reactive primitives for observing resizing of HTML elements.", "author": "Moshe Udimar", "contributors": [ @@ -84,9 +84,9 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.7", - "@solid-primitives/rootless": "workspace:^1.2.5", - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", + "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/rootless/CHANGELOG.md b/packages/rootless/CHANGELOG.md index ae7befda5..8b5ce4cb6 100644 --- a/packages/rootless/CHANGELOG.md +++ b/packages/rootless/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/rootless +## 1.2.6-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.2.5 ### Patch Changes diff --git a/packages/rootless/package.json b/packages/rootless/package.json index 61170937c..a9170b5d4 100644 --- a/packages/rootless/package.json +++ b/packages/rootless/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/rootless", - "version": "1.2.5", + "version": "1.2.6-beta.0", "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", @@ -48,7 +48,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.11" diff --git a/packages/scroll/CHANGELOG.md b/packages/scroll/CHANGELOG.md index fd65bd7eb..e82dedec2 100644 --- a/packages/scroll/CHANGELOG.md +++ b/packages/scroll/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/scroll +## 2.0.10-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/event-listener@2.2.8-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 2.0.9 ### Patch Changes diff --git a/packages/scroll/package.json b/packages/scroll/package.json index 26773d7c6..c07e9a2cb 100644 --- a/packages/scroll/package.json +++ b/packages/scroll/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/scroll", - "version": "2.0.9", + "version": "2.0.10-beta.0", "description": "Reactive primitives to react to element/window scrolling.", "author": "David Di Biase ", "contributors": [ @@ -100,9 +100,9 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.7", - "@solid-primitives/rootless": "workspace:^1.2.5", - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", + "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/set/CHANGELOG.md b/packages/set/CHANGELOG.md index 194df4828..1b0768f8d 100644 --- a/packages/set/CHANGELOG.md +++ b/packages/set/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/set +## 0.4.2-beta.0 + +### Patch Changes + +- @solid-primitives/trigger@1.0.2-beta.0 + ## 0.4.1 ### Patch Changes diff --git a/packages/set/package.json b/packages/set/package.json index ae3527775..ca1c01ad8 100644 --- a/packages/set/package.json +++ b/packages/set/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/set", - "version": "0.4.1", + "version": "0.4.2-beta.0", "description": "The Set & WeakSet data structures as a reactive signals.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -53,7 +53,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/trigger": "workspace:^1.0.1" + "@solid-primitives/trigger": "workspace:^1.0.2-beta.0" }, "typesVersions": {} } diff --git a/packages/signal-builders/CHANGELOG.md b/packages/signal-builders/CHANGELOG.md index da8514618..68001ccd2 100644 --- a/packages/signal-builders/CHANGELOG.md +++ b/packages/signal-builders/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/signal-builders +## 0.1.8-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/immutable@0.1.8-beta.0 + ## 0.1.7 ### Patch Changes diff --git a/packages/signal-builders/package.json b/packages/signal-builders/package.json index 9fc2005c7..27f54e7e2 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.7", + "version": "0.1.8-beta.0", "description": "A collection of chainable and composable reactive signal calculations, aka Signal Builders.", "author": "Your Name ", "license": "MIT", @@ -45,8 +45,8 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/immutable": "^0.1.7", - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/immutable": "^0.1.8-beta.0", + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/storage/CHANGELOG.md b/packages/storage/CHANGELOG.md index 0982ac453..729bacfa7 100644 --- a/packages/storage/CHANGELOG.md +++ b/packages/storage/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/storage +## 1.3.7-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.3.6 ### Patch Changes diff --git a/packages/storage/package.json b/packages/storage/package.json index e0ae486a4..d087aa64f 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/storage", - "version": "1.3.6", + "version": "1.3.7-beta.0", "description": "Primitive that provides reactive wrappers for storage access", "author": "Alex Lohr ", "contributors": [ @@ -100,7 +100,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/stream/CHANGELOG.md b/packages/stream/CHANGELOG.md index e590b2a23..ad375b65b 100644 --- a/packages/stream/CHANGELOG.md +++ b/packages/stream/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/stream +## 0.6.6-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/stream/package.json b/packages/stream/package.json index 09fb82a66..27e26f866 100644 --- a/packages/stream/package.json +++ b/packages/stream/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/stream", - "version": "0.6.5", + "version": "0.6.6-beta.0", "description": "Primitive that gets a user media stream from microphone, camera or screen", "author": "Alex Lohr ", "license": "MIT", @@ -99,7 +99,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/styles/CHANGELOG.md b/packages/styles/CHANGELOG.md index b69cf528c..643d6ec83 100644 --- a/packages/styles/CHANGELOG.md +++ b/packages/styles/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/styles +## 0.0.105-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + - @solid-primitives/rootless@1.2.6-beta.0 + ## 0.0.104 ### Patch Changes diff --git a/packages/styles/package.json b/packages/styles/package.json index f492fa6c3..672a17192 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/styles", - "version": "0.0.104", + "version": "0.0.105-beta.0", "description": "Collection of reactive primitives focused on styles.", "author": "Damian Tarnawski ", "contributors": [ @@ -100,8 +100,8 @@ "css" ], "dependencies": { - "@solid-primitives/rootless": "workspace:^1.2.5", - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json index fa2403d06..1de847cf2 100644 --- a/packages/transition-group/package.json +++ b/packages/transition-group/package.json @@ -73,8 +73,8 @@ "solid-js": "^1.6.0" }, "devDependencies": { - "@solid-primitives/refs": "workspace:^0.4.0-beta.0", - "@solid-primitives/utils": "workspace:^5.2.0", + "@solid-primitives/refs": "workspace:^1.0.0-beta.1", + "@solid-primitives/utils": "workspace:^5.4.0-beta.0", "@solidjs/router": "^0.7.0" } } diff --git a/packages/trigger/CHANGELOG.md b/packages/trigger/CHANGELOG.md index a8685a053..f45ce3796 100644 --- a/packages/trigger/CHANGELOG.md +++ b/packages/trigger/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/trigger +## 1.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 1.0.1 ### Patch Changes diff --git a/packages/trigger/package.json b/packages/trigger/package.json index ed0034808..b4952cdd7 100644 --- a/packages/trigger/package.json +++ b/packages/trigger/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/trigger", - "version": "1.0.1", + "version": "1.0.2-beta.0", "description": "A set of primitives based on Solid signals, used to trigger computations.", "author": "Damian Tarnawski ", "contributors": [], @@ -101,7 +101,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.2.1" + "@solid-primitives/utils": "workspace:^5.4.0-beta.0" }, "typesVersions": {} } diff --git a/packages/upload/CHANGELOG.md b/packages/upload/CHANGELOG.md index eee19c389..b90163b48 100644 --- a/packages/upload/CHANGELOG.md +++ b/packages/upload/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/upload +## 0.0.109-beta.0 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0-beta.0 + ## 0.0.108 ### Patch Changes diff --git a/packages/upload/package.json b/packages/upload/package.json index ae0e94799..51b12681b 100644 --- a/packages/upload/package.json +++ b/packages/upload/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/upload", - "version": "0.0.108", + "version": "0.0.109-beta.0", "description": "Primitives for uploading files.", "author": "Rustam Ashurmatov ", "license": "MIT", @@ -80,7 +80,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "^5.2.1" + "@solid-primitives/utils": "^5.4.0-beta.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 0ba538f00..fec89e886 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/utils +## 5.4.0-beta.0 + +### Minor Changes + +- d6559a32: Export `ResolvedJSXElement` and `ResolvedChildren` types from utils + ## 5.3.0 ### Minor Changes diff --git a/packages/utils/package.json b/packages/utils/package.json index e69cc0701..be6bb4890 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/utils", - "version": "5.3.0", + "version": "5.4.0-beta.0", "description": "A bunch of reactive utility types and functions, for building primitives with Solid.js", "author": "Damian Tarnawski @thetarnav ", "contributors": [ From 8cba219adf3b3226b8e66d962b5eb5076dc326d7 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Fri, 3 Mar 2023 09:50:10 +0100 Subject: [PATCH 27/33] Update lockfile --- pnpm-lock.yaml | 152 ++++++++++++++++++++++++------------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b1d8e30a..0b270df71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,8 +62,8 @@ importers: packages/active-element: specifiers: - '@solid-primitives/event-listener': ^2.2.7 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/event-listener': ^2.2.8-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -78,7 +78,7 @@ importers: packages/audio: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-heroicons: ^3.1.1 solid-js: ^1.6.0 dependencies: @@ -89,7 +89,7 @@ importers: packages/autofocus: specifiers: - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -97,10 +97,10 @@ importers: packages/bounds: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.7 - '@solid-primitives/resize-observer': workspace:^2.0.10 + '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 + '@solid-primitives/resize-observer': workspace:^2.0.11-beta.0 '@solid-primitives/scheduled': workspace:^1.3.1 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -118,7 +118,7 @@ importers: packages/clipboard: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -136,9 +136,9 @@ importers: packages/connectivity: specifiers: - '@solid-primitives/event-listener': ^2.2.7 - '@solid-primitives/rootless': ^1.2.5 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/event-listener': ^2.2.8-beta.0 + '@solid-primitives/rootless': ^1.2.6-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -154,7 +154,7 @@ importers: packages/controlled-props: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -162,7 +162,7 @@ importers: packages/cursor: specifiers: - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -170,10 +170,10 @@ importers: packages/date: specifiers: - '@solid-primitives/event-listener': ^2.2.7 - '@solid-primitives/memo': ^1.2.0-beta.0 + '@solid-primitives/event-listener': ^2.2.8-beta.0 + '@solid-primitives/memo': ^1.2.0-beta.1 '@solid-primitives/timer': ^1.3.6 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 date-fns: ^2.29.2 solid-js: ^1.6.0 dependencies: @@ -187,7 +187,7 @@ importers: packages/destructure: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -201,8 +201,8 @@ importers: packages/event-bus: specifiers: - '@solid-primitives/immutable': ^0.1.7 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/immutable': ^0.1.8-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/immutable': link:../immutable @@ -217,7 +217,7 @@ importers: packages/event-listener: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -245,7 +245,7 @@ importers: packages/geolocation: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 '@types/leaflet': ^1.7.11 leaflet: ^1.8.0 mapbox-gl: ^2.12.1 @@ -275,7 +275,7 @@ importers: '@graphql-codegen/typescript': ^3.0.0 '@graphql-codegen/typescript-operations': ^3.0.0 '@graphql-typed-document-node/core': ^3.1.1 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 graphql: ^16.6.0 solid-js: ^1.6.0 dependencies: @@ -305,7 +305,7 @@ importers: packages/immutable: specifiers: - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -319,8 +319,8 @@ importers: packages/intersection-observer: specifiers: - '@solid-primitives/range': workspace:^0.1.7 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/range': workspace:^0.1.8-beta.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -330,7 +330,7 @@ importers: packages/jsx-parser: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -338,9 +338,9 @@ importers: packages/keyboard: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.7 - '@solid-primitives/rootless': workspace:^1.2.5 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 + '@solid-primitives/rootless': workspace:^1.2.6-beta.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -350,9 +350,9 @@ importers: packages/keyed: specifiers: - '@solid-primitives/immutable': ^0.1.7 - '@solid-primitives/refs': ^0.4.0-beta.0 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/immutable': ^0.1.8-beta.0 + '@solid-primitives/refs': ^1.0.0-beta.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 solid-transition-group: ^0.0.13 dependencies: @@ -365,7 +365,7 @@ importers: packages/map: specifiers: - '@solid-primitives/trigger': workspace:^1.0.1 + '@solid-primitives/trigger': workspace:^1.0.2-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/trigger': link:../trigger @@ -373,9 +373,9 @@ importers: packages/media: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.7 - '@solid-primitives/rootless': workspace:^1.2.5 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 + '@solid-primitives/rootless': workspace:^1.2.6-beta.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -385,9 +385,9 @@ importers: packages/memo: specifiers: - '@solid-primitives/mouse': ^2.0.7 + '@solid-primitives/mouse': ^2.0.8-beta.0 '@solid-primitives/scheduled': ^1.3.1 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 dependencies: @@ -400,10 +400,10 @@ importers: packages/mouse: specifiers: - '@solid-primitives/event-listener': ^2.2.7 - '@solid-primitives/raf': workspace:^2.1.7 - '@solid-primitives/rootless': ^1.2.5 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/event-listener': ^2.2.8-beta.0 + '@solid-primitives/raf': workspace:^2.1.8-beta.0 + '@solid-primitives/rootless': ^1.2.6-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -416,7 +416,7 @@ importers: packages/mutation-observer: specifiers: '@solid-primitives/composites': workspace:^1.1.3 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -426,9 +426,9 @@ importers: packages/page-visibility: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.7 - '@solid-primitives/rootless': workspace:^1.2.5 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 + '@solid-primitives/rootless': workspace:^1.2.6-beta.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -438,8 +438,8 @@ importers: packages/pagination: specifiers: - '@solid-primitives/intersection-observer': workspace:^2.0.7 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/intersection-observer': workspace:^2.0.8-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/intersection-observer': link:../intersection-observer @@ -460,10 +460,10 @@ importers: packages/pointer: specifiers: - '@solid-primitives/event-listener': ^2.2.7 - '@solid-primitives/immutable': ^0.1.7 - '@solid-primitives/rootless': ^1.2.5 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/event-listener': ^2.2.8-beta.0 + '@solid-primitives/immutable': ^0.1.8-beta.0 + '@solid-primitives/rootless': ^1.2.6-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -474,7 +474,7 @@ importers: packages/promise: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -482,7 +482,7 @@ importers: packages/props: specifiers: - '@solid-primitives/utils': workspace:^5.3.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 nanospy: ^0.5.0 solid-js: ^1.6.0 dependencies: @@ -493,7 +493,7 @@ importers: packages/raf: specifiers: - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -501,7 +501,7 @@ importers: packages/range: specifiers: - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 solid-transition-group: ^0.0.13 dependencies: @@ -512,8 +512,8 @@ importers: packages/refs: specifiers: - '@solid-primitives/immutable': ^0.1.7 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/immutable': ^0.1.8-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-app-router: ^0.4.2 solid-js: ^1.6.0 solid-transition-group: ^0.0.13 @@ -527,9 +527,9 @@ importers: packages/resize-observer: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.7 - '@solid-primitives/rootless': workspace:^1.2.5 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 + '@solid-primitives/rootless': workspace:^1.2.6-beta.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -539,7 +539,7 @@ importers: packages/rootless: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.11 dependencies: '@solid-primitives/utils': link:../utils @@ -564,9 +564,9 @@ importers: packages/scroll: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.7 - '@solid-primitives/rootless': workspace:^1.2.5 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 + '@solid-primitives/rootless': workspace:^1.2.6-beta.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -582,7 +582,7 @@ importers: packages/set: specifiers: - '@solid-primitives/trigger': workspace:^1.0.1 + '@solid-primitives/trigger': workspace:^1.0.2-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/trigger': link:../trigger @@ -596,8 +596,8 @@ importers: packages/signal-builders: specifiers: - '@solid-primitives/immutable': ^0.1.7 - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/immutable': ^0.1.8-beta.0 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/immutable': link:../immutable @@ -606,7 +606,7 @@ importers: packages/storage: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -614,7 +614,7 @@ importers: packages/stream: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -622,8 +622,8 @@ importers: packages/styles: specifiers: - '@solid-primitives/rootless': workspace:^1.2.5 - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/rootless': workspace:^1.2.6-beta.0 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/rootless': link:../rootless @@ -638,8 +638,8 @@ importers: packages/transition-group: specifiers: - '@solid-primitives/refs': workspace:^0.4.0-beta.0 - '@solid-primitives/utils': workspace:^5.2.0 + '@solid-primitives/refs': workspace:^1.0.0-beta.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 dependencies: @@ -651,7 +651,7 @@ importers: packages/trigger: specifiers: - '@solid-primitives/utils': workspace:^5.2.1 + '@solid-primitives/utils': workspace:^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -665,7 +665,7 @@ importers: packages/upload: specifiers: - '@solid-primitives/utils': ^5.2.1 + '@solid-primitives/utils': ^5.4.0-beta.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils From 147f590cfd93d06bd1bc4244989832bec6cdd22f Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Fri, 3 Mar 2023 10:27:30 +0100 Subject: [PATCH 28/33] Add Ref and Refs component back - adapt them for SSR --- .changeset/khaki-geckos-punch.md | 4 +- packages/refs/README.md | 40 ++++++++++++----- packages/refs/package.json | 3 +- packages/refs/src/index.ts | 76 +++++++++++++++++++++++++------- 4 files changed, 93 insertions(+), 30 deletions(-) diff --git a/.changeset/khaki-geckos-punch.md b/.changeset/khaki-geckos-punch.md index 4f888766a..729ef4da9 100644 --- a/.changeset/khaki-geckos-punch.md +++ b/.changeset/khaki-geckos-punch.md @@ -4,12 +4,12 @@ Major API changes. Bump stage to 2. -`mapRemoved`, `Refs`, `Ref`, `unmount`, `refs`, `elements`, `getChangedItems`, `getAddedItems` and `getRemovedItems` has been removed. +`mapRemoved`, `Children`, `unmount`, `refs`, `elements`, `getChangedItems`, `getAddedItems` and `getRemovedItems` has been removed. Add `getResolvedElements`, `resolveElements`, `getFirstChild` and `resolveFirst` primitives. Improve `mergeRefs` to allow an array of refs to be passed in. -Ensure SSR support for `resolveElements` and `resolveFirst`. +Ensure SSR support for `resolveElements`, `resolveFirst`, `` and ``. Removes `"@solid-primitives/immutable"` dependency. diff --git a/packages/refs/README.md b/packages/refs/README.md index 2c829baba..8a8ae4fc6 100644 --- a/packages/refs/README.md +++ b/packages/refs/README.md @@ -16,7 +16,8 @@ Collection of primitives, components and directives that help managing reference - [`mergeRefs`](#mergeRefs) - Utility for chaining multiple `ref` assignments with `props.ref` forwarding. - [`resolveElements`](#resolveElements) - Utility for resolving recursively nested JSX children to a single element or an array of elements. - [`resolveFirst`](#resolveFirst) - Utility for resolving recursively nested JSX children in search of the first element that matches a predicate. -- [`Children`](#Children) - Solid's `children` helper in component form. Access it's children elements by `get` property. +- [``](#refs) - Get up-to-date references of the multiple children elements. +- [``](#ref) - Get up-to-date reference to a single child element. ## Installation @@ -127,22 +128,41 @@ function Button(props: ParentProps) { `resolveFirst` also accepts a custom predicate as a second argument. See [`Using a custom predicate`](#using-a-custom-predicate) section for more details. -## `` +## `` -Solid's `children` helper in component form. Access it's children elements by `get` property. +Get up-to-date reference to a single child element. ### How to use it +`` accepts only a `ref` property for getting the current element or `undefined`, and requires `children` to be passed in. + +```tsx +import { Ref } from "@solid-primitives/refs"; + +const [ref, setRef] = createSignal(); + +{props.children}; +``` + +## `` + +Get up-to-date references of the multiple children elements. + +### How to use it + +`` accepts only a `ref` property for getting the current array of elements, and requires `children` to be passed in. + ```tsx -import { Children, ResolvedChildren } from "@solid-primitives/refs" +import { Refs } from "@solid-primitives/refs"; -// typing as JSX.Element also works -const [children, setChildren] = createSignal([]) +const [refs, setRefs] = createSignal([]); - -
- ... -
+ + {item =>
{item}
}
+ +
Hello
+
+
; ``` #### Demo diff --git a/packages/refs/package.json b/packages/refs/package.json index ce595fdea..44ac4a862 100644 --- a/packages/refs/package.json +++ b/packages/refs/package.json @@ -16,7 +16,8 @@ "mergeRefs", "resolveElements", "resolveFirst", - "Children" + "Ref", + "Refs" ], "category": "Control Flow" }, diff --git a/packages/refs/src/index.ts b/packages/refs/src/index.ts index f66fb269c..0f6ac8b10 100644 --- a/packages/refs/src/index.ts +++ b/packages/refs/src/index.ts @@ -1,5 +1,5 @@ -import { chain, ResolvedChildren } from "@solid-primitives/utils"; -import { Accessor, children, createComputed, createMemo, JSX, on, onCleanup } from "solid-js"; +import { chain, arrayEquals } from "@solid-primitives/utils"; +import { Accessor, children, createComputed, createMemo, JSX, onCleanup, untrack } from "solid-js"; export type { ResolvedChildren, ResolvedJSXElement } from "@solid-primitives/utils"; @@ -193,24 +193,66 @@ export function resolveFirst( } /** - * Solid's `children` helper in component form. Access it's children elements by `get` property. - * @property `get` – get resolved elements, fired every time the children change + * Get up-to-date references of the multiple children elements. + * @param ref Getter of current array of elements + * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#Refs * @example * ```tsx - * const [children, setChildren] = createSignal(); - * - * - *
- * ... - *
+ * const [refs, setRefs] = createSignal([]); + * + * {props.children} + * + * ``` + */ +export function Refs(props: { ref: Ref; children: JSX.Element }): JSX.Element { + if (process.env.SSR) { + return props.children; + } + + const cb = props.ref as (els: Element[]) => void, + resolved = children(() => props.children); + + let prev: Element[] = []; + + createComputed(() => { + const els = resolved.toArray().filter(defaultElementPredicate); + if (!arrayEquals(prev, els)) untrack(() => cb(els)); + prev = els; + }, []); + onCleanup(() => prev.length && cb([])); + + return resolved; +} + +/** + * Get up-to-date reference to a single child element. + * @param ref Getter of current element *(or `undefined` if not mounted)* + * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#Ref + * @example + * ```tsx + * const [ref, setRef] = createSignal(); + * + * {props.children} + * * ``` */ -export function Children(props: { - get: (resolved: ResolvedChildren) => void; - children: JSX.Element; -}): JSX.Element { - const resolved = children(() => props.children); - createComputed(on(resolved, props.get)); - onCleanup(() => props.get(undefined)); +export function Ref(props: { ref: Ref; children: JSX.Element }): JSX.Element { + if (process.env.SSR) { + return props.children; + } + + const cb = props.ref as (el: Element | undefined) => void, + resolved = children(() => props.children); + + let prev: Element | undefined; + + createComputed(() => { + const el = resolved.toArray().find(defaultElementPredicate); + if (el !== prev) untrack(() => cb(el)); + prev = el; + }); + + onCleanup(() => prev && cb(undefined)); + return resolved; } From 3d19043f79f292e2abf85575e2180aaf5e829dac Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Fri, 3 Mar 2023 10:37:58 +0100 Subject: [PATCH 29/33] Exit prerelease --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index e2c872e96..ea01347f7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "beta", "initialVersions": { "@solid-primitives/active-element": "2.0.8", From 491bbc8b7d9436a97842488f45c31c923d39671e Mon Sep 17 00:00:00 2001 From: thetarnav Date: Fri, 3 Mar 2023 09:39:06 +0000 Subject: [PATCH 30/33] Format --- packages/transition-group/dev/index.html | 56 ++++++++++++------------ packages/transition-group/dev/index.tsx | 2 +- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/packages/transition-group/dev/index.html b/packages/transition-group/dev/index.html index 9c4d05fc2..65f53c4b6 100644 --- a/packages/transition-group/dev/index.html +++ b/packages/transition-group/dev/index.html @@ -1,37 +1,35 @@ + + + + + Solid App + + - * { - margin: 0; - } - - - - - -
- - - + + +
+ + diff --git a/packages/transition-group/dev/index.tsx b/packages/transition-group/dev/index.tsx index 8b0c62d1e..b2be4e1e8 100644 --- a/packages/transition-group/dev/index.tsx +++ b/packages/transition-group/dev/index.tsx @@ -24,5 +24,5 @@ render( ), - document.getElementById("root")! + document.getElementById("root")!, ); From 7190aa7d238d32762afb73c887ed6d51b2348469 Mon Sep 17 00:00:00 2001 From: thetarnav Date: Fri, 3 Mar 2023 09:39:08 +0000 Subject: [PATCH 31/33] Update Readme --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 01090b202..a028aa919 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/analytics,@solid-primitives/broadcast-channel,@solid-primitives/context,@solid-primitives/devices,@solid-primitives/event-dispatcher,@solid-primitives/event-props,@solid-primitives/fetch,@solid-primitives/fullscreen,@solid-primitives/gestures,@solid-primitives/idle,@solid-primitives/input-mask,@solid-primitives/keyed,@solid-primitives/permission,@solid-primitives/platform,@solid-primitives/scheduled,@solid-primitives/script-loader,@solid-primitives/selection,@solid-primitives/share,@solid-primitives/timer,@solid-primitives/tween,@solid-primitives/utils,@solid-primitives/websocket,@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/analytics,@solid-primitives/broadcast-channel,@solid-primitives/context,@solid-primitives/devices,@solid-primitives/event-dispatcher,@solid-primitives/event-props,@solid-primitives/fetch,@solid-primitives/fullscreen,@solid-primitives/gestures,@solid-primitives/idle,@solid-primitives/input-mask,@solid-primitives/keyed,@solid-primitives/permission,@solid-primitives/platform,@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/utils,@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. @@ -86,9 +86,10 @@ The goal of Solid Primitives is to wrap client and server side functionality to |

*Control Flow*

| |[keyed](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%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)|[keyArray](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#keyarray)
[Key](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#key)
[Entries](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#entries)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/keyed?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/keyed)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/keyed?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/keyed)| |[range](https://github.com/solidjs-community/solid-primitives/tree/main/packages/range#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%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)|[repeat](https://github.com/solidjs-community/solid-primitives/tree/main/packages/range#repeat)
[mapRange](https://github.com/solidjs-community/solid-primitives/tree/main/packages/range#maprange)
[indexRange](https://github.com/solidjs-community/solid-primitives/tree/main/packages/range#indexrange)
[Repeat](https://github.com/solidjs-community/solid-primitives/tree/main/packages/range#repeat)
[Range](https://github.com/solidjs-community/solid-primitives/tree/main/packages/range#range)
[IndexRange](https://github.com/solidjs-community/solid-primitives/tree/main/packages/range#indexrange)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/range?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/range)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/range?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/range)| -|[refs](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%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)|[mergeRefs](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#mergerefs)
[elements](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#elements)
[refs](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#refs)
[mapRemoved](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#mapremoved)
[Children](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#children)
[Refs](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#refs)
[Ref](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#ref)
[unmount](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#unmount)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/refs?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/refs)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/refs?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/refs)| +|[refs](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#readme)|[![STAGE](https://img.shields.io/endpoint?style=for-the-badge&label=&url=https%3A%2F%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)|[mergeRefs](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#mergerefs)
[resolveElements](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#resolveelements)
[resolveFirst](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#resolvefirst)
[Ref](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#ref)
[Refs](https://github.com/solidjs-community/solid-primitives/tree/main/packages/refs#refs)|[![SIZE](https://img.shields.io/bundlephobia/minzip/@solid-primitives/refs?style=for-the-badge&label=)](https://bundlephobia.com/package/@solid-primitives/refs)|[![VERSION](https://img.shields.io/npm/v/@solid-primitives/refs?style=for-the-badge&label=)](https://www.npmjs.com/package/@solid-primitives/refs)| |

*Animation*

| |[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%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%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)|[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%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)| From d527ef7b1a0bd94976fa876a9b3c947c7022b53c Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Fri, 3 Mar 2023 10:48:51 +0100 Subject: [PATCH 32/33] Improve resolveFirst & resolveElements types --- packages/refs/src/index.ts | 10 +++ packages/transition-group/README.md | 2 +- packages/transition-group/dev/list-page.tsx | 94 +++++++++++---------- 3 files changed, 59 insertions(+), 47 deletions(-) diff --git a/packages/refs/src/index.ts b/packages/refs/src/index.ts index 0f6ac8b10..7c2479cf8 100644 --- a/packages/refs/src/index.ts +++ b/packages/refs/src/index.ts @@ -111,6 +111,11 @@ export type ResolveChildrenReturn = Accessor & * ``` */ export function resolveElements(fn: Accessor): ResolveChildrenReturn; +export function resolveElements( + fn: Accessor, + predicate: (item: JSX.Element) => item is T, + serverPredicate?: (item: JSX.Element) => item is T, +): ResolveChildrenReturn; export function resolveElements( fn: Accessor, predicate: (item: JSX.Element | T) => item is T, @@ -178,6 +183,11 @@ export function getFirstChild( * ``` */ export function resolveFirst(fn: Accessor): Accessor; +export function resolveFirst( + fn: Accessor, + predicate: (item: JSX.Element) => item is T, + serverPredicate?: (item: JSX.Element) => item is T, +): Accessor; export function resolveFirst( fn: Accessor, predicate: (item: JSX.Element | T) => item is T, diff --git a/packages/transition-group/README.md b/packages/transition-group/README.md index 3d5733e01..8fac9f928 100644 --- a/packages/transition-group/README.md +++ b/packages/transition-group/README.md @@ -179,7 +179,7 @@ import { resolveElements } from "@solid-primitives/refs"; import { createSwitchTransition } from "@solid-primitives/transition-group"; const resolved = resolveElements(() => props.children); -return createListTransition(resolved, { +return createListTransition(resolved.toArray, { /*...*/ }); ``` diff --git a/packages/transition-group/dev/list-page.tsx b/packages/transition-group/dev/list-page.tsx index b1d6e4715..6b71f4563 100644 --- a/packages/transition-group/dev/list-page.tsx +++ b/packages/transition-group/dev/list-page.tsx @@ -8,7 +8,7 @@ import { untrack, useTransition, } from "solid-js"; -import { elements } from "@solid-primitives/refs"; +import { resolveElements } from "@solid-primitives/refs"; import { Component, createSignal, For, Show } from "solid-js"; import { createListTransition } from "../src"; @@ -99,58 +99,60 @@ const ListPage: Component = () => { // track the resource createRenderEffect(res); - const resolved = children(() => ( - <> -

Hello

- World - {show() && ( -
{ - onMount(() => console.log("mounted", el.isConnected)); - grayOutOnDispose(el); - }} - > - ID 0 -
- )} - -
- ID 1 -
-
- -
- ID 2 -
-
- ID 3 -
-
- - {({ n }, i) => ( + const resolved = resolveElements( + () => ( + <> +

Hello

+ World + {show() && (
- setList(p => { - const copy = p.slice(); - copy.splice(i(), 1); - return copy; - }) - } - ref={grayOutOnDispose} + class="node" + ref={el => { + onMount(() => console.log("mounted", el.isConnected)); + grayOutOnDispose(el); + }} > - {n + 1}. + ID 0
)} -
- - )); - const refs = elements(resolved, HTMLElement); + +
+ ID 1 +
+
+ +
+ ID 2 +
+
+ ID 3 +
+
+ + {({ n }, i) => ( +
+ setList(p => { + const copy = p.slice(); + copy.splice(i(), 1); + return copy; + }) + } + ref={grayOutOnDispose} + > + {n + 1}. +
+ )} +
+ + ), + (el): el is HTMLElement => el instanceof HTMLElement, + ); const options = { duration: 600, easing: "cubic-bezier(0.4, 0, 0.2, 1)" }; - return createListTransition(refs, { + return createListTransition(resolved.toArray, { appear, onChange({ added, finishRemoved, unchanged, removed }) { added.forEach(el => { From 54f10e77b9e5644508ebb3e43a7f5a84ed3d8bca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 3 Mar 2023 09:49:36 +0000 Subject: [PATCH 33/33] Version Packages --- .changeset/fair-kangaroos-beam.md | 5 - .changeset/flat-fishes-pay.md | 5 - .changeset/fresh-maps-worry.md | 5 - .changeset/itchy-suits-attack.md | 5 - .changeset/khaki-geckos-punch.md | 15 -- .changeset/pre.json | 81 ----------- .changeset/seven-onions-smile.md | 5 - packages/active-element/CHANGELOG.md | 8 ++ packages/active-element/package.json | 6 +- packages/audio/CHANGELOG.md | 7 + packages/audio/package.json | 4 +- packages/autofocus/CHANGELOG.md | 7 + packages/autofocus/package.json | 4 +- packages/bounds/CHANGELOG.md | 9 ++ packages/bounds/package.json | 8 +- packages/clipboard/CHANGELOG.md | 7 + packages/clipboard/package.json | 4 +- packages/connectivity/CHANGELOG.md | 9 ++ packages/connectivity/package.json | 8 +- packages/controlled-props/CHANGELOG.md | 7 + packages/controlled-props/package.json | 4 +- packages/cursor/CHANGELOG.md | 7 + packages/cursor/package.json | 4 +- packages/date/CHANGELOG.md | 9 ++ packages/date/package.json | 8 +- packages/destructure/CHANGELOG.md | 7 + packages/destructure/package.json | 4 +- packages/event-bus/CHANGELOG.md | 8 ++ packages/event-bus/package.json | 6 +- packages/event-listener/CHANGELOG.md | 7 + packages/event-listener/package.json | 4 +- packages/geolocation/CHANGELOG.md | 7 + packages/geolocation/package.json | 4 +- packages/graphql/CHANGELOG.md | 7 + packages/graphql/package.json | 4 +- packages/immutable/CHANGELOG.md | 7 + packages/immutable/package.json | 4 +- packages/intersection-observer/CHANGELOG.md | 7 + packages/intersection-observer/package.json | 6 +- packages/jsx-parser/CHANGELOG.md | 7 + packages/jsx-parser/package.json | 4 +- packages/keyboard/CHANGELOG.md | 9 ++ packages/keyboard/package.json | 8 +- packages/map/CHANGELOG.md | 6 + packages/map/package.json | 4 +- packages/media/CHANGELOG.md | 9 ++ packages/media/package.json | 8 +- packages/memo/CHANGELOG.md | 11 ++ packages/memo/package.json | 6 +- packages/mouse/CHANGELOG.md | 9 ++ packages/mouse/package.json | 10 +- packages/mutation-observer/CHANGELOG.md | 7 + packages/mutation-observer/package.json | 4 +- packages/page-visibility/CHANGELOG.md | 9 ++ packages/page-visibility/package.json | 8 +- packages/pagination/CHANGELOG.md | 8 ++ packages/pagination/package.json | 6 +- packages/pointer/CHANGELOG.md | 10 ++ packages/pointer/package.json | 10 +- packages/promise/CHANGELOG.md | 7 + packages/promise/package.json | 4 +- packages/props/CHANGELOG.md | 7 + packages/props/package.json | 4 +- packages/raf/CHANGELOG.md | 7 + packages/raf/package.json | 4 +- packages/range/CHANGELOG.md | 7 + packages/range/package.json | 4 +- packages/refs/CHANGELOG.md | 21 +++ packages/refs/package.json | 6 +- packages/resize-observer/CHANGELOG.md | 9 ++ packages/resize-observer/package.json | 8 +- packages/rootless/CHANGELOG.md | 7 + packages/rootless/package.json | 4 +- packages/scroll/CHANGELOG.md | 9 ++ packages/scroll/package.json | 8 +- packages/set/CHANGELOG.md | 6 + packages/set/package.json | 4 +- packages/signal-builders/CHANGELOG.md | 8 ++ packages/signal-builders/package.json | 6 +- packages/storage/CHANGELOG.md | 7 + packages/storage/package.json | 4 +- packages/stream/CHANGELOG.md | 7 + packages/stream/package.json | 4 +- packages/styles/CHANGELOG.md | 8 ++ packages/styles/package.json | 6 +- packages/transition-group/CHANGELOG.md | 11 ++ packages/transition-group/package.json | 6 +- packages/trigger/CHANGELOG.md | 7 + packages/trigger/package.json | 4 +- packages/upload/CHANGELOG.md | 7 + packages/upload/package.json | 4 +- packages/utils/CHANGELOG.md | 6 + packages/utils/package.json | 2 +- pnpm-lock.yaml | 146 ++++++++++---------- 94 files changed, 535 insertions(+), 310 deletions(-) delete mode 100644 .changeset/fair-kangaroos-beam.md delete mode 100644 .changeset/flat-fishes-pay.md delete mode 100644 .changeset/fresh-maps-worry.md delete mode 100644 .changeset/itchy-suits-attack.md delete mode 100644 .changeset/khaki-geckos-punch.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/seven-onions-smile.md diff --git a/.changeset/fair-kangaroos-beam.md b/.changeset/fair-kangaroos-beam.md deleted file mode 100644 index 4e3647407..000000000 --- a/.changeset/fair-kangaroos-beam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/transition-group": patch ---- - -Remove effects - change the rendered array and call transitions in a pure computation. diff --git a/.changeset/flat-fishes-pay.md b/.changeset/flat-fishes-pay.md deleted file mode 100644 index 4a531f706..000000000 --- a/.changeset/flat-fishes-pay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/utils": minor ---- - -Export `ResolvedJSXElement` and `ResolvedChildren` types from utils diff --git a/.changeset/fresh-maps-worry.md b/.changeset/fresh-maps-worry.md deleted file mode 100644 index 37b7a00b7..000000000 --- a/.changeset/fresh-maps-worry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/transition-group": major ---- - -Initial release. Adds `createSwitchTransition` and `createListTransition` primitives. diff --git a/.changeset/itchy-suits-attack.md b/.changeset/itchy-suits-attack.md deleted file mode 100644 index ae36e59ab..000000000 --- a/.changeset/itchy-suits-attack.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/transition-group": patch ---- - -Improve `appear` SSR - always render the initial items. diff --git a/.changeset/khaki-geckos-punch.md b/.changeset/khaki-geckos-punch.md deleted file mode 100644 index 729ef4da9..000000000 --- a/.changeset/khaki-geckos-punch.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@solid-primitives/refs": major ---- - -Major API changes. Bump stage to 2. - -`mapRemoved`, `Children`, `unmount`, `refs`, `elements`, `getChangedItems`, `getAddedItems` and `getRemovedItems` has been removed. - -Add `getResolvedElements`, `resolveElements`, `getFirstChild` and `resolveFirst` primitives. - -Improve `mergeRefs` to allow an array of refs to be passed in. - -Ensure SSR support for `resolveElements`, `resolveFirst`, `` and ``. - -Removes `"@solid-primitives/immutable"` dependency. diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index ea01347f7..000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "mode": "exit", - "tag": "beta", - "initialVersions": { - "@solid-primitives/active-element": "2.0.8", - "@solid-primitives/analytics": "0.1.3", - "@solid-primitives/audio": "1.3.7", - "@solid-primitives/autofocus": "0.0.100", - "@solid-primitives/bounds": "0.0.107", - "@solid-primitives/broadcast-channel": "0.0.101", - "@solid-primitives/clipboard": "1.5.0", - "@solid-primitives/composites": "1.1.2", - "@solid-primitives/connectivity": "0.3.7", - "@solid-primitives/context": "0.1.3", - "@solid-primitives/controlled-props": "0.0.5", - "@solid-primitives/cursor": "0.0.105", - "@solid-primitives/date": "2.0.7", - "@solid-primitives/destructure": "0.1.7", - "@solid-primitives/devices": "1.2.2", - "@solid-primitives/event-bus": "1.0.0", - "@solid-primitives/event-dispatcher": "0.0.103", - "@solid-primitives/event-listener": "2.2.6", - "@solid-primitives/event-props": "0.2.3", - "@solid-primitives/fetch": "2.4.3", - "@solid-primitives/fullscreen": "1.2.2", - "@solid-primitives/geolocation": "1.4.4", - "@solid-primitives/gestures": "1.1.3", - "@solid-primitives/graphql": "1.5.2", - "@solid-primitives/i18n": "1.2.0", - "@solid-primitives/idle": "0.0.103", - "@solid-primitives/immutable": "0.1.6", - "@solid-primitives/input-mask": "0.1.5", - "@solid-primitives/intersection-observer": "2.0.6", - "@solid-primitives/jsx-parser": "0.1.1", - "@solid-primitives/keyboard": "1.0.7", - "@solid-primitives/keyed": "1.1.7", - "@solid-primitives/map": "0.4.0", - "@solid-primitives/media": "2.1.1", - "@solid-primitives/memo": "1.1.4", - "@solid-primitives/mouse": "2.0.6", - "@solid-primitives/mutation-observer": "1.1.6", - "@solid-primitives/page-visibility": "2.0.4", - "@solid-primitives/pagination": "0.2.0", - "@solid-primitives/permission": "1.2.2", - "@solid-primitives/platform": "0.0.103", - "@solid-primitives/pointer": "0.2.5", - "@solid-primitives/promise": "1.0.6", - "@solid-primitives/props": "3.0.6", - "@solid-primitives/raf": "2.1.6", - "@solid-primitives/range": "0.1.6", - "@solid-primitives/refs": "0.3.6", - "@solid-primitives/resize-observer": "2.0.9", - "@solid-primitives/rootless": "1.2.4", - "@solid-primitives/scheduled": "1.3.0", - "@solid-primitives/script-loader": "2.0.0", - "@solid-primitives/scroll": "2.0.8", - "@solid-primitives/selection": "0.0.4", - "@solid-primitives/set": "0.4.0", - "@solid-primitives/share": "2.0.2", - "@solid-primitives/signal-builders": "0.1.6", - "@solid-primitives/storage": "1.3.5", - "@solid-primitives/stream": "0.6.4", - "@solid-primitives/styles": "0.0.103", - "@solid-primitives/timer": "1.3.5", - "@solid-primitives/transition-group": "0.0.0", - "@solid-primitives/trigger": "1.0.0", - "@solid-primitives/tween": "1.2.4", - "@solid-primitives/upload": "0.0.107", - "@solid-primitives/utils": "5.2.0", - "@solid-primitives/websocket": "0.3.4", - "@solid-primitives/workers": "0.2.3" - }, - "changesets": [ - "fair-kangaroos-beam", - "flat-fishes-pay", - "fresh-maps-worry", - "itchy-suits-attack", - "khaki-geckos-punch", - "seven-onions-smile" - ] -} diff --git a/.changeset/seven-onions-smile.md b/.changeset/seven-onions-smile.md deleted file mode 100644 index 6df1c1cc6..000000000 --- a/.changeset/seven-onions-smile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@solid-primitives/memo": minor ---- - -Major improvements to how createWritableMemo and createLatest works. diff --git a/packages/active-element/CHANGELOG.md b/packages/active-element/CHANGELOG.md index 4b6cd9518..b2611d1b1 100644 --- a/packages/active-element/CHANGELOG.md +++ b/packages/active-element/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/active-element +## 2.0.10 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + ## 2.0.10-beta.0 ### Patch Changes diff --git a/packages/active-element/package.json b/packages/active-element/package.json index 259f75ab2..96c7f9a0b 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.10-beta.0", + "version": "2.0.10", "description": "A reactive document.activeElement. Check which element is currently focused.", "author": "Damian Tarnawski @thetarnav ", "contributors": [ @@ -83,8 +83,8 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "^2.2.8-beta.0", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/event-listener": "^2.2.8", + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/audio/CHANGELOG.md b/packages/audio/CHANGELOG.md index beffee587..d7151a01e 100644 --- a/packages/audio/CHANGELOG.md +++ b/packages/audio/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/audio +## 1.3.9 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.3.9-beta.0 ### Patch Changes diff --git a/packages/audio/package.json b/packages/audio/package.json index b5fa0ca7e..6be97f92c 100644 --- a/packages/audio/package.json +++ b/packages/audio/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/audio", - "version": "1.3.9-beta.0", + "version": "1.3.9", "description": "Primitives to manage audio and single sounds.", "author": "David Di Biase ", "license": "MIT", @@ -85,7 +85,7 @@ "solid-heroicons": "^3.1.1" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/autofocus/CHANGELOG.md b/packages/autofocus/CHANGELOG.md index 2a2bbdb9a..98b6beee7 100644 --- a/packages/autofocus/CHANGELOG.md +++ b/packages/autofocus/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/autofocus +## 0.0.102 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.0.102-beta.0 ### Patch Changes diff --git a/packages/autofocus/package.json b/packages/autofocus/package.json index e3317616f..75e1d000f 100644 --- a/packages/autofocus/package.json +++ b/packages/autofocus/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/autofocus", - "version": "0.0.102-beta.0", + "version": "0.0.102", "description": "Primitives for autofocusing HTML elements", "author": "jer3m01 ", "contributors": [], @@ -56,7 +56,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "typesVersions": {} } diff --git a/packages/bounds/CHANGELOG.md b/packages/bounds/CHANGELOG.md index 2decff9ff..26de9376d 100644 --- a/packages/bounds/CHANGELOG.md +++ b/packages/bounds/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/bounds +## 0.0.109 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/resize-observer@2.0.11 + ## 0.0.109-beta.0 ### Patch Changes diff --git a/packages/bounds/package.json b/packages/bounds/package.json index 980fb717c..25c58f11d 100644 --- a/packages/bounds/package.json +++ b/packages/bounds/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/bounds", - "version": "0.0.109-beta.0", + "version": "0.0.109", "description": "Primitives for tracking HTML element size and position on screen as it changes.", "author": "Damian Tarnawski ", "contributors": [], @@ -87,9 +87,9 @@ "@solid-primitives/scheduled": "workspace:^1.3.1" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", - "@solid-primitives/resize-observer": "workspace:^2.0.11-beta.0", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/event-listener": "workspace:^2.2.8", + "@solid-primitives/resize-observer": "workspace:^2.0.11", + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/clipboard/CHANGELOG.md b/packages/clipboard/CHANGELOG.md index c677981f1..ee50630d4 100644 --- a/packages/clipboard/CHANGELOG.md +++ b/packages/clipboard/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/clipboard +## 1.5.2 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.5.2-beta.0 ### Patch Changes diff --git a/packages/clipboard/package.json b/packages/clipboard/package.json index b1a0f6a06..02e382af8 100644 --- a/packages/clipboard/package.json +++ b/packages/clipboard/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/clipboard", - "version": "1.5.2-beta.0", + "version": "1.5.2", "description": "Primitives for reading and writing to clipboard.", "author": "David Di Biase ", "contributors": [ @@ -88,7 +88,7 @@ ], "testEnvironment": "jsdom", "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/connectivity/CHANGELOG.md b/packages/connectivity/CHANGELOG.md index af2a08acd..37d2fcd65 100644 --- a/packages/connectivity/CHANGELOG.md +++ b/packages/connectivity/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/connectivity +## 0.3.9 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/rootless@1.2.6 + ## 0.3.9-beta.0 ### Patch Changes diff --git a/packages/connectivity/package.json b/packages/connectivity/package.json index c28eb5b13..16d504bd3 100644 --- a/packages/connectivity/package.json +++ b/packages/connectivity/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/connectivity", - "version": "0.3.9-beta.0", + "version": "0.3.9", "description": "A navigator.onLine signal.", "author": "Klemen Slavič ", "contributors": [ @@ -83,9 +83,9 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "^2.2.8-beta.0", - "@solid-primitives/rootless": "^1.2.6-beta.0", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/event-listener": "^2.2.8", + "@solid-primitives/rootless": "^1.2.6", + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/controlled-props/CHANGELOG.md b/packages/controlled-props/CHANGELOG.md index 361cd7e21..ccd4435d6 100644 --- a/packages/controlled-props/CHANGELOG.md +++ b/packages/controlled-props/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/controlled-props +## 0.0.7 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.0.7-beta.0 ### Patch Changes diff --git a/packages/controlled-props/package.json b/packages/controlled-props/package.json index bae980826..035e5a5f3 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.7-beta.0", + "version": "0.0.7", "description": "The primitives in this package allow you to create controlls for component props.", "author": "Alex Lohr ", "contributors": [], @@ -53,7 +53,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/cursor/CHANGELOG.md b/packages/cursor/CHANGELOG.md index 85b52d6eb..a9e427d09 100644 --- a/packages/cursor/CHANGELOG.md +++ b/packages/cursor/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/cursor +## 0.0.107 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.0.107-beta.0 ### Patch Changes diff --git a/packages/cursor/package.json b/packages/cursor/package.json index cb43aae06..5631ac33c 100644 --- a/packages/cursor/package.json +++ b/packages/cursor/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/cursor", - "version": "0.0.107-beta.0", + "version": "0.0.107", "description": "Two simple primitives for setting cursor css property reactively.", "author": "Damian Tarnawski ", "contributors": [], @@ -84,7 +84,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/date/CHANGELOG.md b/packages/date/CHANGELOG.md index 6524925eb..8d512629f 100644 --- a/packages/date/CHANGELOG.md +++ b/packages/date/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/date +## 2.0.9 + +### Patch Changes + +- Updated dependencies [d6559a32] +- Updated dependencies [d7b907e6] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/memo@1.2.0 + ## 2.0.9-beta.1 ### Patch Changes diff --git a/packages/date/package.json b/packages/date/package.json index 17a6492b7..188f662e0 100644 --- a/packages/date/package.json +++ b/packages/date/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/date", - "version": "2.0.9-beta.1", + "version": "2.0.9", "description": "Collection of reactive primitives and utility functions, providing easier ways to deal with dates in SolidJS", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -55,13 +55,13 @@ "primitives" ], "devDependencies": { - "@solid-primitives/event-listener": "^2.2.8-beta.0", + "@solid-primitives/event-listener": "^2.2.8", "date-fns": "^2.29.2" }, "dependencies": { - "@solid-primitives/memo": "^1.2.0-beta.1", + "@solid-primitives/memo": "^1.2.0", "@solid-primitives/timer": "^1.3.6", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/destructure/CHANGELOG.md b/packages/destructure/CHANGELOG.md index de33c3267..5cfbae721 100644 --- a/packages/destructure/CHANGELOG.md +++ b/packages/destructure/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/destructure +## 0.1.9 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.1.9-beta.0 ### Patch Changes diff --git a/packages/destructure/package.json b/packages/destructure/package.json index a69db2863..ff53591a2 100644 --- a/packages/destructure/package.json +++ b/packages/destructure/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/destructure", - "version": "0.1.9-beta.0", + "version": "0.1.9", "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", @@ -51,7 +51,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/event-bus/CHANGELOG.md b/packages/event-bus/CHANGELOG.md index 8423d6479..657846c0f 100644 --- a/packages/event-bus/CHANGELOG.md +++ b/packages/event-bus/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/event-bus +## 1.0.2 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/immutable@0.1.8 + ## 1.0.2-beta.0 ### Patch Changes diff --git a/packages/event-bus/package.json b/packages/event-bus/package.json index 873e3683f..18f5aa5ab 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.2-beta.0", + "version": "1.0.2", "description": "A collection of SolidJS primitives providing various features of a pubsub/event-emitter/event-bus.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -54,8 +54,8 @@ "primitives" ], "dependencies": { - "@solid-primitives/immutable": "^0.1.8-beta.0", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/immutable": "^0.1.8", + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/event-listener/CHANGELOG.md b/packages/event-listener/CHANGELOG.md index 154a98d8b..6e6a56e7d 100644 --- a/packages/event-listener/CHANGELOG.md +++ b/packages/event-listener/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/event-listener +## 2.2.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 2.2.8-beta.0 ### Patch Changes diff --git a/packages/event-listener/package.json b/packages/event-listener/package.json index 1962b44eb..83ef48e72 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.8-beta.0", + "version": "2.2.8", "description": "SolidJS Primitives to manage creating event listeners.", "author": "David Di Biase ", "contributors": [ @@ -87,7 +87,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/geolocation/CHANGELOG.md b/packages/geolocation/CHANGELOG.md index 0d41d1a92..ba319aaf1 100644 --- a/packages/geolocation/CHANGELOG.md +++ b/packages/geolocation/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/geolocation +## 1.4.6 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.4.6-beta.0 ### Patch Changes diff --git a/packages/geolocation/package.json b/packages/geolocation/package.json index 40f3a39e2..539cc5c0b 100644 --- a/packages/geolocation/package.json +++ b/packages/geolocation/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/geolocation", - "version": "1.4.6-beta.0", + "version": "1.4.6", "description": "Primitives to query geolocation and observe changes.", "author": "David Di Biase ", "license": "MIT", @@ -101,7 +101,7 @@ "vite-plugin-mkcert": "^1.13.1" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/graphql/CHANGELOG.md b/packages/graphql/CHANGELOG.md index f0eb4d897..f12ad19bf 100644 --- a/packages/graphql/CHANGELOG.md +++ b/packages/graphql/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/graphql +## 1.5.4 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.5.4-beta.0 ### Patch Changes diff --git a/packages/graphql/package.json b/packages/graphql/package.json index 1d06f0d8c..1a611c00e 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/graphql", - "version": "1.5.4-beta.0", + "version": "1.5.4", "description": "Primitive that generates a client and reactive GraphQL queries", "author": "David Di Biase ", "contributors": [ @@ -60,7 +60,7 @@ }, "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", - "@solid-primitives/utils": "^5.4.0-beta.0", + "@solid-primitives/utils": "^5.4.0", "graphql": "^16.6.0" }, "peerDependencies": { diff --git a/packages/immutable/CHANGELOG.md b/packages/immutable/CHANGELOG.md index ac29753fc..503d249af 100644 --- a/packages/immutable/CHANGELOG.md +++ b/packages/immutable/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/immutable +## 0.1.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.1.8-beta.0 ### Patch Changes diff --git a/packages/immutable/package.json b/packages/immutable/package.json index 8c082d2a3..f0292f1d6 100644 --- a/packages/immutable/package.json +++ b/packages/immutable/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/immutable", - "version": "0.1.8-beta.0", + "version": "0.1.8", "description": "Functional programming helpers for making non-mutating changes to data. Keeping it immutable.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -46,7 +46,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/intersection-observer/CHANGELOG.md b/packages/intersection-observer/CHANGELOG.md index 43998000e..bb46674c4 100644 --- a/packages/intersection-observer/CHANGELOG.md +++ b/packages/intersection-observer/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/intersection-observer +## 2.0.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 2.0.8-beta.0 ### Patch Changes diff --git a/packages/intersection-observer/package.json b/packages/intersection-observer/package.json index 17cc1664d..c41286a0b 100644 --- a/packages/intersection-observer/package.json +++ b/packages/intersection-observer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/intersection-observer", - "version": "2.0.8-beta.0", + "version": "2.0.8", "description": "Primitives to support using the intersection observer API.", "author": "David Di Biase ", "contributors": [ @@ -101,10 +101,10 @@ "primitives" ], "devDependencies": { - "@solid-primitives/range": "workspace:^0.1.8-beta.0" + "@solid-primitives/range": "workspace:^0.1.8" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/jsx-parser/CHANGELOG.md b/packages/jsx-parser/CHANGELOG.md index 8b93f2062..610390f44 100644 --- a/packages/jsx-parser/CHANGELOG.md +++ b/packages/jsx-parser/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/jsx-parser +## 0.1.3 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.1.3-beta.0 ### Patch Changes diff --git a/packages/jsx-parser/package.json b/packages/jsx-parser/package.json index 8606f0b0f..f9db0d2af 100644 --- a/packages/jsx-parser/package.json +++ b/packages/jsx-parser/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/jsx-parser", - "version": "0.1.3-beta.0", + "version": "0.1.3", "description": "A primitive to tokenize your solid-components to enable custom parsing.", "author": "Vincent Van Dijck ", "contributors": [ @@ -63,7 +63,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/keyboard/CHANGELOG.md b/packages/keyboard/CHANGELOG.md index a7808f986..6810826f5 100644 --- a/packages/keyboard/CHANGELOG.md +++ b/packages/keyboard/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/keyboard +## 1.0.9 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/rootless@1.2.6 + ## 1.0.9-beta.0 ### Patch Changes diff --git a/packages/keyboard/package.json b/packages/keyboard/package.json index 22a8f5d1f..3b5be769f 100644 --- a/packages/keyboard/package.json +++ b/packages/keyboard/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/keyboard", - "version": "1.0.9-beta.0", + "version": "1.0.9", "description": "A library of reactive promitives helping handling user's keyboard input.", "author": "Damian Tarnwski ", "contributors": [], @@ -88,9 +88,9 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", - "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/event-listener": "workspace:^2.2.8", + "@solid-primitives/rootless": "workspace:^1.2.6", + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/map/CHANGELOG.md b/packages/map/CHANGELOG.md index b4b9aafa4..aa5e7f4f6 100644 --- a/packages/map/CHANGELOG.md +++ b/packages/map/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/map +## 0.4.2 + +### Patch Changes + +- @solid-primitives/trigger@1.0.2 + ## 0.4.2-beta.0 ### Patch Changes diff --git a/packages/map/package.json b/packages/map/package.json index 746139635..abc2a08fc 100644 --- a/packages/map/package.json +++ b/packages/map/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/map", - "version": "0.4.2-beta.0", + "version": "0.4.2", "description": "The Map & WeakMap data structures as a reactive signals.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -55,7 +55,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/trigger": "workspace:^1.0.2-beta.0" + "@solid-primitives/trigger": "workspace:^1.0.2" }, "typesVersions": {} } diff --git a/packages/media/CHANGELOG.md b/packages/media/CHANGELOG.md index 0e53b03fe..8d4a90d64 100644 --- a/packages/media/CHANGELOG.md +++ b/packages/media/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/media +## 2.1.3 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/rootless@1.2.6 + ## 2.1.3-beta.0 ### Patch Changes diff --git a/packages/media/package.json b/packages/media/package.json index f8fe13f9d..bbdb517c2 100644 --- a/packages/media/package.json +++ b/packages/media/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/media", - "version": "2.1.3-beta.0", + "version": "2.1.3", "description": "Primitives for media query and device features", "author": "David Di Biase ", "contributors": [ @@ -94,9 +94,9 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", - "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/event-listener": "workspace:^2.2.8", + "@solid-primitives/rootless": "workspace:^1.2.6", + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/memo/CHANGELOG.md b/packages/memo/CHANGELOG.md index 2a4eda7da..f17343615 100644 --- a/packages/memo/CHANGELOG.md +++ b/packages/memo/CHANGELOG.md @@ -1,5 +1,16 @@ # @solid-primitives/memo +## 1.2.0 + +### Minor Changes + +- d7b907e6: Major improvements to how createWritableMemo and createLatest works. + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.2.0-beta.1 ### Patch Changes diff --git a/packages/memo/package.json b/packages/memo/package.json index 07c23be37..7eefe6c2f 100644 --- a/packages/memo/package.json +++ b/packages/memo/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/memo", - "version": "1.2.0-beta.1", + "version": "1.2.0", "description": "Collection of custom memo primitives. They extend Solid's createMemo functionality while keeping the usage similar.", "author": "Damian Tarnawski @thetarnav ", "contributors": [], @@ -93,10 +93,10 @@ ], "dependencies": { "@solid-primitives/scheduled": "^1.3.1", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "devDependencies": { - "@solid-primitives/mouse": "^2.0.8-beta.0", + "@solid-primitives/mouse": "^2.0.8", "@solidjs/router": "^0.7.0" }, "peerDependencies": { diff --git a/packages/mouse/CHANGELOG.md b/packages/mouse/CHANGELOG.md index 93acb0bb8..16423c0fa 100644 --- a/packages/mouse/CHANGELOG.md +++ b/packages/mouse/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/mouse +## 2.0.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/rootless@1.2.6 + ## 2.0.8-beta.0 ### Patch Changes diff --git a/packages/mouse/package.json b/packages/mouse/package.json index 89644c258..2ef20ad91 100644 --- a/packages/mouse/package.json +++ b/packages/mouse/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/mouse", - "version": "2.0.8-beta.0", + "version": "2.0.8", "description": "A collection of Solid Primitives, that capture current mouse cursor position, and help to deal with common related usecases.", "author": "Damian Tarnawski ", "license": "MIT", @@ -97,12 +97,12 @@ "primitives" ], "devDependencies": { - "@solid-primitives/raf": "workspace:^2.1.8-beta.0" + "@solid-primitives/raf": "workspace:^2.1.8" }, "dependencies": { - "@solid-primitives/event-listener": "^2.2.8-beta.0", - "@solid-primitives/rootless": "^1.2.6-beta.0", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/event-listener": "^2.2.8", + "@solid-primitives/rootless": "^1.2.6", + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/mutation-observer/CHANGELOG.md b/packages/mutation-observer/CHANGELOG.md index e897a9a64..765f6f7ec 100644 --- a/packages/mutation-observer/CHANGELOG.md +++ b/packages/mutation-observer/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/mutation-observer +## 1.1.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.1.8-beta.0 ### Patch Changes diff --git a/packages/mutation-observer/package.json b/packages/mutation-observer/package.json index b7611790e..a842a4639 100644 --- a/packages/mutation-observer/package.json +++ b/packages/mutation-observer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/mutation-observer", - "version": "1.1.8-beta.0", + "version": "1.1.8", "description": "Primitive providing the ability to watch for changes made to the DOM tree.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -50,7 +50,7 @@ "@solid-primitives/composites": "workspace:^1.1.3" }, "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/page-visibility/CHANGELOG.md b/packages/page-visibility/CHANGELOG.md index 602d97358..9716b2d76 100644 --- a/packages/page-visibility/CHANGELOG.md +++ b/packages/page-visibility/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/page-visibility +## 2.0.6 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/rootless@1.2.6 + ## 2.0.6-beta.0 ### Patch Changes diff --git a/packages/page-visibility/package.json b/packages/page-visibility/package.json index 1696e5f68..e655259dc 100644 --- a/packages/page-visibility/package.json +++ b/packages/page-visibility/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/page-visibility", - "version": "2.0.6-beta.0", + "version": "2.0.6", "description": "Primitive to track page visibility", "author": "David Di Biase", "contributors": [ @@ -96,9 +96,9 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", - "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/event-listener": "workspace:^2.2.8", + "@solid-primitives/rootless": "workspace:^1.2.6", + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/pagination/CHANGELOG.md b/packages/pagination/CHANGELOG.md index f9b407125..22397ea7f 100644 --- a/packages/pagination/CHANGELOG.md +++ b/packages/pagination/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/pagination +## 0.2.2 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/intersection-observer@2.0.8 + ## 0.2.2-beta.0 ### Patch Changes diff --git a/packages/pagination/package.json b/packages/pagination/package.json index 222adb990..bf425c90e 100644 --- a/packages/pagination/package.json +++ b/packages/pagination/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/pagination", - "version": "0.2.2-beta.0", + "version": "0.2.2", "description": "A primitive that creates all the reactive data to manage your pagination.", "author": "Alex Lohr ", "contributors": [ @@ -87,8 +87,8 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/intersection-observer": "workspace:^2.0.8-beta.0", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/intersection-observer": "workspace:^2.0.8", + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/pointer/CHANGELOG.md b/packages/pointer/CHANGELOG.md index c68c0172b..fb6e309da 100644 --- a/packages/pointer/CHANGELOG.md +++ b/packages/pointer/CHANGELOG.md @@ -1,5 +1,15 @@ # @solid-primitives/pointer +## 0.2.7 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/immutable@0.1.8 + - @solid-primitives/rootless@1.2.6 + ## 0.2.7-beta.0 ### Patch Changes diff --git a/packages/pointer/package.json b/packages/pointer/package.json index 7823cc947..99d0a9350 100644 --- a/packages/pointer/package.json +++ b/packages/pointer/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/pointer", - "version": "0.2.7-beta.0", + "version": "0.2.7", "description": "A collection of primitives, giving you a nicer API to handle pointer events in a reactive context.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -99,10 +99,10 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "^2.2.8-beta.0", - "@solid-primitives/immutable": "^0.1.8-beta.0", - "@solid-primitives/rootless": "^1.2.6-beta.0", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/event-listener": "^2.2.8", + "@solid-primitives/immutable": "^0.1.8", + "@solid-primitives/rootless": "^1.2.6", + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/promise/CHANGELOG.md b/packages/promise/CHANGELOG.md index 366ed61d9..fa4af6b0f 100644 --- a/packages/promise/CHANGELOG.md +++ b/packages/promise/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/until +## 1.0.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.0.8-beta.0 ### Patch Changes diff --git a/packages/promise/package.json b/packages/promise/package.json index a6f36c89f..c00d006e7 100644 --- a/packages/promise/package.json +++ b/packages/promise/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/promise", - "version": "1.0.8-beta.0", + "version": "1.0.8", "description": "Promised one-time watch for changes. Await a reactive condition.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -95,7 +95,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/props/CHANGELOG.md b/packages/props/CHANGELOG.md index 7de914297..f484822af 100644 --- a/packages/props/CHANGELOG.md +++ b/packages/props/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/props +## 3.1.1 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 3.1.1-beta.0 ### Patch Changes diff --git a/packages/props/package.json b/packages/props/package.json index ed7f71ee9..c0be9ddce 100644 --- a/packages/props/package.json +++ b/packages/props/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/props", - "version": "3.1.1-beta.0", + "version": "3.1.1", "description": "Library of primitives focused around component props.", "author": "Damian Tarnawski ", "contributors": [], @@ -49,7 +49,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "devDependencies": { "nanospy": "^0.5.0" diff --git a/packages/raf/CHANGELOG.md b/packages/raf/CHANGELOG.md index 807c42b80..4b7e48aac 100644 --- a/packages/raf/CHANGELOG.md +++ b/packages/raf/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/raf +## 2.1.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 2.1.8-beta.0 ### Patch Changes diff --git a/packages/raf/package.json b/packages/raf/package.json index fb0e829fd..5b3f70da6 100644 --- a/packages/raf/package.json +++ b/packages/raf/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/raf", - "version": "2.1.8-beta.0", + "version": "2.1.8", "description": "Primitive that facilitates RAF functionality", "author": "David Di Biase ", "contributors": [ @@ -98,7 +98,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/range/CHANGELOG.md b/packages/range/CHANGELOG.md index a962376c1..15919a82b 100644 --- a/packages/range/CHANGELOG.md +++ b/packages/range/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/range +## 0.1.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.1.8-beta.0 ### Patch Changes diff --git a/packages/range/package.json b/packages/range/package.json index ba2bcbde4..a1fe3787a 100644 --- a/packages/range/package.json +++ b/packages/range/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/range", - "version": "0.1.8-beta.0", + "version": "0.1.8", "description": "Control Flow Primitives for displaying given number or a number range of elements.", "author": "Damian Tarnawski @thetarnav ", "contributors": [], @@ -68,7 +68,7 @@ "solid-transition-group": "^0.0.13" }, "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/refs/CHANGELOG.md b/packages/refs/CHANGELOG.md index 97be0e659..151b1245c 100644 --- a/packages/refs/CHANGELOG.md +++ b/packages/refs/CHANGELOG.md @@ -1,5 +1,26 @@ # @solid-primitives/refs +## 1.0.0 + +### Major Changes + +- d6559a32: Major API changes. Bump stage to 2. + + `mapRemoved`, `Children`, `unmount`, `refs`, `elements`, `getChangedItems`, `getAddedItems` and `getRemovedItems` has been removed. + + Add `getResolvedElements`, `resolveElements`, `getFirstChild` and `resolveFirst` primitives. + + Improve `mergeRefs` to allow an array of refs to be passed in. + + Ensure SSR support for `resolveElements`, `resolveFirst`, `` and ``. + + Removes `"@solid-primitives/immutable"` dependency. + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.0.0-beta.1 ### Major Changes diff --git a/packages/refs/package.json b/packages/refs/package.json index 44ac4a862..ee4615e18 100644 --- a/packages/refs/package.json +++ b/packages/refs/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/refs", - "version": "1.0.0-beta.1", + "version": "1.0.0", "description": "Library of primitives, components and directives for SolidJS that help managing references to JSX elements.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -84,12 +84,12 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "devDependencies": { "solid-app-router": "^0.4.2", "solid-transition-group": "^0.0.13", - "@solid-primitives/immutable": "^0.1.8-beta.0" + "@solid-primitives/immutable": "^0.1.8" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/resize-observer/CHANGELOG.md b/packages/resize-observer/CHANGELOG.md index 83af6546f..7fb385007 100644 --- a/packages/resize-observer/CHANGELOG.md +++ b/packages/resize-observer/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/resize-observer +## 2.0.11 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/rootless@1.2.6 + ## 2.0.11-beta.0 ### Patch Changes diff --git a/packages/resize-observer/package.json b/packages/resize-observer/package.json index 432e15a13..a6132de36 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.11-beta.0", + "version": "2.0.11", "description": "Reactive primitives for observing resizing of HTML elements.", "author": "Moshe Udimar", "contributors": [ @@ -84,9 +84,9 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", - "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/event-listener": "workspace:^2.2.8", + "@solid-primitives/rootless": "workspace:^1.2.6", + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/rootless/CHANGELOG.md b/packages/rootless/CHANGELOG.md index 8b5ce4cb6..775790e61 100644 --- a/packages/rootless/CHANGELOG.md +++ b/packages/rootless/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/rootless +## 1.2.6 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.2.6-beta.0 ### Patch Changes diff --git a/packages/rootless/package.json b/packages/rootless/package.json index a9170b5d4..d97a67c7f 100644 --- a/packages/rootless/package.json +++ b/packages/rootless/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/rootless", - "version": "1.2.6-beta.0", + "version": "1.2.6", "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", @@ -48,7 +48,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.11" diff --git a/packages/scroll/CHANGELOG.md b/packages/scroll/CHANGELOG.md index e82dedec2..ad1fb1e23 100644 --- a/packages/scroll/CHANGELOG.md +++ b/packages/scroll/CHANGELOG.md @@ -1,5 +1,14 @@ # @solid-primitives/scroll +## 2.0.10 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/event-listener@2.2.8 + - @solid-primitives/rootless@1.2.6 + ## 2.0.10-beta.0 ### Patch Changes diff --git a/packages/scroll/package.json b/packages/scroll/package.json index c07e9a2cb..3108e714f 100644 --- a/packages/scroll/package.json +++ b/packages/scroll/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/scroll", - "version": "2.0.10-beta.0", + "version": "2.0.10", "description": "Reactive primitives to react to element/window scrolling.", "author": "David Di Biase ", "contributors": [ @@ -100,9 +100,9 @@ "primitives" ], "dependencies": { - "@solid-primitives/event-listener": "workspace:^2.2.8-beta.0", - "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/event-listener": "workspace:^2.2.8", + "@solid-primitives/rootless": "workspace:^1.2.6", + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/set/CHANGELOG.md b/packages/set/CHANGELOG.md index 1b0768f8d..ba259559a 100644 --- a/packages/set/CHANGELOG.md +++ b/packages/set/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/set +## 0.4.2 + +### Patch Changes + +- @solid-primitives/trigger@1.0.2 + ## 0.4.2-beta.0 ### Patch Changes diff --git a/packages/set/package.json b/packages/set/package.json index ca1c01ad8..05f25724c 100644 --- a/packages/set/package.json +++ b/packages/set/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/set", - "version": "0.4.2-beta.0", + "version": "0.4.2", "description": "The Set & WeakSet data structures as a reactive signals.", "author": "Damian Tarnawski @thetarnav ", "license": "MIT", @@ -53,7 +53,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/trigger": "workspace:^1.0.2-beta.0" + "@solid-primitives/trigger": "workspace:^1.0.2" }, "typesVersions": {} } diff --git a/packages/signal-builders/CHANGELOG.md b/packages/signal-builders/CHANGELOG.md index 68001ccd2..70d6f5675 100644 --- a/packages/signal-builders/CHANGELOG.md +++ b/packages/signal-builders/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/signal-builders +## 0.1.8 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/immutable@0.1.8 + ## 0.1.8-beta.0 ### Patch Changes diff --git a/packages/signal-builders/package.json b/packages/signal-builders/package.json index 27f54e7e2..8d664e345 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.8-beta.0", + "version": "0.1.8", "description": "A collection of chainable and composable reactive signal calculations, aka Signal Builders.", "author": "Your Name ", "license": "MIT", @@ -45,8 +45,8 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/immutable": "^0.1.8-beta.0", - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/immutable": "^0.1.8", + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/storage/CHANGELOG.md b/packages/storage/CHANGELOG.md index 729bacfa7..0f78b8e01 100644 --- a/packages/storage/CHANGELOG.md +++ b/packages/storage/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/storage +## 1.3.7 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.3.7-beta.0 ### Patch Changes diff --git a/packages/storage/package.json b/packages/storage/package.json index d087aa64f..25544a8a0 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/storage", - "version": "1.3.7-beta.0", + "version": "1.3.7", "description": "Primitive that provides reactive wrappers for storage access", "author": "Alex Lohr ", "contributors": [ @@ -100,7 +100,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/stream/CHANGELOG.md b/packages/stream/CHANGELOG.md index ad375b65b..8973d247d 100644 --- a/packages/stream/CHANGELOG.md +++ b/packages/stream/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/stream +## 0.6.6 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.6.6-beta.0 ### Patch Changes diff --git a/packages/stream/package.json b/packages/stream/package.json index 27e26f866..3993e4b4c 100644 --- a/packages/stream/package.json +++ b/packages/stream/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/stream", - "version": "0.6.6-beta.0", + "version": "0.6.6", "description": "Primitive that gets a user media stream from microphone, camera or screen", "author": "Alex Lohr ", "license": "MIT", @@ -99,7 +99,7 @@ "primitives" ], "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/styles/CHANGELOG.md b/packages/styles/CHANGELOG.md index 643d6ec83..0679efb0c 100644 --- a/packages/styles/CHANGELOG.md +++ b/packages/styles/CHANGELOG.md @@ -1,5 +1,13 @@ # @solid-primitives/styles +## 0.0.105 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + - @solid-primitives/rootless@1.2.6 + ## 0.0.105-beta.0 ### Patch Changes diff --git a/packages/styles/package.json b/packages/styles/package.json index 672a17192..59b06902f 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/styles", - "version": "0.0.105-beta.0", + "version": "0.0.105", "description": "Collection of reactive primitives focused on styles.", "author": "Damian Tarnawski ", "contributors": [ @@ -100,8 +100,8 @@ "css" ], "dependencies": { - "@solid-primitives/rootless": "workspace:^1.2.6-beta.0", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/rootless": "workspace:^1.2.6", + "@solid-primitives/utils": "workspace:^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/transition-group/CHANGELOG.md b/packages/transition-group/CHANGELOG.md index b587a9856..818494aa8 100644 --- a/packages/transition-group/CHANGELOG.md +++ b/packages/transition-group/CHANGELOG.md @@ -1,5 +1,16 @@ # @solid-primitives/transition-group +## 1.0.0 + +### Major Changes + +- 1ba2f037: Initial release. Adds `createSwitchTransition` and `createListTransition` primitives. + +### Patch Changes + +- ba06b334: Remove effects - change the rendered array and call transitions in a pure computation. +- 2b4fb9be: Improve `appear` SSR - always render the initial items. + ## 0.0.1-beta.2 ### Patch Changes diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json index 1de847cf2..95c4256a3 100644 --- a/packages/transition-group/package.json +++ b/packages/transition-group/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/transition-group", - "version": "0.0.1-beta.2", + "version": "1.0.0", "description": "Reactive primitives for implementing transition effects in SolidJS", "author": "Damian Tarnawski ", "contributors": [], @@ -73,8 +73,8 @@ "solid-js": "^1.6.0" }, "devDependencies": { - "@solid-primitives/refs": "workspace:^1.0.0-beta.1", - "@solid-primitives/utils": "workspace:^5.4.0-beta.0", + "@solid-primitives/refs": "workspace:^1.0.0", + "@solid-primitives/utils": "workspace:^5.4.0", "@solidjs/router": "^0.7.0" } } diff --git a/packages/trigger/CHANGELOG.md b/packages/trigger/CHANGELOG.md index f45ce3796..76a44aed2 100644 --- a/packages/trigger/CHANGELOG.md +++ b/packages/trigger/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/trigger +## 1.0.2 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 1.0.2-beta.0 ### Patch Changes diff --git a/packages/trigger/package.json b/packages/trigger/package.json index b4952cdd7..47fd393ad 100644 --- a/packages/trigger/package.json +++ b/packages/trigger/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/trigger", - "version": "1.0.2-beta.0", + "version": "1.0.2", "description": "A set of primitives based on Solid signals, used to trigger computations.", "author": "Damian Tarnawski ", "contributors": [], @@ -101,7 +101,7 @@ "solid-js": "^1.6.0" }, "dependencies": { - "@solid-primitives/utils": "workspace:^5.4.0-beta.0" + "@solid-primitives/utils": "workspace:^5.4.0" }, "typesVersions": {} } diff --git a/packages/upload/CHANGELOG.md b/packages/upload/CHANGELOG.md index b90163b48..76c70a6ff 100644 --- a/packages/upload/CHANGELOG.md +++ b/packages/upload/CHANGELOG.md @@ -1,5 +1,12 @@ # @solid-primitives/upload +## 0.0.109 + +### Patch Changes + +- Updated dependencies [d6559a32] + - @solid-primitives/utils@5.4.0 + ## 0.0.109-beta.0 ### Patch Changes diff --git a/packages/upload/package.json b/packages/upload/package.json index 51b12681b..8a7b75a05 100644 --- a/packages/upload/package.json +++ b/packages/upload/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/upload", - "version": "0.0.109-beta.0", + "version": "0.0.109", "description": "Primitives for uploading files.", "author": "Rustam Ashurmatov ", "license": "MIT", @@ -80,7 +80,7 @@ "test:ssr": "pnpm run test --mode ssr" }, "dependencies": { - "@solid-primitives/utils": "^5.4.0-beta.0" + "@solid-primitives/utils": "^5.4.0" }, "peerDependencies": { "solid-js": "^1.6.0" diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index fec89e886..731db9787 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,5 +1,11 @@ # @solid-primitives/utils +## 5.4.0 + +### Minor Changes + +- d6559a32: Export `ResolvedJSXElement` and `ResolvedChildren` types from utils + ## 5.4.0-beta.0 ### Minor Changes diff --git a/packages/utils/package.json b/packages/utils/package.json index be6bb4890..ea9bebe43 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@solid-primitives/utils", - "version": "5.4.0-beta.0", + "version": "5.4.0", "description": "A bunch of reactive utility types and functions, for building primitives with Solid.js", "author": "Damian Tarnawski @thetarnav ", "contributors": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b270df71..84622ba11 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,8 +62,8 @@ importers: packages/active-element: specifiers: - '@solid-primitives/event-listener': ^2.2.8-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/event-listener': ^2.2.8 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -78,7 +78,7 @@ importers: packages/audio: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-heroicons: ^3.1.1 solid-js: ^1.6.0 dependencies: @@ -89,7 +89,7 @@ importers: packages/autofocus: specifiers: - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -97,10 +97,10 @@ importers: packages/bounds: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 - '@solid-primitives/resize-observer': workspace:^2.0.11-beta.0 + '@solid-primitives/event-listener': workspace:^2.2.8 + '@solid-primitives/resize-observer': workspace:^2.0.11 '@solid-primitives/scheduled': workspace:^1.3.1 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -118,7 +118,7 @@ importers: packages/clipboard: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -136,9 +136,9 @@ importers: packages/connectivity: specifiers: - '@solid-primitives/event-listener': ^2.2.8-beta.0 - '@solid-primitives/rootless': ^1.2.6-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/event-listener': ^2.2.8 + '@solid-primitives/rootless': ^1.2.6 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -154,7 +154,7 @@ importers: packages/controlled-props: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -162,7 +162,7 @@ importers: packages/cursor: specifiers: - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -170,10 +170,10 @@ importers: packages/date: specifiers: - '@solid-primitives/event-listener': ^2.2.8-beta.0 - '@solid-primitives/memo': ^1.2.0-beta.1 + '@solid-primitives/event-listener': ^2.2.8 + '@solid-primitives/memo': ^1.2.0 '@solid-primitives/timer': ^1.3.6 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 date-fns: ^2.29.2 solid-js: ^1.6.0 dependencies: @@ -187,7 +187,7 @@ importers: packages/destructure: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -201,8 +201,8 @@ importers: packages/event-bus: specifiers: - '@solid-primitives/immutable': ^0.1.8-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/immutable': ^0.1.8 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/immutable': link:../immutable @@ -217,7 +217,7 @@ importers: packages/event-listener: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -245,7 +245,7 @@ importers: packages/geolocation: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 '@types/leaflet': ^1.7.11 leaflet: ^1.8.0 mapbox-gl: ^2.12.1 @@ -275,7 +275,7 @@ importers: '@graphql-codegen/typescript': ^3.0.0 '@graphql-codegen/typescript-operations': ^3.0.0 '@graphql-typed-document-node/core': ^3.1.1 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 graphql: ^16.6.0 solid-js: ^1.6.0 dependencies: @@ -305,7 +305,7 @@ importers: packages/immutable: specifiers: - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -319,8 +319,8 @@ importers: packages/intersection-observer: specifiers: - '@solid-primitives/range': workspace:^0.1.8-beta.0 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/range': workspace:^0.1.8 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -330,7 +330,7 @@ importers: packages/jsx-parser: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -338,9 +338,9 @@ importers: packages/keyboard: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 - '@solid-primitives/rootless': workspace:^1.2.6-beta.0 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/event-listener': workspace:^2.2.8 + '@solid-primitives/rootless': workspace:^1.2.6 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -365,7 +365,7 @@ importers: packages/map: specifiers: - '@solid-primitives/trigger': workspace:^1.0.2-beta.0 + '@solid-primitives/trigger': workspace:^1.0.2 solid-js: ^1.6.0 dependencies: '@solid-primitives/trigger': link:../trigger @@ -373,9 +373,9 @@ importers: packages/media: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 - '@solid-primitives/rootless': workspace:^1.2.6-beta.0 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/event-listener': workspace:^2.2.8 + '@solid-primitives/rootless': workspace:^1.2.6 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -385,9 +385,9 @@ importers: packages/memo: specifiers: - '@solid-primitives/mouse': ^2.0.8-beta.0 + '@solid-primitives/mouse': ^2.0.8 '@solid-primitives/scheduled': ^1.3.1 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 dependencies: @@ -400,10 +400,10 @@ importers: packages/mouse: specifiers: - '@solid-primitives/event-listener': ^2.2.8-beta.0 - '@solid-primitives/raf': workspace:^2.1.8-beta.0 - '@solid-primitives/rootless': ^1.2.6-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/event-listener': ^2.2.8 + '@solid-primitives/raf': workspace:^2.1.8 + '@solid-primitives/rootless': ^1.2.6 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -416,7 +416,7 @@ importers: packages/mutation-observer: specifiers: '@solid-primitives/composites': workspace:^1.1.3 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -426,9 +426,9 @@ importers: packages/page-visibility: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 - '@solid-primitives/rootless': workspace:^1.2.6-beta.0 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/event-listener': workspace:^2.2.8 + '@solid-primitives/rootless': workspace:^1.2.6 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -438,8 +438,8 @@ importers: packages/pagination: specifiers: - '@solid-primitives/intersection-observer': workspace:^2.0.8-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/intersection-observer': workspace:^2.0.8 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/intersection-observer': link:../intersection-observer @@ -460,10 +460,10 @@ importers: packages/pointer: specifiers: - '@solid-primitives/event-listener': ^2.2.8-beta.0 - '@solid-primitives/immutable': ^0.1.8-beta.0 - '@solid-primitives/rootless': ^1.2.6-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/event-listener': ^2.2.8 + '@solid-primitives/immutable': ^0.1.8 + '@solid-primitives/rootless': ^1.2.6 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -474,7 +474,7 @@ importers: packages/promise: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -482,7 +482,7 @@ importers: packages/props: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 nanospy: ^0.5.0 solid-js: ^1.6.0 dependencies: @@ -493,7 +493,7 @@ importers: packages/raf: specifiers: - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -501,7 +501,7 @@ importers: packages/range: specifiers: - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 solid-transition-group: ^0.0.13 dependencies: @@ -512,8 +512,8 @@ importers: packages/refs: specifiers: - '@solid-primitives/immutable': ^0.1.8-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/immutable': ^0.1.8 + '@solid-primitives/utils': ^5.4.0 solid-app-router: ^0.4.2 solid-js: ^1.6.0 solid-transition-group: ^0.0.13 @@ -527,9 +527,9 @@ importers: packages/resize-observer: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 - '@solid-primitives/rootless': workspace:^1.2.6-beta.0 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/event-listener': workspace:^2.2.8 + '@solid-primitives/rootless': workspace:^1.2.6 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -539,7 +539,7 @@ importers: packages/rootless: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.11 dependencies: '@solid-primitives/utils': link:../utils @@ -564,9 +564,9 @@ importers: packages/scroll: specifiers: - '@solid-primitives/event-listener': workspace:^2.2.8-beta.0 - '@solid-primitives/rootless': workspace:^1.2.6-beta.0 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/event-listener': workspace:^2.2.8 + '@solid-primitives/rootless': workspace:^1.2.6 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/event-listener': link:../event-listener @@ -582,7 +582,7 @@ importers: packages/set: specifiers: - '@solid-primitives/trigger': workspace:^1.0.2-beta.0 + '@solid-primitives/trigger': workspace:^1.0.2 solid-js: ^1.6.0 dependencies: '@solid-primitives/trigger': link:../trigger @@ -596,8 +596,8 @@ importers: packages/signal-builders: specifiers: - '@solid-primitives/immutable': ^0.1.8-beta.0 - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/immutable': ^0.1.8 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/immutable': link:../immutable @@ -606,7 +606,7 @@ importers: packages/storage: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -614,7 +614,7 @@ importers: packages/stream: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -622,8 +622,8 @@ importers: packages/styles: specifiers: - '@solid-primitives/rootless': workspace:^1.2.6-beta.0 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/rootless': workspace:^1.2.6 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/rootless': link:../rootless @@ -638,8 +638,8 @@ importers: packages/transition-group: specifiers: - '@solid-primitives/refs': workspace:^1.0.0-beta.1 - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/refs': workspace:^1.0.0 + '@solid-primitives/utils': workspace:^5.4.0 '@solidjs/router': ^0.7.0 solid-js: ^1.6.0 dependencies: @@ -651,7 +651,7 @@ importers: packages/trigger: specifiers: - '@solid-primitives/utils': workspace:^5.4.0-beta.0 + '@solid-primitives/utils': workspace:^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils @@ -665,7 +665,7 @@ importers: packages/upload: specifiers: - '@solid-primitives/utils': ^5.4.0-beta.0 + '@solid-primitives/utils': ^5.4.0 solid-js: ^1.6.0 dependencies: '@solid-primitives/utils': link:../utils