diff --git a/README.md b/README.md index dd054942..0ef0ecde 100644 --- a/README.md +++ b/README.md @@ -31,3 +31,5 @@ Thanks to everyone who has already contributed to ikun-ui ! - [svelte](https://github.com/sveltejs/svelte) - [unocss](https://github.com/unocss/unocss) - [onu-ui](https://github.com/onu-ui/onu-ui) +- [naive-ui](https://github.com/tusen-ai/naive-ui) +- [element-plus](https://github.com/element-plus/element-plus) diff --git a/components/Affix/__test__/__snapshots__/affix.spec.ts.snap b/components/Affix/__test__/__snapshots__/affix.spec.ts.snap new file mode 100644 index 00000000..ded69055 --- /dev/null +++ b/components/Affix/__test__/__snapshots__/affix.spec.ts.snap @@ -0,0 +1,7 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Test: KAffix > props: cls 1`] = `"
"`; + +exports[`Test: KAffix > should work with \`position\` prop 1`] = `"
"`; + +exports[`Test: KAffix > should work with \`top\` prop 1`] = `"
"`; diff --git a/components/Affix/__test__/affix.spec.ts b/components/Affix/__test__/affix.spec.ts new file mode 100644 index 00000000..5a0bc650 --- /dev/null +++ b/components/Affix/__test__/affix.spec.ts @@ -0,0 +1,76 @@ +import { afterEach, expect, test, describe, beforeEach, vi } from 'vitest'; +import KAffix from '../src'; +import { tick } from 'svelte'; + +const initHost = () => { + document.body.style.height = '100px'; + document.body.style.overflow = 'auto'; +}; + +beforeEach(() => { + initHost(); + vi.useFakeTimers(); +}); +afterEach(() => { + document.body.innerHTML = ''; + vi.restoreAllMocks(); +}); + +describe('Test: KAffix', () => { + vi.mock('svelte', async () => { + const actual = (await vi.importActual('svelte')) as object; + return { + ...actual, + // @ts-ignore + onMount: (await import('svelte/internal')).onMount + }; + }); + + test('props: cls', async () => { + const instance = new KAffix({ + target: document.body, + props: { + cls: 'k-affix--test' + } + }); + expect(instance).toBeTruthy(); + expect( + (document.documentElement as HTMLElement)!.innerHTML.includes('k-affix--test') + ).toBeTruthy(); + expect(document.documentElement.innerHTML).matchSnapshot(); + }); + + test('should work with `top` prop', async () => { + const instance = new KAffix({ + target: document.body, + props: { + cls: 'k-affix--test', + top: 120 + } + }); + expect(instance).toBeTruthy(); + expect( + (document.documentElement as HTMLElement)!.innerHTML.includes('k-affix--affixed') + ).not.toBeTruthy(); + document.documentElement.scrollTop = 200; + document.documentElement.dispatchEvent(new Event('scroll', { bubbles: true })); + await tick(); + await vi.advanceTimersByTimeAsync(300); + expect(document.body.innerHTML).toContain('top: 120px;'); + expect(document.documentElement.innerHTML).matchSnapshot(); + }); + + test('should work with `position` prop', async () => { + const instance = new KAffix({ + target: document.body, + props: { + positionOption: 'absolute' + } + }); + expect(instance).toBeTruthy(); + expect( + (document.documentElement as HTMLElement)!.innerHTML.includes('k-affix--absolute-positioned') + ).toBeTruthy(); + expect(document.documentElement.innerHTML).matchSnapshot(); + }); +}); diff --git a/components/Affix/package.json b/components/Affix/package.json new file mode 100644 index 00000000..27d8025c --- /dev/null +++ b/components/Affix/package.json @@ -0,0 +1,48 @@ +{ + "name": "@ikun-ui/affix", + "version": "0.0.16", + "type": "module", + "main": "src/index.ts", + "types": "src/index.d.ts", + "svelte": "src/index.ts", + "keywords": [ + "svelte", + "svelte3", + "web component", + "component", + "react", + "vue", + "svelte-kit", + "dx" + ], + "files": [ + "dist", + "package.json" + ], + "scripts": { + "build": "npm run build:js && npm run build:svelte", + "build:js": "tsc -p . --outDir dist/ --rootDir src/", + "build:svelte": "svelte-strip strip src/ dist", + "publish:pre": "node ../../scripts/pre-publish.js", + "publish:npm": "pnpm run publish:pre && pnpm publish --no-git-checks --access public" + }, + "publishConfig": { + "access": "public", + "main": "dist/index.js", + "module": "dist/index.js", + "svelte": "dist/index.js", + "types": "dist/index.d.ts" + }, + "dependencies": { + "@ikun-ui/icon": "workspace:*", + "@ikun-ui/utils": "workspace:*", + "baiwusanyu-utils": "^1.0.16", + "clsx": "^2.0.0" + }, + "devDependencies": { + "@tsconfig/svelte": "^5.0.2", + "svelte-strip": "^2.0.0", + "tslib": "^2.6.2", + "typescript": "^5.3.2" + } +} diff --git a/components/Affix/src/index.svelte b/components/Affix/src/index.svelte new file mode 100644 index 00000000..c9ed3890 --- /dev/null +++ b/components/Affix/src/index.svelte @@ -0,0 +1,123 @@ + + +
+ +
diff --git a/components/Affix/src/index.ts b/components/Affix/src/index.ts new file mode 100644 index 00000000..5ab48552 --- /dev/null +++ b/components/Affix/src/index.ts @@ -0,0 +1,5 @@ +/// +import Affix from './index.svelte'; +export { Affix as KAffix }; + +export default Affix; diff --git a/components/Affix/src/types.d.ts b/components/Affix/src/types.d.ts new file mode 100644 index 00000000..1bbaadf7 --- /dev/null +++ b/components/Affix/src/types.d.ts @@ -0,0 +1,13 @@ +/// +import type { ClassValue } from 'clsx'; +import type { ScrollTarget } from './utils'; +export type KAffixProps = { + listenTo: string | ScrollTarget | (() => HTMLElement) | undefined; + top: number | undefined; + bottom: number | undefined; + triggerTop: number | undefined; + triggerBottom: number | undefined; + positionOption: 'fixed' | 'absolute'; + cls: ClassValue; + attrs: Record; +}; diff --git a/components/Affix/src/utils.ts b/components/Affix/src/utils.ts new file mode 100644 index 00000000..c15963c9 --- /dev/null +++ b/components/Affix/src/utils.ts @@ -0,0 +1,42 @@ +import type { IKunUncertainFunction } from '@ikun-ui/utils'; + +export type ScrollTarget = Window | Document | HTMLElement; + +export function getScrollTop(target: ScrollTarget): number { + return target instanceof HTMLElement ? target.scrollTop : window.scrollY; +} + +export function getRect(target: ScrollTarget): { top: number; bottom: number } { + return target instanceof HTMLElement + ? target.getBoundingClientRect() + : { top: 0, bottom: window.innerHeight }; +} + +type GetElement = () => HTMLElement; + +function unwrapElement( + target: T | string | GetElement +): T extends HTMLElement ? HTMLElement : HTMLElement | null; +function unwrapElement(target: HTMLElement | string | GetElement) { + if (typeof target === 'string') return document.querySelector(target); + if (typeof target === 'function') return target(); + return target; +} + +export { unwrapElement }; + +let onceCbs: IKunUncertainFunction[] = []; +const paramsMap: WeakMap = new WeakMap(); + +function flushOnceCallbacks(): void { + // @ts-ignore + onceCbs.forEach((cb) => cb(...paramsMap.get(cb)!)); + onceCbs = []; +} + +function beforeNextFrameOnce(cb: IKunUncertainFunction, ...params: any[]): void { + paramsMap.set(cb, params); + if (onceCbs.includes(cb)) return; + onceCbs.push(cb) === 1 && requestAnimationFrame(flushOnceCallbacks); +} +export { beforeNextFrameOnce }; diff --git a/components/Affix/tsconfig.json b/components/Affix/tsconfig.json new file mode 100644 index 00000000..fe0d7c4f --- /dev/null +++ b/components/Affix/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + + "compilerOptions": { + "noImplicitAny": true, + "strict": true, + "declaration": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], + "exclude": ["node_modules/*", "**/*.spec.ts"] +} diff --git a/components/index.ts b/components/index.ts index 18669998..c726e656 100644 --- a/components/index.ts +++ b/components/index.ts @@ -50,3 +50,4 @@ export * from '@ikun-ui/tabs'; export * from '@ikun-ui/descriptions'; export * from '@ikun-ui/descriptions-item'; export * from '@ikun-ui/carousel'; +export * from '@ikun-ui/affix'; diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 681ae1ff..8adcbe1e 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -156,6 +156,10 @@ const components = [ text: 'Navigation', collapsed: false, items: [ + { + text: 'Affix', + link: '/components/KAffix' + }, { text: 'Breadcrumb', link: '/components/KBreadcrumb' diff --git a/docs/components/KAffix.md b/docs/components/KAffix.md new file mode 100644 index 00000000..254f3ad8 --- /dev/null +++ b/docs/components/KAffix.md @@ -0,0 +1,60 @@ +--- +title: KAffix +lang: en-US +--- + +# KAffix + +Avatars can be used to represent people or objects. It supports images, Icons, or characters. + +## Install + +::: code-group + +```bash [pnpm] +pnpm add @ikun-ui/affix +``` + +```bash [yarn] +yarn add @ikun-ui/affix +``` + +```bash [npm] +npm install @ikun-ui/affix +``` + +::: + +## Basic usage + +Affix has `trigger-top`, `top`, `trigger-bottom` and `bottom`. +`trigger-to`p is top affixing trigger point. +`top` is the style `top` value after top affixing is trigger. +`trigger-bottom` and `bottom` work in similar way. + + + +## Position + +Affix can be `absolute`or fixed positioned. You may need some css tricks to make it works as following. + + + +## Affix Props + +| Name | Type | Default | Description | +| -------------- | ------------------------------------------------ | ---------- | --------------------------------------------------------------------------------------------- | +| top | `number` | `-` | The css top property after trigger top affix. (if not set, use `trigger-top` prop). | +| triggerTop | `number` | `-` | The distance px to top of target to trigger top affix. (if not set, use `top` prop). | +| bottom | `number` | `-` | The css bottom property after trigger bottom affix. (if not set, use `trigger-bottom` prop). | +| triggerBottom | `number` | `-` | The distance px to bottom of target to trigger bottom affix. (if not set, use `bottom` prop). | +| positionOption | `'fixed' \| 'absolute'` | `fixed` | CSS position of the affix. | +| listenTo | `string \| ScrollTarget \| (() => HTMLElement)` | `document` | The scrolling element to listen scrolling. | +| cls | `string` | `''` | Additional class for component | +| attrs | `Record` | `{}` | Additional attributes | + +## Affix Slots + +| Name | Description | +| ------- | ------------------------- | +| default | Customize default content | diff --git a/docs/example/affix/basic.svelte b/docs/example/affix/basic.svelte new file mode 100644 index 00000000..d1b363af --- /dev/null +++ b/docs/example/affix/basic.svelte @@ -0,0 +1,34 @@ + + +
+
+
+
+ + top 120px triggerTop 60px + +
+
+ +
+
+
+ + bottom 120px triggerBottom 60px + +
+
+
diff --git a/docs/example/affix/position.svelte b/docs/example/affix/position.svelte new file mode 100644 index 00000000..0500d82b --- /dev/null +++ b/docs/example/affix/position.svelte @@ -0,0 +1,28 @@ + + +
+
+
+
+
+ + triggerTop 50px + +
+ +
+ + triggerBottom 60px + +
+
+
+
diff --git a/package.json b/package.json index 2dcfe287..3213aee5 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,8 @@ "baiwusanyu-utils": "^1.0.16", "clsx": "^2.0.0", "@ikun-ui/tabs": "workspace:*", - "@ikun-ui/carousel": "workspace:*" + "@ikun-ui/carousel": "workspace:*", + "@ikun-ui/affix": "workspace:*" }, "devDependencies": { "@sveltejs/adapter-auto": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a23cdd2..36b66193 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@ikun-ui/affix': + specifier: workspace:* + version: link:components/Affix '@ikun-ui/alert': specifier: workspace:* version: link:components/Alert @@ -295,6 +298,34 @@ importers: specifier: ^0.34.6 version: 0.34.6(@vitest/ui@0.34.7)(jsdom@23.0.1) + components/Affix: + dependencies: + '@ikun-ui/icon': + specifier: workspace:* + version: link:../Icon + '@ikun-ui/utils': + specifier: workspace:* + version: link:../../utils + baiwusanyu-utils: + specifier: ^1.0.16 + version: 1.0.16(ansi-colors@4.1.3)(moment@2.29.4) + clsx: + specifier: ^2.0.0 + version: 2.0.0 + devDependencies: + '@tsconfig/svelte': + specifier: ^5.0.2 + version: 5.0.2 + svelte-strip: + specifier: ^2.0.0 + version: 2.0.0(@babel/core@7.23.5)(postcss@8.4.32)(svelte@3.59.2) + tslib: + specifier: ^2.6.2 + version: 2.6.2 + typescript: + specifier: ^5.3.2 + version: 5.3.2 + components/Alert: dependencies: '@ikun-ui/icon': @@ -2616,7 +2647,7 @@ packages: dev: true /@esbuild/android-arm64@0.19.8: - resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} + resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2625,7 +2656,7 @@ packages: optional: true /@esbuild/android-arm@0.19.8: - resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} + resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2634,7 +2665,7 @@ packages: optional: true /@esbuild/android-x64@0.19.8: - resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} + resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2643,7 +2674,7 @@ packages: optional: true /@esbuild/darwin-arm64@0.19.8: - resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} + resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2652,7 +2683,7 @@ packages: optional: true /@esbuild/darwin-x64@0.19.8: - resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} + resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2661,7 +2692,7 @@ packages: optional: true /@esbuild/freebsd-arm64@0.19.8: - resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} + resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2670,7 +2701,7 @@ packages: optional: true /@esbuild/freebsd-x64@0.19.8: - resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} + resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2679,7 +2710,7 @@ packages: optional: true /@esbuild/linux-arm64@0.19.8: - resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} + resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2688,7 +2719,7 @@ packages: optional: true /@esbuild/linux-arm@0.19.8: - resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} + resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2697,7 +2728,7 @@ packages: optional: true /@esbuild/linux-ia32@0.19.8: - resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} + resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2706,7 +2737,7 @@ packages: optional: true /@esbuild/linux-loong64@0.19.8: - resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} + resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2715,7 +2746,7 @@ packages: optional: true /@esbuild/linux-mips64el@0.19.8: - resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} + resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2724,7 +2755,7 @@ packages: optional: true /@esbuild/linux-ppc64@0.19.8: - resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} + resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2733,7 +2764,7 @@ packages: optional: true /@esbuild/linux-riscv64@0.19.8: - resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} + resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2742,7 +2773,7 @@ packages: optional: true /@esbuild/linux-s390x@0.19.8: - resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} + resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2751,7 +2782,7 @@ packages: optional: true /@esbuild/linux-x64@0.19.8: - resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} + resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2760,7 +2791,7 @@ packages: optional: true /@esbuild/netbsd-x64@0.19.8: - resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} + resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2769,7 +2800,7 @@ packages: optional: true /@esbuild/openbsd-x64@0.19.8: - resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} + resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2778,7 +2809,7 @@ packages: optional: true /@esbuild/sunos-x64@0.19.8: - resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} + resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2787,7 +2818,7 @@ packages: optional: true /@esbuild/win32-arm64@0.19.8: - resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} + resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2796,7 +2827,7 @@ packages: optional: true /@esbuild/win32-ia32@0.19.8: - resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} + resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2805,7 +2836,7 @@ packages: optional: true /@esbuild/win32-x64@0.19.8: - resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} + resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2974,7 +3005,7 @@ packages: dev: true /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} engines: {node: '>=14'} requiresBuild: true dev: true @@ -2985,7 +3016,7 @@ packages: dev: true /@popperjs/core@2.11.8: - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==, tarball: https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz} /@rollup/pluginutils@5.0.5: resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} @@ -3016,7 +3047,7 @@ packages: dev: true /@rollup/rollup-android-arm-eabi@4.6.0: - resolution: {integrity: sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==} + resolution: {integrity: sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.0.tgz} cpu: [arm] os: [android] requiresBuild: true @@ -3024,7 +3055,7 @@ packages: optional: true /@rollup/rollup-android-arm64@4.6.0: - resolution: {integrity: sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==} + resolution: {integrity: sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.0.tgz} cpu: [arm64] os: [android] requiresBuild: true @@ -3032,7 +3063,7 @@ packages: optional: true /@rollup/rollup-darwin-arm64@4.6.0: - resolution: {integrity: sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==} + resolution: {integrity: sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.0.tgz} cpu: [arm64] os: [darwin] requiresBuild: true @@ -3040,7 +3071,7 @@ packages: optional: true /@rollup/rollup-darwin-x64@4.6.0: - resolution: {integrity: sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==} + resolution: {integrity: sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.0.tgz} cpu: [x64] os: [darwin] requiresBuild: true @@ -3048,7 +3079,7 @@ packages: optional: true /@rollup/rollup-linux-arm-gnueabihf@4.6.0: - resolution: {integrity: sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==} + resolution: {integrity: sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.0.tgz} cpu: [arm] os: [linux] requiresBuild: true @@ -3056,7 +3087,7 @@ packages: optional: true /@rollup/rollup-linux-arm64-gnu@4.6.0: - resolution: {integrity: sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==} + resolution: {integrity: sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.0.tgz} cpu: [arm64] os: [linux] requiresBuild: true @@ -3064,7 +3095,7 @@ packages: optional: true /@rollup/rollup-linux-arm64-musl@4.6.0: - resolution: {integrity: sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==} + resolution: {integrity: sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.0.tgz} cpu: [arm64] os: [linux] requiresBuild: true @@ -3072,7 +3103,7 @@ packages: optional: true /@rollup/rollup-linux-x64-gnu@4.6.0: - resolution: {integrity: sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==} + resolution: {integrity: sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.0.tgz} cpu: [x64] os: [linux] requiresBuild: true @@ -3080,7 +3111,7 @@ packages: optional: true /@rollup/rollup-linux-x64-musl@4.6.0: - resolution: {integrity: sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==} + resolution: {integrity: sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.0.tgz} cpu: [x64] os: [linux] requiresBuild: true @@ -3088,7 +3119,7 @@ packages: optional: true /@rollup/rollup-win32-arm64-msvc@4.6.0: - resolution: {integrity: sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==} + resolution: {integrity: sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.0.tgz} cpu: [arm64] os: [win32] requiresBuild: true @@ -3096,7 +3127,7 @@ packages: optional: true /@rollup/rollup-win32-ia32-msvc@4.6.0: - resolution: {integrity: sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==} + resolution: {integrity: sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.0.tgz} cpu: [ia32] os: [win32] requiresBuild: true @@ -3104,7 +3135,7 @@ packages: optional: true /@rollup/rollup-win32-x64-msvc@4.6.0: - resolution: {integrity: sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==} + resolution: {integrity: sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.0.tgz} cpu: [x64] os: [win32] requiresBuild: true @@ -3940,7 +3971,7 @@ packages: dev: true /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, tarball: https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz} engines: {node: '>=6'} /ansi-escapes@6.2.0: @@ -5134,7 +5165,7 @@ packages: dev: true /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -6249,7 +6280,7 @@ packages: dev: true /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 @@ -6281,7 +6312,7 @@ packages: dev: true /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==, tarball: https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz} engines: {node: '>=8'} dependencies: yallist: 4.0.0 @@ -6293,7 +6324,7 @@ packages: dev: true /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==, tarball: https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz} engines: {node: '>=8'} dev: true @@ -6337,7 +6368,7 @@ packages: dev: true /moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==, tarball: https://registry.npmjs.org/moment/-/moment-2.29.4.tgz} /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -7123,7 +7154,7 @@ packages: dev: true /search-insights@2.9.0: - resolution: {integrity: sha512-bkWW9nIHOFkLwjQ1xqVaMbjjO5vhP26ERsH9Y3pKr8imthofEFIxlnOabkmGcw6ksRj9jWidcI65vvjJH/nTGg==} + resolution: {integrity: sha512-bkWW9nIHOFkLwjQ1xqVaMbjjO5vhP26ERsH9Y3pKr8imthofEFIxlnOabkmGcw6ksRj9jWidcI65vvjJH/nTGg==, tarball: https://registry.npmjs.org/search-insights/-/search-insights-2.9.0.tgz} dev: true /semver@5.7.2: @@ -7616,7 +7647,7 @@ packages: '@popperjs/core': 2.11.8 svelte: 4.2.8 - /svelte-preprocess@5.1.2(@babel/core@7.23.5)(postcss@8.4.32)(svelte@3.59.2)(typescript@5.3.2): + /svelte-preprocess@5.1.2(@babel/core@7.23.5)(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.2): resolution: {integrity: sha512-XF0aliMAcYnP4hLETvB6HRAMnaL09ASYT1Z2I1Gwu0nz6xbdg/dSgAEthtFZJA4AKrNhFDFdmUDO+H9d/6xg5g==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -7661,13 +7692,13 @@ packages: postcss: 8.4.32 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 3.59.2 + svelte: 4.2.8 typescript: 5.3.2 dev: true - /svelte-preprocess@5.1.2(@babel/core@7.23.5)(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.2): - resolution: {integrity: sha512-XF0aliMAcYnP4hLETvB6HRAMnaL09ASYT1Z2I1Gwu0nz6xbdg/dSgAEthtFZJA4AKrNhFDFdmUDO+H9d/6xg5g==} - engines: {node: '>= 14.10.0'} + /svelte-preprocess@5.1.3(@babel/core@7.23.5)(postcss@8.4.32)(svelte@3.59.2)(typescript@5.3.2): + resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==, tarball: https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz} + engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true peerDependencies: '@babel/core': ^7.10.2 @@ -7706,11 +7737,11 @@ packages: '@babel/core': 7.23.5 '@types/pug': 2.0.8 detect-indent: 6.1.0 - magic-string: 0.27.0 + magic-string: 0.30.5 postcss: 8.4.32 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.8 + svelte: 3.59.2 typescript: 5.3.2 dev: true @@ -7723,7 +7754,7 @@ packages: glob: 9.3.5 minimatch: 7.4.6 svelte: 3.59.2 - svelte-preprocess: 5.1.2(@babel/core@7.23.5)(postcss@8.4.32)(svelte@3.59.2)(typescript@5.3.2) + svelte-preprocess: 5.1.3(@babel/core@7.23.5)(postcss@8.4.32)(svelte@3.59.2)(typescript@5.3.2) typescript: 5.3.2 yargs: 17.7.2 transitivePeerDependencies: @@ -7775,7 +7806,7 @@ packages: dev: true /svelte@3.59.2: - resolution: {integrity: sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==} + resolution: {integrity: sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==, tarball: https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz} engines: {node: '>= 8'} dev: true diff --git a/preset/src/shortcuts/index.ts b/preset/src/shortcuts/index.ts index d0f2a097..4051f893 100644 --- a/preset/src/shortcuts/index.ts +++ b/preset/src/shortcuts/index.ts @@ -49,7 +49,7 @@ import { getDescriptionsGridColCls } from '../rules/src/descriptions'; import { descriptionsItemShortcuts } from './src/descriptions-item'; import { getDescriptionsItemGridColStartCls } from '../rules/src/descriptions-item'; import { carouselShortcuts } from './src/carousel'; - +import { affixShortcuts } from './src/affix'; export const defaultShortcuts = [ baseShortcuts, commonShortcuts, @@ -138,7 +138,9 @@ export const defaultShortcuts = [ // descriptions item descriptionsItemShortcuts, // carousel - carouselShortcuts + carouselShortcuts, + // affix + affixShortcuts ] as UserShortcuts; export function getSafeList() { @@ -188,6 +190,7 @@ export function getSafeList() { const descriptionsList = Object.keys(descriptionsShortcuts); const descriptionsItemList = Object.keys(descriptionsItemShortcuts); const carouselList = Object.keys(carouselShortcuts); + const affixlList = Object.keys(affixShortcuts); let res = iconList .concat(IKUN_SAFE_LIST) .concat(comList) @@ -234,6 +237,7 @@ export function getSafeList() { .concat(pageList) .concat(descriptionsList) .concat(descriptionsItemList) + .concat(affixlList) .concat(carouselList); // rules @@ -294,3 +298,4 @@ export { tabsShortcuts } from './src/tabs'; export { descriptionsShortcuts } from './src/descriptions'; export { descriptionsItemShortcuts } from './src/descriptions-item'; export { carouselShortcuts } from './src/carousel'; +export { affixShortcuts } from './src/affix'; diff --git a/preset/src/shortcuts/src/affix.ts b/preset/src/shortcuts/src/affix.ts new file mode 100644 index 00000000..408bdb77 --- /dev/null +++ b/preset/src/shortcuts/src/affix.ts @@ -0,0 +1,4 @@ +export const affixShortcuts: Record = { + // affix + 'k-affix': '[&.k-affix--affixed]:pf [&.k-affix--affixed.k-affix--absolute-positioned]:pa' +};