From 7dfc0e6c5d3c95016e3cc18c20ce23532ed20e6e Mon Sep 17 00:00:00 2001 From: Fabien MARIE-LOUISE Date: Sat, 25 Feb 2023 00:38:16 +0100 Subject: [PATCH 01/45] docs: fix layout --- apps/docs/package.json | 8 +- pnpm-lock.yaml | 184 ++++++++++++++--------------------------- 2 files changed, 65 insertions(+), 127 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index bb15d4c1..4eaa26f0 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -59,14 +59,14 @@ "shiki": "0.14.0", "solid-js": "1.6.10", "solid-mdx": "0.0.6", - "solid-start": "0.2.20", - "solid-start-netlify": "0.2.20", - "solid-start-node": "0.2.20", + "solid-start": "0.2.22", + "solid-start-netlify": "0.2.22", + "solid-start-node": "0.2.22", "tailwindcss": "3.2.4", "typescript": "4.8.3", "undici": "5.20.0", "unist-util-visit": "4.1.2", - "vite": "3.2.4" + "vite": "3.2.5" }, "engines": { "node": ">=16" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac593f84..4cd9ad0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -118,14 +118,14 @@ importers: shiki: 0.14.0 solid-js: 1.6.10 solid-mdx: 0.0.6 - solid-start: 0.2.20 - solid-start-netlify: 0.2.20 - solid-start-node: 0.2.20 + solid-start: 0.2.22 + solid-start-netlify: 0.2.22 + solid-start-node: 0.2.22 tailwindcss: 3.2.4 typescript: 4.8.3 undici: 5.20.0 unist-util-visit: 4.1.2 - vite: 3.2.4 + vite: 3.2.5 dependencies: '@kobalte/core': link:../../packages/core '@solidjs/meta': 0.28.2_solid-js@1.6.10 @@ -134,7 +134,7 @@ importers: devDependencies: '@kobalte/tailwindcss': link:../../packages/tailwindcss '@mdx-js/mdx': 2.1.3 - '@mdx-js/rollup': 2.1.3_rollup@3.17.2 + '@mdx-js/rollup': 2.1.3_rollup@2.79.1 '@tailwindcss/typography': 0.5.8_tailwindcss@3.2.4 acorn: 8.8.2 autoprefixer: 10.4.13_postcss@8.4.21 @@ -153,15 +153,15 @@ importers: safer-buffer: 2.1.2 shiki: 0.14.0 solid-js: 1.6.10 - solid-mdx: 0.0.6_solid-js@1.6.10+vite@3.2.4 - solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe - solid-start-netlify: 0.2.20_solid-start@0.2.20 - solid-start-node: 0.2.20_zuiri3anal25by7tzd4pmuil3e + solid-mdx: 0.0.6_solid-js@1.6.10+vite@3.2.5 + solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi + solid-start-netlify: 0.2.22_solid-start@0.2.22 + solid-start-node: 0.2.22_mw43qzzw4e2hd4qwthoz2jin7y tailwindcss: 3.2.4_postcss@8.4.21 typescript: 4.8.3 undici: 5.20.0 unist-util-visit: 4.1.2 - vite: 3.2.4 + vite: 3.2.5 apps/playground: specifiers: @@ -1085,12 +1085,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1188,12 +1188,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -3134,7 +3134,7 @@ packages: resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@jest/types': 28.1.3 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 @@ -3295,14 +3295,14 @@ packages: - supports-color dev: true - /@mdx-js/rollup/2.1.3_rollup@3.17.2: + /@mdx-js/rollup/2.1.3_rollup@2.79.1: resolution: {integrity: sha512-KaX9GcZ63TDaLNH9UYYE94+naZQldV2IUzmMkDVOlPxDtTh8kcEn8l6/4W1P79wxZZbakSOFejTuaYmcstl5sA==} peerDependencies: rollup: '>=2' dependencies: '@mdx-js/mdx': 2.1.3 '@rollup/pluginutils': 4.2.1 - rollup: 3.17.2 + rollup: 2.79.1 source-map: 0.7.4 vfile: 5.3.7 transitivePeerDependencies: @@ -4447,17 +4447,17 @@ packages: deep-equal: 2.2.0 dev: true - /babel-jest/28.1.3_@babel+core@7.20.12: + /babel-jest/28.1.3_@babel+core@7.21.0: resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@jest/transform': 28.1.3 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3_@babel+core@7.20.12 + babel-preset-jest: 28.1.3_@babel+core@7.21.0 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4586,35 +4586,35 @@ packages: - supports-color dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.12: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.21.0: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-import-meta': 7.10.4_@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-top-level-await': 7.14.5_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 dev: true - /babel-preset-jest/28.1.3_@babel+core@7.20.12: + /babel-preset-jest/28.1.3_@babel+core@7.21.0: resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 dev: true /babel-preset-solid/1.6.10_@babel+core@7.20.12: @@ -7638,7 +7638,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/parser': 7.21.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -7760,11 +7760,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@jest/test-sequencer': 28.1.3 '@jest/types': 28.1.3 '@types/node': 18.13.0 - babel-jest: 28.1.3_@babel+core@7.20.12 + babel-jest: 28.1.3_@babel+core@7.21.0 chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.0 @@ -8082,9 +8082,9 @@ packages: resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/generator': 7.21.1 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 '@babel/traverse': 7.21.2 '@babel/types': 7.21.2 '@jest/expect-utils': 28.1.3 @@ -8092,7 +8092,7 @@ packages: '@jest/types': 28.1.3 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 chalk: 4.1.2 expect: 28.1.3 graceful-fs: 4.2.10 @@ -10634,14 +10634,14 @@ packages: dependencies: csstype: 3.1.1 - /solid-mdx/0.0.6_solid-js@1.6.10+vite@3.2.4: + /solid-mdx/0.0.6_solid-js@1.6.10+vite@3.2.5: resolution: {integrity: sha512-SDr+iOqxvB7ktdjrwgKLCLkJK43J+TQjoYmesHxmZHXtn6W+a5NRqWgBcybsSP0noHa2co1plSjuPYU4bdtklQ==} peerDependencies: solid-js: ^1.2.6 vite: '*' dependencies: solid-js: 1.6.10 - vite: 3.2.4 + vite: 3.2.5 dev: true /solid-refresh/0.4.3_solid-js@1.6.10: @@ -10666,8 +10666,8 @@ packages: solid-js: 1.6.11 dev: true - /solid-start-netlify/0.2.20_solid-start@0.2.20: - resolution: {integrity: sha512-IwTM1iruokdil0nXYxFHsAyAHaAmn+w2Enm0Onga9CmOvz9M/2U45L3uqjoNRyWgjJ5Xl4n+/od73G8TxtnUcw==} + /solid-start-netlify/0.2.22_solid-start@0.2.22: + resolution: {integrity: sha512-nhNyelZqMpjVD1FkgHKgqe4P/Bp5OSMfDW/KDjgnl/+tEROCYhHdeAuvP2T6EH/lONawF9xqikMkcJTbRDfjfw==} peerDependencies: solid-start: '*' dependencies: @@ -10679,15 +10679,15 @@ packages: '@rollup/plugin-node-resolve': 13.3.0_rollup@3.17.2 encoding: 0.1.13 rollup: 3.17.2 - solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe + solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi terser: 5.16.5 transitivePeerDependencies: - '@types/babel__core' - supports-color dev: true - /solid-start-node/0.2.20_zuiri3anal25by7tzd4pmuil3e: - resolution: {integrity: sha512-MWpaJKgy5OgdQHpN1cS9nQy3NEgD6QeViGc6AKP0PvowsZ4k+lPI1eT2JyObfLh4PUT9qABhVh8g1jctBra6CA==} + /solid-start-node/0.2.22_mw43qzzw4e2hd4qwthoz2jin7y: + resolution: {integrity: sha512-BOLYzp9mkBRs2CvhFLxz66J1hlyxZoJd2x6BT9pKitm3qdbyTZTm0mLsMchgMNsXTBTxnhXOMATe3lectsV7fA==} peerDependencies: solid-start: '*' undici: ^5.8.0 @@ -10700,16 +10700,16 @@ packages: polka: 1.0.0-next.22 rollup: 3.17.2 sirv: 2.0.2 - solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe + solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi terser: 5.16.5 undici: 5.20.0 - vite: 3.2.4 + vite: 3.2.5 transitivePeerDependencies: - supports-color dev: true - /solid-start/0.2.20_yko473brbep6a2otoqxgsreqfe: - resolution: {integrity: sha512-vYSFqVAKNMUa/NOuJmP+FCgGFiLCDSrRhlvjmTWTVgY8sD4exycTPapQAQWAwUU/4KhPv5oimtVaOz6TUtxOzA==} + /solid-start/0.2.22_7tpus2iqdlhujxfipub43kkgfi: + resolution: {integrity: sha512-9SfYRNyXUMzNVBx13nzuOqAGGJdsSG1E6gIM3CRDl0x85Nt+1zQTm74rRsBVMecI2EgI0gFOUEKFVM/dP4x8yA==} hasBin: true peerDependencies: '@solidjs/meta': ^0.28.0 @@ -10771,13 +10771,13 @@ packages: set-cookie-parser: 2.5.1 sirv: 2.0.2 solid-js: 1.6.10 - solid-start-netlify: 0.2.20_solid-start@0.2.20 - solid-start-node: 0.2.20_zuiri3anal25by7tzd4pmuil3e + solid-start-netlify: 0.2.22_solid-start@0.2.22 + solid-start-node: 0.2.22_mw43qzzw4e2hd4qwthoz2jin7y terser: 5.16.5 undici: 5.20.0 - vite: 3.2.4 - vite-plugin-inspect: 0.7.15_rollup@3.17.2+vite@3.2.4 - vite-plugin-solid: 2.5.0_solid-js@1.6.10+vite@3.2.4 + vite: 3.2.5 + vite-plugin-inspect: 0.7.15_rollup@3.17.2+vite@3.2.5 + vite-plugin-solid: 2.5.0_solid-js@1.6.10+vite@3.2.5 wait-on: 6.0.1_debug@4.3.4 transitivePeerDependencies: - supports-color @@ -11853,7 +11853,7 @@ packages: vfile-message: 3.1.4 dev: true - /vite-plugin-inspect/0.7.15_rollup@3.17.2+vite@3.2.4: + /vite-plugin-inspect/0.7.15_rollup@3.17.2+vite@3.2.5: resolution: {integrity: sha512-oxeZCljacA/slhGFbDNlBqdhDU9fgdHL84i7Nz7DnaAIE7DhTiW2djanw3d/BKuZtduKUY82vRUQ4iaG917t2A==} engines: {node: '>=14'} peerDependencies: @@ -11866,30 +11866,12 @@ packages: kolorist: 1.7.0 sirv: 2.0.2 ufo: 1.1.0 - vite: 3.2.4 + vite: 3.2.5 transitivePeerDependencies: - rollup - supports-color dev: true - /vite-plugin-solid/2.5.0_solid-js@1.6.10+vite@3.2.4: - resolution: {integrity: sha512-VneGd3RyFJvwaiffsqgymeMaofn0IzQLPwDzafTV2f1agoWeeJlk5VrI5WqT9BTtLe69vNNbCJWqLhHr9fOdDw==} - peerDependencies: - solid-js: ^1.3.17 || ^1.4.0 || ^1.5.0 || ^1.6.0 - vite: ^3.0.0 || ^4.0.0 - dependencies: - '@babel/core': 7.21.0 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 - babel-preset-solid: 1.6.10_@babel+core@7.21.0 - merge-anything: 5.1.4 - solid-js: 1.6.10 - solid-refresh: 0.4.3_solid-js@1.6.10 - vite: 3.2.4 - vitefu: 0.2.4_vite@3.2.4 - transitivePeerDependencies: - - supports-color - dev: true - /vite-plugin-solid/2.5.0_solid-js@1.6.10+vite@3.2.5: resolution: {integrity: sha512-VneGd3RyFJvwaiffsqgymeMaofn0IzQLPwDzafTV2f1agoWeeJlk5VrI5WqT9BTtLe69vNNbCJWqLhHr9fOdDw==} peerDependencies: @@ -11926,39 +11908,6 @@ packages: - supports-color dev: true - /vite/3.2.4: - resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.15.18 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 2.79.1 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /vite/3.2.5: resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -12026,17 +11975,6 @@ packages: fsevents: 2.3.2 dev: true - /vitefu/0.2.4_vite@3.2.4: - resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - vite: - optional: true - dependencies: - vite: 3.2.4 - dev: true - /vitefu/0.2.4_vite@3.2.5: resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: From 9707eae8c0899fa9a2be95509d8482864c67f691 Mon Sep 17 00:00:00 2001 From: Fabien MARIE-LOUISE Date: Sat, 25 Feb 2023 00:48:36 +0100 Subject: [PATCH 02/45] docs: update deps --- apps/docs/package.json | 16 +-- pnpm-lock.yaml | 224 +++++++++++++++++++++-------------------- 2 files changed, 121 insertions(+), 119 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index 4eaa26f0..2bea9c33 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -38,25 +38,25 @@ }, "devDependencies": { "@kobalte/tailwindcss": "0.4.2", - "@mdx-js/mdx": "2.1.3", - "@mdx-js/rollup": "2.1.3", + "@mdx-js/mdx": "2.3.0", + "@mdx-js/rollup": "2.3.0", "@tailwindcss/typography": "0.5.8", "acorn": "8.8.2", "autoprefixer": "10.4.13", "babel-preset-solid": "1.6.10", "encoding": "0.1.13", - "github-slugger": "1.4.0", + "github-slugger": "1.5.0", "iconv-lite": "0.6.3", - "node-fetch": "2.6.7", + "node-fetch": "3.3.0", "postcss": "8.4.21", - "rehype-pretty-code": "0.9.2", + "rehype-pretty-code": "0.9.4", "rehype-raw": "6.1.1", "rehype-slug": "5.1.0", "remark-code-extra": "1.0.1", "remark-gfm": "3.0.1", - "remark-shiki-twoslash": "3.1.0", + "remark-shiki-twoslash": "3.1.1", "safer-buffer": "2.1.2", - "shiki": "0.14.0", + "shiki": "0.14.1", "solid-js": "1.6.10", "solid-mdx": "0.0.6", "solid-start": "0.2.22", @@ -64,7 +64,7 @@ "solid-start-node": "0.2.22", "tailwindcss": "3.2.4", "typescript": "4.8.3", - "undici": "5.20.0", + "undici": "5.19.1", "unist-util-visit": "4.1.2", "vite": "3.2.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4cd9ad0f..ba411201 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: specifiers: '@kobalte/core': 0.6.2 '@kobalte/tailwindcss': 0.4.2 - '@mdx-js/mdx': 2.1.3 - '@mdx-js/rollup': 2.1.3 + '@mdx-js/mdx': 2.3.0 + '@mdx-js/rollup': 2.3.0 '@solidjs/meta': 0.28.2 '@solidjs/router': 0.7.0 '@tailwindcss/typography': 0.5.8 @@ -104,18 +104,18 @@ importers: babel-preset-solid: 1.6.10 clsx: 1.2.1 encoding: 0.1.13 - github-slugger: 1.4.0 + github-slugger: 1.5.0 iconv-lite: 0.6.3 - node-fetch: 2.6.7 + node-fetch: 3.3.0 postcss: 8.4.21 - rehype-pretty-code: 0.9.2 + rehype-pretty-code: 0.9.4 rehype-raw: 6.1.1 rehype-slug: 5.1.0 remark-code-extra: 1.0.1 remark-gfm: 3.0.1 - remark-shiki-twoslash: 3.1.0 + remark-shiki-twoslash: 3.1.1 safer-buffer: 2.1.2 - shiki: 0.14.0 + shiki: 0.14.1 solid-js: 1.6.10 solid-mdx: 0.0.6 solid-start: 0.2.22 @@ -123,7 +123,7 @@ importers: solid-start-node: 0.2.22 tailwindcss: 3.2.4 typescript: 4.8.3 - undici: 5.20.0 + undici: 5.19.1 unist-util-visit: 4.1.2 vite: 3.2.5 dependencies: @@ -133,33 +133,33 @@ importers: clsx: 1.2.1 devDependencies: '@kobalte/tailwindcss': link:../../packages/tailwindcss - '@mdx-js/mdx': 2.1.3 - '@mdx-js/rollup': 2.1.3_rollup@2.79.1 + '@mdx-js/mdx': 2.3.0 + '@mdx-js/rollup': 2.3.0_rollup@3.17.2 '@tailwindcss/typography': 0.5.8_tailwindcss@3.2.4 acorn: 8.8.2 autoprefixer: 10.4.13_postcss@8.4.21 babel-preset-solid: 1.6.10_@babel+core@7.21.0 encoding: 0.1.13 - github-slugger: 1.4.0 + github-slugger: 1.5.0 iconv-lite: 0.6.3 - node-fetch: 2.6.7_encoding@0.1.13 + node-fetch: 3.3.0 postcss: 8.4.21 - rehype-pretty-code: 0.9.2_shiki@0.14.0 + rehype-pretty-code: 0.9.4_shiki@0.14.1 rehype-raw: 6.1.1 rehype-slug: 5.1.0 remark-code-extra: 1.0.1 remark-gfm: 3.0.1 - remark-shiki-twoslash: 3.1.0 + remark-shiki-twoslash: 3.1.1_typescript@4.8.3 safer-buffer: 2.1.2 - shiki: 0.14.0 + shiki: 0.14.1 solid-js: 1.6.10 solid-mdx: 0.0.6_solid-js@1.6.10+vite@3.2.5 solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi solid-start-netlify: 0.2.22_solid-start@0.2.22 - solid-start-node: 0.2.22_mw43qzzw4e2hd4qwthoz2jin7y + solid-start-node: 0.2.22_i6cwb6ivxueptcb5xs536kwrdq tailwindcss: 3.2.4_postcss@8.4.21 typescript: 4.8.3 - undici: 5.20.0 + undici: 5.19.1 unist-util-visit: 4.1.2 vite: 3.2.5 @@ -1085,12 +1085,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.21.0: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1188,12 +1188,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.21.0: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -3134,7 +3134,7 @@ packages: resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 '@jest/types': 28.1.3 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 @@ -3271,8 +3271,8 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mdx-js/mdx/2.1.3: - resolution: {integrity: sha512-ahbb47HJIJ4xnifaL06tDJiSyLEy1EhFAStO7RZIm3GTa7yGW3NGhZaj+GUCveFgl5oI54pY4BgiLmYm97y+zg==} + /@mdx-js/mdx/2.3.0: + resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} dependencies: '@types/estree-jsx': 1.0.0 '@types/mdx': 2.0.3 @@ -3295,14 +3295,14 @@ packages: - supports-color dev: true - /@mdx-js/rollup/2.1.3_rollup@2.79.1: - resolution: {integrity: sha512-KaX9GcZ63TDaLNH9UYYE94+naZQldV2IUzmMkDVOlPxDtTh8kcEn8l6/4W1P79wxZZbakSOFejTuaYmcstl5sA==} + /@mdx-js/rollup/2.3.0_rollup@3.17.2: + resolution: {integrity: sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==} peerDependencies: rollup: '>=2' dependencies: - '@mdx-js/mdx': 2.1.3 - '@rollup/pluginutils': 4.2.1 - rollup: 2.79.1 + '@mdx-js/mdx': 2.3.0 + '@rollup/pluginutils': 5.0.2_rollup@3.17.2 + rollup: 3.17.2 source-map: 0.7.4 vfile: 5.3.7 transitivePeerDependencies: @@ -3455,14 +3455,6 @@ packages: rollup: 3.17.2 dev: true - /@rollup/pluginutils/4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true - /@rollup/pluginutils/5.0.2_rollup@3.17.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} @@ -4447,17 +4439,17 @@ packages: deep-equal: 2.2.0 dev: true - /babel-jest/28.1.3_@babel+core@7.21.0: + /babel-jest/28.1.3_@babel+core@7.20.12: resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 '@jest/transform': 28.1.3 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3_@babel+core@7.21.0 + babel-preset-jest: 28.1.3_@babel+core@7.20.12 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4586,35 +4578,35 @@ packages: - supports-color dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.21.0: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.12: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 + '@babel/core': 7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 + '@babel/plugin-syntax-import-meta': 7.10.4_@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-top-level-await': 7.14.5_@babel+core@7.20.12 dev: true - /babel-preset-jest/28.1.3_@babel+core@7.21.0: + /babel-preset-jest/28.1.3_@babel+core@7.20.12: resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: true /babel-preset-solid/1.6.10_@babel+core@7.20.12: @@ -5261,6 +5253,11 @@ packages: engines: {node: '>=8'} dev: true + /data-uri-to-buffer/4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: true + /data-urls/3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} @@ -6583,6 +6580,14 @@ packages: engines: {node: '>=12'} dev: true + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + /figures/3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -6702,6 +6707,13 @@ packages: mime-types: 2.1.35 dev: true + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + /fraction.js/4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true @@ -6830,8 +6842,8 @@ packages: through2: 4.0.2 dev: true - /github-slugger/1.4.0: - resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} + /github-slugger/1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: true /github-slugger/2.0.0: @@ -7638,7 +7650,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 '@babel/parser': 7.21.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -7760,11 +7772,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 '@jest/test-sequencer': 28.1.3 '@jest/types': 28.1.3 '@types/node': 18.13.0 - babel-jest: 28.1.3_@babel+core@7.21.0 + babel-jest: 28.1.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.0 @@ -8082,9 +8094,9 @@ packages: resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.20.12 '@babel/generator': 7.21.1 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 '@babel/traverse': 7.21.2 '@babel/types': 7.21.2 '@jest/expect-utils': 28.1.3 @@ -8092,7 +8104,7 @@ packages: '@jest/types': 28.1.3 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 chalk: 4.1.2 expect: 28.1.3 graceful-fs: 4.2.10 @@ -9330,12 +9342,6 @@ packages: hasBin: true dev: true - /nanoid/4.0.1: - resolution: {integrity: sha512-udKGtCCUafD3nQtJg9wBhRP3KMbPglUsgV5JVsXhvyBs/oefqb4sqMEhKBBgqZncYowu58p1prsZQBYvAj/Gww==} - engines: {node: ^14 || ^16 || >=18} - hasBin: true - dev: true - /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -9349,17 +9355,18 @@ packages: engines: {node: '>= 0.6'} dev: true - /node-fetch/2.6.7_encoding@0.1.13: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + + /node-fetch/3.3.0: + resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - encoding: 0.1.13 - whatwg-url: 5.0.0 + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 dev: true /node-int64/0.4.0: @@ -10153,16 +10160,15 @@ packages: jsesc: 0.5.0 dev: true - /rehype-pretty-code/0.9.2_shiki@0.14.0: - resolution: {integrity: sha512-l369pvBK6ihBEuy2+VDpHU+zbbY8I+Z4LiyIOunHAt3xyw6selaOFKc/DnX94jI5OJb3+NgjbOxXx2yaAypjZw==} + /rehype-pretty-code/0.9.4_shiki@0.14.1: + resolution: {integrity: sha512-3m4aQT15n8C+UizcZL0enaahoZwCDm5K1qKQ3DGgHE7U8l/DEEEJ/hm+uDe9yyK4sxVOSfZcRIMHrpJwLQi+Rg==} engines: {node: ^12.16.0 || >=13.2.0} peerDependencies: shiki: '*' dependencies: hash-obj: 4.0.0 - nanoid: 4.0.1 parse-numeric-range: 1.3.0 - shiki: 0.14.0 + shiki: 0.14.1 dev: true /rehype-raw/6.1.1: @@ -10230,15 +10236,18 @@ packages: unified: 10.1.2 dev: true - /remark-shiki-twoslash/3.1.0: - resolution: {integrity: sha512-6LqSqVtHQR4S0DKfdQ2/ePn9loTKUtpyopYvwk8johjDTeUW5MkaLQuZHlWNkkST/4aMbz6aTkstIcwfwcHpXg==} + /remark-shiki-twoslash/3.1.1_typescript@4.8.3: + resolution: {integrity: sha512-9TKX1mlXT/TGASQVk6+Xt0puKiyWZvYQ5LKcpSAocxhKMbJ19M0a6VCrDYw0IK9w1tiqofDihMXQ6wETnA7awQ==} + peerDependencies: + typescript: '>3' dependencies: + '@types/unist': 2.0.6 '@typescript/twoslash': 3.1.0 '@typescript/vfs': 1.3.4 fenceparser: 1.1.1 regenerator-runtime: 0.13.11 shiki: 0.10.1 - shiki-twoslash: 3.1.0 + shiki-twoslash: 3.1.1_typescript@4.8.3 tslib: 2.1.0 typescript: 4.8.3 unist-util-visit: 2.0.3 @@ -10522,11 +10531,14 @@ packages: engines: {node: '>=8'} dev: true - /shiki-twoslash/3.1.0: - resolution: {integrity: sha512-uDqrTutOIZzyHbo103GsK7Vvc10saK1XCCivnOQ1NHJzgp3FBilEpftGeVzVSMOJs+JyhI7whkvhXV7kXQ5zCg==} + /shiki-twoslash/3.1.1_typescript@4.8.3: + resolution: {integrity: sha512-b2j/2yjEjnj0Yav7purKB7uuSbYBf/EQWmu2f7d4G96NiM+Qmr3Tb3UeHY7faN/IEaLW6ip7aQa7MpZNlU5xkQ==} + peerDependencies: + typescript: '>3' dependencies: '@typescript/twoslash': 3.1.0 '@typescript/vfs': 1.3.4 + fenceparser: 1.1.1 shiki: 0.10.1 typescript: 4.8.3 transitivePeerDependencies: @@ -10541,8 +10553,8 @@ packages: vscode-textmate: 5.2.0 dev: true - /shiki/0.14.0: - resolution: {integrity: sha512-fb9Fg1Yx/ElVJcTqPQIEOSfn7mSZlrT1W3CkymY08lL2Jsi+t7jPcZzKO1lCsQwlSDuyNhHvolnyA2OI4EgJNg==} + /shiki/0.14.1: + resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} dependencies: ansi-sequence-parser: 1.1.0 jsonc-parser: 3.2.0 @@ -10686,7 +10698,7 @@ packages: - supports-color dev: true - /solid-start-node/0.2.22_mw43qzzw4e2hd4qwthoz2jin7y: + /solid-start-node/0.2.22_i6cwb6ivxueptcb5xs536kwrdq: resolution: {integrity: sha512-BOLYzp9mkBRs2CvhFLxz66J1hlyxZoJd2x6BT9pKitm3qdbyTZTm0mLsMchgMNsXTBTxnhXOMATe3lectsV7fA==} peerDependencies: solid-start: '*' @@ -10702,7 +10714,7 @@ packages: sirv: 2.0.2 solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi terser: 5.16.5 - undici: 5.20.0 + undici: 5.19.1 vite: 3.2.5 transitivePeerDependencies: - supports-color @@ -10772,9 +10784,9 @@ packages: sirv: 2.0.2 solid-js: 1.6.10 solid-start-netlify: 0.2.22_solid-start@0.2.22 - solid-start-node: 0.2.22_mw43qzzw4e2hd4qwthoz2jin7y + solid-start-node: 0.2.22_i6cwb6ivxueptcb5xs536kwrdq terser: 5.16.5 - undici: 5.20.0 + undici: 5.19.1 vite: 3.2.5 vite-plugin-inspect: 0.7.15_rollup@3.17.2+vite@3.2.5 vite-plugin-solid: 2.5.0_solid-js@1.6.10+vite@3.2.5 @@ -11241,10 +11253,6 @@ packages: url-parse: 1.5.10 dev: true - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - /tr46/1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: @@ -11612,8 +11620,8 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /undici/5.20.0: - resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} + /undici/5.19.1: + resolution: {integrity: sha512-YiZ61LPIgY73E7syxCDxxa3LV2yl3sN8spnIuTct60boiiRaE1J8mNWHO8Im2Zi/sFrPusjLlmRPrsyraSqX6A==} engines: {node: '>=12.18'} dependencies: busboy: 1.6.0 @@ -12042,8 +12050,9 @@ packages: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: true - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} dev: true /webidl-conversions/4.0.2: @@ -12083,13 +12092,6 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true - /whatwg-url/7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: From 48eaac4444ece2f0d0549c669e9422c73b48a526 Mon Sep 17 00:00:00 2001 From: Fabien MARIE-LOUISE Date: Sat, 25 Feb 2023 00:55:19 +0100 Subject: [PATCH 03/45] docs: rollback deps --- apps/docs/package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index 2bea9c33..a15453db 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -64,7 +64,7 @@ "solid-start-node": "0.2.22", "tailwindcss": "3.2.4", "typescript": "4.8.3", - "undici": "5.19.1", + "undici": "5.16.0", "unist-util-visit": "4.1.2", "vite": "3.2.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba411201..efc81c3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,7 +123,7 @@ importers: solid-start-node: 0.2.22 tailwindcss: 3.2.4 typescript: 4.8.3 - undici: 5.19.1 + undici: 5.16.0 unist-util-visit: 4.1.2 vite: 3.2.5 dependencies: @@ -156,10 +156,10 @@ importers: solid-mdx: 0.0.6_solid-js@1.6.10+vite@3.2.5 solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi solid-start-netlify: 0.2.22_solid-start@0.2.22 - solid-start-node: 0.2.22_i6cwb6ivxueptcb5xs536kwrdq + solid-start-node: 0.2.22_vevr5447zwawz4ua7zfhqhx5aa tailwindcss: 3.2.4_postcss@8.4.21 typescript: 4.8.3 - undici: 5.19.1 + undici: 5.16.0 unist-util-visit: 4.1.2 vite: 3.2.5 @@ -3159,7 +3159,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.1 + '@types/node': 18.13.0 '@types/yargs': 15.0.15 chalk: 4.1.2 @@ -3827,10 +3827,10 @@ packages: /@types/node/18.13.0: resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} - dev: true /@types/node/18.14.1: resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} + dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -10698,7 +10698,7 @@ packages: - supports-color dev: true - /solid-start-node/0.2.22_i6cwb6ivxueptcb5xs536kwrdq: + /solid-start-node/0.2.22_vevr5447zwawz4ua7zfhqhx5aa: resolution: {integrity: sha512-BOLYzp9mkBRs2CvhFLxz66J1hlyxZoJd2x6BT9pKitm3qdbyTZTm0mLsMchgMNsXTBTxnhXOMATe3lectsV7fA==} peerDependencies: solid-start: '*' @@ -10714,7 +10714,7 @@ packages: sirv: 2.0.2 solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi terser: 5.16.5 - undici: 5.19.1 + undici: 5.16.0 vite: 3.2.5 transitivePeerDependencies: - supports-color @@ -10784,9 +10784,9 @@ packages: sirv: 2.0.2 solid-js: 1.6.10 solid-start-netlify: 0.2.22_solid-start@0.2.22 - solid-start-node: 0.2.22_i6cwb6ivxueptcb5xs536kwrdq + solid-start-node: 0.2.22_vevr5447zwawz4ua7zfhqhx5aa terser: 5.16.5 - undici: 5.19.1 + undici: 5.16.0 vite: 3.2.5 vite-plugin-inspect: 0.7.15_rollup@3.17.2+vite@3.2.5 vite-plugin-solid: 2.5.0_solid-js@1.6.10+vite@3.2.5 @@ -11620,8 +11620,8 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /undici/5.19.1: - resolution: {integrity: sha512-YiZ61LPIgY73E7syxCDxxa3LV2yl3sN8spnIuTct60boiiRaE1J8mNWHO8Im2Zi/sFrPusjLlmRPrsyraSqX6A==} + /undici/5.16.0: + resolution: {integrity: sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ==} engines: {node: '>=12.18'} dependencies: busboy: 1.6.0 From 73d8f5c5b3880fa563007016539933dae1af3c06 Mon Sep 17 00:00:00 2001 From: Fabien MARIE-LOUISE Date: Sat, 25 Feb 2023 01:01:54 +0100 Subject: [PATCH 04/45] docs: rollback deps --- apps/docs/package.json | 22 ++-- pnpm-lock.yaml | 262 +++++++++++++++++++++++++---------------- 2 files changed, 172 insertions(+), 112 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index a15453db..997fa35c 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -38,35 +38,35 @@ }, "devDependencies": { "@kobalte/tailwindcss": "0.4.2", - "@mdx-js/mdx": "2.3.0", - "@mdx-js/rollup": "2.3.0", + "@mdx-js/mdx": "2.1.3", + "@mdx-js/rollup": "2.1.3", "@tailwindcss/typography": "0.5.8", "acorn": "8.8.2", "autoprefixer": "10.4.13", "babel-preset-solid": "1.6.10", "encoding": "0.1.13", - "github-slugger": "1.5.0", + "github-slugger": "1.4.0", "iconv-lite": "0.6.3", - "node-fetch": "3.3.0", + "node-fetch": "2.6.7", "postcss": "8.4.21", - "rehype-pretty-code": "0.9.4", + "rehype-pretty-code": "0.9.2", "rehype-raw": "6.1.1", "rehype-slug": "5.1.0", "remark-code-extra": "1.0.1", "remark-gfm": "3.0.1", - "remark-shiki-twoslash": "3.1.1", + "remark-shiki-twoslash": "3.1.0", "safer-buffer": "2.1.2", - "shiki": "0.14.1", + "shiki": "0.14.0", "solid-js": "1.6.10", "solid-mdx": "0.0.6", - "solid-start": "0.2.22", - "solid-start-netlify": "0.2.22", - "solid-start-node": "0.2.22", + "solid-start": "0.2.20", + "solid-start-netlify": "0.2.20", + "solid-start-node": "0.2.20", "tailwindcss": "3.2.4", "typescript": "4.8.3", "undici": "5.16.0", "unist-util-visit": "4.1.2", - "vite": "3.2.5" + "vite": "3.2.4" }, "engines": { "node": ">=16" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efc81c3e..c308c444 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: specifiers: '@kobalte/core': 0.6.2 '@kobalte/tailwindcss': 0.4.2 - '@mdx-js/mdx': 2.3.0 - '@mdx-js/rollup': 2.3.0 + '@mdx-js/mdx': 2.1.3 + '@mdx-js/rollup': 2.1.3 '@solidjs/meta': 0.28.2 '@solidjs/router': 0.7.0 '@tailwindcss/typography': 0.5.8 @@ -104,28 +104,28 @@ importers: babel-preset-solid: 1.6.10 clsx: 1.2.1 encoding: 0.1.13 - github-slugger: 1.5.0 + github-slugger: 1.4.0 iconv-lite: 0.6.3 - node-fetch: 3.3.0 + node-fetch: 2.6.7 postcss: 8.4.21 - rehype-pretty-code: 0.9.4 + rehype-pretty-code: 0.9.2 rehype-raw: 6.1.1 rehype-slug: 5.1.0 remark-code-extra: 1.0.1 remark-gfm: 3.0.1 - remark-shiki-twoslash: 3.1.1 + remark-shiki-twoslash: 3.1.0 safer-buffer: 2.1.2 - shiki: 0.14.1 + shiki: 0.14.0 solid-js: 1.6.10 solid-mdx: 0.0.6 - solid-start: 0.2.22 - solid-start-netlify: 0.2.22 - solid-start-node: 0.2.22 + solid-start: 0.2.20 + solid-start-netlify: 0.2.20 + solid-start-node: 0.2.20 tailwindcss: 3.2.4 typescript: 4.8.3 undici: 5.16.0 unist-util-visit: 4.1.2 - vite: 3.2.5 + vite: 3.2.4 dependencies: '@kobalte/core': link:../../packages/core '@solidjs/meta': 0.28.2_solid-js@1.6.10 @@ -133,35 +133,35 @@ importers: clsx: 1.2.1 devDependencies: '@kobalte/tailwindcss': link:../../packages/tailwindcss - '@mdx-js/mdx': 2.3.0 - '@mdx-js/rollup': 2.3.0_rollup@3.17.2 + '@mdx-js/mdx': 2.1.3 + '@mdx-js/rollup': 2.1.3_rollup@3.17.2 '@tailwindcss/typography': 0.5.8_tailwindcss@3.2.4 acorn: 8.8.2 autoprefixer: 10.4.13_postcss@8.4.21 babel-preset-solid: 1.6.10_@babel+core@7.21.0 encoding: 0.1.13 - github-slugger: 1.5.0 + github-slugger: 1.4.0 iconv-lite: 0.6.3 - node-fetch: 3.3.0 + node-fetch: 2.6.7_encoding@0.1.13 postcss: 8.4.21 - rehype-pretty-code: 0.9.4_shiki@0.14.1 + rehype-pretty-code: 0.9.2_shiki@0.14.0 rehype-raw: 6.1.1 rehype-slug: 5.1.0 remark-code-extra: 1.0.1 remark-gfm: 3.0.1 - remark-shiki-twoslash: 3.1.1_typescript@4.8.3 + remark-shiki-twoslash: 3.1.0 safer-buffer: 2.1.2 - shiki: 0.14.1 + shiki: 0.14.0 solid-js: 1.6.10 - solid-mdx: 0.0.6_solid-js@1.6.10+vite@3.2.5 - solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi - solid-start-netlify: 0.2.22_solid-start@0.2.22 - solid-start-node: 0.2.22_vevr5447zwawz4ua7zfhqhx5aa + solid-mdx: 0.0.6_solid-js@1.6.10+vite@3.2.4 + solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe + solid-start-netlify: 0.2.20_solid-start@0.2.20 + solid-start-node: 0.2.20_vnpr5hmkxismdsu5r3lbgjevde tailwindcss: 3.2.4_postcss@8.4.21 typescript: 4.8.3 undici: 5.16.0 unist-util-visit: 4.1.2 - vite: 3.2.5 + vite: 3.2.4 apps/playground: specifiers: @@ -3159,7 +3159,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.14.1 '@types/yargs': 15.0.15 chalk: 4.1.2 @@ -3271,8 +3271,8 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mdx-js/mdx/2.3.0: - resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} + /@mdx-js/mdx/2.1.3: + resolution: {integrity: sha512-ahbb47HJIJ4xnifaL06tDJiSyLEy1EhFAStO7RZIm3GTa7yGW3NGhZaj+GUCveFgl5oI54pY4BgiLmYm97y+zg==} dependencies: '@types/estree-jsx': 1.0.0 '@types/mdx': 2.0.3 @@ -3295,13 +3295,13 @@ packages: - supports-color dev: true - /@mdx-js/rollup/2.3.0_rollup@3.17.2: - resolution: {integrity: sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==} + /@mdx-js/rollup/2.1.3_rollup@3.17.2: + resolution: {integrity: sha512-KaX9GcZ63TDaLNH9UYYE94+naZQldV2IUzmMkDVOlPxDtTh8kcEn8l6/4W1P79wxZZbakSOFejTuaYmcstl5sA==} peerDependencies: rollup: '>=2' dependencies: - '@mdx-js/mdx': 2.3.0 - '@rollup/pluginutils': 5.0.2_rollup@3.17.2 + '@mdx-js/mdx': 2.1.3 + '@rollup/pluginutils': 4.2.1 rollup: 3.17.2 source-map: 0.7.4 vfile: 5.3.7 @@ -3455,6 +3455,14 @@ packages: rollup: 3.17.2 dev: true + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@rollup/pluginutils/5.0.2_rollup@3.17.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} @@ -3827,10 +3835,10 @@ packages: /@types/node/18.13.0: resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} + dev: true /@types/node/18.14.1: resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} - dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -5253,11 +5261,6 @@ packages: engines: {node: '>=8'} dev: true - /data-uri-to-buffer/4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: true - /data-urls/3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} @@ -6580,14 +6583,6 @@ packages: engines: {node: '>=12'} dev: true - /fetch-blob/3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - dev: true - /figures/3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -6707,13 +6702,6 @@ packages: mime-types: 2.1.35 dev: true - /formdata-polyfill/4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: true - /fraction.js/4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true @@ -6842,8 +6830,8 @@ packages: through2: 4.0.2 dev: true - /github-slugger/1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + /github-slugger/1.4.0: + resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} dev: true /github-slugger/2.0.0: @@ -9342,6 +9330,12 @@ packages: hasBin: true dev: true + /nanoid/4.0.1: + resolution: {integrity: sha512-udKGtCCUafD3nQtJg9wBhRP3KMbPglUsgV5JVsXhvyBs/oefqb4sqMEhKBBgqZncYowu58p1prsZQBYvAj/Gww==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + dev: true + /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -9355,18 +9349,17 @@ packages: engines: {node: '>= 0.6'} dev: true - /node-domexception/1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: true - - /node-fetch/3.3.0: - resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /node-fetch/2.6.7_encoding@0.1.13: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 + encoding: 0.1.13 + whatwg-url: 5.0.0 dev: true /node-int64/0.4.0: @@ -10160,15 +10153,16 @@ packages: jsesc: 0.5.0 dev: true - /rehype-pretty-code/0.9.4_shiki@0.14.1: - resolution: {integrity: sha512-3m4aQT15n8C+UizcZL0enaahoZwCDm5K1qKQ3DGgHE7U8l/DEEEJ/hm+uDe9yyK4sxVOSfZcRIMHrpJwLQi+Rg==} + /rehype-pretty-code/0.9.2_shiki@0.14.0: + resolution: {integrity: sha512-l369pvBK6ihBEuy2+VDpHU+zbbY8I+Z4LiyIOunHAt3xyw6selaOFKc/DnX94jI5OJb3+NgjbOxXx2yaAypjZw==} engines: {node: ^12.16.0 || >=13.2.0} peerDependencies: shiki: '*' dependencies: hash-obj: 4.0.0 + nanoid: 4.0.1 parse-numeric-range: 1.3.0 - shiki: 0.14.1 + shiki: 0.14.0 dev: true /rehype-raw/6.1.1: @@ -10236,18 +10230,15 @@ packages: unified: 10.1.2 dev: true - /remark-shiki-twoslash/3.1.1_typescript@4.8.3: - resolution: {integrity: sha512-9TKX1mlXT/TGASQVk6+Xt0puKiyWZvYQ5LKcpSAocxhKMbJ19M0a6VCrDYw0IK9w1tiqofDihMXQ6wETnA7awQ==} - peerDependencies: - typescript: '>3' + /remark-shiki-twoslash/3.1.0: + resolution: {integrity: sha512-6LqSqVtHQR4S0DKfdQ2/ePn9loTKUtpyopYvwk8johjDTeUW5MkaLQuZHlWNkkST/4aMbz6aTkstIcwfwcHpXg==} dependencies: - '@types/unist': 2.0.6 '@typescript/twoslash': 3.1.0 '@typescript/vfs': 1.3.4 fenceparser: 1.1.1 regenerator-runtime: 0.13.11 shiki: 0.10.1 - shiki-twoslash: 3.1.1_typescript@4.8.3 + shiki-twoslash: 3.1.0 tslib: 2.1.0 typescript: 4.8.3 unist-util-visit: 2.0.3 @@ -10531,14 +10522,11 @@ packages: engines: {node: '>=8'} dev: true - /shiki-twoslash/3.1.1_typescript@4.8.3: - resolution: {integrity: sha512-b2j/2yjEjnj0Yav7purKB7uuSbYBf/EQWmu2f7d4G96NiM+Qmr3Tb3UeHY7faN/IEaLW6ip7aQa7MpZNlU5xkQ==} - peerDependencies: - typescript: '>3' + /shiki-twoslash/3.1.0: + resolution: {integrity: sha512-uDqrTutOIZzyHbo103GsK7Vvc10saK1XCCivnOQ1NHJzgp3FBilEpftGeVzVSMOJs+JyhI7whkvhXV7kXQ5zCg==} dependencies: '@typescript/twoslash': 3.1.0 '@typescript/vfs': 1.3.4 - fenceparser: 1.1.1 shiki: 0.10.1 typescript: 4.8.3 transitivePeerDependencies: @@ -10553,8 +10541,8 @@ packages: vscode-textmate: 5.2.0 dev: true - /shiki/0.14.1: - resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} + /shiki/0.14.0: + resolution: {integrity: sha512-fb9Fg1Yx/ElVJcTqPQIEOSfn7mSZlrT1W3CkymY08lL2Jsi+t7jPcZzKO1lCsQwlSDuyNhHvolnyA2OI4EgJNg==} dependencies: ansi-sequence-parser: 1.1.0 jsonc-parser: 3.2.0 @@ -10646,14 +10634,14 @@ packages: dependencies: csstype: 3.1.1 - /solid-mdx/0.0.6_solid-js@1.6.10+vite@3.2.5: + /solid-mdx/0.0.6_solid-js@1.6.10+vite@3.2.4: resolution: {integrity: sha512-SDr+iOqxvB7ktdjrwgKLCLkJK43J+TQjoYmesHxmZHXtn6W+a5NRqWgBcybsSP0noHa2co1plSjuPYU4bdtklQ==} peerDependencies: solid-js: ^1.2.6 vite: '*' dependencies: solid-js: 1.6.10 - vite: 3.2.5 + vite: 3.2.4 dev: true /solid-refresh/0.4.3_solid-js@1.6.10: @@ -10678,8 +10666,8 @@ packages: solid-js: 1.6.11 dev: true - /solid-start-netlify/0.2.22_solid-start@0.2.22: - resolution: {integrity: sha512-nhNyelZqMpjVD1FkgHKgqe4P/Bp5OSMfDW/KDjgnl/+tEROCYhHdeAuvP2T6EH/lONawF9xqikMkcJTbRDfjfw==} + /solid-start-netlify/0.2.20_solid-start@0.2.20: + resolution: {integrity: sha512-IwTM1iruokdil0nXYxFHsAyAHaAmn+w2Enm0Onga9CmOvz9M/2U45L3uqjoNRyWgjJ5Xl4n+/od73G8TxtnUcw==} peerDependencies: solid-start: '*' dependencies: @@ -10691,15 +10679,15 @@ packages: '@rollup/plugin-node-resolve': 13.3.0_rollup@3.17.2 encoding: 0.1.13 rollup: 3.17.2 - solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi + solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe terser: 5.16.5 transitivePeerDependencies: - '@types/babel__core' - supports-color dev: true - /solid-start-node/0.2.22_vevr5447zwawz4ua7zfhqhx5aa: - resolution: {integrity: sha512-BOLYzp9mkBRs2CvhFLxz66J1hlyxZoJd2x6BT9pKitm3qdbyTZTm0mLsMchgMNsXTBTxnhXOMATe3lectsV7fA==} + /solid-start-node/0.2.20_vnpr5hmkxismdsu5r3lbgjevde: + resolution: {integrity: sha512-MWpaJKgy5OgdQHpN1cS9nQy3NEgD6QeViGc6AKP0PvowsZ4k+lPI1eT2JyObfLh4PUT9qABhVh8g1jctBra6CA==} peerDependencies: solid-start: '*' undici: ^5.8.0 @@ -10712,16 +10700,16 @@ packages: polka: 1.0.0-next.22 rollup: 3.17.2 sirv: 2.0.2 - solid-start: 0.2.22_7tpus2iqdlhujxfipub43kkgfi + solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe terser: 5.16.5 undici: 5.16.0 - vite: 3.2.5 + vite: 3.2.4 transitivePeerDependencies: - supports-color dev: true - /solid-start/0.2.22_7tpus2iqdlhujxfipub43kkgfi: - resolution: {integrity: sha512-9SfYRNyXUMzNVBx13nzuOqAGGJdsSG1E6gIM3CRDl0x85Nt+1zQTm74rRsBVMecI2EgI0gFOUEKFVM/dP4x8yA==} + /solid-start/0.2.20_yko473brbep6a2otoqxgsreqfe: + resolution: {integrity: sha512-vYSFqVAKNMUa/NOuJmP+FCgGFiLCDSrRhlvjmTWTVgY8sD4exycTPapQAQWAwUU/4KhPv5oimtVaOz6TUtxOzA==} hasBin: true peerDependencies: '@solidjs/meta': ^0.28.0 @@ -10783,13 +10771,13 @@ packages: set-cookie-parser: 2.5.1 sirv: 2.0.2 solid-js: 1.6.10 - solid-start-netlify: 0.2.22_solid-start@0.2.22 - solid-start-node: 0.2.22_vevr5447zwawz4ua7zfhqhx5aa + solid-start-netlify: 0.2.20_solid-start@0.2.20 + solid-start-node: 0.2.20_vnpr5hmkxismdsu5r3lbgjevde terser: 5.16.5 undici: 5.16.0 - vite: 3.2.5 - vite-plugin-inspect: 0.7.15_rollup@3.17.2+vite@3.2.5 - vite-plugin-solid: 2.5.0_solid-js@1.6.10+vite@3.2.5 + vite: 3.2.4 + vite-plugin-inspect: 0.7.15_rollup@3.17.2+vite@3.2.4 + vite-plugin-solid: 2.5.0_solid-js@1.6.10+vite@3.2.4 wait-on: 6.0.1_debug@4.3.4 transitivePeerDependencies: - supports-color @@ -11253,6 +11241,10 @@ packages: url-parse: 1.5.10 dev: true + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + /tr46/1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: @@ -11861,7 +11853,7 @@ packages: vfile-message: 3.1.4 dev: true - /vite-plugin-inspect/0.7.15_rollup@3.17.2+vite@3.2.5: + /vite-plugin-inspect/0.7.15_rollup@3.17.2+vite@3.2.4: resolution: {integrity: sha512-oxeZCljacA/slhGFbDNlBqdhDU9fgdHL84i7Nz7DnaAIE7DhTiW2djanw3d/BKuZtduKUY82vRUQ4iaG917t2A==} engines: {node: '>=14'} peerDependencies: @@ -11874,12 +11866,30 @@ packages: kolorist: 1.7.0 sirv: 2.0.2 ufo: 1.1.0 - vite: 3.2.5 + vite: 3.2.4 transitivePeerDependencies: - rollup - supports-color dev: true + /vite-plugin-solid/2.5.0_solid-js@1.6.10+vite@3.2.4: + resolution: {integrity: sha512-VneGd3RyFJvwaiffsqgymeMaofn0IzQLPwDzafTV2f1agoWeeJlk5VrI5WqT9BTtLe69vNNbCJWqLhHr9fOdDw==} + peerDependencies: + solid-js: ^1.3.17 || ^1.4.0 || ^1.5.0 || ^1.6.0 + vite: ^3.0.0 || ^4.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 + babel-preset-solid: 1.6.10_@babel+core@7.21.0 + merge-anything: 5.1.4 + solid-js: 1.6.10 + solid-refresh: 0.4.3_solid-js@1.6.10 + vite: 3.2.4 + vitefu: 0.2.4_vite@3.2.4 + transitivePeerDependencies: + - supports-color + dev: true + /vite-plugin-solid/2.5.0_solid-js@1.6.10+vite@3.2.5: resolution: {integrity: sha512-VneGd3RyFJvwaiffsqgymeMaofn0IzQLPwDzafTV2f1agoWeeJlk5VrI5WqT9BTtLe69vNNbCJWqLhHr9fOdDw==} peerDependencies: @@ -11916,6 +11926,39 @@ packages: - supports-color dev: true + /vite/3.2.4: + resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.15.18 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 2.79.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vite/3.2.5: resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -11983,6 +12026,17 @@ packages: fsevents: 2.3.2 dev: true + /vitefu/0.2.4_vite@3.2.4: + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 3.2.4 + dev: true + /vitefu/0.2.4_vite@3.2.5: resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: @@ -12050,9 +12104,8 @@ packages: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: true - /web-streams-polyfill/3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true /webidl-conversions/4.0.2: @@ -12092,6 +12145,13 @@ packages: webidl-conversions: 7.0.0 dev: true + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + /whatwg-url/7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: From ade42ab2e8a5af305a0d0b4a5799309dfa9fb427 Mon Sep 17 00:00:00 2001 From: Fabien MARIE-LOUISE Date: Sun, 26 Feb 2023 13:24:50 +0100 Subject: [PATCH 05/45] feat(select): start impl collection --- .../core/src/accordion/accordion-root.tsx | 5 +- .../core/src/accordion/accordion-trigger.tsx | 8 +- packages/core/src/list/create-list-state.ts | 5 + packages/core/src/list/list-collection.ts | 4 +- .../core/src/list/list-keyboard-delegate.ts | 8 +- packages/core/src/listbox/listbox-item.tsx | 5 +- packages/core/src/listbox/listbox-root.tsx | 8 +- packages/core/src/menu/menu-context.tsx | 4 +- packages/core/src/menu/menu-item-base.tsx | 6 +- packages/core/src/menu/menu.tsx | 4 +- .../src/multi-select/multi-select-value.tsx | 18 ++- .../create-collection/create-collection.ts | 39 +++++- .../src/primitives/create-collection/types.ts | 37 ++++-- .../src/primitives/create-collection/utils.ts | 115 ++++++++++++++++-- packages/core/src/select/hidden-select.tsx | 2 +- packages/core/src/select/select-base.tsx | 4 +- packages/core/src/select/select-context.tsx | 6 +- packages/core/src/select/select-value.tsx | 22 ++-- .../core/src/selection/selection-manager.ts | 12 +- packages/core/src/tabs/tabs-root.tsx | 4 +- packages/core/src/tabs/tabs-trigger.tsx | 6 +- pnpm-lock.yaml | 110 ++++++++--------- 22 files changed, 293 insertions(+), 139 deletions(-) diff --git a/packages/core/src/accordion/accordion-root.tsx b/packages/core/src/accordion/accordion-root.tsx index 38191797..93bd4a75 100644 --- a/packages/core/src/accordion/accordion-root.tsx +++ b/packages/core/src/accordion/accordion-root.tsx @@ -7,6 +7,7 @@ */ import { + access, composeEventHandlers, createGenerateId, createPolymorphicComponent, @@ -17,7 +18,7 @@ import { createSignal, createUniqueId, splitProps } from "solid-js"; import { Dynamic } from "solid-js/web"; import { createListState, createSelectableList } from "../list"; -import { CollectionItem } from "../primitives"; +import { CollectionItemWithRef } from "../primitives"; import { createDomCollection } from "../primitives/create-dom-collection"; import { AccordionContext, AccordionContextValue } from "./accordion-context"; @@ -78,7 +79,7 @@ export const AccordionRoot = createPolymorphicComponent<"div", AccordionRootOpti "onFocusOut", ]); - const [items, setItems] = createSignal([]); + const [items, setItems] = createSignal([]); const { DomCollectionProvider } = createDomCollection({ items, onItemsChange: setItems }); diff --git a/packages/core/src/accordion/accordion-trigger.tsx b/packages/core/src/accordion/accordion-trigger.tsx index 65761ccf..3659b076 100644 --- a/packages/core/src/accordion/accordion-trigger.tsx +++ b/packages/core/src/accordion/accordion-trigger.tsx @@ -17,7 +17,7 @@ import { createEffect, JSX, onCleanup, splitProps } from "solid-js"; import * as Collapsible from "../collapsible"; import { useCollapsibleContext } from "../collapsible/collapsible-context"; -import { CollectionItem } from "../primitives"; +import { CollectionItemWithRef } from "../primitives"; import { createDomCollectionItem } from "../primitives/create-dom-collection"; import { createSelectableItem } from "../selection"; import { useAccordionContext } from "./accordion-context"; @@ -53,13 +53,13 @@ export const AccordionTrigger = createPolymorphicComponent<"button">(props => { "onFocus", ]); - createDomCollectionItem({ + createDomCollectionItem({ getItem: () => ({ ref: () => ref, + type: "item", key: itemContext.value(), isDisabled: collapsibleContext.isDisabled(), - label: "", // not applicable - textValue: "", // not applicable + textValue: "", // not applicable here }), }); diff --git a/packages/core/src/list/create-list-state.ts b/packages/core/src/list/create-list-state.ts index 83f3caf5..885d48ef 100644 --- a/packages/core/src/list/create-list-state.ts +++ b/packages/core/src/list/create-list-state.ts @@ -44,6 +44,11 @@ export function createListState(props: CreateListStateProps): ListState { const collection = createCollection( { dataSource: () => access(props.dataSource), + getKey: () => access(props.getKey), + getTextValue: () => access(props.getTextValue), + getIsDisabled: () => access(props.getIsDisabled), + getSectionChildren: () => access(props.getSectionChildren), + getIsSection: () => access(props.getIsSection), factory, }, [() => props.filter] diff --git a/packages/core/src/list/list-collection.ts b/packages/core/src/list/list-collection.ts index f89b6c66..2ab535b5 100644 --- a/packages/core/src/list/list-collection.ts +++ b/packages/core/src/list/list-collection.ts @@ -37,7 +37,9 @@ export class ListCollection implements Collection { node.prevKey = undefined; } - node.index = index++; + if (node.type === "item") { + node.index = index++; + } last = node; diff --git a/packages/core/src/list/list-keyboard-delegate.ts b/packages/core/src/list/list-keyboard-delegate.ts index ae29f7ac..62b85ba8 100644 --- a/packages/core/src/list/list-keyboard-delegate.ts +++ b/packages/core/src/list/list-keyboard-delegate.ts @@ -32,7 +32,7 @@ export class ListKeyboardDelegate implements KeyboardDelegate { while (keyAfter != null) { const item = this.collection().getItem(keyAfter); - if (item && !item.isDisabled) { + if (item && item.type === "item" && !item.isDisabled) { return keyAfter; } @@ -46,7 +46,7 @@ export class ListKeyboardDelegate implements KeyboardDelegate { while (keyBefore != null) { const item = this.collection().getItem(keyBefore); - if (item && !item.isDisabled) { + if (item && item.type === "item" && !item.isDisabled) { return keyBefore; } @@ -60,7 +60,7 @@ export class ListKeyboardDelegate implements KeyboardDelegate { while (key != null) { const item = this.collection().getItem(key); - if (item && !item.isDisabled) { + if (item && item.type === "item" && !item.isDisabled) { return key; } @@ -74,7 +74,7 @@ export class ListKeyboardDelegate implements KeyboardDelegate { while (key != null) { const item = this.collection().getItem(key); - if (item && !item.isDisabled) { + if (item && item.type === "item" && !item.isDisabled) { return key; } diff --git a/packages/core/src/listbox/listbox-item.tsx b/packages/core/src/listbox/listbox-item.tsx index 8f60f2c5..0e9a351c 100644 --- a/packages/core/src/listbox/listbox-item.tsx +++ b/packages/core/src/listbox/listbox-item.tsx @@ -20,7 +20,7 @@ import { import { Accessor, createMemo, createSignal, createUniqueId, JSX, splitProps } from "solid-js"; import { Dynamic } from "solid-js/web"; -import { CollectionItem, createRegisterId } from "../primitives"; +import { CollectionItemWithRef, createRegisterId } from "../primitives"; import { createDomCollectionItem } from "../primitives/create-dom-collection"; import { createSelectableItem } from "../selection"; import { useListboxContext } from "./listbox-context"; @@ -90,9 +90,10 @@ export const ListboxItem = createPolymorphicComponent<"div", ListboxItemOptions> const isHighlighted = () => selectionManager().focusedKey() === local.value; - createDomCollectionItem({ + createDomCollectionItem({ getItem: () => ({ ref: () => ref, + type: "item", key: local.value, label: labelRef()?.textContent ?? ref?.textContent ?? "", textValue: local.textValue ?? labelRef()?.textContent ?? ref?.textContent ?? "", diff --git a/packages/core/src/listbox/listbox-root.tsx b/packages/core/src/listbox/listbox-root.tsx index 4ba4a5a7..8fa96aff 100644 --- a/packages/core/src/listbox/listbox-root.tsx +++ b/packages/core/src/listbox/listbox-root.tsx @@ -18,7 +18,7 @@ import { Accessor, createMemo, createUniqueId, splitProps } from "solid-js"; import { Dynamic } from "solid-js/web"; import { createListState, createSelectableList, ListState } from "../list"; -import { CollectionItem, createControllableArraySignal } from "../primitives"; +import { CollectionItemWithRef, createControllableArraySignal } from "../primitives"; import { createDomCollection } from "../primitives/create-dom-collection"; import { FocusStrategy, KeyboardDelegate, SelectionBehavior, SelectionMode } from "../selection"; import { ListboxContext, ListboxContextValue } from "./listbox-context"; @@ -37,10 +37,10 @@ export interface ListboxRootOptions { onValueChange?: (value: Set) => void; /** The controlled items of the listbox. */ - items?: CollectionItem[]; + items?: CollectionItemWithRef[]; /** Event handler called when the items change. */ - onItemsChange?: (items: CollectionItem[]) => void; + onItemsChange?: (items: CollectionItemWithRef[]) => void; /** The controlled state of the listbox. */ state?: ListState; @@ -137,7 +137,7 @@ export const ListboxRoot = createPolymorphicComponent<"div", ListboxRootOptions> "onFocusOut", ]); - const [items, setItems] = createControllableArraySignal({ + const [items, setItems] = createControllableArraySignal({ value: () => local.items, defaultValue: () => [], onChange: value => local.onItemsChange?.(value), diff --git a/packages/core/src/menu/menu-context.tsx b/packages/core/src/menu/menu-context.tsx index 814aee07..7d311657 100644 --- a/packages/core/src/menu/menu-context.tsx +++ b/packages/core/src/menu/menu-context.tsx @@ -2,7 +2,7 @@ import { Accessor, createContext, useContext } from "solid-js"; import { ListState } from "../list"; import { Placement } from "../popper/utils"; -import { CollectionItem, CreatePresenceResult } from "../primitives"; +import { CollectionItemWithRef, CreatePresenceResult } from "../primitives"; import { FocusStrategy } from "../selection"; import { GraceIntent, Side } from "./utils"; @@ -37,7 +37,7 @@ export interface MenuContextValue { setPointerGraceTimeoutId: (id: number) => void; setPointerGraceIntent: (intent: GraceIntent | null) => void; registerNestedMenu: (element: Element) => () => void; - registerItemToParentDomCollection: ((item: CollectionItem) => () => void) | undefined; + registerItemToParentDomCollection: ((item: CollectionItemWithRef) => () => void) | undefined; registerTriggerId: (id: string) => () => void; registerContentId: (id: string) => () => void; } diff --git a/packages/core/src/menu/menu-item-base.tsx b/packages/core/src/menu/menu-item-base.tsx index f24d6c73..3167eaf6 100644 --- a/packages/core/src/menu/menu-item-base.tsx +++ b/packages/core/src/menu/menu-item-base.tsx @@ -18,7 +18,7 @@ import { import { Accessor, createMemo, createSignal, createUniqueId, JSX, splitProps } from "solid-js"; import { Dynamic } from "solid-js/web"; -import { CollectionItem, createRegisterId } from "../primitives"; +import { CollectionItemWithRef, createRegisterId } from "../primitives"; import { createDomCollectionItem } from "../primitives/create-dom-collection"; import { createSelectableItem } from "../selection"; import { useMenuContext } from "./menu-context"; @@ -108,11 +108,11 @@ export const MenuItemBase = createPolymorphicComponent<"div", MenuItemBaseOption } }; - createDomCollectionItem({ + createDomCollectionItem({ getItem: () => ({ ref: () => ref, + type: "item", key: key(), - label: "", // not applicable here textValue: local.textValue ?? labelRef()?.textContent ?? ref?.textContent ?? "", isDisabled: local.isDisabled ?? false, }), diff --git a/packages/core/src/menu/menu.tsx b/packages/core/src/menu/menu.tsx index 8b2f3153..ca710566 100644 --- a/packages/core/src/menu/menu.tsx +++ b/packages/core/src/menu/menu.tsx @@ -21,7 +21,7 @@ import { createListState } from "../list"; import { PopperRoot, PopperRootOptions } from "../popper"; import { Placement } from "../popper/utils"; import { - CollectionItem, + CollectionItemWithRef, createDisclosureState, createHideOutside, createPresence, @@ -82,7 +82,7 @@ export function Menu(props: ParentProps) { const [currentPlacement, setCurrentPlacement] = createSignal(others.placement!); const [nestedMenus, setNestedMenus] = createSignal([]); - const [items, setItems] = createSignal([]); + const [items, setItems] = createSignal([]); const { DomCollectionProvider } = createDomCollection({ items, onItemsChange: setItems }); diff --git a/packages/core/src/multi-select/multi-select-value.tsx b/packages/core/src/multi-select/multi-select-value.tsx index c4faf61f..999ecee3 100644 --- a/packages/core/src/multi-select/multi-select-value.tsx +++ b/packages/core/src/multi-select/multi-select-value.tsx @@ -4,10 +4,11 @@ import { Dynamic } from "solid-js/web"; import { useFormControlContext } from "../form-control"; import { useSelectContext } from "../select/select-context"; +import { CollectionNode } from "../primitives"; interface MultiSelectValueState { - /** The selected values of the multi-select. */ - selectedValues: Accessor>; + /** The selected items of the multi-select. */ + selectedItems: Accessor; } export interface MultiSelectValueOptions { @@ -35,10 +36,10 @@ export const MultiSelectValue = createPolymorphicComponent<"span", MultiSelectVa const selectionManager = () => context.listState().selectionManager(); const isSelectionEmpty = () => selectionManager().isEmpty(); - const valueLabels = () => { + const selectedItems = () => { return [...selectionManager().selectedKeys()] - .map(key => context.listState().collection().getItem(key)?.label ?? key) - .join(", "); + .map(key => context.listState().collection().getItem(key)) + .filter(Boolean) as CollectionNode[]; }; createEffect(() => onCleanup(context.registerValueId(local.id!))); @@ -52,12 +53,7 @@ export const MultiSelectValue = createPolymorphicComponent<"span", MultiSelectVa {...others} > - - selectionManager().selectedKeys() }} - children={local.children} - /> - + ); diff --git a/packages/core/src/primitives/create-collection/create-collection.ts b/packages/core/src/primitives/create-collection/create-collection.ts index 1489a89f..d38616ba 100644 --- a/packages/core/src/primitives/create-collection/create-collection.ts +++ b/packages/core/src/primitives/create-collection/create-collection.ts @@ -25,15 +25,46 @@ export function createCollection>( props: CreateCollectionProps, deps: Array> = [] ) { - const initialNodes = buildNodes(access(props.dataSource)); + const initialNodes = buildNodes({ + dataSource: access(props.dataSource), + getKey: access(props.getKey), + getTextValue: access(props.getTextValue), + getIsDisabled: access(props.getIsDisabled), + getSectionChildren: access(props.getSectionChildren), + getIsSection: access(props.getIsSection), + }); const [collection, setCollection] = createSignal(props.factory(initialNodes)); createEffect( on( - [() => access(props.dataSource), () => props.factory, ...deps], - ([dataSource, factory]) => { - const nodes = buildNodes(dataSource); + [ + () => access(props.dataSource), + () => access(props.getKey), + () => access(props.getTextValue), + () => access(props.getIsDisabled), + () => access(props.getSectionChildren), + () => access(props.getIsSection), + () => props.factory, + ...deps, + ], + ([ + dataSource, + getKey, + getTextValue, + getIsDisabled, + getSectionChildren, + getIsSection, + factory, + ]) => { + const nodes = buildNodes({ + dataSource, + getKey, + getTextValue, + getIsDisabled, + getSectionChildren, + getIsSection, + }); setCollection(() => factory(nodes)); }, diff --git a/packages/core/src/primitives/create-collection/types.ts b/packages/core/src/primitives/create-collection/types.ts index 523fa18e..6574f6ee 100644 --- a/packages/core/src/primitives/create-collection/types.ts +++ b/packages/core/src/primitives/create-collection/types.ts @@ -2,13 +2,13 @@ import { MaybeAccessor } from "@kobalte/utils"; import { DomCollectionItem } from "../create-dom-collection"; -export interface CollectionItem extends DomCollectionItem { +export interface CollectionItem { + /** The type of the item. */ + type: "item" | "section"; + /** A unique key for the item. */ key: string; - /** A label for the item. */ - label: string; - /** A string value for the item, used for features like typeahead. */ textValue: string; @@ -16,12 +16,17 @@ export interface CollectionItem extends DomCollectionItem { isDisabled: boolean; } -export interface CollectionNode { +export interface CollectionItemWithRef extends CollectionItem, DomCollectionItem {} + +export interface CollectionNode { + /** The type of item this node represents. */ + type: "item" | "section"; + /** A unique key for the node. */ key: string; - /** A label for the node. */ - label: string; + /** The source object this node was created from. */ + rawValue: T; /** A string value for the node, used for features like typeahead. */ textValue: string; @@ -29,6 +34,9 @@ export interface CollectionNode { /** Whether the node is disabled. */ isDisabled: boolean; + /** The level of depth this node is at in the hierarchy. */ + level: number; + /** The index of this node within its parent. */ index: number; @@ -42,6 +50,21 @@ export interface CollectionNode { export interface CollectionBase { /** The source data to be managed by the collection. */ dataSource: MaybeAccessor>; + + /** Property name or getter function to use as the key of an item. */ + getKey?: MaybeAccessor string) | undefined>; + + /** Property name or getter function to use as the text value of an item for typeahead purpose. */ + getTextValue?: MaybeAccessor string) | undefined>; + + /** Property name or getter function to use as the disabled flag of an item. */ + getIsDisabled?: MaybeAccessor boolean) | undefined>; + + /** Property name or getter function that refers to the children items of a section. */ + getSectionChildren?: MaybeAccessor any[]) | undefined>; + + /** Function to check if the node is a section. */ + getIsSection?: MaybeAccessor<((maybeSection: any) => boolean) | undefined>; } /** diff --git a/packages/core/src/primitives/create-collection/utils.ts b/packages/core/src/primitives/create-collection/utils.ts index 2032c912..cedbb707 100644 --- a/packages/core/src/primitives/create-collection/utils.ts +++ b/packages/core/src/primitives/create-collection/utils.ts @@ -1,23 +1,112 @@ -import { CollectionItem, CollectionNode } from "./types"; +import { isString } from "@kobalte/utils"; + +import { CollectionNode } from "./types"; + +interface BuildNodesParams { + dataSource: any[]; + getKey?: string | ((data: any) => string); + getTextValue?: string | ((data: any) => string); + getIsDisabled?: string | ((data: any) => boolean); + getSectionChildren?: string | ((section: any) => any[]); + getIsSection?: (maybeSection: any) => boolean; + startIndex?: number; + startLevel?: number; +} /** - * Generate an array of `CollectionNode` from a custom data source. + * Generate a flatted array of `CollectionNode` from a custom data source. */ -export function buildNodes(dataSource: CollectionItem[]): Array { - let index = 0; +export function buildNodes(params: BuildNodesParams): Array { + let index = params.startIndex ?? 0; + const level = params.startLevel ?? 0; const nodes: Array = []; - for (const data of dataSource) { - nodes.push({ - key: data.key, - label: data.label, - textValue: data.textValue, - isDisabled: data.isDisabled, - index, - }); + const getKey = (data: any): string => { + const _getKey = params.getKey ?? "key"; + return isString(_getKey) ? data[_getKey] : _getKey(data); + }; + + const getTextValue = (data: any): string | undefined => { + const _getTextValue = params.getTextValue ?? "textValue"; + return isString(_getTextValue) ? data[_getTextValue] : _getTextValue(data); + }; + + const getIsDisabled = (data: any): boolean | undefined => { + const _getIsDisabled = params.getIsDisabled ?? "isDisabled"; + return isString(_getIsDisabled) ? data[_getIsDisabled] : _getIsDisabled(data); + }; + + const getSectionChildren = (data: any): any[] | undefined => { + if (isString(params.getSectionChildren)) { + return data[params.getSectionChildren]; + } + + return params.getSectionChildren?.(data); + }; + + for (const data of params.dataSource) { + // If it's just a string assume it's an item. + if (isString(data)) { + nodes.push({ + type: "item", + rawValue: data, + key: data, + textValue: data, + isDisabled: false, // not applicable here + level, + index, + }); + + index++; + + continue; + } + + if (params.getIsSection?.(data)) { + nodes.push({ + type: "section", + rawValue: data, + key: "", // not applicable here + textValue: "", // not applicable here + isDisabled: false, // not applicable here + level: level, + index: index, + }); + + index++; + + const sectionChildren = getSectionChildren(data) ?? []; + + if (sectionChildren.length > 0) { + const childNodes = buildNodes({ + dataSource: sectionChildren, + getKey: params.getKey, + getTextValue: params.getTextValue, + getIsDisabled: params.getIsDisabled, + getIsSection: params.getIsSection, + getSectionChildren: params.getSectionChildren, + startIndex: index, + startLevel: level + 1, + }); + + nodes.push(...childNodes); + + index += childNodes.length; + } + } else { + nodes.push({ + type: "item", + rawValue: data, + key: getKey(data), + textValue: getTextValue(data) ?? "", + isDisabled: getIsDisabled(data) ?? false, + level, + index, + }); - index++; + index++; + } } return nodes; diff --git a/packages/core/src/select/hidden-select.tsx b/packages/core/src/select/hidden-select.tsx index a921e09f..f69a9feb 100644 --- a/packages/core/src/select/hidden-select.tsx +++ b/packages/core/src/select/hidden-select.tsx @@ -84,7 +84,7 @@ export function HiddenSelect(props: HiddenSelectProps) { {key => { const item = collection().getItem(key); - if (item) { + if (item && item.type === "item") { return ; } }} diff --git a/packages/core/src/select/select-base.tsx b/packages/core/src/select/select-base.tsx index 2c1f1c6a..0b616ff5 100644 --- a/packages/core/src/select/select-base.tsx +++ b/packages/core/src/select/select-base.tsx @@ -20,7 +20,7 @@ import { createCollator } from "../i18n"; import { createListState, ListKeyboardDelegate } from "../list"; import { PopperRoot, PopperRootOptions } from "../popper"; import { - CollectionItem, + CollectionItemWithRef, createDisclosureState, createFormResetListener, createPresence, @@ -158,7 +158,7 @@ export function SelectBase(props: ParentProps) { const [listboxAriaLabelledBy, setListboxAriaLabelledBy] = createSignal(); const [focusStrategy, setFocusStrategy] = createSignal(true); - const [items, setItems] = createSignal([]); + const [items, setItems] = createSignal([]); const disclosureState = createDisclosureState({ isOpen: () => local.isOpen, diff --git a/packages/core/src/select/select-context.tsx b/packages/core/src/select/select-context.tsx index 30bc54a7..fbaedea1 100644 --- a/packages/core/src/select/select-context.tsx +++ b/packages/core/src/select/select-context.tsx @@ -1,7 +1,7 @@ import { Accessor, createContext, Setter, useContext } from "solid-js"; import { ListState } from "../list"; -import { CollectionItem } from "../primitives"; +import { CollectionItemWithRef } from "../primitives"; import { FocusStrategy, KeyboardDelegate } from "../selection"; export interface SelectContextValue { @@ -13,8 +13,8 @@ export interface SelectContextValue { triggerId: Accessor; valueId: Accessor; listboxId: Accessor; - items: Accessor; - setItems: (items: CollectionItem[]) => void; + items: Accessor; + setItems: (items: CollectionItemWithRef[]) => void; listboxAriaLabelledBy: Accessor; listState: Accessor; keyboardDelegate: Accessor; diff --git a/packages/core/src/select/select-value.tsx b/packages/core/src/select/select-value.tsx index 8d8606a0..f0f7a98e 100644 --- a/packages/core/src/select/select-value.tsx +++ b/packages/core/src/select/select-value.tsx @@ -3,11 +3,12 @@ import { Accessor, children, createEffect, JSX, onCleanup, Show, splitProps } fr import { Dynamic } from "solid-js/web"; import { useFormControlContext } from "../form-control"; +import { CollectionNode } from "../primitives"; import { useSelectContext } from "./select-context"; interface SelectValueState { - /** The selected value of the select. */ - selectedValue: Accessor; + /** The selected item of the select. */ + selectedItem: Accessor; } export interface SelectValueOptions { @@ -34,10 +35,12 @@ export const SelectValue = createPolymorphicComponent<"span", SelectValueOptions const selectionManager = () => context.listState().selectionManager(); const isSelectionEmpty = () => selectionManager().isEmpty(); - const valueLabels = () => { - return [...selectionManager().selectedKeys()] - .map(key => context.listState().collection().getItem(key)?.label ?? key) - .join(", "); + const selectedItem = () => { + // Safe non-null assertion since it's used only when selection is not empty. + return context + .listState() + .collection() + .getItem(selectionManager().selectedKeys().values().next().value)!; }; createEffect(() => onCleanup(context.registerValueId(local.id!))); @@ -51,12 +54,7 @@ export const SelectValue = createPolymorphicComponent<"span", SelectValueOptions {...others} > - - selectionManager().selectedKeys().values().next().value }} - children={local.children} - /> - + ); diff --git a/packages/core/src/selection/selection-manager.ts b/packages/core/src/selection/selection-manager.ts index 0f23751c..4023f2b0 100644 --- a/packages/core/src/selection/selection-manager.ts +++ b/packages/core/src/selection/selection-manager.ts @@ -197,7 +197,7 @@ export class SelectionManager implements MultipleSelectionManager { while (key != null) { const item = this.collection().getItem(key); - if (item) { + if (item && item.type === "item") { keys.push(key); } @@ -214,9 +214,15 @@ export class SelectionManager implements MultipleSelectionManager { private getKey(key: string) { const item = this.collection().getItem(key); + /* if (!item) { return key; } + */ + + if (!item || item.type !== "item") { + return null; + } return item.key; } @@ -400,7 +406,9 @@ export class SelectionManager implements MultipleSelectionManager { continue; } - keys.push(key); + if (item.type === "item") { + keys.push(key); + } } key = this.collection().getKeyAfter(key); diff --git a/packages/core/src/tabs/tabs-root.tsx b/packages/core/src/tabs/tabs-root.tsx index b1dc3673..7e963f4b 100644 --- a/packages/core/src/tabs/tabs-root.tsx +++ b/packages/core/src/tabs/tabs-root.tsx @@ -12,7 +12,7 @@ import { createEffect, createSignal, createUniqueId, on, splitProps } from "soli import { Dynamic } from "solid-js/web"; import { createSingleSelectListState } from "../list"; -import { CollectionItem } from "../primitives"; +import { CollectionItemWithRef } from "../primitives"; import { createDomCollection } from "../primitives/create-dom-collection"; import { TabsContext, TabsContextValue } from "./tabs-context"; import { TabsActivationMode } from "./types"; @@ -67,7 +67,7 @@ export const TabsRoot = createPolymorphicComponent<"div", TabsRootOptions>(props "isDisabled", ]); - const [items, setItems] = createSignal([]); + const [items, setItems] = createSignal([]); const [selectedTab, setSelectedTab] = createSignal(); const { DomCollectionProvider } = createDomCollection({ items, onItemsChange: setItems }); diff --git a/packages/core/src/tabs/tabs-trigger.tsx b/packages/core/src/tabs/tabs-trigger.tsx index 37189215..a357496e 100644 --- a/packages/core/src/tabs/tabs-trigger.tsx +++ b/packages/core/src/tabs/tabs-trigger.tsx @@ -15,7 +15,7 @@ import { import { createEffect, on, splitProps } from "solid-js"; import { Dynamic } from "solid-js/web"; -import { CollectionItem } from "../primitives"; +import { CollectionItemWithRef } from "../primitives"; import { createDomCollectionItem } from "../primitives/create-dom-collection"; import { createSelectableItem } from "../selection"; import { useTabsContext } from "./tabs-context"; @@ -66,11 +66,11 @@ export const TabsTrigger = createPolymorphicComponent<"button", TabsTriggerOptio const contentId = () => context.contentIdsMap().get(local.value); - createDomCollectionItem({ + createDomCollectionItem({ getItem: () => ({ ref: () => ref, + type: "item", key: local.value, - label: "", // not applicable here textValue: "", // not applicable here isDisabled: isDisabled(), }), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c308c444..b39aca0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -134,7 +134,7 @@ importers: devDependencies: '@kobalte/tailwindcss': link:../../packages/tailwindcss '@mdx-js/mdx': 2.1.3 - '@mdx-js/rollup': 2.1.3_rollup@3.17.2 + '@mdx-js/rollup': 2.1.3_rollup@3.17.3 '@tailwindcss/typography': 0.5.8_tailwindcss@3.2.4 acorn: 8.8.2 autoprefixer: 10.4.13_postcss@8.4.21 @@ -3159,7 +3159,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.1 + '@types/node': 18.13.0 '@types/yargs': 15.0.15 chalk: 4.1.2 @@ -3295,14 +3295,14 @@ packages: - supports-color dev: true - /@mdx-js/rollup/2.1.3_rollup@3.17.2: + /@mdx-js/rollup/2.1.3_rollup@3.17.3: resolution: {integrity: sha512-KaX9GcZ63TDaLNH9UYYE94+naZQldV2IUzmMkDVOlPxDtTh8kcEn8l6/4W1P79wxZZbakSOFejTuaYmcstl5sA==} peerDependencies: rollup: '>=2' dependencies: '@mdx-js/mdx': 2.1.3 '@rollup/pluginutils': 4.2.1 - rollup: 3.17.2 + rollup: 3.17.3 source-map: 0.7.4 vfile: 5.3.7 transitivePeerDependencies: @@ -3351,7 +3351,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-babel/6.0.3_zckbjdef7bo4amsla2acrs7s4i: + /@rollup/plugin-babel/6.0.3_qfvff2iu6b2qa5c3eagnq2qwte: resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3366,11 +3366,11 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-module-imports': 7.18.6 - '@rollup/pluginutils': 5.0.2_rollup@3.17.2 - rollup: 3.17.2 + '@rollup/pluginutils': 5.0.2_rollup@3.17.3 + rollup: 3.17.3 dev: true - /@rollup/plugin-commonjs/24.0.1_rollup@3.17.2: + /@rollup/plugin-commonjs/24.0.1_rollup@3.17.3: resolution: {integrity: sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3379,16 +3379,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.17.2 + '@rollup/pluginutils': 5.0.2_rollup@3.17.3 commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.17.2 + rollup: 3.17.3 dev: true - /@rollup/plugin-json/6.0.0_rollup@3.17.2: + /@rollup/plugin-json/6.0.0_rollup@3.17.3: resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3397,8 +3397,8 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.17.2 - rollup: 3.17.2 + '@rollup/pluginutils': 5.0.2_rollup@3.17.3 + rollup: 3.17.3 dev: true /@rollup/plugin-node-resolve/13.3.0_rollup@2.79.1: @@ -3416,19 +3416,19 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-node-resolve/13.3.0_rollup@3.17.2: + /@rollup/plugin-node-resolve/13.3.0_rollup@3.17.3: resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@3.17.2 + '@rollup/pluginutils': 3.1.0_rollup@3.17.3 '@types/resolve': 1.17.1 deepmerge: 4.3.0 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.1 - rollup: 3.17.2 + rollup: 3.17.3 dev: true /@rollup/pluginutils/3.1.0_rollup@2.79.1: @@ -3443,7 +3443,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils/3.1.0_rollup@3.17.2: + /@rollup/pluginutils/3.1.0_rollup@3.17.3: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -3452,7 +3452,7 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 3.17.2 + rollup: 3.17.3 dev: true /@rollup/pluginutils/4.2.1: @@ -3463,7 +3463,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils/5.0.2_rollup@3.17.2: + /@rollup/pluginutils/5.0.2_rollup@3.17.3: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3475,7 +3475,7 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.17.2 + rollup: 3.17.3 dev: true /@sideway/address/4.1.4: @@ -3835,10 +3835,10 @@ packages: /@types/node/18.13.0: resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} - dev: true /@types/node/18.14.1: resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} + dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -4405,7 +4405,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001457 + caniuse-lite: 1.0.30001458 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -4702,7 +4702,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001457 + caniuse-lite: 1.0.30001458 electron-to-chromium: 1.4.311 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 @@ -4805,8 +4805,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001457: - resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} + /caniuse-lite/1.0.30001458: + resolution: {integrity: sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==} dev: true /ccount/2.0.1: @@ -6147,7 +6147,7 @@ packages: glob: 7.2.3 is-glob: 4.0.3 resolve: 1.22.1 - tsconfig-paths: 3.14.1 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - supports-color dev: true @@ -6208,7 +6208,7 @@ packages: object.values: 1.1.6 resolve: 1.22.1 semver: 6.3.0 - tsconfig-paths: 3.14.1 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -10347,7 +10347,7 @@ packages: terser: 5.16.5 dev: true - /rollup-plugin-visualizer/5.9.0_rollup@3.17.2: + /rollup-plugin-visualizer/5.9.0_rollup@3.17.3: resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} engines: {node: '>=14'} hasBin: true @@ -10359,7 +10359,7 @@ packages: dependencies: open: 8.4.2 picomatch: 2.3.1 - rollup: 3.17.2 + rollup: 3.17.3 source-map: 0.7.4 yargs: 17.7.1 dev: true @@ -10384,13 +10384,13 @@ packages: - supports-color dev: true - /rollup-route-manifest/1.0.0_rollup@3.17.2: + /rollup-route-manifest/1.0.0_rollup@3.17.3: resolution: {integrity: sha512-3CmcMmCLAzJDUXiO3z6386/Pt8/k9xTZv8gIHyXI8hYGoAInnYdOsFXiGGzQRMy6TXR1jUZme2qbdwjH2nFMjg==} engines: {node: '>=8'} peerDependencies: rollup: '>=2.0.0' dependencies: - rollup: 3.17.2 + rollup: 3.17.3 route-sort: 1.0.0 dev: true @@ -10402,8 +10402,8 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.17.2: - resolution: {integrity: sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==} + /rollup/3.17.3: + resolution: {integrity: sha512-p5LaCXiiOL/wrOkj8djsIDFmyU9ysUxcyW+EKRLHb6TKldJzXpImjcRSR+vgo09DBdofGcOoLOsRyxxG2n5/qQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -10673,12 +10673,12 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@rollup/plugin-babel': 6.0.3_zckbjdef7bo4amsla2acrs7s4i - '@rollup/plugin-commonjs': 24.0.1_rollup@3.17.2 - '@rollup/plugin-json': 6.0.0_rollup@3.17.2 - '@rollup/plugin-node-resolve': 13.3.0_rollup@3.17.2 + '@rollup/plugin-babel': 6.0.3_qfvff2iu6b2qa5c3eagnq2qwte + '@rollup/plugin-commonjs': 24.0.1_rollup@3.17.3 + '@rollup/plugin-json': 6.0.0_rollup@3.17.3 + '@rollup/plugin-node-resolve': 13.3.0_rollup@3.17.3 encoding: 0.1.13 - rollup: 3.17.2 + rollup: 3.17.3 solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe terser: 5.16.5 transitivePeerDependencies: @@ -10693,12 +10693,12 @@ packages: undici: ^5.8.0 vite: '*' dependencies: - '@rollup/plugin-commonjs': 24.0.1_rollup@3.17.2 - '@rollup/plugin-json': 6.0.0_rollup@3.17.2 - '@rollup/plugin-node-resolve': 13.3.0_rollup@3.17.2 + '@rollup/plugin-commonjs': 24.0.1_rollup@3.17.3 + '@rollup/plugin-json': 6.0.0_rollup@3.17.3 + '@rollup/plugin-node-resolve': 13.3.0_rollup@3.17.3 compression: 1.7.4 polka: 1.0.0-next.22 - rollup: 3.17.2 + rollup: 3.17.3 sirv: 2.0.2 solid-start: 0.2.20_yko473brbep6a2otoqxgsreqfe terser: 5.16.5 @@ -10764,9 +10764,9 @@ packages: get-port: 6.1.2 parse-multipart-data: 1.5.0 picocolors: 1.0.0 - rollup: 3.17.2 - rollup-plugin-visualizer: 5.9.0_rollup@3.17.2 - rollup-route-manifest: 1.0.0_rollup@3.17.2 + rollup: 3.17.3 + rollup-plugin-visualizer: 5.9.0_rollup@3.17.3 + rollup-route-manifest: 1.0.0_rollup@3.17.3 sade: 1.8.1 set-cookie-parser: 2.5.1 sirv: 2.0.2 @@ -10776,7 +10776,7 @@ packages: terser: 5.16.5 undici: 5.16.0 vite: 3.2.4 - vite-plugin-inspect: 0.7.15_rollup@3.17.2+vite@3.2.4 + vite-plugin-inspect: 0.7.15_rollup@3.17.3+vite@3.2.4 vite-plugin-solid: 2.5.0_solid-js@1.6.10+vite@3.2.4 wait-on: 6.0.1_debug@4.3.4 transitivePeerDependencies: @@ -11349,8 +11349,8 @@ packages: yn: 3.1.1 dev: true - /tsconfig-paths/3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + /tsconfig-paths/3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -11395,7 +11395,7 @@ packages: joycon: 3.1.1 postcss-load-config: 3.1.4 resolve-from: 5.0.0 - rollup: 3.17.2 + rollup: 3.17.3 source-map: 0.8.0-beta.0 sucrase: 3.29.0 tree-kill: 1.2.2 @@ -11431,7 +11431,7 @@ packages: postcss: 8.4.21 postcss-load-config: 3.1.4_postcss@8.4.21 resolve-from: 5.0.0 - rollup: 3.17.2 + rollup: 3.17.3 source-map: 0.8.0-beta.0 sucrase: 3.29.0 tree-kill: 1.2.2 @@ -11853,14 +11853,14 @@ packages: vfile-message: 3.1.4 dev: true - /vite-plugin-inspect/0.7.15_rollup@3.17.2+vite@3.2.4: + /vite-plugin-inspect/0.7.15_rollup@3.17.3+vite@3.2.4: 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.17.2 + '@rollup/pluginutils': 5.0.2_rollup@3.17.3 debug: 4.3.4 fs-extra: 11.1.0 kolorist: 1.7.0 @@ -11896,9 +11896,9 @@ packages: solid-js: ^1.3.17 || ^1.4.0 || ^1.5.0 || ^1.6.0 vite: ^3.0.0 || ^4.0.0 dependencies: - '@babel/core': 7.21.0 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 - babel-preset-solid: 1.6.10_@babel+core@7.21.0 + '@babel/core': 7.20.12 + '@babel/preset-typescript': 7.21.0_@babel+core@7.20.12 + babel-preset-solid: 1.6.10_@babel+core@7.20.12 merge-anything: 5.1.4 solid-js: 1.6.10 solid-refresh: 0.4.3_solid-js@1.6.10 From ec38f54ff1f8efbadfd72409361ca7ef732341ff Mon Sep 17 00:00:00 2001 From: Fabien MARIE-LOUISE Date: Sun, 26 Feb 2023 16:38:13 +0100 Subject: [PATCH 06/45] feat(select): add virtual scroll support --- apps/playground/package.json | 2 + apps/playground/src/App.tsx | 127 +++++++++++++++++- apps/playground/src/index.css | 107 +++++++++++++++ .../core/src/list/create-selectable-list.ts | 4 + packages/core/src/listbox/index.ts | 11 +- packages/core/src/listbox/listbox-context.tsx | 1 + .../src/listbox/listbox-group-context.tsx | 20 --- .../core/src/listbox/listbox-group-label.tsx | 35 ----- packages/core/src/listbox/listbox-group.tsx | 47 ------- .../core/src/listbox/listbox-item-context.tsx | 1 - .../core/src/listbox/listbox-item-label.tsx | 12 +- packages/core/src/listbox/listbox-item.tsx | 67 +++++---- packages/core/src/listbox/listbox-root.tsx | 105 +++++++++------ packages/core/src/listbox/listbox-section.tsx | 15 +++ packages/core/src/multi-select/index.ts | 22 ++- packages/core/src/popover/index.ts | 6 +- .../create-collection/get-item-count.ts | 7 +- .../src/primitives/create-collection/index.ts | 1 + .../src/primitives/create-collection/utils.ts | 5 +- packages/core/src/select/index.ts | 25 ++-- packages/core/src/select/select-base.tsx | 52 ++++++- packages/core/src/select/select-content.tsx | 57 ++++---- packages/core/src/select/select-context.tsx | 8 +- packages/core/src/select/select-listbox.tsx | 12 +- packages/core/src/select/select-portal.tsx | 17 +++ .../selection/create-selectable-collection.ts | 15 ++- packages/utils/package.json | 1 + packages/utils/src/external.ts | 1 + pnpm-lock.yaml | 31 ++++- 29 files changed, 531 insertions(+), 283 deletions(-) delete mode 100644 packages/core/src/listbox/listbox-group-context.tsx delete mode 100644 packages/core/src/listbox/listbox-group-label.tsx delete mode 100644 packages/core/src/listbox/listbox-group.tsx create mode 100644 packages/core/src/listbox/listbox-section.tsx create mode 100644 packages/core/src/select/select-portal.tsx diff --git a/apps/playground/package.json b/apps/playground/package.json index e79c5d23..8508aacd 100644 --- a/apps/playground/package.json +++ b/apps/playground/package.json @@ -32,6 +32,8 @@ }, "dependencies": { "@kobalte/core": "^0.6.2", + "@kobalte/utils": "^0.5.1", + "@tanstack/solid-virtual": "3.0.0-beta.6", "solid-js": "^1.6.10" }, "devDependencies": { diff --git a/apps/playground/src/App.tsx b/apps/playground/src/App.tsx index 9f5fb841..3bbc5304 100644 --- a/apps/playground/src/App.tsx +++ b/apps/playground/src/App.tsx @@ -1,5 +1,128 @@ -import { I18nProvider } from "@kobalte/core"; +import { Collection, CollectionNode, I18nProvider, Select } from "@kobalte/core"; +import { createVirtualizer } from "@tanstack/solid-virtual"; +import { Accessor, For, Match, Switch } from "solid-js"; + +const generateItems = (n: number) => { + const ret = []; + + for (let i = 0; i < n; i++) { + ret.push({ + id: `item-${i}`, + textValue: `item-${i}`, + label: `item-${i}`, + disabled: false, + }); + } + + return ret; +}; export default function App() { - return ; + const data = generateItems(100_000); + let listboxRef: HTMLUListElement | undefined; + + return ( + + + + + {({ selectedItem }) => selectedItem().rawValue.label} + + + + + {() => { + const rowVirtualizer = createVirtualizer({ + count: data.length, + getScrollElement: () => listboxRef, + getItemKey: (index: number) => data[index].id, + estimateSize: () => 35, + enableSmoothScroll: false, + overscan: 5, + }); + + return ( + { + rowVirtualizer.scrollToIndex(data.findIndex(item => item.id === key)); + }} + style={{ height: "200px", overflow: "auto" }} + > + {collection => { + return ( +
+ + {virtualRow => { + const item = collection().getItem(virtualRow.key)!; + + return ( + + {item.rawValue.label} + + X + + + ); + }} + +
+ ); + }} +
+ ); + }} +
+
+
+
+ ); } + +/* + +{items => ( + + {(item, index) => ( + + + + {item().rawValue.label} + + + + + {item().rawValue.label} + X + + + + )} + +)} + +*/ diff --git a/apps/playground/src/index.css b/apps/playground/src/index.css index b5c61c95..e8faa8d0 100644 --- a/apps/playground/src/index.css +++ b/apps/playground/src/index.css @@ -1,3 +1,110 @@ @tailwind base; @tailwind components; @tailwind utilities; + +.select__trigger { + display: inline-flex; + align-items: center; + justify-content: space-between; + width: 200px; + border-radius: 6px; + padding: 0 10px 0 16px; + font-size: 16px; + line-height: 1; + height: 40px; + outline: none; + background-color: white; + border: 1px solid hsl(240 6% 90%); + color: hsl(240 4% 16%); + transition: border-color 250ms, color 250ms; +} +.select__trigger:hover { + border-color: hsl(240 5% 65%); +} +.select__trigger:focus-visible { + outline: 2px solid hsl(200 98% 39%); + outline-offset: 2px; +} +.select__trigger[data-invalid] { + border-color: hsl(0 72% 51%); + color: hsl(0 72% 51%); +} +.select__value { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.select__value[data-placeholder-shown] { + color: hsl(240 4% 46%); +} +.select__icon { + height: 20px; + width: 20px; + flex: 0 0 20px; +} +.select__description { + margin-top: 8px; + color: hsl(240 5% 26%); + font-size: 12px; + user-select: none; +} +.select__error-message { + margin-top: 8px; + color: hsl(0 72% 51%); + font-size: 12px; + user-select: none; +} +.select__content { + background-color: white; + border-radius: 6px; + border: 1px solid hsl(240 6% 90%); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); +} +.select__listbox { + overflow-y: auto; + max-height: 360px; + padding: 8px; +} +.select__item { + font-size: 16px; + line-height: 1; + color: hsl(240 4% 16%); + border-radius: 4px; + display: flex; + align-items: center; + height: 32px; + padding: 0 32px 0 24px; + position: relative; + user-select: none; + outline: none; +} +.select__item[data-disabled] { + color: hsl(240 5% 65%); + opacity: 0.5; + pointer-events: none; +} +.select__item[data-highlighted] { + outline: none; + background-color: hsl(200 98% 39%); + color: white; +} +.select__group-label { + padding: 0 24px; + font-size: 14px; + line-height: 32px; + color: hsl(240 4% 46%); +} +.select__separator { + height: 1px; + border-top: 1px solid hsl(240 6% 90%); + margin: 6px; +} +.select__item-indicator { + position: absolute; + left: 0; + height: 20px; + width: 20px; + display: inline-flex; + align-items: center; + justify-content: center; +} diff --git a/packages/core/src/list/create-selectable-list.ts b/packages/core/src/list/create-selectable-list.ts index 573d7379..e542a9b2 100644 --- a/packages/core/src/list/create-selectable-list.ts +++ b/packages/core/src/list/create-selectable-list.ts @@ -55,6 +55,9 @@ export interface CreateSelectableListProps { /** Whether the option is contained in a virtual scroller. */ isVirtualized?: MaybeAccessor; + + /** When virtualized, the Virtualizer function used to scroll to the item of the key provided. */ + scrollToKey?: MaybeAccessor<((key: string) => void) | undefined>; } /** @@ -95,6 +98,7 @@ export function createSelectableList access(props.shouldUseVirtualFocus), allowsTabNavigation: () => access(props.allowsTabNavigation), isVirtualized: () => access(props.isVirtualized), + scrollToKey: key => access(props.scrollToKey)?.(key), }, ref, scrollRef diff --git a/packages/core/src/listbox/index.ts b/packages/core/src/listbox/index.ts index 8dfedfe2..e6eabe30 100644 --- a/packages/core/src/listbox/index.ts +++ b/packages/core/src/listbox/index.ts @@ -1,14 +1,13 @@ -import { ListboxGroup as Group } from "./listbox-group"; -import { ListboxGroupLabel as GroupLabel } from "./listbox-group-label"; -import { type ListboxItemOptions, ListboxItem as Item } from "./listbox-item"; +import { ListboxItem as Item, type ListboxItemOptions } from "./listbox-item"; import { ListboxItemDescription as ItemDescription } from "./listbox-item-description"; import { - type ListboxItemIndicatorOptions, ListboxItemIndicator as ItemIndicator, + type ListboxItemIndicatorOptions, } from "./listbox-item-indicator"; import { ListboxItemLabel as ItemLabel } from "./listbox-item-label"; -import { type ListboxRootOptions, ListboxRoot as Root } from "./listbox-root"; +import { ListboxRoot as Root, type ListboxRootOptions } from "./listbox-root"; +import { ListboxSection as Section } from "./listbox-section"; export type { ListboxItemIndicatorOptions, ListboxItemOptions, ListboxRootOptions }; -export { Group, GroupLabel, Item, ItemDescription, ItemIndicator, ItemLabel, Root }; +export { Item, ItemDescription, ItemIndicator, ItemLabel, Root, Section }; diff --git a/packages/core/src/listbox/listbox-context.tsx b/packages/core/src/listbox/listbox-context.tsx index 289c4b64..c8a206d8 100644 --- a/packages/core/src/listbox/listbox-context.tsx +++ b/packages/core/src/listbox/listbox-context.tsx @@ -8,6 +8,7 @@ export interface ListboxContextValue { shouldUseVirtualFocus: Accessor; shouldSelectOnPressUp: Accessor; shouldFocusOnHover: Accessor; + isVirtualized: Accessor; } export const ListboxContext = createContext(); diff --git a/packages/core/src/listbox/listbox-group-context.tsx b/packages/core/src/listbox/listbox-group-context.tsx deleted file mode 100644 index e530292b..00000000 --- a/packages/core/src/listbox/listbox-group-context.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { createContext, useContext } from "solid-js"; - -export interface ListboxGroupContextValue { - generateId: (part: string) => string; - registerLabel: (id: string) => () => void; -} - -export const ListboxGroupContext = createContext(); - -export function useListboxGroupContext() { - const context = useContext(ListboxGroupContext); - - if (context === undefined) { - throw new Error( - "[kobalte]: `useListboxGroupContext` must be used within a `Listbox.Group` component" - ); - } - - return context; -} diff --git a/packages/core/src/listbox/listbox-group-label.tsx b/packages/core/src/listbox/listbox-group-label.tsx deleted file mode 100644 index df00c738..00000000 --- a/packages/core/src/listbox/listbox-group-label.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/*! - * Portions of this file are based on code from react-spectrum. - * Apache License Version 2.0, Copyright 2020 Adobe. - * - * Credits to the React Spectrum team: - * https://github.com/adobe/react-spectrum/blob/22cb32d329e66c60f55d4fc4025d1d44bb015d71/packages/@react-aria/listbox/src/useListBoxSection.ts - */ - -import { createPolymorphicComponent, mergeDefaultProps } from "@kobalte/utils"; -import { createEffect, onCleanup, splitProps } from "solid-js"; -import { Dynamic } from "solid-js/web"; - -import { useListboxGroupContext } from "./listbox-group-context"; - -/** - * A component used to render the label of a `Listbox.Group`. - * It won't be focusable using arrow keys. - */ -export const ListboxGroupLabel = createPolymorphicComponent<"span">(props => { - const context = useListboxGroupContext(); - - props = mergeDefaultProps( - { - as: "span", - id: context.generateId("label"), - }, - props - ); - - const [local, others] = splitProps(props, ["as", "id"]); - - createEffect(() => onCleanup(context.registerLabel(local.id!))); - - return