@svgrid/enterprise 2.6.2 → 2.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cdn/svgrid-enterprise.svelte-external.js +1682 -1677
- package/dist/designer/assets/{GridMenus-Bjr19Tz_.js → GridMenus-BIU7Nfbr.js} +1 -1
- package/dist/designer/assets/SvGrid.helpers-C6wxF55r.js +1 -0
- package/dist/designer/assets/SvGridCellEditor-CMtmQINJ.js +2 -0
- package/dist/designer/assets/SvListBox-D-_I_Aff.js +1 -0
- package/dist/designer/assets/editor-registry-BB1Qb5mp.js +1 -0
- package/dist/designer/assets/{index-xjfKckuH.js → index-DxBZuosR.js} +42 -42
- package/dist/designer/assets/js-scroller.svelte-03aI6ovu.js +110 -0
- package/dist/designer/assets/row-drag-touch-IuJPEt0z.js +1 -0
- package/dist/designer/assets/src-D8qr49rE.css +1 -0
- package/dist/designer/assets/src-Dn1Axx6T.js +2896 -0
- package/dist/designer/index.html +7 -5
- package/dist/license-core.d.ts +1 -1
- package/dist/license-core.js +1 -1
- package/dist/node/studio.js +114 -78
- package/dist/studio/emit-project.js +16 -7
- package/dist/studio/emit-schema.d.ts +1 -4
- package/dist/studio/emit-schema.js +7 -29
- package/dist/studio/init-flow.js +2 -2
- package/dist/studio/scaffold-app.d.ts +8 -0
- package/dist/studio/scaffold-app.js +7 -2
- package/dist/studio/scaffold.d.ts +8 -0
- package/dist/studio/scaffold.js +5 -0
- package/dist/studio/themes.d.ts +17 -1
- package/dist/studio/themes.js +26 -1
- package/dist/studio/ui-components.generated.js +8 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -6
- package/dist/designer/assets/SvListBox-BB8rt4aP.js +0 -1
- package/dist/designer/assets/js-scroller.svelte-CGkUUXwV.js +0 -110
- package/dist/designer/assets/src-BT3LjWJL.css +0 -1
- package/dist/designer/assets/src-DDhAK0WP.js +0 -2893
package/dist/studio/themes.d.ts
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* shell, grids, charts, KPIs, forms - not just the accent.
|
|
10
10
|
*
|
|
11
11
|
* Pure + node-safe (studio subtree): plain data + helpers, so the same tokens
|
|
12
|
-
* drive the browser preview and
|
|
12
|
+
* drive the browser preview and every emitted output - `app.css` for the full
|
|
13
|
+
* app and the fragment, the `<svelte:head>` of the CLI `add` scaffolds - via
|
|
14
|
+
* `themeTokenCss` below, the single place the token CSS is built.
|
|
13
15
|
*/
|
|
14
16
|
import { type ThemeMode, type ThemePalette, type ThemePreset } from '@svgrid/grid/themes';
|
|
15
17
|
import type { ProjectTheme } from './project.js';
|
|
@@ -30,5 +32,19 @@ export declare function resolveThemeTokens(theme?: ProjectTheme): Record<string,
|
|
|
30
32
|
/** Resolve the `--sg-*` tokens for a project theme in an EXPLICIT mode (for the
|
|
31
33
|
* generated app's light/dark switcher, which ships both token sets). */
|
|
32
34
|
export declare function resolveThemeTokensFor(theme: ProjectTheme | undefined, mode: 'light' | 'dark'): Record<string, string>;
|
|
35
|
+
/**
|
|
36
|
+
* The `--sg-*` token rules for a project theme, as CSS text. `:root` carries
|
|
37
|
+
* the mode picked in Studio (what the server-rendered page shows before
|
|
38
|
+
* hydration), and both palettes are scoped by `[data-theme]` on `<html>` for
|
|
39
|
+
* the generated app's light/dark switcher. An explicit accent override is
|
|
40
|
+
* applied to both. No theme -> the default preset, so every output is themed.
|
|
41
|
+
*
|
|
42
|
+
* `layer` wraps the rules in a cascade layer. Use it for drop-in outputs (the
|
|
43
|
+
* fragment, `svgrid-studio add`): layered declarations lose to unlayered ones,
|
|
44
|
+
* so a host app that already defines its own `--sg-*` tokens keeps winning.
|
|
45
|
+
*/
|
|
46
|
+
export declare function themeTokenCss(theme?: ProjectTheme, opts?: {
|
|
47
|
+
layer?: string;
|
|
48
|
+
}): string;
|
|
33
49
|
/** An inline `style` string (`--sg-x: y; ...; color-scheme; font-family`) for previews. */
|
|
34
50
|
export declare function themeStyleString(theme?: ProjectTheme): string;
|
package/dist/studio/themes.js
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* shell, grids, charts, KPIs, forms - not just the accent.
|
|
10
10
|
*
|
|
11
11
|
* Pure + node-safe (studio subtree): plain data + helpers, so the same tokens
|
|
12
|
-
* drive the browser preview and
|
|
12
|
+
* drive the browser preview and every emitted output - `app.css` for the full
|
|
13
|
+
* app and the fragment, the `<svelte:head>` of the CLI `add` scaffolds - via
|
|
14
|
+
* `themeTokenCss` below, the single place the token CSS is built.
|
|
13
15
|
*/
|
|
14
16
|
import { themePresets, defaultThemePreset, getThemePreset, resolveThemeTokens as resolveTokens, } from '@svgrid/grid/themes';
|
|
15
17
|
/** The built-in Studio themes, in gallery order (default first). */
|
|
@@ -33,6 +35,29 @@ export function resolveThemeTokensFor(theme, mode) {
|
|
|
33
35
|
const preset = getStudioTheme(theme?.preset) ?? defaultStudioTheme;
|
|
34
36
|
return resolveTokens(preset, mode, theme?.accent);
|
|
35
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* The `--sg-*` token rules for a project theme, as CSS text. `:root` carries
|
|
40
|
+
* the mode picked in Studio (what the server-rendered page shows before
|
|
41
|
+
* hydration), and both palettes are scoped by `[data-theme]` on `<html>` for
|
|
42
|
+
* the generated app's light/dark switcher. An explicit accent override is
|
|
43
|
+
* applied to both. No theme -> the default preset, so every output is themed.
|
|
44
|
+
*
|
|
45
|
+
* `layer` wraps the rules in a cascade layer. Use it for drop-in outputs (the
|
|
46
|
+
* fragment, `svgrid-studio add`): layered declarations lose to unlayered ones,
|
|
47
|
+
* so a host app that already defines its own `--sg-*` tokens keeps winning.
|
|
48
|
+
*/
|
|
49
|
+
export function themeTokenCss(theme, opts = {}) {
|
|
50
|
+
const decl = (m) => Object.entries(m).map(([k, v]) => ` ${k}: ${v};`).join('\n');
|
|
51
|
+
const mode = isDarkTheme(theme) ? 'dark' : 'light';
|
|
52
|
+
const light = resolveThemeTokensFor(theme, 'light');
|
|
53
|
+
const dark = resolveThemeTokensFor(theme, 'dark');
|
|
54
|
+
const rules = [
|
|
55
|
+
`:root {\n${decl(mode === 'dark' ? dark : light)}\n color-scheme: ${mode};\n}`,
|
|
56
|
+
`:root[data-theme="light"] {\n${decl(light)}\n color-scheme: light;\n}`,
|
|
57
|
+
`:root[data-theme="dark"] {\n${decl(dark)}\n color-scheme: dark;\n}`,
|
|
58
|
+
].join('\n');
|
|
59
|
+
return opts.layer ? `@layer ${opts.layer} {\n${rules}\n}` : rules;
|
|
60
|
+
}
|
|
36
61
|
/** An inline `style` string (`--sg-x: y; ...; color-scheme; font-family`) for previews. */
|
|
37
62
|
export function themeStyleString(theme) {
|
|
38
63
|
const tokens = resolveThemeTokens(theme);
|
|
@@ -6639,7 +6639,7 @@ export const GENERATED_UI_SURFACE = {
|
|
|
6639
6639
|
"key": "sortable",
|
|
6640
6640
|
"label": "Sortable",
|
|
6641
6641
|
"type": "boolean",
|
|
6642
|
-
"description": "Convenience shortcuts to switch a whole capability on without wiring `features` or the finer-grained props by hand. Every capability is OFF by default - a bare grid is a plain read-only table - so set the shortcut `true` to opt in. (`false` / omitted both leave it off; the shortcut is mainly there to turn things ON.) `sortable` - column sorting (injects `rowSortingFeature`) `filterable` - column filtering (injects `columnFilteringFeature`) `editable` - inline cell editing (alias of `enableInlineEditing`) `groupable` - row grouping controls(alias of `showGroupingControls`, also injects `columnGroupingFeature`) `pageable` - pagination footer (alias of `showPagination`) Fine-grained props (`enableInlineEditing`, `showPagination`, ...) still work; the shortcut wins only when it is explicitly set.",
|
|
6642
|
+
"description": "Convenience shortcuts to switch a whole capability on without wiring `features` or the finer-grained props by hand. Every capability is OFF by default - a bare grid is a plain read-only table - so set the shortcut `true` to opt in. (`false` / omitted both leave it off; the shortcut is mainly there to turn things ON.) `sortable` - column sorting (injects `rowSortingFeature`) `filterable` - column filtering (injects `columnFilteringFeature`) `editable` - inline cell editing (alias of `enableInlineEditing`) `selectable` - cell selection (alias of `enableCellSelection`) `groupable` - row grouping controls(alias of `showGroupingControls`, also injects `columnGroupingFeature`) `pageable` - pagination footer (alias of `showPagination`) Fine-grained props (`enableInlineEditing`, `showPagination`, ...) still work; the shortcut wins only when it is explicitly set.",
|
|
6643
6643
|
"group": "common"
|
|
6644
6644
|
},
|
|
6645
6645
|
{
|
|
@@ -6654,6 +6654,13 @@ export const GENERATED_UI_SURFACE = {
|
|
|
6654
6654
|
"type": "boolean",
|
|
6655
6655
|
"group": "common"
|
|
6656
6656
|
},
|
|
6657
|
+
{
|
|
6658
|
+
"key": "selectable",
|
|
6659
|
+
"label": "Selectable",
|
|
6660
|
+
"type": "boolean",
|
|
6661
|
+
"description": "Cell selection - click a cell to select it, drag or shift-click to extend the selection to a range. Alias of `enableCellSelection`, and the highest priority of the three inputs that decide it: `selectable` -> `enableCellSelection` -> `selectionMode`. NOTE the asymmetry with its siblings, which are all off until you opt in: this one is **ON by default**, because `selectionMode` defaults to `'both'`. It is named here so the capability is discoverable next to the other shortcuts, and so `selectable={false}` is a one-word way to turn cell selection off (the longhand being `selectionMode=\"none\"`, which also removes the row-selection surface). This is the CELL surface only. The selection **checkbox column** is the other half of `selectionMode`, controlled by `showRowSelection` - also on by default, and it needs no feature import (verified: the column renders and toggles rows with an empty `features` set). Use `selectionMode` when you want to move both surfaces at once.",
|
|
6662
|
+
"group": "common"
|
|
6663
|
+
},
|
|
6657
6664
|
{
|
|
6658
6665
|
"key": "treeData",
|
|
6659
6666
|
"label": "Tree Data",
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"type": "commercial",
|
|
5
5
|
"url": "https://svgrid.com/pricing"
|
|
6
6
|
},
|
|
7
|
-
"version": "2.6.
|
|
8
|
-
"description": "Enterprise feature pack for SvGrid: Excel (xlsx)
|
|
7
|
+
"version": "2.6.4",
|
|
8
|
+
"description": "Enterprise feature pack for SvGrid: Excel (xlsx) and PDF export, Excel/CSV/JSON import, pivot tables with a drag-and-drop designer, paginated print, Kanban board and scheduler renderers, no-code alerts and batch editing. CSV, TSV and JSON export are already free in @svgrid/grid. Requires a paid license key.",
|
|
9
9
|
"license": "SEE LICENSE IN LICENSE",
|
|
10
10
|
"author": "jQWidgets <sales@jqwidgets.com>",
|
|
11
11
|
"homepage": "https://svgrid.com/pricing",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"jszip": "^3.10.0",
|
|
66
66
|
"pdfmake": "^0.2.0",
|
|
67
67
|
"svelte": "^5.0.0",
|
|
68
|
-
"@svgrid/grid": "^2.6.
|
|
68
|
+
"@svgrid/grid": "^2.6.17"
|
|
69
69
|
},
|
|
70
70
|
"peerDependenciesMeta": {
|
|
71
71
|
"jszip": {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"svelte": "^5.55.5",
|
|
84
84
|
"typescript": "6.0.3",
|
|
85
85
|
"vite": "^8.2.1",
|
|
86
|
-
"@svgrid/grid": "^2.6.
|
|
86
|
+
"@svgrid/grid": "^2.6.17"
|
|
87
87
|
},
|
|
88
88
|
"repository": {
|
|
89
89
|
"type": "git",
|
|
@@ -113,8 +113,8 @@
|
|
|
113
113
|
"scripts": {
|
|
114
114
|
"test": "vitest run",
|
|
115
115
|
"test:types": "tsc -p tsconfig.json --noEmit",
|
|
116
|
-
"build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ./scripts/build-cdn.mjs && node ./scripts/build-node.mjs && node ./scripts/build-designer.mjs",
|
|
117
|
-
"build:lib": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist",
|
|
116
|
+
"build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ../../tools/add-dist-extensions.mjs ./dist && node ./scripts/build-cdn.mjs && node ./scripts/build-node.mjs && node ./scripts/build-designer.mjs",
|
|
117
|
+
"build:lib": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ../../tools/add-dist-extensions.mjs ./dist",
|
|
118
118
|
"build:cdn": "node ./scripts/build-cdn.mjs",
|
|
119
119
|
"build:node": "node ./scripts/build-node.mjs",
|
|
120
120
|
"build:designer": "node ./scripts/build-designer.mjs",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e,H as t,I as n,J as r,K as i,L as a,M as o,P as s,R as c,U as l,W as u,X as d,Z as f,at as p,b as m,bt as h,ct as g,d as _,dt as v,f as y,g as b,it as x,k as S,l as C,mt as w,o as ee,p as te,pt as T,r as E,rt as D,s as ne,st as O,u as re,vt as k,x as A}from"./disclose-version-CIm4S9xS.js";import{c as j,i as M,l as ie,n as ae,o as oe,s as se,t as ce,u as le}from"./js-scroller.svelte-CGkUUXwV.js";import{a as ue,i as N,r as de}from"./dismissable-2EZKoens.js";var P=0;function F(e,t){if(e==null)return[];if(e instanceof Set||Array.isArray(e)){let n=[...e];return t?n:n.slice(0,1)}return[e]}function I(e,t){return e instanceof Set?e:new Set(F(e,t))}function fe(e){let t=`sv-lb-${P++}`,n=()=>e.options(),r=()=>e.multiple?.()??!1,a=()=>e.disabled?.()??!1,o=g(0),s=v(()=>I(e.value(),r())),c=v(()=>F(e.value(),r())),l=v(()=>n().map((e,t)=>e.disabled?-1:t).filter(e=>e>=0));f(()=>{let e=n()[i(o)];(!e||e.disabled)&&O(o,i(l)[0]??0,!0)});let u=e=>i(s).has(e),d=e=>e===i(o),p=e=>`${t}-opt-${e}`;function m(e){let t=n()[e];t&&!t.disabled&&O(o,e,!0)}function h(t){let c=n()[t];if(!(!c||c.disabled||a())){if(O(o,t,!0),r()){let t=new Set(i(s));t.has(c.value)?t.delete(c.value):t.add(c.value),e.onChange?.(e.value()instanceof Set?t:[...t])}else e.onChange?.(c.value)}}function _(e){let t=i(l);if(!t.length)return;let n=t[(t.indexOf(i(o))+e+t.length)%t.length];n!=null&&O(o,n,!0)}let y=()=>{O(o,i(l)[0]??0,!0)},b=()=>{O(o,i(l).at(-1)??0,!0)},x=M();function S(e){let t=x.push(e.toLowerCase()),r=ie(n(),t,i(o));r>=0&&O(o,r,!0)}function C(e){if(!a())switch(e.key){case`ArrowDown`:e.preventDefault(),_(1);break;case`ArrowUp`:e.preventDefault(),_(-1);break;case`Home`:e.preventDefault(),y();break;case`End`:e.preventDefault(),b();break;case` `:case`Enter`:e.preventDefault(),h(i(o));break;default:j(e)&&S(e.key)}}let w=()=>({id:e.id?.(),invalid:e.invalid?.(),required:e.required?.(),error:e.error?.(),hint:e.hint?.(),ariaLabel:e.ariaLabel?.()});return{get activeIndex(){return i(o)},get selectedValues(){return i(c)},isSelected:u,isActive:d,setActive:m,pick:h,move:_,first:y,last:b,onKeydown:C,rootProps:()=>({role:`listbox`,id:e.id?.(),"aria-multiselectable":r(),"aria-disabled":a(),"aria-activedescendant":n()[i(o)]?p(i(o)):void 0,...N(w()),tabindex:a()?-1:0,onkeydown:C}),optionProps:e=>{let t=n()[e];return{role:`option`,id:p(e),"aria-selected":t?u(t.value):!1,"aria-disabled":t?.disabled,"data-idx":e,"data-active":d(e)?``:void 0,"data-selected":t&&u(t.value)?``:void 0,onclick:()=>h(e),onpointermove:()=>m(e)}}}}var pe=c(`<span aria-hidden="true"></span>`),me=c(`<span class="sv-listbox__check svelte-j44quc" aria-hidden="true"> </span>`),he=c(`<span class="sv-listbox__label svelte-j44quc"> </span>`),ge=c(`<!> <!>`,1),_e=c(`<div><!></div>`),ve=c(`<div class="sv-listbox__group svelte-j44quc" role="presentation"> </div>`),ye=c(`<div class="sv-listbox__sb svelte-j44quc" aria-hidden="true"><div></div></div>`),be=c(`<div class="sv-listbox__vp svelte-j44quc"></div> <!>`,1),xe=c(`<div class="sv-listbox__group svelte-j44quc" role="presentation"> </div>`),Se=c(`<!> <!>`,1),Ce=c(`<input type="hidden"/>`),we=c(`<div><!></div> <!>`,1);function L(t,c){w(c,!0);let j=(t,r=h)=>{var i=ge(),l=x(i),u=e=>{var t=pe();let i;d(e=>i=A(t,1,`sv-listbox__box svelte-j44quc`,null,i,e),[()=>({"is-on":G(r())})]),n(e,t)},f=e=>{var t=me(),i=D(t,!0);k(t),d(e=>s(i,e),[()=>G(r())?`✓`:``]),n(e,t)};o(l,e=>{P()?e(u):N()&&e(f,1)});var m=p(l,2),g=t=>{var i=a(),o=x(i);e(o,()=>c.item??c.itemTemplate,r),n(t,i)},_=e=>{var t=he(),i=D(t,!0);k(t),d(()=>s(i,r().label)),n(e,t)};o(m,e=>{c.item??c.itemTemplate?e(g):e(_,-1)}),n(t,i)},M=(e,t=h,r=h,i=h,a=h)=>{var o=_e();_(o,(e,t,n)=>({class:`sv-listbox__opt`,...e,[C]:t,[re]:n}),[()=>W.optionProps(r()),()=>({"is-selected":G(t()),"is-active":W.isActive(r()),"is-disabled":t().disabled}),()=>({height:`${i()??Oe(t())}px`,transform:a()==null?void 0:`translateY(${a()}px)`})],void 0,void 0,`svelte-j44quc`);var s=D(o);j(s,t),k(o),n(e,o)},ie=E(c,`value`,3,null),N=E(c,`multiple`,3,!1),P=E(c,`checkbox`,3,!1),F=E(c,`block`,3,!1),I=E(c,`disabled`,3,!1),L=E(c,`size`,3,`md`),R=E(c,`rows`,3,7),Te=E(c,`virtual`,3,!1),z=E(c,`rowHeight`,3,32),Ee=E(c,`groupHeaderHeight`,3,28),B=E(c,`invalid`,3,!1),V=E(c,`required`,3,!1),De=ue(`sv-lb`),H=v(()=>c.id??De),U=v(()=>le(c.options)),W=fe({options:()=>i(U),value:()=>ie(),onChange:e=>c.onChange?.(e),multiple:()=>N(),disabled:()=>I(),ariaLabel:()=>c.ariaLabel,id:()=>i(H),invalid:()=>B(),required:()=>V(),error:()=>c.error,hint:()=>c.hint}),G=e=>W.isSelected(e.value),K=v(()=>typeof z()==`number`?z():32),Oe=e=>typeof z()==`function`?z()(e,e.index):z(),q=v(Te),J=g(null),Y=g(0),X=v(()=>oe(i(U),{rowHeight:z(),groupHeaderHeight:Ee()})),ke=v(()=>!i(X).hasGroups&&typeof z()==`number`),Ae=v(()=>i(ke)?i(K):e=>i(X).sizeAt(e)),Z=v(()=>i(Y)>0?i(Y):Math.max(1,R()*i(K))),Q=ae(r(()=>({count:i(X).entries.length,estimateSize:i(Ae),overscan:6,viewportHeight:i(Z)})));f(()=>{let e=i(X).entries.length,t=i(Ae);r(()=>Q.setOptions({count:e,estimateSize:t}))}),f(()=>{let e=i(Z);r(()=>Q.setViewportHeight(e))});let je=v(()=>(Q.version,Q.getVirtualItems())),Me=v(()=>(Q.version,Q.getTotalSize())),$=ce({virtualizer:Q,totalSize:()=>i(Me),viewport:()=>i(Z),lineStep:()=>i(K)});f(()=>{let e=W.activeIndex;if(i(q)){let t=i(X).optionFlatIndex[e];if(t==null)return;r(()=>$.ensureIndexVisible(t))}else queueMicrotask(()=>i(J)?.querySelector(`[data-idx="${e}"]`)?.scrollIntoView({block:`nearest`}))}),de(t,{get id(){return i(H)},get label(){return c.label},get hint(){return c.hint},get error(){return c.error},get required(){return V()},get dir(){return c.dir},get block(){return F()},children:(e,t)=>{var r=we(),f=x(r);_(f,e=>({class:`sv-listbox sv-listbox--${L()??``}`,onwheel:i(q)?$.onWheel:void 0,...e,[C]:{"is-invalid":B(),"is-virtual":i(q),"is-checkbox":P(),"is-block":F()},[re]:{"--sv-rows":R(),"--sv-row-h":`${i(K)}px`}}),[()=>W.rootProps()],void 0,void 0,`svelte-j44quc`);var h=D(f),g=e=>{var t=be(),r=x(t);S(r,21,()=>i(je),e=>e.key,(e,t)=>{let r=v(()=>i(X).entries[i(t).index]);var c=a(),l=x(c),u=e=>{var a=ve();let o;var c=D(a,!0);k(a),d(()=>{o=m(a,``,o,{height:`${i(t).size}px`,transform:`translateY(${i(t).start-$.scrollOffset}px)`}),s(c,i(r).label)}),n(e,a)},f=e=>{M(e,()=>i(r).opt,()=>i(r).opt.index,()=>i(t).size,()=>i(t).start-$.scrollOffset)};o(l,e=>{i(r)?.type===`group`?e(u):i(r)&&e(f,1)}),n(e,c)}),k(r);var c=p(r,2),f=e=>{var t=ye(),r=D(t);let i,a;k(t),d(()=>{i=A(r,1,`sv-listbox__thumb svelte-j44quc`,null,i,{"is-dragging":$.dragging}),a=m(r,``,a,{height:`${$.thumbH}px`,transform:`translateY(${$.thumbTop}px)`})}),l(`pointerdown`,t,function(...e){$.onTrackDown?.apply(this,e)}),l(`pointerdown`,r,function(...e){$.onThumbDown?.apply(this,e)}),l(`pointermove`,r,function(...e){$.onThumbMove?.apply(this,e)}),l(`pointerup`,r,function(...e){$.onThumbUp?.apply(this,e)}),u(`pointercancel`,r,function(...e){$.onThumbUp?.apply(this,e)}),n(e,t)};o(c,e=>{$.maxOffset>0&&e(f)}),l(`pointerdown`,r,function(...e){$.onContentDown?.apply(this,e)}),l(`pointermove`,r,function(...e){$.onContentMove?.apply(this,e)}),l(`pointerup`,r,function(...e){$.onContentUp?.apply(this,e)}),u(`pointercancel`,r,function(...e){$.onContentUp?.apply(this,e)}),ne(r,`clientHeight`,e=>O(Y,e)),n(e,t)},w=e=>{var t=a(),r=x(t);S(r,17,()=>se(i(U)),e=>e.group??` `,(e,t)=>{var r=Se(),a=x(r),c=e=>{var r=xe(),a=D(r,!0);k(r),d(()=>s(a,i(t).group)),n(e,r)};o(a,e=>{i(t).group!=null&&e(c)});var l=p(a,2);S(l,17,()=>i(t).options,e=>e.index,(e,t)=>{M(e,()=>i(t),()=>i(t).index)}),n(e,r)}),n(e,t)};o(h,e=>{i(q)?e(g):e(w,-1)}),k(f),ee(f,e=>O(J,e),()=>i(J));var T=p(f,2),E=e=>{var t=a(),r=x(t);S(r,16,()=>W.selectedValues,e=>e,(e,t)=>{var r=Ce();y(r),d(()=>{te(r,`name`,c.name),b(r,t)}),n(e,r)}),n(e,t)};o(T,e=>{c.name&&e(E)}),n(e,r)},$$slots:{default:!0}}),T()}t([`pointerdown`,`pointermove`,`pointerup`]);export{L as t};
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import{J as e,K as t,Z as n,ct as r,dt as i,st as a}from"./disclose-version-CIm4S9xS.js";var o=16,s=280,c=50,l=`http://www.w3.org/2000/svg`;function u(){let e=document.createElementNS(l,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`3`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`);let t=document.createElementNS(l,`path`);return t.setAttribute(`d`,`M6 9l6 6 6-6`),e.appendChild(t),e}var d=`
|
|
2
|
-
:host {
|
|
3
|
-
display: flex;
|
|
4
|
-
user-select: none;
|
|
5
|
-
background: var(--sg-scrollbar-bg, #eef2f8);
|
|
6
|
-
/* The 1px separator is drawn on the INNER edge only (the edge facing
|
|
7
|
-
the grid body) via the orientation rules below. A full inset box
|
|
8
|
-
here doubled up with the grid's own frame border on the outer edge,
|
|
9
|
-
reading as a 2px border - most visible in dense-gridline themes
|
|
10
|
-
like Excel, which should show a single 1px line. */
|
|
11
|
-
/* Start hidden + non-interactive - viewport/content sizes are 0 until
|
|
12
|
-
after the first layout pass, so without this default the scrollbar
|
|
13
|
-
paints visible for one frame and then JS hides it on mount. That
|
|
14
|
-
flicker is what shows up as a "flashing horizontal scrollbar"
|
|
15
|
-
every time a demo first renders. updateGeometry() switches us to
|
|
16
|
-
opacity 1 the moment the grid genuinely has overflow. */
|
|
17
|
-
opacity: 0;
|
|
18
|
-
pointer-events: none;
|
|
19
|
-
transition: opacity 120ms ease;
|
|
20
|
-
}
|
|
21
|
-
:host([orientation="vertical"]) {
|
|
22
|
-
flex-direction: column;
|
|
23
|
-
width: ${o}px;
|
|
24
|
-
/* LTR: vertical scrollbar sits at the right, inner edge is the left. */
|
|
25
|
-
box-shadow: inset 1px 0 0 0 var(--sg-scrollbar-border, rgba(15, 23, 42, 0.04));
|
|
26
|
-
}
|
|
27
|
-
:host([orientation="vertical"]:dir(rtl)) {
|
|
28
|
-
/* RTL flips the scrollbar to the left, so the inner edge is the right. */
|
|
29
|
-
box-shadow: inset -1px 0 0 0 var(--sg-scrollbar-border, rgba(15, 23, 42, 0.04));
|
|
30
|
-
}
|
|
31
|
-
:host([orientation="horizontal"]) {
|
|
32
|
-
flex-direction: row;
|
|
33
|
-
height: ${o}px;
|
|
34
|
-
/* Horizontal scrollbar sits at the bottom, inner edge is the top. */
|
|
35
|
-
box-shadow: inset 0 1px 0 0 var(--sg-scrollbar-border, rgba(15, 23, 42, 0.04));
|
|
36
|
-
}
|
|
37
|
-
.arrow {
|
|
38
|
-
flex: none;
|
|
39
|
-
display: flex;
|
|
40
|
-
align-items: center;
|
|
41
|
-
justify-content: center;
|
|
42
|
-
width: ${o}px;
|
|
43
|
-
height: ${o}px;
|
|
44
|
-
margin: 0;
|
|
45
|
-
padding: 0;
|
|
46
|
-
border: 0;
|
|
47
|
-
border-radius: 3px;
|
|
48
|
-
background: transparent;
|
|
49
|
-
color: var(--sg-scrollbar-arrow, #64748b);
|
|
50
|
-
cursor: pointer;
|
|
51
|
-
transition: background-color 100ms ease, color 100ms ease;
|
|
52
|
-
}
|
|
53
|
-
.arrow:hover {
|
|
54
|
-
background: var(--sg-scrollbar-arrow-hover-bg, #dde4ee);
|
|
55
|
-
color: var(--sg-scrollbar-arrow-hover, #1f2937);
|
|
56
|
-
}
|
|
57
|
-
.arrow:active {
|
|
58
|
-
background: var(--sg-scrollbar-arrow-active-bg, #c7d1df);
|
|
59
|
-
color: var(--sg-scrollbar-arrow-active, #0f172a);
|
|
60
|
-
}
|
|
61
|
-
.arrow:disabled {
|
|
62
|
-
color: var(--sg-scrollbar-arrow-disabled, #cbd5e1);
|
|
63
|
-
cursor: default;
|
|
64
|
-
}
|
|
65
|
-
.arrow:disabled:hover {
|
|
66
|
-
background: transparent;
|
|
67
|
-
}
|
|
68
|
-
.arrow svg {
|
|
69
|
-
width: 10px;
|
|
70
|
-
height: 10px;
|
|
71
|
-
display: block;
|
|
72
|
-
}
|
|
73
|
-
:host([orientation="vertical"]) .arrow-start svg {
|
|
74
|
-
transform: rotate(180deg);
|
|
75
|
-
}
|
|
76
|
-
:host([orientation="horizontal"]) .arrow-start svg {
|
|
77
|
-
transform: rotate(90deg);
|
|
78
|
-
}
|
|
79
|
-
:host([orientation="horizontal"]) .arrow-end svg {
|
|
80
|
-
transform: rotate(-90deg);
|
|
81
|
-
}
|
|
82
|
-
.track {
|
|
83
|
-
position: relative;
|
|
84
|
-
flex: 1 1 0;
|
|
85
|
-
min-width: 0;
|
|
86
|
-
min-height: 0;
|
|
87
|
-
}
|
|
88
|
-
.thumb {
|
|
89
|
-
position: absolute;
|
|
90
|
-
border-radius: var(--sg-scrollbar-thumb-radius, 6px);
|
|
91
|
-
background: var(--sg-scrollbar-thumb, #b1bccd);
|
|
92
|
-
cursor: pointer;
|
|
93
|
-
transition: background-color 100ms ease;
|
|
94
|
-
}
|
|
95
|
-
.thumb:hover {
|
|
96
|
-
background: var(--sg-scrollbar-thumb-hover, #8693a7);
|
|
97
|
-
}
|
|
98
|
-
.thumb:active {
|
|
99
|
-
background: var(--sg-scrollbar-thumb-active, #64748b);
|
|
100
|
-
}
|
|
101
|
-
:host([orientation="vertical"]) .thumb {
|
|
102
|
-
left: 3px;
|
|
103
|
-
right: 3px;
|
|
104
|
-
}
|
|
105
|
-
:host([orientation="horizontal"]) .thumb {
|
|
106
|
-
top: 3px;
|
|
107
|
-
bottom: 3px;
|
|
108
|
-
}
|
|
109
|
-
`,f=typeof HTMLElement<`u`?HTMLElement:class{},p=class extends f{constructor(...e){super(...e),this.dragging=!1,this.dragStart=0,this.valueStart=0,this.holdTimer=null,this.resizeObserver=null,this.resizeFrame=0,this.onArrowStartPointerDown=e=>{e.preventDefault(),this.startHold(-1)},this.onArrowEndPointerDown=e=>{e.preventDefault(),this.startHold(1)},this.stopHold=()=>{this.holdTimer!==null&&(clearTimeout(this.holdTimer),clearInterval(this.holdTimer),this.holdTimer=null)},this.onThumbPointerDown=e=>{e.preventDefault(),this.dragging=!0,this.dragStart=this.orientation===`vertical`?e.clientY:e.clientX,this.valueStart=this.value,document.addEventListener(`pointermove`,this.onPointerMove),document.addEventListener(`pointerup`,this.onPointerUp)},this.onTrackPointerDown=e=>{if(e.target===this.thumb)return;let t=this.track.getBoundingClientRect(),n=this.orientation===`vertical`?e.clientY-t.top:e.clientX-t.left,r=this.orientation===`vertical`?t.height:t.width,i=this.computeThumbSize(r),a=Math.max(r-i,1),o=Math.min(Math.max(n-i/2,0),a);this.emitScroll(o/a*this.maxValue)},this.onPointerMove=e=>{if(!this.dragging)return;let t=(this.orientation===`vertical`?e.clientY:e.clientX)-this.dragStart,n=this.track.getBoundingClientRect(),r=this.orientation===`vertical`?n.height:n.width,i=this.computeThumbSize(r),a=Math.max(r-i,1);this.emitScroll(this.valueStart+t/a*this.maxValue)},this.onPointerUp=()=>{this.dragging=!1,document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp)}}static get observedAttributes(){return[`orientation`,`viewport-size`,`content-size`,`value`,`step`]}connectedCallback(){if(this.shadowRoot)return;let e=this.attachShadow({mode:`open`}),t=document.createElement(`style`);t.textContent=d,this.startArrow=this.createArrow(`start`),this.endArrow=this.createArrow(`end`),this.track=document.createElement(`div`),this.track.className=`track`,this.thumb=document.createElement(`div`),this.thumb.className=`thumb`,this.track.appendChild(this.thumb),e.append(t,this.startArrow,this.track,this.endArrow),this.thumb.addEventListener(`pointerdown`,this.onThumbPointerDown),this.track.addEventListener(`pointerdown`,this.onTrackPointerDown),this.startArrow.addEventListener(`pointerdown`,this.onArrowStartPointerDown),this.endArrow.addEventListener(`pointerdown`,this.onArrowEndPointerDown);for(let e of[this.startArrow,this.endArrow])e.addEventListener(`pointerup`,this.stopHold),e.addEventListener(`pointerleave`,this.stopHold),e.addEventListener(`pointercancel`,this.stopHold);this.resizeObserver=new ResizeObserver(()=>{this.resizeFrame||=requestAnimationFrame(()=>{this.resizeFrame=0,this.render()})}),this.resizeObserver.observe(this),this.render()}disconnectedCallback(){this.stopHold(),this.resizeFrame&&cancelAnimationFrame(this.resizeFrame),this.resizeFrame=0,this.resizeObserver?.disconnect(),this.resizeObserver=null,document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp)}attributeChangedCallback(){this.render()}get orientation(){return this.getAttribute(`orientation`)===`horizontal`?`horizontal`:`vertical`}get viewportSize(){return Number(this.getAttribute(`viewport-size`)||`0`)}get contentSize(){return Number(this.getAttribute(`content-size`)||`0`)}get value(){return Number(this.getAttribute(`value`)||`0`)}get step(){let e=Number(this.getAttribute(`step`)||`40`);return e>0?e:40}get maxValue(){return Math.max(this.contentSize-this.viewportSize,0)}getTrackLength(){let e=this.track.getBoundingClientRect(),t=this.orientation===`vertical`?e.height:e.width;return t>0?t:Math.max(this.viewportSize-32,1)}computeThumbSize(e){if(this.contentSize<=0||this.viewportSize<=0||e<=0)return 0;let t=Math.min(this.viewportSize/this.contentSize,1);return Math.max(20,t*e)}createArrow(e){let t=document.createElement(`button`);return t.type=`button`,t.className=`arrow arrow-${e}`,t.setAttribute(`aria-label`,e===`start`?`Scroll back`:`Scroll forward`),t.appendChild(u()),t}startHold(e){this.stopHold();let t=()=>this.emitScroll(this.value+e*this.step);t(),this.holdTimer=setTimeout(()=>{this.holdTimer=setInterval(t,c)},s)}emitScroll(e){let t=Math.min(Math.max(e,0),this.maxValue);this.dispatchEvent(new CustomEvent(`scroll-change`,{detail:{value:t},bubbles:!0,composed:!0}))}render(){if(!this.shadowRoot)return;let e=this.viewportSize,t=this.contentSize<=e||e<=0;this.style.opacity=t?`0`:`1`,this.style.pointerEvents=t?`none`:`auto`;let n=this.getTrackLength(),r=this.computeThumbSize(n),i=this.maxValue,a=(i>0?this.value/i:0)*Math.max(n-r,0);this.orientation===`vertical`?(this.thumb.style.height=`${r}px`,this.thumb.style.transform=`translateY(${a}px)`):(this.thumb.style.width=`${r}px`,this.thumb.style.transform=`translateX(${a}px)`),this.startArrow.disabled=t||this.value<=0,this.endArrow.disabled=t||this.value>=i}};typeof window<`u`&&!customElements.get(`sv-grid-scrollbar`)&&customElements.define(`sv-grid-scrollbar`,p);function m(e){let t=``;return e.color&&(t+=`color:${e.color};`),e.fontWeight!=null&&(t+=`font-weight:${e.fontWeight};`),t}function h(e){return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}function g(e,t){return`${e}:${t}`}function _(e){if(!e)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.filter(Boolean).join(` `);if(typeof e==`object`){let t=[];for(let[n,r]of Object.entries(e))r&&t.push(n);return t.join(` `)}return``}function v(e){if(e==null||e===``)return``;if(typeof e==`string`&&/^\d{4}-\d{2}-\d{2}$/.test(e))return e;let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?``:t.toISOString().slice(0,10)}function y(e){if(e==null||e===``)return``;if(typeof e==`string`&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/.test(e))return e;let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?``:t.toISOString().slice(0,16)}function b(e){return String(e).replace(/-native$/,``)}function x(e){if(e instanceof Date)return e;if(typeof e==`string`){let t=e.match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?/);if(t){let e=new Date;return e.setHours(Math.min(23,+t[1]),Math.min(59,+t[2]),t[3]?+t[3]:0,0),e}}return null}function S(e){return e?`${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}`:null}function C(e,t){let n=b(e);return n===`date`?v(t):n===`datetime`?y(t):String(t??``)}function w(e){let t=b(e);return t===`number`?`number`:t===`date`?`date`:t===`datetime`?`datetime-local`:t===`time`?`time`:t===`password`?`password`:t===`color`?`color`:`text`}function T(e){return e==null||e===``?[]:Array.isArray(e)?e.filter(e=>e!=null&&e!==``):[e]}function E(e,t){let n=e.find(e=>e.value===t||String(e.value)===String(t));return n?n.label:String(t??``)}function D(e,t){return e.find(e=>e.value===t||String(e.value)===String(t))?.color}function O(e){return e?`background: color-mix(in srgb, ${e} 22%, transparent);border-color: color-mix(in srgb, ${e} 45%, transparent);color: color-mix(in srgb, ${e} 80%, var(--sg-fg, #0f172a));`:``}function k(e){let t=b(e);return t===`number`?`sv-grid-cell-editor sv-grid-cell-editor-number`:t===`date`?`sv-grid-cell-editor sv-grid-cell-editor-date`:t===`datetime`?`sv-grid-cell-editor sv-grid-cell-editor-datetime`:t===`color`?`sv-grid-cell-editor sv-grid-cell-editor-color`:`sv-grid-cell-editor`}function A(e){if(e==null||e===``)return null;let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function ee(e,t){return Math.max(8,Math.min(e,window.innerWidth-t-8))}function te(e){return typeof CSS<`u`&&CSS.escape?CSS.escape(e):e.replace(/"/g,`\\"`)}function j(e,t){if(e==null||e===``)return NaN;if(t){let t=(e instanceof Date?e:new Date(String(e))).getTime();return Number.isFinite(t)?t:NaN}let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)?n:NaN}function M(e){let t=Math.abs(e),n=t>=1e3?0:t>=100?1:t>=1?2:4;return e.toLocaleString(void 0,{maximumFractionDigits:n})}function N(e){return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}var P=/[̀-ͯ]/g;function F(e,t){if(!e)return``;let n=e.normalize(`NFD`).replace(P,``);return t?n.toLocaleLowerCase(t):n.toLowerCase()}function I(e){let{tokens:t,trailing:n}=R(e);return n&&t.push(n),t}function ne(e){return e.map(e=>e.trim()).filter(e=>e.length>0).map(e=>/["\n,]/.test(e)?`"${e.replace(/"/g,`""`)}"`:e).join(`, `)}function L(e){return R(e).trailing}function R(e){let t=String(e??``),n=[],r=``,i=!1,a=!1,o=!1,s=()=>{let e=a?r:r.trim();return r=``,a=!1,o=!1,e};for(let e=0;e<t.length;e+=1){let c=t[e];if(i){if(c!==`"`){r+=c;continue}if(t[e+1]===`"`){r+=`"`,e+=1;continue}i=!1,o=!0;continue}if(c===`,`||c===`
|
|
110
|
-
`){let e=s();e.length&&n.push(e);continue}if(c===`"`&&!o&&!r.trim()){i=!0,a=!0,r=``;continue}r+=c}return{tokens:n,trailing:s()}}function z(e,t){let n=t?.locale,r=e=>F(String(e??``),n),i=r(e.value);switch(e.operator){case`contains`:return e=>r(e).includes(i);case`notContains`:return i===``?()=>!0:e=>!r(e).includes(i);case`equals`:return e=>r(e)===i;case`notEquals`:return i===``?()=>!0:e=>r(e)!==i;case`startsWith`:return e=>r(e).startsWith(i);case`endsWith`:return e=>r(e).endsWith(i);case`regex`:{let t=String(e.value??``);if(!t)return()=>!0;let n;try{n=new RegExp(t,`i`)}catch{return()=>!1}return e=>n.test(String(e??``))}case`in`:case`notIn`:{let t=I(e.value);if(t.length===0)return()=>!0;let i=new Set(t.map(e=>F(e,n)));return e.operator===`in`?e=>i.has(r(e)):e=>!i.has(r(e))}case`greaterThan`:{let t=Number(e.value),n=Number.isFinite(t),r=String(e.value??``);return e=>{let i=Number(e);return n&&Number.isFinite(i)?i>t:String(e??``)>r}}case`lessThan`:{let t=Number(e.value),n=Number.isFinite(t),r=String(e.value??``);return e=>{let i=Number(e);return n&&Number.isFinite(i)?i<t:String(e??``)<r}}case`between`:{let t=e.value==null?0:Number(e.value),n=e.valueTo==null?0:Number(e.valueTo),r=Number.isFinite(t)&&Number.isFinite(n),i=String(e.value??``),a=String(e.valueTo??``);return e=>{let o=Number(e??0);if(r&&Number.isFinite(o))return o>=t&&o<=n;let s=String(e??``);return s>=i&&s<=a}}case`isBlank`:return e=>String(e??``).trim().length===0;case`isNotBlank`:return e=>String(e??``).trim().length>0}}function B(e,t,n){return z(t,n)(e)}function V(e){return e?e.map(e=>{if(typeof e==`object`&&e){let t=e,n=t.value??t.label??``;return{...t,value:n,label:t.label??String(n)}}return{value:e,label:String(e)}}):[]}function H(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>e.label.toLowerCase().includes(n)):[...e]}function U(e){let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.group??null,a=n.get(i);a||(a={group:i,options:[]},n.set(i,a),t.push(a)),a.options.push({...e,index:r})}),t}function W(e,t){let n=Math.max(1,t.groupHeaderHeight??28),r=t.rowHeight,i=e=>Math.max(1,typeof r==`function`?r(e,e.index):r),a=[],o=Array(e.length),s=!1;for(let t of U(e)){t.group!=null&&(s=!0,a.push({type:`group`,label:t.group,size:n}));for(let e of t.options)o[e.index]=a.length,a.push({type:`option`,opt:e,size:i(e)})}return{entries:a,hasGroups:s,sizeAt:e=>a[e]?.size??0,optionFlatIndex:o}}function G(e,t,n){let r=t.trim().toLowerCase();if(!r||!e.length)return-1;let i=e.length;for(let t=1;t<=i;t++){let a=(n+t)%i,o=e[a];if(o&&!o.disabled&&o.label.toLowerCase().startsWith(r))return a}return-1}function K(e=600){let t=``,n;return{get value(){return t},push(r){return t+=r,n&&clearTimeout(n),n=setTimeout(()=>{t=``},e),t},clear(){t=``,n&&clearTimeout(n)}}}function q(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key!==` `}function J(e,t,n){return Math.min(Math.max(e,t),n)}function Y(e,t){return e.count===t.count&&e.estimateSize===t.estimateSize&&(e.overscan??6)===(t.overscan??6)&&e.viewportHeight===t.viewportHeight&&(e.scrollOffset??0)===(t.scrollOffset??0)}function X(e,t){if(e.totalSize!==t.totalSize||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex||e.viewportHeight!==t.viewportHeight||e.items.length!==t.items.length)return!1;for(let n=0;n<e.items.length;n+=1){let r=e.items[n],i=t.items[n];if(r.index!==i.index||r.start!==i.start||r.size!==i.size)return!1}return!0}function re(e,t,n){let r=[];for(let i=e;i<=t;i+=1){let t=i*n;r.push({index:i,start:t,size:n,end:t+n,key:`virtual_slot_${i-e}`})}return r}function Z(e,t,n){let r=[];for(let i=e;i<=t;i+=1){let t=n[i]??0,a=n[i+1]??t;r.push({index:i,start:t,size:a-t,end:a,key:`virtual_slot_${i-e}`})}return r}function Q(e,t){let n=Math.max(e.count,0),r=Math.max(e.overscan??6,0),i=Math.max(e.viewportHeight,0);if(typeof e.estimateSize==`function`&&t){let a=t[n]??0,o=Math.max(a-i,0),s=J(e.scrollOffset??0,0,o),c=0,l=n;for(;c<l;){let e=c+l>>>1;(t[e+1]??0)<=s?c=e+1:l=e}let u=c,d=s+i;for(c=u,l=n;c<l;){let e=c+l>>>1;(t[e]??0)<d?c=e+1:l=e}let f=Math.max(c-1,u),p=n===0?0:J(u-r,0,n-1),m=n===0?-1:J(f+r,0,n-1);return{items:m>=p?Z(p,m,t):[],totalSize:a,startIndex:p,endIndex:m,scrollOffset:s,viewportHeight:i}}let a=Math.max(typeof e.estimateSize==`number`?e.estimateSize:1,1),o=n*a,s=Math.max(o-i,0),c=J(e.scrollOffset??0,0,s),l=Math.floor(c/a),u=Math.ceil(i/a),d=Math.min(l+u,Math.max(n-1,0)),f=n===0?0:J(l-r,0,n-1),p=n===0?-1:J(d+r,0,n-1);return{items:p>=f?re(f,p,a):[],totalSize:o,startIndex:f,endIndex:p,scrollOffset:c,viewportHeight:i}}function $(e){let t=e,n=null;function r(){if(typeof t.estimateSize!=`function`)return null;let e=Math.max(t.count,0);if(n&&n.fn===t.estimateSize&&n.count===e)return n.offsets;let r=t.estimateSize,i=Array(e+1);i[0]=0;for(let t=0;t<e;t+=1)i[t+1]=i[t]+Math.max(r(t),1);return n={fn:r,count:e,offsets:i},i}let i=Q(t,r()),a=new Set;function o(){a.forEach(e=>e())}function s(){let e=Q(t,r());X(i,e)||(i=e,o())}return{setOptions(e){let n={...t,...e};Y(t,n)||(t=n,s())},setScrollOffset(e){(t.scrollOffset??0)!==e&&(t={...t,scrollOffset:e},s())},setViewportHeight(e){t.viewportHeight!==e&&(t={...t,viewportHeight:e},s())},scrollToIndex(e){let n=J(e,0,Math.max(t.count-1,0)),a=i.totalSize,o;if(typeof t.estimateSize==`function`){let e=r();if(e)o=e[n]??0;else{let e=0,r=t.estimateSize;for(let t=0;t<n;t+=1)e+=Math.max(r(t),1);o=e}}else o=n*Math.max(t.estimateSize,1);let c=Math.max(a-t.viewportHeight,0),l=J(o,0,c);(t.scrollOffset??0)!==l&&(t={...t,scrollOffset:l},s())},getVirtualItems(){return i.items},getTotalSize(){return i.totalSize},getOffsetForIndex(e){if(e<=0)return 0;let n=Math.max(t.count,0),i=Math.min(e,n);if(typeof t.estimateSize==`function`){let e=r();if(e)return e[i]??0;let n=0,a=t.estimateSize;for(let e=0;e<i;e+=1)n+=Math.max(a(e),1);return n}return i*Math.max(t.estimateSize,1)},getSizeForIndex(e){return e<0||e>=t.count?0:typeof t.estimateSize==`function`?Math.max(t.estimateSize(e),1):Math.max(t.estimateSize,1)},getState(){return i},subscribe(e){return a.add(e),()=>a.delete(e)}}}function ie(e){let n=$(e),i=r(0);return n.subscribe(()=>{a(i,t(i)+1)}),{get version(){return t(i)},setOptions:n.setOptions,setScrollOffset:n.setScrollOffset,setViewportHeight:n.setViewportHeight,scrollToIndex:n.scrollToIndex,getVirtualItems:n.getVirtualItems,getTotalSize:n.getTotalSize,getOffsetForIndex:n.getOffsetForIndex,getSizeForIndex:n.getSizeForIndex,getState:n.getState}}function ae(o){let s=r(0),c=i(()=>Math.max(0,o.totalSize()-o.viewport()));n(()=>{let n=t(s);e(()=>o.virtualizer.setScrollOffset(n))}),n(()=>{let n=t(c);e(()=>t(s))>n&&a(s,n,!0)});function l(e){a(s,Math.max(0,Math.min(t(c),e)),!0)}function u(e){l(t(s)+e)}function d(e){if(t(c)<=0)return;let n=e.deltaMode===1?e.deltaY*o.lineStep():e.deltaMode===2?e.deltaY*o.viewport():e.deltaY,r=t(s);u(n),t(s)!==r&&e.preventDefault()}let f=i(()=>t(c)>0&&o.totalSize()>0?Math.max(24,Math.min(o.viewport(),o.viewport()/o.totalSize()*o.viewport())):0),p=i(()=>Math.max(0,o.viewport()-t(f))),m=i(()=>t(c)>0?t(s)/t(c)*t(p):0),h=r(!1),g=0,_=0;function v(e){e.stopPropagation(),e.preventDefault(),a(h,!0),g=e.clientY,_=t(s),e.currentTarget.setPointerCapture(e.pointerId)}function y(e){if(!t(h))return;let n=e.clientY-g;l(_+(t(p)>0?n/t(p)*t(c):0))}function b(e){a(h,!1),O(e)}function x(e){let n=e.currentTarget.getBoundingClientRect();u(e.clientY-n.top<t(m)?-o.viewport():o.viewport())}let S=!1,C=0,w=0;function T(e){e.pointerType===`touch`&&(S=!0,C=e.clientY,w=t(s),e.currentTarget.setPointerCapture(e.pointerId))}function E(e){S&&l(w-(e.clientY-C))}function D(e){S&&(S=!1,O(e))}function O(e){try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}}function k(e,n){e<t(s)?l(e):e+n>t(s)+o.viewport()&&l(e+n-o.viewport())}function A(e){k(o.virtualizer.getOffsetForIndex(e),o.virtualizer.getSizeForIndex(e))}return{get scrollOffset(){return t(s)},get maxOffset(){return t(c)},get thumbH(){return t(f)},get thumbTop(){return t(m)},get dragging(){return t(h)},scrollTo:l,scrollByPx:u,ensureVisible:k,ensureIndexVisible:A,onWheel:d,onThumbDown:v,onThumbMove:y,onThumbUp:b,onTrackDown:x,onContentDown:T,onContentMove:E,onContentUp:D}}export{D as A,h as C,C as D,g as E,T as F,j as M,_ as N,k as O,x as P,S,M as T,A as _,H as a,O as b,q as c,B as d,z as f,L as g,I as h,K as i,E as j,w as k,G as l,F as m,ie as n,W as o,ne as p,$ as r,U as s,ae as t,V as u,m as v,N as w,te as x,ee as y};
|