@ishibashi0112/spreadsheet-grid-core 0.39.0
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/LICENSE +21 -0
- package/dist/controllers/autoHeightMeasurer.cjs +1 -0
- package/dist/controllers/autoHeightMeasurer.d.ts +30 -0
- package/dist/controllers/autoHeightMeasurer.js +74 -0
- package/dist/controllers/clipboardController.cjs +2 -0
- package/dist/controllers/clipboardController.d.ts +31 -0
- package/dist/controllers/clipboardController.js +88 -0
- package/dist/controllers/columnAutosizeRunner.cjs +1 -0
- package/dist/controllers/columnAutosizeRunner.d.ts +31 -0
- package/dist/controllers/columnAutosizeRunner.js +61 -0
- package/dist/controllers/columnHeaderDragController.cjs +1 -0
- package/dist/controllers/columnHeaderDragController.d.ts +44 -0
- package/dist/controllers/columnHeaderDragController.js +256 -0
- package/dist/controllers/columnMenuController.cjs +1 -0
- package/dist/controllers/columnMenuController.d.ts +49 -0
- package/dist/controllers/columnMenuController.js +110 -0
- package/dist/controllers/contextMenuController.cjs +1 -0
- package/dist/controllers/contextMenuController.d.ts +30 -0
- package/dist/controllers/contextMenuController.js +65 -0
- package/dist/controllers/debouncedValueStore.cjs +1 -0
- package/dist/controllers/debouncedValueStore.d.ts +11 -0
- package/dist/controllers/debouncedValueStore.js +22 -0
- package/dist/controllers/editController.cjs +1 -0
- package/dist/controllers/editController.d.ts +27 -0
- package/dist/controllers/editController.js +76 -0
- package/dist/controllers/filterPopoverController.cjs +1 -0
- package/dist/controllers/filterPopoverController.d.ts +53 -0
- package/dist/controllers/filterPopoverController.js +146 -0
- package/dist/controllers/globalFilteredOrder.cjs +1 -0
- package/dist/controllers/globalFilteredOrder.d.ts +38 -0
- package/dist/controllers/globalFilteredOrder.js +78 -0
- package/dist/controllers/historyController.cjs +1 -0
- package/dist/controllers/historyController.d.ts +28 -0
- package/dist/controllers/historyController.js +52 -0
- package/dist/controllers/keyboardController.cjs +1 -0
- package/dist/controllers/keyboardController.d.ts +36 -0
- package/dist/controllers/keyboardController.js +111 -0
- package/dist/controllers/panelHeaderDragController.cjs +1 -0
- package/dist/controllers/panelHeaderDragController.d.ts +21 -0
- package/dist/controllers/panelHeaderDragController.js +32 -0
- package/dist/controllers/pointerInteractionsController.cjs +1 -0
- package/dist/controllers/pointerInteractionsController.d.ts +74 -0
- package/dist/controllers/pointerInteractionsController.js +262 -0
- package/dist/controllers/popoverSupport.cjs +1 -0
- package/dist/controllers/popoverSupport.d.ts +18 -0
- package/dist/controllers/popoverSupport.js +25 -0
- package/dist/controllers/rowDragController.cjs +1 -0
- package/dist/controllers/rowDragController.d.ts +40 -0
- package/dist/controllers/rowDragController.js +192 -0
- package/dist/controllers/scrollSyncController.cjs +1 -0
- package/dist/controllers/scrollSyncController.d.ts +17 -0
- package/dist/controllers/scrollSyncController.js +51 -0
- package/dist/controllers/selectOptionsCollector.cjs +1 -0
- package/dist/controllers/selectOptionsCollector.d.ts +31 -0
- package/dist/controllers/selectOptionsCollector.js +88 -0
- package/dist/controllers/serverSideRowModel.cjs +1 -0
- package/dist/controllers/serverSideRowModel.d.ts +36 -0
- package/dist/controllers/serverSideRowModel.js +153 -0
- package/dist/controllers/systemColorSchemeStore.cjs +1 -0
- package/dist/controllers/systemColorSchemeStore.d.ts +5 -0
- package/dist/controllers/systemColorSchemeStore.js +18 -0
- package/dist/controllers/toolPanelController.cjs +1 -0
- package/dist/controllers/toolPanelController.d.ts +36 -0
- package/dist/controllers/toolPanelController.js +112 -0
- package/dist/controllers/tooltipController.cjs +1 -0
- package/dist/controllers/tooltipController.d.ts +6 -0
- package/dist/controllers/tooltipController.js +75 -0
- package/dist/controllers/viewportSyncController.cjs +1 -0
- package/dist/controllers/viewportSyncController.d.ts +30 -0
- package/dist/controllers/viewportSyncController.js +40 -0
- package/dist/engine/columnCommands.cjs +1 -0
- package/dist/engine/columnCommands.d.ts +56 -0
- package/dist/engine/columnCommands.js +199 -0
- package/dist/engine/columnLayout.cjs +1 -0
- package/dist/engine/columnLayout.d.ts +43 -0
- package/dist/engine/columnLayout.js +91 -0
- package/dist/engine/createGridEngine.cjs +1 -0
- package/dist/engine/createGridEngine.d.ts +46 -0
- package/dist/engine/createGridEngine.js +52 -0
- package/dist/engine/filterPopoverCommands.cjs +1 -0
- package/dist/engine/filterPopoverCommands.d.ts +56 -0
- package/dist/engine/filterPopoverCommands.js +303 -0
- package/dist/engine/gridApi.cjs +1 -0
- package/dist/engine/gridApi.d.ts +61 -0
- package/dist/engine/gridApi.js +389 -0
- package/dist/engine/memo.cjs +1 -0
- package/dist/engine/memo.d.ts +2 -0
- package/dist/engine/memo.js +18 -0
- package/dist/engine/notifiers.cjs +1 -0
- package/dist/engine/notifiers.d.ts +35 -0
- package/dist/engine/notifiers.js +34 -0
- package/dist/engine/rowPipeline.cjs +1 -0
- package/dist/engine/rowPipeline.d.ts +50 -0
- package/dist/engine/rowPipeline.js +84 -0
- package/dist/engine/rowSelectionCommands.cjs +1 -0
- package/dist/engine/rowSelectionCommands.d.ts +21 -0
- package/dist/engine/rowSelectionCommands.js +57 -0
- package/dist/engine/verticalLayout.cjs +1 -0
- package/dist/engine/verticalLayout.d.ts +52 -0
- package/dist/engine/verticalLayout.js +60 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +5 -0
- package/dist/logic/aggregation.cjs +1 -0
- package/dist/logic/aggregation.d.ts +13 -0
- package/dist/logic/aggregation.js +28 -0
- package/dist/logic/autoScrollGeometry.cjs +1 -0
- package/dist/logic/autoScrollGeometry.d.ts +27 -0
- package/dist/logic/autoScrollGeometry.js +19 -0
- package/dist/logic/autoSizeOnData.cjs +1 -0
- package/dist/logic/autoSizeOnData.d.ts +10 -0
- package/dist/logic/autoSizeOnData.js +19 -0
- package/dist/logic/cellOverflowTooltip.cjs +1 -0
- package/dist/logic/cellOverflowTooltip.d.ts +5 -0
- package/dist/logic/cellOverflowTooltip.js +4 -0
- package/dist/logic/checkboxEditor.cjs +1 -0
- package/dist/logic/checkboxEditor.d.ts +12 -0
- package/dist/logic/checkboxEditor.js +17 -0
- package/dist/logic/chunkedLoop.cjs +1 -0
- package/dist/logic/chunkedLoop.d.ts +8 -0
- package/dist/logic/chunkedLoop.js +18 -0
- package/dist/logic/clearCells.cjs +1 -0
- package/dist/logic/clearCells.d.ts +31 -0
- package/dist/logic/clearCells.js +91 -0
- package/dist/logic/columnAutosize.cjs +1 -0
- package/dist/logic/columnAutosize.d.ts +18 -0
- package/dist/logic/columnAutosize.js +150 -0
- package/dist/logic/columnFlex.cjs +1 -0
- package/dist/logic/columnFlex.d.ts +4 -0
- package/dist/logic/columnFlex.js +60 -0
- package/dist/logic/columnReset.cjs +1 -0
- package/dist/logic/columnReset.d.ts +7 -0
- package/dist/logic/columnReset.js +25 -0
- package/dist/logic/contextMenuTarget.cjs +1 -0
- package/dist/logic/contextMenuTarget.d.ts +4 -0
- package/dist/logic/contextMenuTarget.js +18 -0
- package/dist/logic/cx.cjs +1 -0
- package/dist/logic/cx.d.ts +1 -0
- package/dist/logic/cx.js +6 -0
- package/dist/logic/dateFilterCondition.cjs +1 -0
- package/dist/logic/dateFilterCondition.d.ts +26 -0
- package/dist/logic/dateFilterCondition.js +110 -0
- package/dist/logic/dateFilterPresets.cjs +1 -0
- package/dist/logic/dateFilterPresets.d.ts +13 -0
- package/dist/logic/dateFilterPresets.js +30 -0
- package/dist/logic/dateFilterTree.cjs +1 -0
- package/dist/logic/dateFilterTree.d.ts +17 -0
- package/dist/logic/dateFilterTree.js +75 -0
- package/dist/logic/datePickerCalendar.cjs +1 -0
- package/dist/logic/datePickerCalendar.d.ts +12 -0
- package/dist/logic/datePickerCalendar.js +41 -0
- package/dist/logic/detailRow.cjs +1 -0
- package/dist/logic/detailRow.d.ts +38 -0
- package/dist/logic/detailRow.js +78 -0
- package/dist/logic/domGuards.cjs +1 -0
- package/dist/logic/domGuards.d.ts +7 -0
- package/dist/logic/domGuards.js +4 -0
- package/dist/logic/editorValues.cjs +1 -0
- package/dist/logic/editorValues.d.ts +5 -0
- package/dist/logic/editorValues.js +32 -0
- package/dist/logic/exportCsv.cjs +3 -0
- package/dist/logic/exportCsv.d.ts +12 -0
- package/dist/logic/exportCsv.js +19 -0
- package/dist/logic/exportData.cjs +1 -0
- package/dist/logic/exportData.d.ts +9 -0
- package/dist/logic/exportData.js +24 -0
- package/dist/logic/exportScope.cjs +1 -0
- package/dist/logic/exportScope.d.ts +3 -0
- package/dist/logic/exportScope.js +4 -0
- package/dist/logic/filterPopoverLayout.cjs +1 -0
- package/dist/logic/filterPopoverLayout.d.ts +17 -0
- package/dist/logic/filterPopoverLayout.js +13 -0
- package/dist/logic/filterPopoverOutsideClick.cjs +1 -0
- package/dist/logic/filterPopoverOutsideClick.d.ts +2 -0
- package/dist/logic/filterPopoverOutsideClick.js +4 -0
- package/dist/logic/filterSummary.cjs +1 -0
- package/dist/logic/filterSummary.d.ts +3 -0
- package/dist/logic/filterSummary.js +22 -0
- package/dist/logic/filtering.cjs +1 -0
- package/dist/logic/filtering.d.ts +33 -0
- package/dist/logic/filtering.js +313 -0
- package/dist/logic/geometry.cjs +1 -0
- package/dist/logic/geometry.d.ts +72 -0
- package/dist/logic/geometry.js +161 -0
- package/dist/logic/gridState.cjs +1 -0
- package/dist/logic/gridState.d.ts +13 -0
- package/dist/logic/gridState.js +165 -0
- package/dist/logic/grouping.cjs +1 -0
- package/dist/logic/grouping.d.ts +34 -0
- package/dist/logic/grouping.js +93 -0
- package/dist/logic/history.cjs +1 -0
- package/dist/logic/history.d.ts +16 -0
- package/dist/logic/history.js +34 -0
- package/dist/logic/inferFilterType.cjs +1 -0
- package/dist/logic/inferFilterType.d.ts +19 -0
- package/dist/logic/inferFilterType.js +54 -0
- package/dist/logic/numberFilterCondition.cjs +1 -0
- package/dist/logic/numberFilterCondition.d.ts +21 -0
- package/dist/logic/numberFilterCondition.js +130 -0
- package/dist/logic/panelDragGeometry.cjs +1 -0
- package/dist/logic/panelDragGeometry.d.ts +13 -0
- package/dist/logic/panelDragGeometry.js +10 -0
- package/dist/logic/rowHeightStore.cjs +1 -0
- package/dist/logic/rowHeightStore.d.ts +13 -0
- package/dist/logic/rowHeightStore.js +41 -0
- package/dist/logic/rowReorder.cjs +1 -0
- package/dist/logic/rowReorder.d.ts +18 -0
- package/dist/logic/rowReorder.js +22 -0
- package/dist/logic/rowSelection.cjs +1 -0
- package/dist/logic/rowSelection.d.ts +16 -0
- package/dist/logic/rowSelection.js +49 -0
- package/dist/logic/scrollHint.cjs +1 -0
- package/dist/logic/scrollHint.d.ts +41 -0
- package/dist/logic/scrollHint.js +66 -0
- package/dist/logic/scrollTargets.cjs +1 -0
- package/dist/logic/scrollTargets.d.ts +22 -0
- package/dist/logic/scrollTargets.js +24 -0
- package/dist/logic/selectEditorState.cjs +1 -0
- package/dist/logic/selectEditorState.d.ts +28 -0
- package/dist/logic/selectEditorState.js +31 -0
- package/dist/logic/selectOptions.cjs +1 -0
- package/dist/logic/selectOptions.d.ts +9 -0
- package/dist/logic/selectOptions.js +23 -0
- package/dist/logic/serverSideBlocks.cjs +1 -0
- package/dist/logic/serverSideBlocks.d.ts +2 -0
- package/dist/logic/serverSideBlocks.js +14 -0
- package/dist/logic/serverSideCache.cjs +1 -0
- package/dist/logic/serverSideCache.d.ts +14 -0
- package/dist/logic/serverSideCache.js +42 -0
- package/dist/logic/serverSideEdits.cjs +1 -0
- package/dist/logic/serverSideEdits.d.ts +16 -0
- package/dist/logic/serverSideEdits.js +47 -0
- package/dist/logic/serverSideQuery.cjs +1 -0
- package/dist/logic/serverSideQuery.d.ts +7 -0
- package/dist/logic/serverSideQuery.js +21 -0
- package/dist/logic/setFilterSearch.cjs +1 -0
- package/dist/logic/setFilterSearch.d.ts +14 -0
- package/dist/logic/setFilterSearch.js +14 -0
- package/dist/logic/setFilterSelection.cjs +1 -0
- package/dist/logic/setFilterSelection.d.ts +5 -0
- package/dist/logic/setFilterSelection.js +4 -0
- package/dist/logic/slotDom.cjs +1 -0
- package/dist/logic/slotDom.d.ts +8 -0
- package/dist/logic/slotDom.js +22 -0
- package/dist/logic/slotProps.cjs +1 -0
- package/dist/logic/slotProps.d.ts +18 -0
- package/dist/logic/slotProps.js +63 -0
- package/dist/logic/sorting.cjs +1 -0
- package/dist/logic/sorting.d.ts +11 -0
- package/dist/logic/sorting.js +96 -0
- package/dist/logic/textFilterCondition.cjs +1 -0
- package/dist/logic/textFilterCondition.d.ts +18 -0
- package/dist/logic/textFilterCondition.js +55 -0
- package/dist/logic/theme.cjs +1 -0
- package/dist/logic/theme.d.ts +3 -0
- package/dist/logic/theme.js +4 -0
- package/dist/logic/tooltipGeometry.cjs +1 -0
- package/dist/logic/tooltipGeometry.d.ts +19 -0
- package/dist/logic/tooltipGeometry.js +16 -0
- package/dist/logic/validation.cjs +1 -0
- package/dist/logic/validation.d.ts +14 -0
- package/dist/logic/validation.js +47 -0
- package/dist/logic/valueFormatters.cjs +1 -0
- package/dist/logic/valueFormatters.d.ts +9 -0
- package/dist/logic/valueFormatters.js +17 -0
- package/dist/logic/valueStore.cjs +1 -0
- package/dist/logic/valueStore.d.ts +6 -0
- package/dist/logic/valueStore.js +18 -0
- package/dist/logic/verticalGeometry.cjs +1 -0
- package/dist/logic/verticalGeometry.d.ts +58 -0
- package/dist/logic/verticalGeometry.js +90 -0
- package/dist/model/gridActions.cjs +1 -0
- package/dist/model/gridActions.d.ts +125 -0
- package/dist/model/gridActions.js +114 -0
- package/dist/model/gridReducer.cjs +1 -0
- package/dist/model/gridReducer.d.ts +4 -0
- package/dist/model/gridReducer.js +247 -0
- package/dist/model/gridSelectors.cjs +1 -0
- package/dist/model/gridSelectors.d.ts +40 -0
- package/dist/model/gridSelectors.js +68 -0
- package/dist/model/gridStore.cjs +1 -0
- package/dist/model/gridStore.d.ts +24 -0
- package/dist/model/gridStore.js +38 -0
- package/dist/model/gridTypes.core.cjs +1 -0
- package/dist/model/gridTypes.core.d.ts +797 -0
- package/dist/model/gridTypes.core.js +0 -0
- package/dist/model/gridTypes.unbound.cjs +1 -0
- package/dist/model/gridTypes.unbound.d.ts +31 -0
- package/dist/model/gridTypes.unbound.js +0 -0
- package/dist/testing/index.cjs +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.js +51 -0
- package/dist/utils/clipboard.cjs +7 -0
- package/dist/utils/clipboard.d.ts +29 -0
- package/dist/utils/clipboard.js +110 -0
- package/dist/utils/excelColumnName.cjs +1 -0
- package/dist/utils/excelColumnName.d.ts +1 -0
- package/dist/utils/excelColumnName.js +9 -0
- package/dist/utils/permissions.cjs +1 -0
- package/dist/utils/permissions.d.ts +4 -0
- package/dist/utils/permissions.js +7 -0
- package/dist/utils/scheduler.cjs +1 -0
- package/dist/utils/scheduler.d.ts +1 -0
- package/dist/utils/scheduler.js +13 -0
- package/package.json +58 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Yuki Sakakibara
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/rowHeightStore.cjs"),t=require("../logic/detailRow.cjs"),n=require("../logic/valueStore.cjs");var r=(e,t)=>e.autoHeightActive===t.autoHeightActive&&e.rowHeightStore===t.rowHeightStore&&e.rowMetrics===t.rowMetrics&&e.rowModel===t.rowModel&&e.virtualRows===t.virtualRows&&e.viewportHeight===t.viewportHeight&&e.version===t.version&&e.nonce===t.nonce,i=()=>{let i=n.createValueStore({version:0,nonce:0}),a=new Map,o=null,s=new Set,c=null,l=()=>{o?.disconnect(),o=null,s.clear()},u=()=>{let e=i.getSnapshot();i.setSnapshot({...e,version:e.version+1})},d=()=>{let e=i.getSnapshot();i.setSnapshot({...e,nonce:e.nonce+1})},f=n=>{let{autoHeightActive:r,rowHeightStore:i,rowMetrics:a,rowModel:c}=n,f=n.scrollContainerRef.current;if(!r||!i){l();return}if(!f)return;let p=f.querySelectorAll(`[data-autoheight-cell]`);if(p.length>0){let n=new Map;p.forEach(e=>{if(t.isInsideDetailCardOf(f,e))return;let r=e.closest(`[data-row-index]`);if(!r)return;let i=Number(r.dataset.rowIndex);if(!Number.isFinite(i))return;let a=Math.ceil(e.getBoundingClientRect().height),o=n.get(i);(o===void 0||a>o)&&n.set(i,a)});let r=!1,o=1/0;if(n.forEach((t,n)=>{let a=c.getRowKey(n)??n;e.setMeasuredRowHeight(i,n,a,t)&&(r=!0,n<o&&(o=n))}),r){let t=f.scrollTop,n=a.rowAtContentY(t),r=t-a.rowTop(n);e.rebuildPrefixFrom(i,o),f.scrollTop=i.prefix[n]+r,u()}}o===null&&(o=new ResizeObserver(d));let m=o,h=new Set;p.forEach(e=>{h.add(e),s.has(e)||(m.observe(e),s.add(e))});let g=[];s.forEach(e=>{h.has(e)||g.push(e)}),g.forEach(e=>{m.unobserve(e),s.delete(e)})};return{update:e=>{c!==null&&r(c,e)||(c=e,f(e))},getSnapshot:i.getSnapshot,subscribe:i.subscribe,measuredHeights:a,dispose:l}};exports.createAutoHeightMeasurer=i;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { GridRowKey, RowModel } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type RowHeightStore } from '../logic/rowHeightStore';
|
|
3
|
+
import type { RowMetrics, VerticalGeometry } from '../logic/verticalGeometry';
|
|
4
|
+
type ReadonlyRef<V> = {
|
|
5
|
+
readonly current: V;
|
|
6
|
+
};
|
|
7
|
+
export type AutoHeightMeasureArgs<T> = {
|
|
8
|
+
scrollContainerRef: ReadonlyRef<HTMLElement | null>;
|
|
9
|
+
autoHeightActive: boolean;
|
|
10
|
+
rowHeightStore: RowHeightStore | null;
|
|
11
|
+
rowMetrics: RowMetrics;
|
|
12
|
+
rowModel: RowModel<T>;
|
|
13
|
+
virtualRows: VerticalGeometry['rows'];
|
|
14
|
+
viewportHeight: number;
|
|
15
|
+
version: number;
|
|
16
|
+
nonce: number;
|
|
17
|
+
};
|
|
18
|
+
export type AutoHeightMeasureSnapshot = {
|
|
19
|
+
version: number;
|
|
20
|
+
nonce: number;
|
|
21
|
+
};
|
|
22
|
+
export type AutoHeightMeasurer<T> = {
|
|
23
|
+
update: (args: AutoHeightMeasureArgs<T>) => void;
|
|
24
|
+
getSnapshot: () => AutoHeightMeasureSnapshot;
|
|
25
|
+
subscribe: (listener: () => void) => () => void;
|
|
26
|
+
measuredHeights: Map<GridRowKey, number>;
|
|
27
|
+
dispose: () => void;
|
|
28
|
+
};
|
|
29
|
+
export declare const createAutoHeightMeasurer: <T>() => AutoHeightMeasurer<T>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { rebuildPrefixFrom as e, setMeasuredRowHeight as t } from "../logic/rowHeightStore.js";
|
|
2
|
+
import { isInsideDetailCardOf as n } from "../logic/detailRow.js";
|
|
3
|
+
import { createValueStore as r } from "../logic/valueStore.js";
|
|
4
|
+
//#region src/controllers/autoHeightMeasurer.ts
|
|
5
|
+
var i = (e, t) => e.autoHeightActive === t.autoHeightActive && e.rowHeightStore === t.rowHeightStore && e.rowMetrics === t.rowMetrics && e.rowModel === t.rowModel && e.virtualRows === t.virtualRows && e.viewportHeight === t.viewportHeight && e.version === t.version && e.nonce === t.nonce, a = () => {
|
|
6
|
+
let a = r({
|
|
7
|
+
version: 0,
|
|
8
|
+
nonce: 0
|
|
9
|
+
}), o = /* @__PURE__ */ new Map(), s = null, c = /* @__PURE__ */ new Set(), l = null, u = () => {
|
|
10
|
+
s?.disconnect(), s = null, c.clear();
|
|
11
|
+
}, d = () => {
|
|
12
|
+
let e = a.getSnapshot();
|
|
13
|
+
a.setSnapshot({
|
|
14
|
+
...e,
|
|
15
|
+
version: e.version + 1
|
|
16
|
+
});
|
|
17
|
+
}, f = () => {
|
|
18
|
+
let e = a.getSnapshot();
|
|
19
|
+
a.setSnapshot({
|
|
20
|
+
...e,
|
|
21
|
+
nonce: e.nonce + 1
|
|
22
|
+
});
|
|
23
|
+
}, p = (r) => {
|
|
24
|
+
let { autoHeightActive: i, rowHeightStore: a, rowMetrics: o, rowModel: l } = r, p = r.scrollContainerRef.current;
|
|
25
|
+
if (!i || !a) {
|
|
26
|
+
u();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (!p) return;
|
|
30
|
+
let m = p.querySelectorAll("[data-autoheight-cell]");
|
|
31
|
+
if (m.length > 0) {
|
|
32
|
+
let r = /* @__PURE__ */ new Map();
|
|
33
|
+
m.forEach((e) => {
|
|
34
|
+
if (n(p, e)) return;
|
|
35
|
+
let t = e.closest("[data-row-index]");
|
|
36
|
+
if (!t) return;
|
|
37
|
+
let i = Number(t.dataset.rowIndex);
|
|
38
|
+
if (!Number.isFinite(i)) return;
|
|
39
|
+
let a = Math.ceil(e.getBoundingClientRect().height), o = r.get(i);
|
|
40
|
+
(o === void 0 || a > o) && r.set(i, a);
|
|
41
|
+
});
|
|
42
|
+
let i = !1, s = Infinity;
|
|
43
|
+
if (r.forEach((e, n) => {
|
|
44
|
+
let r = l.getRowKey(n) ?? n;
|
|
45
|
+
t(a, n, r, e) && (i = !0, n < s && (s = n));
|
|
46
|
+
}), i) {
|
|
47
|
+
let t = p.scrollTop, n = o.rowAtContentY(t), r = t - o.rowTop(n);
|
|
48
|
+
e(a, s), p.scrollTop = a.prefix[n] + r, d();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
s === null && (s = new ResizeObserver(f));
|
|
52
|
+
let h = s, g = /* @__PURE__ */ new Set();
|
|
53
|
+
m.forEach((e) => {
|
|
54
|
+
g.add(e), c.has(e) || (h.observe(e), c.add(e));
|
|
55
|
+
});
|
|
56
|
+
let _ = [];
|
|
57
|
+
c.forEach((e) => {
|
|
58
|
+
g.has(e) || _.push(e);
|
|
59
|
+
}), _.forEach((e) => {
|
|
60
|
+
h.unobserve(e), c.delete(e);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
update: (e) => {
|
|
65
|
+
l !== null && i(l, e) || (l = e, p(e));
|
|
66
|
+
},
|
|
67
|
+
getSnapshot: a.getSnapshot,
|
|
68
|
+
subscribe: a.subscribe,
|
|
69
|
+
measuredHeights: o,
|
|
70
|
+
dispose: u
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
//#endregion
|
|
74
|
+
export { a as createAutoHeightMeasurer };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("../model/gridActions.cjs"),n=require("../logic/geometry.cjs"),r=require("../utils/clipboard.cjs");var i=(e,t,n)=>{if(t===0||n===0||e?.type!==`cell`)return!1;let{start:r,end:i}=e.range,a=Math.min(r.row,i.row),o=Math.min(r.col,i.col),s=Math.max(r.row,i.row),c=Math.max(r.col,i.col);return a===0&&o===0&&s===t-1&&c===n-1},a=()=>{let a=null,o=e=>{a=e},s=e=>{let{isRowExportable:t,rowModel:n}=e;if(t)return(e,r)=>t(e,{viewRowIndex:r,rowKey:n.getRowKey(r)??r})},c=t=>{let{rowModel:n,visibleColumns:r}=t,i=n.getRowCount();if(i===0||r.length===0)return``;let a=s(t),o=[];for(let t=0;t<i;t+=1){let i=n.getRow(t);if(!i||a&&!a(i,t))continue;let s=r.map(t=>{let n=e.getCellValue(i,t);return t.formatClipboardValue?t.formatClipboardValue(n,i):String(n??``)});o.push(s.join(` `))}return o.join(`
|
|
2
|
+
`)};return{update:o,handleCopy:async()=>{if(a===null)return;let e=a,{rowModel:t,visibleColumns:n,uiState:o}=e,l=i(o.selection,t.getRowCount(),n.length)?c(e):r.serializeSelectionToTsv(t.getRow,t.getRowCount(),n,o.selection,s(e));l&&await r.writeTextToClipboard(l)},handlePaste:i=>{if(a===null)return;let{rows:o,rowModel:s,visibleColumns:c,uiState:l,readOnly:u,canEditCell:d,createRow:f,createOverflowColumn:p,onRowsChange:m,onColumnsChange:h,applyServerSideCellEdits:g,dispatch:_}=a;if(u||!m&&!g||!l.activeCell)return;let v=i.clipboardData?.getData(`text/plain`)??``;if(!v)return;i.preventDefault();let y=r.parseClipboardText(v);if(y.length===0)return;let b=y.reduce((e,t)=>Math.max(e,t.length),0);if(b===0)return;let x=l.activeCell.row,S=l.activeCell.col;if(g){let i=r.buildClipboardCellEdits(e=>s.getRow(e),c,y,x,S,(t,n,r,i)=>e.isCellEditable({readOnly:u,canEditCell:d},t,n,r,i));i.length>0&&g(i);let a=n.clamp(l.activeCell.row+Math.max(y.length-1,0),0,Math.max(s.getRowCount()-1,0)),o=n.clamp(l.activeCell.col+Math.max(b-1,0),0,Math.max(c.length-1,0));_(t.gridActions.startSelection(l.activeCell)),_(t.gridActions.updateSelection({row:a,col:o})),_(t.gridActions.endSelection()),_(t.gridActions.activateCell(l.activeCell));return}if(!m)return;let C=s.getSourceIndex(x);if(C===void 0)return;let w=l.activeCell.col,T=[...o],E=[...c],D=s.getRowCount(),O=T.length,k=e=>e<D?s.getSourceIndex(e):O+(e-D),A=C+y.length;if(A>T.length&&f)for(;T.length<A;)T.push(f());let j=w+b;if(j>E.length&&h&&p){for(;E.length<j;)E.push(p(E.length));h(E)}let M=r.applyClipboardMatrixToRows(T,k,E,y,x,w,(t,n,r,i)=>e.isCellEditable({readOnly:u,canEditCell:d},t,n,r,i)),N=n.clamp(l.activeCell.row+Math.max(y.length-1,0),0,Math.max(Math.max(s.getRowCount()-1,0),x+y.length-1)),P=n.clamp(l.activeCell.col+Math.max((y[0]?.length??1)-1,0),0,Math.max(Math.max(E.length-1,0),w+b-1));m(M),_(t.gridActions.startSelection(l.activeCell)),_(t.gridActions.updateSelection({row:N,col:P})),_(t.gridActions.endSelection()),_(t.gridActions.activateCell(l.activeCell))}}};exports.computeIsWholeGridSelected=i,exports.createClipboardController=a;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type GridUiAction } from '../model/gridActions';
|
|
2
|
+
import type { GridColumn, GridSelection, GridUiState, RowModel, SpreadsheetGridProps } from '../model/gridTypes.unbound';
|
|
3
|
+
import type { ServerSideCellEditInput } from '../logic/serverSideEdits';
|
|
4
|
+
export type ClipboardEventLike = {
|
|
5
|
+
clipboardData: {
|
|
6
|
+
getData: (type: string) => string;
|
|
7
|
+
} | null;
|
|
8
|
+
preventDefault: () => void;
|
|
9
|
+
};
|
|
10
|
+
export type ClipboardControllerArgs<T extends object> = {
|
|
11
|
+
rows: T[];
|
|
12
|
+
rowModel: RowModel<T>;
|
|
13
|
+
visibleColumns: GridColumn<T>[];
|
|
14
|
+
uiState: GridUiState;
|
|
15
|
+
readOnly: boolean;
|
|
16
|
+
canEditCell: SpreadsheetGridProps<T>['canEditCell'];
|
|
17
|
+
createRow?: () => T;
|
|
18
|
+
createOverflowColumn?: (columnIndex: number) => GridColumn<T>;
|
|
19
|
+
onRowsChange?: (nextRows: T[]) => void;
|
|
20
|
+
onColumnsChange?: (nextColumns: GridColumn<T>[]) => void;
|
|
21
|
+
applyServerSideCellEdits?: (edits: ServerSideCellEditInput<T>[]) => number;
|
|
22
|
+
isRowExportable?: SpreadsheetGridProps<T>['isRowExportable'];
|
|
23
|
+
dispatch: (action: GridUiAction) => void;
|
|
24
|
+
};
|
|
25
|
+
export type ClipboardController<T extends object> = {
|
|
26
|
+
update: (args: ClipboardControllerArgs<T>) => void;
|
|
27
|
+
handleCopy: () => Promise<void>;
|
|
28
|
+
handlePaste: (event: ClipboardEventLike) => void;
|
|
29
|
+
};
|
|
30
|
+
export declare const computeIsWholeGridSelected: (selection: GridSelection, viewRowCount: number, columnCount: number) => boolean;
|
|
31
|
+
export declare const createClipboardController: <T extends object>() => ClipboardController<T>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { getCellValue as e, isCellEditable as t } from "../utils/permissions.js";
|
|
2
|
+
import { gridActions as n } from "../model/gridActions.js";
|
|
3
|
+
import { clamp as r } from "../logic/geometry.js";
|
|
4
|
+
import { applyClipboardMatrixToRows as i, buildClipboardCellEdits as a, parseClipboardText as o, serializeSelectionToTsv as s, writeTextToClipboard as c } from "../utils/clipboard.js";
|
|
5
|
+
//#region src/controllers/clipboardController.ts
|
|
6
|
+
var l = (e, t, n) => {
|
|
7
|
+
if (t === 0 || n === 0 || e?.type !== "cell") return !1;
|
|
8
|
+
let { start: r, end: i } = e.range, a = Math.min(r.row, i.row), o = Math.min(r.col, i.col), s = Math.max(r.row, i.row), c = Math.max(r.col, i.col);
|
|
9
|
+
return a === 0 && o === 0 && s === t - 1 && c === n - 1;
|
|
10
|
+
}, u = () => {
|
|
11
|
+
let u = null, d = (e) => {
|
|
12
|
+
u = e;
|
|
13
|
+
}, f = (e) => {
|
|
14
|
+
let { isRowExportable: t, rowModel: n } = e;
|
|
15
|
+
if (t) return (e, r) => t(e, {
|
|
16
|
+
viewRowIndex: r,
|
|
17
|
+
rowKey: n.getRowKey(r) ?? r
|
|
18
|
+
});
|
|
19
|
+
}, p = (t) => {
|
|
20
|
+
let { rowModel: n, visibleColumns: r } = t, i = n.getRowCount();
|
|
21
|
+
if (i === 0 || r.length === 0) return "";
|
|
22
|
+
let a = f(t), o = [];
|
|
23
|
+
for (let t = 0; t < i; t += 1) {
|
|
24
|
+
let i = n.getRow(t);
|
|
25
|
+
if (!i || a && !a(i, t)) continue;
|
|
26
|
+
let s = r.map((t) => {
|
|
27
|
+
let n = e(i, t);
|
|
28
|
+
return t.formatClipboardValue ? t.formatClipboardValue(n, i) : String(n ?? "");
|
|
29
|
+
});
|
|
30
|
+
o.push(s.join(" "));
|
|
31
|
+
}
|
|
32
|
+
return o.join("\n");
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
update: d,
|
|
36
|
+
handleCopy: async () => {
|
|
37
|
+
if (u === null) return;
|
|
38
|
+
let e = u, { rowModel: t, visibleColumns: n, uiState: r } = e, i = l(r.selection, t.getRowCount(), n.length) ? p(e) : s(t.getRow, t.getRowCount(), n, r.selection, f(e));
|
|
39
|
+
i && await c(i);
|
|
40
|
+
},
|
|
41
|
+
handlePaste: (e) => {
|
|
42
|
+
if (u === null) return;
|
|
43
|
+
let { rows: s, rowModel: c, visibleColumns: l, uiState: d, readOnly: f, canEditCell: p, createRow: m, createOverflowColumn: h, onRowsChange: g, onColumnsChange: _, applyServerSideCellEdits: v, dispatch: y } = u;
|
|
44
|
+
if (f || !g && !v || !d.activeCell) return;
|
|
45
|
+
let b = e.clipboardData?.getData("text/plain") ?? "";
|
|
46
|
+
if (!b) return;
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
let x = o(b);
|
|
49
|
+
if (x.length === 0) return;
|
|
50
|
+
let S = x.reduce((e, t) => Math.max(e, t.length), 0);
|
|
51
|
+
if (S === 0) return;
|
|
52
|
+
let C = d.activeCell.row, w = d.activeCell.col;
|
|
53
|
+
if (v) {
|
|
54
|
+
let e = a((e) => c.getRow(e), l, x, C, w, (e, n, r, i) => t({
|
|
55
|
+
readOnly: f,
|
|
56
|
+
canEditCell: p
|
|
57
|
+
}, e, n, r, i));
|
|
58
|
+
e.length > 0 && v(e);
|
|
59
|
+
let i = r(d.activeCell.row + Math.max(x.length - 1, 0), 0, Math.max(c.getRowCount() - 1, 0)), o = r(d.activeCell.col + Math.max(S - 1, 0), 0, Math.max(l.length - 1, 0));
|
|
60
|
+
y(n.startSelection(d.activeCell)), y(n.updateSelection({
|
|
61
|
+
row: i,
|
|
62
|
+
col: o
|
|
63
|
+
})), y(n.endSelection()), y(n.activateCell(d.activeCell));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!g) return;
|
|
67
|
+
let T = c.getSourceIndex(C);
|
|
68
|
+
if (T === void 0) return;
|
|
69
|
+
let E = d.activeCell.col, D = [...s], O = [...l], k = c.getRowCount(), A = D.length, j = (e) => e < k ? c.getSourceIndex(e) : A + (e - k), M = T + x.length;
|
|
70
|
+
if (M > D.length && m) for (; D.length < M;) D.push(m());
|
|
71
|
+
let N = E + S;
|
|
72
|
+
if (N > O.length && _ && h) {
|
|
73
|
+
for (; O.length < N;) O.push(h(O.length));
|
|
74
|
+
_(O);
|
|
75
|
+
}
|
|
76
|
+
let P = i(D, j, O, x, C, E, (e, n, r, i) => t({
|
|
77
|
+
readOnly: f,
|
|
78
|
+
canEditCell: p
|
|
79
|
+
}, e, n, r, i)), F = r(d.activeCell.row + Math.max(x.length - 1, 0), 0, Math.max(Math.max(c.getRowCount() - 1, 0), C + x.length - 1)), I = r(d.activeCell.col + Math.max((x[0]?.length ?? 1) - 1, 0), 0, Math.max(Math.max(O.length - 1, 0), E + S - 1));
|
|
80
|
+
g(P), y(n.startSelection(d.activeCell)), y(n.updateSelection({
|
|
81
|
+
row: F,
|
|
82
|
+
col: I
|
|
83
|
+
})), y(n.endSelection()), y(n.activateCell(d.activeCell));
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
//#endregion
|
|
88
|
+
export { l as computeIsWholeGridSelected, u as createClipboardController };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("../model/gridActions.cjs"),n=require("../logic/columnAutosize.cjs"),r=require("../logic/chunkedLoop.cjs"),i=require("../logic/autoSizeOnData.cjs");var a=180,o=()=>{let i=null,o=e.createValueStore(!1),s=0,c=null,l=()=>{c!==null&&(clearTimeout(c),c=null)};return{update:e=>{i=e},runAutosize:async e=>{if(i===null||e.length===0||!n.canMeasureAutosize())return;let{rowModel:u,gridRootRef:d,columnWidths:f,dispatch:p}=i,m=s+=1;l();let h=u.getRowCount(),g=d.current,_=n.createColumnWidthAccumulator(e);c=setTimeout(()=>{s===m&&o.setSnapshot(!0)},a);try{if(!await r.runChunked(h,e=>{let t=u.getRow(e);t&&_.collect(t)},{isCancelled:()=>s!==m||i?.rowModel!==u}))return;let e=_.finalize({gridRoot:g,currentWidths:f});Object.keys(e).length>0&&p(t.gridActions.syncColumnWidths(e))}finally{s===m&&(l(),o.setSnapshot(!1))}},subscribe:o.subscribe,getSnapshot:o.getSnapshot,dispose:()=>{s+=1,l()}}},s=()=>{let e=null,t=!1;return{update:n=>{if(e!==null&&e.mode===n.mode&&e.isServerSide===n.isServerSide&&e.rows===n.rows&&e.runAutosize===n.runAutosize){e=n;return}e=n;let{shouldRun:r,nextHasAutoSizedOnMount:a}=i.resolveAutoSizeOnData({mode:n.mode,isServerSide:n.isServerSide,rowCount:n.rows.length,hasAutoSizedOnMount:t});t=a,r&&n.runAutosize(n.visibleColumns)}}};exports.createAutoSizeOnDataTrigger=s,exports.createColumnAutosizeRunner=o;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { gridActions } from '../model/gridActions';
|
|
2
|
+
import type { AutoSizeColumnsMode, GridColumn, RowModel } from '../model/gridTypes.unbound';
|
|
3
|
+
type ReadonlyRef<V> = {
|
|
4
|
+
readonly current: V;
|
|
5
|
+
};
|
|
6
|
+
export type ColumnAutosizeRunnerArgs<T> = {
|
|
7
|
+
rowModel: RowModel<T>;
|
|
8
|
+
gridRootRef: ReadonlyRef<HTMLElement | null>;
|
|
9
|
+
columnWidths: Record<string, number>;
|
|
10
|
+
dispatch: (action: ReturnType<typeof gridActions.syncColumnWidths>) => void;
|
|
11
|
+
};
|
|
12
|
+
export type ColumnAutosizeRunner<T> = {
|
|
13
|
+
update: (args: ColumnAutosizeRunnerArgs<T>) => void;
|
|
14
|
+
runAutosize: (columns: GridColumn<T>[]) => Promise<void>;
|
|
15
|
+
subscribe: (listener: () => void) => () => void;
|
|
16
|
+
getSnapshot: () => boolean;
|
|
17
|
+
dispose: () => void;
|
|
18
|
+
};
|
|
19
|
+
export declare const createColumnAutosizeRunner: <T>() => ColumnAutosizeRunner<T>;
|
|
20
|
+
export type AutoSizeOnDataArgs<T> = {
|
|
21
|
+
mode: AutoSizeColumnsMode;
|
|
22
|
+
isServerSide: boolean;
|
|
23
|
+
rows: T[];
|
|
24
|
+
visibleColumns: GridColumn<T>[];
|
|
25
|
+
runAutosize: (columns: GridColumn<T>[]) => Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
export type AutoSizeOnDataTrigger<T> = {
|
|
28
|
+
update: (args: AutoSizeOnDataArgs<T>) => void;
|
|
29
|
+
};
|
|
30
|
+
export declare const createAutoSizeOnDataTrigger: <T>() => AutoSizeOnDataTrigger<T>;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createValueStore as e } from "../logic/valueStore.js";
|
|
2
|
+
import { gridActions as t } from "../model/gridActions.js";
|
|
3
|
+
import { canMeasureAutosize as n, createColumnWidthAccumulator as r } from "../logic/columnAutosize.js";
|
|
4
|
+
import { runChunked as i } from "../logic/chunkedLoop.js";
|
|
5
|
+
import { resolveAutoSizeOnData as a } from "../logic/autoSizeOnData.js";
|
|
6
|
+
//#region src/controllers/columnAutosizeRunner.ts
|
|
7
|
+
var o = 180, s = () => {
|
|
8
|
+
let a = null, s = e(!1), c = 0, l = null, u = () => {
|
|
9
|
+
l !== null && (clearTimeout(l), l = null);
|
|
10
|
+
};
|
|
11
|
+
return {
|
|
12
|
+
update: (e) => {
|
|
13
|
+
a = e;
|
|
14
|
+
},
|
|
15
|
+
runAutosize: async (e) => {
|
|
16
|
+
if (a === null || e.length === 0 || !n()) return;
|
|
17
|
+
let { rowModel: d, gridRootRef: f, columnWidths: p, dispatch: m } = a, h = c += 1;
|
|
18
|
+
u();
|
|
19
|
+
let g = d.getRowCount(), _ = f.current, v = r(e);
|
|
20
|
+
l = setTimeout(() => {
|
|
21
|
+
c === h && s.setSnapshot(!0);
|
|
22
|
+
}, o);
|
|
23
|
+
try {
|
|
24
|
+
if (!await i(g, (e) => {
|
|
25
|
+
let t = d.getRow(e);
|
|
26
|
+
t && v.collect(t);
|
|
27
|
+
}, { isCancelled: () => c !== h || a?.rowModel !== d })) return;
|
|
28
|
+
let e = v.finalize({
|
|
29
|
+
gridRoot: _,
|
|
30
|
+
currentWidths: p
|
|
31
|
+
});
|
|
32
|
+
Object.keys(e).length > 0 && m(t.syncColumnWidths(e));
|
|
33
|
+
} finally {
|
|
34
|
+
c === h && (u(), s.setSnapshot(!1));
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
subscribe: s.subscribe,
|
|
38
|
+
getSnapshot: s.getSnapshot,
|
|
39
|
+
dispose: () => {
|
|
40
|
+
c += 1, u();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}, c = () => {
|
|
44
|
+
let e = null, t = !1;
|
|
45
|
+
return { update: (n) => {
|
|
46
|
+
if (e !== null && e.mode === n.mode && e.isServerSide === n.isServerSide && e.rows === n.rows && e.runAutosize === n.runAutosize) {
|
|
47
|
+
e = n;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
e = n;
|
|
51
|
+
let { shouldRun: r, nextHasAutoSizedOnMount: i } = a({
|
|
52
|
+
mode: n.mode,
|
|
53
|
+
isServerSide: n.isServerSide,
|
|
54
|
+
rowCount: n.rows.length,
|
|
55
|
+
hasAutoSizedOnMount: t
|
|
56
|
+
});
|
|
57
|
+
t = i, r && n.runAutosize(n.visibleColumns);
|
|
58
|
+
} };
|
|
59
|
+
};
|
|
60
|
+
//#endregion
|
|
61
|
+
export { c as createAutoSizeOnDataTrigger, s as createColumnAutosizeRunner };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/detailRow.cjs"),t=require("../logic/geometry.cjs"),n=require("../logic/autoScrollGeometry.cjs"),r=require("../logic/slotDom.cjs");function i(e,n,r,i){let a=e.find(e=>e.key===n);if(!a)return null;let o=t.getColumnPane(a),s={left:[],center:[],right:[]},c=new Map;for(let n of e)s[t.getColumnPane(n)].push(n.key),c.set(n.key,n.visible!==!1);let l=s[r].filter(e=>c.get(e)).indexOf(n),u=s[o].indexOf(n);if(u<0)return null;s[o].splice(u,1);let d=i;o===r&&l>=0&&d>l&&--d;let f=s[r].filter(e=>c.get(e));if(d=Math.max(0,Math.min(d,f.length)),o===r&&l>=0&&d===l)return null;let p;return p=d>=f.length?s[r].length:s[r].indexOf(f[d]),s[r].splice(p,0,n),[...s.left,...s.center,...s.right]}var a=32,o=2,s=14,c=12,l=`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="5 9 2 12 5 15"/><polyline points="9 5 12 2 15 5"/><polyline points="15 19 12 22 9 19"/><polyline points="19 9 22 12 19 15"/><line x1="2" y1="12" x2="22" y2="12"/><line x1="12" y1="2" x2="12" y2="22"/></svg>`,u=`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="17" x2="12" y2="22"/><path d="M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z"/></svg>`,d=`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="4.9" y1="4.9" x2="19.1" y2="19.1"/></svg>`,f=`0.5`,p=200,m=`cubic-bezier(0.2, 0.7, 0.3, 1)`,h=()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,g=t=>{if(!t)return null;let n=new Map;return t.querySelectorAll(`[data-ssg-col-key]`).forEach(r=>{if(e.isInsideDetailCardOf(t,r))return;let i=r.dataset.ssgColKey;i&&!n.has(i)&&n.set(i,r.getBoundingClientRect().left)}),n},_=()=>{let _=null,v=null,y=null,b=null,x={x:0,y:0},S=null,C=!1,w=null,T=null,E=null,D=null,O=null,k=()=>({left:_?.leftIndicatorRef.current??null,center:_?.centerIndicatorRef.current??null,right:_?.rightIndicatorRef.current??null}),A=()=>{for(let e of Object.values(k()))e&&(e.style.display=`none`)},j=e=>{if(E)return;let t=document.createElement(`div`);t.setAttribute(`data-grid-drag-ghost`,``),_?.scrollContainerRef.current?.closest(`.ssg-theme-dark`)!=null&&t.classList.add(`ssg-theme-dark`),t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`display:inline-flex`,`align-items:center`,`gap:7px`,`padding:7px 12px 7px 10px`,`border-radius:9px`,`border:1px solid var(--ssg-ghost-border)`,`background:var(--ssg-ghost-bg)`,`color:var(--ssg-ghost-text)`,`font-size:12px`,`font-weight:600`,`line-height:1`,`white-space:nowrap`,`box-shadow:var(--ssg-ghost-shadow)`,`pointer-events:none`,`user-select:none`,`z-index:9999`,`will-change:transform`,`transform:translate(-9999px,-9999px)`].join(`;`),r.applySlotToElement(t,_?.ghostSlot);let n=document.createElement(`span`);n.style.cssText=`display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:none`;let i=document.createElement(`span`);i.textContent=e,t.appendChild(n),t.appendChild(i),document.body.appendChild(t),E=t,D=n,O=null},M=e=>{let t=E;if(!t)return;t.style.transform=`translate(`+(x.x+s)+`px,`+(x.y+c)+`px)`;let n=e??`out`;if(O===n)return;O=n;let r=D;n===`out`?(t.style.opacity=f,r&&(r.innerHTML=d)):(t.style.opacity=`1`,r&&(r.innerHTML=n===`center`?l:u))},N=()=>{E&&E.parentNode&&E.parentNode.removeChild(E),E=null,D=null,O=null},P=(e,n)=>{if(_===null)return null;let{paneLayout:r,leftPaneScrollRef:i,rightPaneScrollRef:s,bodyScrollRef:c,scrollContainerRef:l,leftLeadingWidth:u,centerLeadingWidth:d,rightLeadingWidth:f}=_,p=l.current;if(p){let t=p.getBoundingClientRect();if(e<t.left||e>t.right||n<t.top||n>t.bottom)return null}let m=i.current,h=s.current;if(m&&r.left.entries.length===0&&e<=m.getBoundingClientRect().left+a)return{pane:`left`,slot:0,leftPx:o};if(m&&r.left.entries.length>0){let n=m.getBoundingClientRect();if(e<n.right){let i=e-n.left-u,a=t.findPaneDropSlot(r.left,i);return{pane:`left`,slot:a,leftPx:u+t.paneDropSlotBoundaryX(r.left,a)}}}if(h&&r.right.entries.length===0&&e>=h.getBoundingClientRect().left-a)return{pane:`right`,slot:0,leftPx:-2};if(h&&r.right.entries.length>0){let n=h.getBoundingClientRect();if(e>=n.left){let i=e-n.left-f,a=t.findPaneDropSlot(r.right,i);return{pane:`right`,slot:a,leftPx:f+t.paneDropSlotBoundaryX(r.right,a)}}}let g=c.current;if(g&&r.center.entries.length>0){let n=g.getBoundingClientRect(),i=g.scrollLeft+e-n.left-d,a=t.findPaneDropSlot(r.center,Math.max(i,0));return{pane:`center`,slot:a,leftPx:d+t.paneDropSlotBoundaryX(r.center,a)}}return null},F=()=>{let e=P(x.x,x.y);if(M(e?e.pane:null),!e){y=null,A();return}y={pane:e.pane,slot:e.slot};let t=k();for(let n of[`left`,`center`,`right`]){let r=t[n];r&&(n===e.pane?(r.style.left=`${e.leftPx}px`,r.style.display=`block`):r.style.display=`none`)}},I=()=>{if(v===null){T=null;return}let e=_?.scrollContainerRef.current??null;if(e&&(C||(!S||n.hasPointerLeftActivationRadius(S,x,6))&&(C=!0),C)){let t=e.getBoundingClientRect(),r=n.resolveScrollContentBox({rectLeft:t.left,rectTop:t.top,clientLeft:e.clientLeft,clientTop:e.clientTop,clientWidth:e.clientWidth,clientHeight:e.clientHeight}),i=n.resolveAutoScrollAxisDirection(x.x,r.left,r.right,24),a=n.computeNextScrollPosition(e.scrollLeft,i,18,e.scrollWidth-e.clientWidth);a!==e.scrollLeft&&e.scrollTo({left:a,behavior:`auto`})}F(),T=requestAnimationFrame(I)},L=e=>{T!==null&&(cancelAnimationFrame(T),T=null),document.body.style.cursor=``,A(),N();let n=v,r=y;if(v=null,y=null,!e||!n||!r||_===null)return;let{columns:a,applyColumnOrderAndPin:o,scrollContainerRef:s}=_,c=i(a,n,r.pane,r.slot);if(!c)return;let l=a.find(e=>e.key===n),u=l?t.getColumnPane(l):null;b=u!==null&&u===r.pane&&!h()?g(s.current):null,o(c,new Map([[n,r.pane===`center`?void 0:r.pane]]))};return{update:e=>{_=e},onColumnDragHandlePointerDown:(e,t)=>{if(_===null||!_.enabled||t.button!==0)return;t.stopPropagation(),t.preventDefault(),v=e.key,x={x:t.clientX,y:t.clientY},S={x:t.clientX,y:t.clientY},C=!1,document.body.style.cursor=`grabbing`,j(e.title||e.key);let n=t.currentTarget,r=t.pointerId;try{n.setPointerCapture(r)}catch{}let i=e=>{e.pointerId===r&&(x={x:e.clientX,y:e.clientY},F())},a=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,o),window.removeEventListener(`pointercancel`,s),w=null;try{n.releasePointerCapture(r)}catch{}};function o(e){e.pointerId===r&&(a(),L(!0))}function s(e){e.pointerId===r&&(a(),L(!1))}window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,o),window.addEventListener(`pointercancel`,s),w=a,F(),T=requestAnimationFrame(I)},applyReorderSettle:()=>{let t=b;if(b=null,!t)return;let n=_?.scrollContainerRef.current??null;if(!n)return;let r=new Map,i=new Map;n.querySelectorAll(`[data-ssg-col-key]`).forEach(a=>{if(e.isInsideDetailCardOf(n,a))return;let o=a.dataset.ssgColKey;if(!o||!t.has(o))return;let s=r.get(o);s?s.push(a):(r.set(o,[a]),i.set(o,a.getBoundingClientRect().left))});let a=[];if(r.forEach((e,n)=>{let r=t.get(n),o=i.get(n);if(r===void 0||o===void 0)return;let s=r-o;if(!(Math.abs(s)<.5))for(let t of e)t.style.transition=`none`,t.style.transform=`translateX(${s}px)`,t.style.willChange=`transform`,a.push(t)}),a.length!==0){n.getBoundingClientRect();for(let e of a)e.style.transition=`transform ${p}ms ${m}`,e.style.transform=`translateX(0)`;window.setTimeout(()=>{for(let e of a)e.style.transition=``,e.style.transform=``,e.style.willChange=``},280)}},dispose:()=>{w?.(),w=null,T!==null&&(cancelAnimationFrame(T),T=null),v=null,y=null,document.body.style.cursor=``,N()}}};exports.computeHeaderReorderedKeys=i,exports.createColumnHeaderDragController=_;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { GridColumn, GridColumnPinned, GridResolvedSlot } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type ColumnPane, type GridPaneLayout } from '../logic/geometry';
|
|
3
|
+
type ApplyColumnOrderAndPin = (orderedKeys: string[], pinOverride?: Map<string, GridColumnPinned | undefined>) => void;
|
|
4
|
+
export declare function computeHeaderReorderedKeys<T>(columns: GridColumn<T>[], draggedKey: string, targetPane: ColumnPane, slotInTargetVisible: number): string[] | null;
|
|
5
|
+
type ReadonlyRef<V> = {
|
|
6
|
+
readonly current: V;
|
|
7
|
+
};
|
|
8
|
+
export type ColumnHeaderDragArgs<T> = {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
columns: GridColumn<T>[];
|
|
11
|
+
paneLayout: GridPaneLayout<T>;
|
|
12
|
+
leftPaneScrollRef: ReadonlyRef<HTMLElement | null>;
|
|
13
|
+
rightPaneScrollRef: ReadonlyRef<HTMLElement | null>;
|
|
14
|
+
bodyScrollRef: ReadonlyRef<HTMLElement | null>;
|
|
15
|
+
scrollContainerRef: ReadonlyRef<HTMLElement | null>;
|
|
16
|
+
leftIndicatorRef: ReadonlyRef<HTMLElement | null>;
|
|
17
|
+
centerIndicatorRef: ReadonlyRef<HTMLElement | null>;
|
|
18
|
+
rightIndicatorRef: ReadonlyRef<HTMLElement | null>;
|
|
19
|
+
leftLeadingWidth: number;
|
|
20
|
+
centerLeadingWidth: number;
|
|
21
|
+
rightLeadingWidth: number;
|
|
22
|
+
applyColumnOrderAndPin: ApplyColumnOrderAndPin;
|
|
23
|
+
ghostSlot?: GridResolvedSlot;
|
|
24
|
+
};
|
|
25
|
+
export type ColumnDragHandlePointerEvent = {
|
|
26
|
+
button: number;
|
|
27
|
+
pointerId: number;
|
|
28
|
+
clientX: number;
|
|
29
|
+
clientY: number;
|
|
30
|
+
currentTarget: {
|
|
31
|
+
setPointerCapture: (pointerId: number) => void;
|
|
32
|
+
releasePointerCapture: (pointerId: number) => void;
|
|
33
|
+
};
|
|
34
|
+
preventDefault: () => void;
|
|
35
|
+
stopPropagation: () => void;
|
|
36
|
+
};
|
|
37
|
+
export type ColumnHeaderDragController<T> = {
|
|
38
|
+
update: (args: ColumnHeaderDragArgs<T>) => void;
|
|
39
|
+
onColumnDragHandlePointerDown: (column: GridColumn<T>, event: ColumnDragHandlePointerEvent) => void;
|
|
40
|
+
applyReorderSettle: () => void;
|
|
41
|
+
dispose: () => void;
|
|
42
|
+
};
|
|
43
|
+
export declare const createColumnHeaderDragController: <T>() => ColumnHeaderDragController<T>;
|
|
44
|
+
export {};
|