@dxos/plugin-sheet 0.6.13-main.548ca8d → 0.6.13-main.ed424a1
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/dist/lib/browser/{SheetContainer-NDNIS44E.mjs → SheetContainer-RVRACGCZ.mjs} +107 -82
- package/dist/lib/browser/SheetContainer-RVRACGCZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GKI67SEF.mjs → chunk-BWN5DZWZ.mjs} +16 -11
- package/dist/lib/browser/chunk-BWN5DZWZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-AQSGDA4X.mjs → chunk-HOG37RYS.mjs} +92 -178
- package/dist/lib/browser/chunk-HOG37RYS.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +2 -2
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types.mjs +3 -3
- package/dist/lib/node/{SheetContainer-YSQGJD7K.cjs → SheetContainer-J7XROAMN.cjs} +113 -89
- package/dist/lib/node/SheetContainer-J7XROAMN.cjs.map +7 -0
- package/dist/lib/node/{chunk-6F43RV45.cjs → chunk-AXQZA2YS.cjs} +103 -186
- package/dist/lib/node/chunk-AXQZA2YS.cjs.map +7 -0
- package/dist/lib/node/{chunk-ER3PM7GD.cjs → chunk-NZARD7UP.cjs} +20 -15
- package/dist/lib/node/chunk-NZARD7UP.cjs.map +7 -0
- package/dist/lib/node/index.cjs +18 -18
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types.cjs +7 -7
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/{SheetContainer-M7WRMZDU.mjs → SheetContainer-YWQVKHQB.mjs} +107 -82
- package/dist/lib/node-esm/SheetContainer-YWQVKHQB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ELTFPX5B.mjs → chunk-BPXXIAOQ.mjs} +92 -178
- package/dist/lib/node-esm/chunk-BPXXIAOQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZVLLQ2PJ.mjs → chunk-WFDTY3IC.mjs} +16 -11
- package/dist/lib/node-esm/chunk-WFDTY3IC.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +2 -2
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/types.mjs +3 -3
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts +2 -2
- package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetContext/SheetContext.d.ts +1 -2
- package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +11 -17
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +1 -2
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/defs/index.d.ts +1 -0
- package/dist/types/src/defs/index.d.ts.map +1 -1
- package/dist/types/src/defs/sheet-range-types.d.ts +13 -0
- package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +0 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/model/index.d.ts +0 -1
- package/dist/types/src/model/index.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +39 -20
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +35 -34
- package/src/components/GridSheet/GridSheet.stories.tsx +2 -2
- package/src/components/GridSheet/GridSheet.tsx +5 -3
- package/src/components/GridSheet/util.ts +24 -10
- package/src/components/SheetContainer/SheetContainer.stories.tsx +2 -2
- package/src/components/SheetContainer/SheetContainer.tsx +3 -28
- package/src/components/SheetContext/SheetContext.tsx +5 -9
- package/src/components/Toolbar/Toolbar.tsx +116 -68
- package/src/defs/index.ts +1 -0
- package/src/defs/sheet-range-types.ts +46 -0
- package/src/defs/util.ts +1 -1
- package/src/hooks/index.ts +0 -1
- package/src/model/index.ts +0 -1
- package/src/types.ts +5 -11
- package/dist/lib/browser/SheetContainer-NDNIS44E.mjs.map +0 -7
- package/dist/lib/browser/chunk-AQSGDA4X.mjs.map +0 -7
- package/dist/lib/browser/chunk-GKI67SEF.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-YSQGJD7K.cjs.map +0 -7
- package/dist/lib/node/chunk-6F43RV45.cjs.map +0 -7
- package/dist/lib/node/chunk-ER3PM7GD.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-M7WRMZDU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ELTFPX5B.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZVLLQ2PJ.mjs.map +0 -7
- package/dist/types/src/hooks/useFormattingModel.d.ts +0 -3
- package/dist/types/src/hooks/useFormattingModel.d.ts.map +0 -1
- package/dist/types/src/model/formatting-model.d.ts +0 -19
- package/dist/types/src/model/formatting-model.d.ts.map +0 -1
- package/src/hooks/useFormattingModel.ts +0 -11
- package/src/model/formatting-model.ts +0 -116
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_AXQZA2YS_exports = {};
|
|
30
|
+
__export(chunk_AXQZA2YS_exports, {
|
|
31
31
|
ComputeGraphContextProvider: () => ComputeGraphContextProvider,
|
|
32
32
|
GridSheet: () => GridSheet,
|
|
33
33
|
SheetContainer: () => SheetContainer,
|
|
@@ -37,12 +37,13 @@ __export(chunk_6F43RV45_exports, {
|
|
|
37
37
|
compareIndexPositions: () => compareIndexPositions,
|
|
38
38
|
computeGraphFacet: () => computeGraphFacet,
|
|
39
39
|
createSheet: () => createSheet,
|
|
40
|
+
inRange: () => inRange,
|
|
40
41
|
rangeToA1Notation: () => rangeToA1Notation,
|
|
41
42
|
useComputeGraph: () => useComputeGraph,
|
|
42
43
|
useSheetContext: () => useSheetContext
|
|
43
44
|
});
|
|
44
|
-
module.exports = __toCommonJS(
|
|
45
|
-
var
|
|
45
|
+
module.exports = __toCommonJS(chunk_AXQZA2YS_exports);
|
|
46
|
+
var import_chunk_NZARD7UP = require("./chunk-NZARD7UP.cjs");
|
|
46
47
|
var import_chunk_QIFIGEKV = require("./chunk-QIFIGEKV.cjs");
|
|
47
48
|
var import_chunk_5XPK2V4A = require("./chunk-5XPK2V4A.cjs");
|
|
48
49
|
var import_react = __toESM(require("react"));
|
|
@@ -71,26 +72,25 @@ var import_react_ui_attention = require("@dxos/react-ui-attention");
|
|
|
71
72
|
var import_react_ui_grid = require("@dxos/react-ui-grid");
|
|
72
73
|
var import_react5 = require("react");
|
|
73
74
|
var import_echo = require("@dxos/react-client/echo");
|
|
75
|
+
var import_react_ui_data = require("@dxos/react-ui-data");
|
|
74
76
|
var import_react_ui_grid2 = require("@dxos/react-ui-grid");
|
|
75
77
|
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
76
78
|
var import_react6 = require("react");
|
|
77
79
|
var import_echo_schema2 = require("@dxos/echo-schema");
|
|
78
|
-
var import_schema = require("@dxos/schema");
|
|
79
80
|
var import_async2 = require("@dxos/async");
|
|
80
81
|
var import_context = require("@dxos/context");
|
|
81
82
|
var import_echo_schema3 = require("@dxos/echo-schema");
|
|
82
83
|
var import_invariant3 = require("@dxos/invariant");
|
|
83
84
|
var import_keys = require("@dxos/keys");
|
|
84
85
|
var import_log = require("@dxos/log");
|
|
85
|
-
var
|
|
86
|
+
var import_schema = require("@dxos/schema");
|
|
86
87
|
var import_hyperformula = require("#hyperformula");
|
|
87
|
-
var import_react7 = require("react");
|
|
88
88
|
var import_signals_core = require("@preact/signals-core");
|
|
89
|
-
var
|
|
89
|
+
var import_react7 = require("react");
|
|
90
90
|
var import_app_framework = require("@dxos/app-framework");
|
|
91
91
|
var import_async3 = require("@dxos/async");
|
|
92
92
|
var import_echo2 = require("@dxos/react-client/echo");
|
|
93
|
-
var
|
|
93
|
+
var import_react8 = __toESM(require("react"));
|
|
94
94
|
var import_invariant4 = require("@dxos/invariant");
|
|
95
95
|
var import_echo3 = require("@dxos/react-client/echo");
|
|
96
96
|
var import_react_ui_grid3 = require("@dxos/react-ui-grid");
|
|
@@ -201,14 +201,14 @@ var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLUMNS } = {}
|
|
|
201
201
|
}
|
|
202
202
|
};
|
|
203
203
|
var createSheet = ({ name, cells, ...size } = {}) => {
|
|
204
|
-
const sheet = (0, import_echo_schema.create)(
|
|
204
|
+
const sheet = (0, import_echo_schema.create)(import_chunk_NZARD7UP.SheetType, {
|
|
205
205
|
name,
|
|
206
206
|
cells: {},
|
|
207
207
|
rows: [],
|
|
208
208
|
columns: [],
|
|
209
209
|
rowMeta: {},
|
|
210
210
|
columnMeta: {},
|
|
211
|
-
|
|
211
|
+
ranges: []
|
|
212
212
|
});
|
|
213
213
|
initialize(sheet, size);
|
|
214
214
|
if (cells) {
|
|
@@ -231,13 +231,6 @@ var addressFromIndex = (sheet, idx) => {
|
|
|
231
231
|
row: sheet.rows.indexOf(row)
|
|
232
232
|
};
|
|
233
233
|
};
|
|
234
|
-
var rangeFromIndex = (sheet, idx) => {
|
|
235
|
-
const [from, to] = idx.split(":").map((index) => addressFromIndex(sheet, index));
|
|
236
|
-
return {
|
|
237
|
-
from,
|
|
238
|
-
to
|
|
239
|
-
};
|
|
240
|
-
};
|
|
241
234
|
var closest = (cursor, cells) => {
|
|
242
235
|
let closestCell2;
|
|
243
236
|
let closestDistance = Number.MAX_SAFE_INTEGER;
|
|
@@ -259,6 +252,32 @@ var compareIndexPositions = (sheet, indexA, indexB) => {
|
|
|
259
252
|
return columnA - columnB;
|
|
260
253
|
}
|
|
261
254
|
};
|
|
255
|
+
var cellClassNameForRange = ({ key, value }) => {
|
|
256
|
+
switch (key) {
|
|
257
|
+
case "align":
|
|
258
|
+
switch (value) {
|
|
259
|
+
case "start":
|
|
260
|
+
return "text-start";
|
|
261
|
+
case "center":
|
|
262
|
+
return "text-center";
|
|
263
|
+
case "end":
|
|
264
|
+
return "text-end";
|
|
265
|
+
default:
|
|
266
|
+
return void 0;
|
|
267
|
+
}
|
|
268
|
+
case "comment":
|
|
269
|
+
return "bg-gridComment";
|
|
270
|
+
case "style":
|
|
271
|
+
switch (value) {
|
|
272
|
+
case "highlight":
|
|
273
|
+
return "bg-gridHighlight";
|
|
274
|
+
default:
|
|
275
|
+
return void 0;
|
|
276
|
+
}
|
|
277
|
+
default:
|
|
278
|
+
return void 0;
|
|
279
|
+
}
|
|
280
|
+
};
|
|
262
281
|
var updateAllDecorations = import_state.StateEffect.define();
|
|
263
282
|
var computeGraphFacet = (0, import_state2.singleValueFacet)();
|
|
264
283
|
var highlightStyles = import_language2.HighlightStyle.define([
|
|
@@ -491,7 +510,26 @@ var createDxGridRows = (model) => {
|
|
|
491
510
|
grid: {}
|
|
492
511
|
});
|
|
493
512
|
};
|
|
494
|
-
var
|
|
513
|
+
var projectCellProps = (model, col, row) => {
|
|
514
|
+
const address = {
|
|
515
|
+
col,
|
|
516
|
+
row
|
|
517
|
+
};
|
|
518
|
+
const rawValue = model.getValue(address);
|
|
519
|
+
if (rawValue === void 0 || rawValue === null) {
|
|
520
|
+
return {
|
|
521
|
+
value: ""
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
const ranges = model.sheet.ranges?.filter(({ range }) => inRange(range, address));
|
|
525
|
+
const type = model.getValueType(address);
|
|
526
|
+
const classNames = ranges?.map(cellClassNameForRange).reverse();
|
|
527
|
+
return {
|
|
528
|
+
value: (0, import_react_ui_data.parseValue)(type, rawValue),
|
|
529
|
+
className: (0, import_react_ui_theme2.mx)((0, import_react_ui_data.cellClassesForFieldType)(type), classNames)
|
|
530
|
+
};
|
|
531
|
+
};
|
|
532
|
+
var gridCellGetter = (model) => {
|
|
495
533
|
const cachedGridCells = {};
|
|
496
534
|
return (nextBounds) => {
|
|
497
535
|
[
|
|
@@ -502,16 +540,10 @@ var gridCellGetter = (model, formatting) => {
|
|
|
502
540
|
].forEach((_2, r0) => {
|
|
503
541
|
const col = nextBounds.start.col + c0;
|
|
504
542
|
const row = nextBounds.start.row + r0;
|
|
505
|
-
const cell =
|
|
506
|
-
col,
|
|
507
|
-
row
|
|
508
|
-
});
|
|
543
|
+
const cell = projectCellProps(model, col, row);
|
|
509
544
|
if (cell.value) {
|
|
510
545
|
cachedGridCells;
|
|
511
|
-
cachedGridCells[`${col},${row}`] =
|
|
512
|
-
value: cell.value,
|
|
513
|
-
className: (0, import_react_ui_theme2.mx)(cell.classNames)
|
|
514
|
-
};
|
|
546
|
+
cachedGridCells[`${col},${row}`] = cell;
|
|
515
547
|
}
|
|
516
548
|
});
|
|
517
549
|
});
|
|
@@ -527,8 +559,8 @@ var colLabelCell = (col) => ({
|
|
|
527
559
|
value: (0, import_react_ui_grid2.colToA1Notation)(col),
|
|
528
560
|
resizeHandle: "col"
|
|
529
561
|
});
|
|
530
|
-
var cellGetter = (model
|
|
531
|
-
const getGridCells = gridCellGetter(model
|
|
562
|
+
var cellGetter = (model) => {
|
|
563
|
+
const getGridCells = gridCellGetter(model);
|
|
532
564
|
return (nextBounds, plane) => {
|
|
533
565
|
switch (plane) {
|
|
534
566
|
case "grid":
|
|
@@ -554,7 +586,7 @@ var cellGetter = (model, formatting) => {
|
|
|
554
586
|
}
|
|
555
587
|
};
|
|
556
588
|
};
|
|
557
|
-
var useSheetModelDxGridProps = (dxGridRef, model
|
|
589
|
+
var useSheetModelDxGridProps = (dxGridRef, model) => {
|
|
558
590
|
const [columns, setColumns] = (0, import_react5.useState)(createDxGridColumns(model));
|
|
559
591
|
const [rows, setRows] = (0, import_react5.useState)(createDxGridColumns(model));
|
|
560
592
|
(0, import_react5.useLayoutEffect)(() => {
|
|
@@ -562,7 +594,7 @@ var useSheetModelDxGridProps = (dxGridRef, model, formatting) => {
|
|
|
562
594
|
"cells"
|
|
563
595
|
]);
|
|
564
596
|
if (dxGridRef.current) {
|
|
565
|
-
dxGridRef.current.getCells = cellGetter(model
|
|
597
|
+
dxGridRef.current.getCells = cellGetter(model);
|
|
566
598
|
}
|
|
567
599
|
const handleCellsUpdate = () => {
|
|
568
600
|
dxGridRef.current?.requestUpdate("initialCells");
|
|
@@ -570,8 +602,7 @@ var useSheetModelDxGridProps = (dxGridRef, model, formatting) => {
|
|
|
570
602
|
cellsAccessor.handle.addListener("change", handleCellsUpdate);
|
|
571
603
|
return () => cellsAccessor.handle.removeListener("change", handleCellsUpdate);
|
|
572
604
|
}, [
|
|
573
|
-
model
|
|
574
|
-
formatting
|
|
605
|
+
model
|
|
575
606
|
]);
|
|
576
607
|
(0, import_react5.useEffect)(() => {
|
|
577
608
|
const columnMetaAccessor = (0, import_echo.createDocAccessor)(model.sheet, [
|
|
@@ -636,124 +667,15 @@ var createDecorations = () => {
|
|
|
636
667
|
getAllDecorations
|
|
637
668
|
};
|
|
638
669
|
};
|
|
639
|
-
var FormattingModel = class {
|
|
640
|
-
constructor(_model) {
|
|
641
|
-
this._model = _model;
|
|
642
|
-
}
|
|
643
|
-
/**
|
|
644
|
-
* Get formatted string value and className for cell.
|
|
645
|
-
*/
|
|
646
|
-
getFormatting(cell) {
|
|
647
|
-
const value = this._model.getValue(cell);
|
|
648
|
-
if (value === void 0 || value === null) {
|
|
649
|
-
return {};
|
|
650
|
-
}
|
|
651
|
-
const locales = void 0;
|
|
652
|
-
const idx = addressToIndex(this._model.sheet, cell);
|
|
653
|
-
let formatting = this._model.sheet.formatting.find?.(({ range }) => range === idx);
|
|
654
|
-
const classNames = [
|
|
655
|
-
...formatting?.classNames ?? []
|
|
656
|
-
];
|
|
657
|
-
for (const [idx2, _formatting] of Object.entries(this._model.sheet.formatting)) {
|
|
658
|
-
const range = rangeFromIndex(this._model.sheet, idx2);
|
|
659
|
-
if (inRange(range, cell)) {
|
|
660
|
-
if (_formatting.classNames) {
|
|
661
|
-
classNames.push(..._formatting.classNames);
|
|
662
|
-
}
|
|
663
|
-
if (_formatting.type) {
|
|
664
|
-
formatting = _formatting;
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
const defaultNumber = "justify-end font-mono";
|
|
669
|
-
const type = formatting?.type ?? this._model.getValueType(cell);
|
|
670
|
-
switch (type) {
|
|
671
|
-
case import_schema.FieldValueType.Boolean: {
|
|
672
|
-
return {
|
|
673
|
-
value: value.toLocaleString().toUpperCase(),
|
|
674
|
-
classNames: [
|
|
675
|
-
...classNames,
|
|
676
|
-
value ? "!text-greenText" : "!text-orangeText"
|
|
677
|
-
]
|
|
678
|
-
};
|
|
679
|
-
}
|
|
680
|
-
//
|
|
681
|
-
// Numbers.
|
|
682
|
-
//
|
|
683
|
-
case import_schema.FieldValueType.Number: {
|
|
684
|
-
return {
|
|
685
|
-
value: value.toLocaleString(locales),
|
|
686
|
-
classNames: [
|
|
687
|
-
...classNames,
|
|
688
|
-
defaultNumber
|
|
689
|
-
]
|
|
690
|
-
};
|
|
691
|
-
}
|
|
692
|
-
case import_schema.FieldValueType.Percent: {
|
|
693
|
-
return {
|
|
694
|
-
value: value * 100 + "%",
|
|
695
|
-
classNames: [
|
|
696
|
-
...classNames,
|
|
697
|
-
defaultNumber
|
|
698
|
-
]
|
|
699
|
-
};
|
|
700
|
-
}
|
|
701
|
-
case import_schema.FieldValueType.Currency: {
|
|
702
|
-
return {
|
|
703
|
-
value: value.toLocaleString(locales, {
|
|
704
|
-
style: "currency",
|
|
705
|
-
currency: "USD",
|
|
706
|
-
minimumFractionDigits: 2,
|
|
707
|
-
maximumFractionDigits: 2
|
|
708
|
-
}),
|
|
709
|
-
classNames: [
|
|
710
|
-
...classNames,
|
|
711
|
-
defaultNumber
|
|
712
|
-
]
|
|
713
|
-
};
|
|
714
|
-
}
|
|
715
|
-
//
|
|
716
|
-
// Dates.
|
|
717
|
-
//
|
|
718
|
-
case import_schema.FieldValueType.DateTime: {
|
|
719
|
-
const date = this._model.toLocalDate(value);
|
|
720
|
-
return {
|
|
721
|
-
value: date.toLocaleString(locales),
|
|
722
|
-
classNames
|
|
723
|
-
};
|
|
724
|
-
}
|
|
725
|
-
case import_schema.FieldValueType.Date: {
|
|
726
|
-
const date = this._model.toLocalDate(value);
|
|
727
|
-
return {
|
|
728
|
-
value: date.toLocaleDateString(locales),
|
|
729
|
-
classNames
|
|
730
|
-
};
|
|
731
|
-
}
|
|
732
|
-
case import_schema.FieldValueType.Time: {
|
|
733
|
-
const date = this._model.toLocalDate(value);
|
|
734
|
-
return {
|
|
735
|
-
value: date.toLocaleTimeString(locales),
|
|
736
|
-
classNames
|
|
737
|
-
};
|
|
738
|
-
}
|
|
739
|
-
default: {
|
|
740
|
-
return {
|
|
741
|
-
value: String(value),
|
|
742
|
-
classNames
|
|
743
|
-
};
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
};
|
|
748
670
|
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/model/sheet-model.ts";
|
|
749
671
|
var typeMap = {
|
|
750
|
-
BOOLEAN:
|
|
751
|
-
NUMBER_RAW:
|
|
752
|
-
NUMBER_PERCENT:
|
|
753
|
-
NUMBER_CURRENCY:
|
|
754
|
-
NUMBER_DATETIME:
|
|
755
|
-
NUMBER_DATE:
|
|
756
|
-
NUMBER_TIME:
|
|
672
|
+
BOOLEAN: import_schema.FieldValueType.Boolean,
|
|
673
|
+
NUMBER_RAW: import_schema.FieldValueType.Number,
|
|
674
|
+
NUMBER_PERCENT: import_schema.FieldValueType.Percent,
|
|
675
|
+
NUMBER_CURRENCY: import_schema.FieldValueType.Currency,
|
|
676
|
+
NUMBER_DATETIME: import_schema.FieldValueType.DateTime,
|
|
677
|
+
NUMBER_DATE: import_schema.FieldValueType.Date,
|
|
678
|
+
NUMBER_TIME: import_schema.FieldValueType.Time
|
|
757
679
|
};
|
|
758
680
|
var getTopLeft = (range) => {
|
|
759
681
|
const to = range.to ?? range.from;
|
|
@@ -1223,14 +1145,9 @@ var SheetModel = class extends import_context.Resource {
|
|
|
1223
1145
|
return this._node.graph.hf.numberToTime(num);
|
|
1224
1146
|
}
|
|
1225
1147
|
};
|
|
1226
|
-
var useFormattingModel = (model) => {
|
|
1227
|
-
return (0, import_react6.useMemo)(() => model && new FormattingModel(model), [
|
|
1228
|
-
model
|
|
1229
|
-
]);
|
|
1230
|
-
};
|
|
1231
1148
|
var useSheetModel = (graph, sheet, { readonly } = {}) => {
|
|
1232
|
-
const [model, setModel] = (0,
|
|
1233
|
-
(0,
|
|
1149
|
+
const [model, setModel] = (0, import_react6.useState)();
|
|
1150
|
+
(0, import_react6.useEffect)(() => {
|
|
1234
1151
|
if (!graph || !sheet) {
|
|
1235
1152
|
return;
|
|
1236
1153
|
}
|
|
@@ -1254,7 +1171,7 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
|
|
|
1254
1171
|
return model;
|
|
1255
1172
|
};
|
|
1256
1173
|
var useUpdateFocusedCellOnThreadSelection = (model, grid) => {
|
|
1257
|
-
const handleScrollIntoView = (0,
|
|
1174
|
+
const handleScrollIntoView = (0, import_react7.useCallback)(({ action, data }) => {
|
|
1258
1175
|
switch (action) {
|
|
1259
1176
|
case import_app_framework.LayoutAction.SCROLL_INTO_VIEW: {
|
|
1260
1177
|
if (!data?.id || data?.cursor === void 0 || data?.id !== (0, import_echo2.fullyQualifiedId)(model.sheet)) {
|
|
@@ -1274,15 +1191,15 @@ var useUpdateFocusedCellOnThreadSelection = (model, grid) => {
|
|
|
1274
1191
|
};
|
|
1275
1192
|
var useSelectThreadOnCellFocus = (model, cursor) => {
|
|
1276
1193
|
const dispatch = (0, import_app_framework.useIntentDispatcher)();
|
|
1277
|
-
const activeThreads = (0,
|
|
1194
|
+
const activeThreads = (0, import_react7.useMemo)(() => model.sheet.threads?.filter((thread) => !!thread && thread.status === "active") ?? [], [
|
|
1278
1195
|
// TODO(thure): Surely we can find a better dependency for this…
|
|
1279
1196
|
JSON.stringify(model.sheet.threads)
|
|
1280
1197
|
]);
|
|
1281
|
-
const activeThreadAddresses = (0,
|
|
1198
|
+
const activeThreadAddresses = (0, import_react7.useMemo)(() => activeThreads.map((thread) => thread.anchor).filter((anchor) => anchor !== void 0).map((anchor) => addressFromIndex(model.sheet, anchor)), [
|
|
1282
1199
|
activeThreads,
|
|
1283
1200
|
model.sheet
|
|
1284
1201
|
]);
|
|
1285
|
-
const selectClosestThread = (0,
|
|
1202
|
+
const selectClosestThread = (0, import_react7.useCallback)((cellAddress) => {
|
|
1286
1203
|
if (!cellAddress || !activeThreads) {
|
|
1287
1204
|
return;
|
|
1288
1205
|
}
|
|
@@ -1306,12 +1223,12 @@ var useSelectThreadOnCellFocus = (model, cursor) => {
|
|
|
1306
1223
|
activeThreadAddresses,
|
|
1307
1224
|
model.sheet
|
|
1308
1225
|
]);
|
|
1309
|
-
const debounced = (0,
|
|
1226
|
+
const debounced = (0, import_react7.useMemo)(() => {
|
|
1310
1227
|
return (0, import_async3.debounce)((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
|
|
1311
1228
|
}, [
|
|
1312
1229
|
selectClosestThread
|
|
1313
1230
|
]);
|
|
1314
|
-
(0,
|
|
1231
|
+
(0, import_react7.useEffect)(() => {
|
|
1315
1232
|
if (!cursor) {
|
|
1316
1233
|
return;
|
|
1317
1234
|
}
|
|
@@ -1331,13 +1248,13 @@ var createThreadDecoration = (cellIndex, threadId, sheetId) => {
|
|
|
1331
1248
|
};
|
|
1332
1249
|
};
|
|
1333
1250
|
var useThreadDecorations = (model, decorations) => {
|
|
1334
|
-
const sheet = (0,
|
|
1251
|
+
const sheet = (0, import_react7.useMemo)(() => model.sheet, [
|
|
1335
1252
|
model.sheet
|
|
1336
1253
|
]);
|
|
1337
|
-
const sheetId = (0,
|
|
1254
|
+
const sheetId = (0, import_react7.useMemo)(() => (0, import_echo2.fullyQualifiedId)(sheet), [
|
|
1338
1255
|
sheet
|
|
1339
1256
|
]);
|
|
1340
|
-
(0,
|
|
1257
|
+
(0, import_react7.useEffect)(() => {
|
|
1341
1258
|
const unsubscribe = (0, import_signals_core.effect)(() => {
|
|
1342
1259
|
const activeThreadAnchors = /* @__PURE__ */ new Set();
|
|
1343
1260
|
if (!sheet.threads) {
|
|
@@ -1367,12 +1284,12 @@ var useThreadDecorations = (model, decorations) => {
|
|
|
1367
1284
|
});
|
|
1368
1285
|
};
|
|
1369
1286
|
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
|
|
1370
|
-
var SheetContext = /* @__PURE__ */ (0,
|
|
1287
|
+
var SheetContext = /* @__PURE__ */ (0, import_react8.createContext)(null);
|
|
1371
1288
|
var useSheetContext = () => {
|
|
1372
|
-
const context = (0,
|
|
1289
|
+
const context = (0, import_react8.useContext)(SheetContext);
|
|
1373
1290
|
(0, import_invariant4.invariant)(context, void 0, {
|
|
1374
1291
|
F: __dxlog_file3,
|
|
1375
|
-
L:
|
|
1292
|
+
L: 45,
|
|
1376
1293
|
S: void 0,
|
|
1377
1294
|
A: [
|
|
1378
1295
|
"context",
|
|
@@ -1381,18 +1298,17 @@ var useSheetContext = () => {
|
|
|
1381
1298
|
});
|
|
1382
1299
|
return context;
|
|
1383
1300
|
};
|
|
1384
|
-
var SheetProviderImpl = ({ model,
|
|
1301
|
+
var SheetProviderImpl = ({ model, onInfo, children, __gridScope }) => {
|
|
1385
1302
|
const { id, editing, setEditing } = (0, import_react_ui_grid3.useGridContext)("SheetProvider", __gridScope);
|
|
1386
|
-
const decorations = (0,
|
|
1387
|
-
const [cursor, setCursor] = (0,
|
|
1388
|
-
const [range, setRange] = (0,
|
|
1303
|
+
const decorations = (0, import_react8.useMemo)(() => createDecorations(), []);
|
|
1304
|
+
const [cursor, setCursor] = (0, import_react8.useState)();
|
|
1305
|
+
const [range, setRange] = (0, import_react8.useState)();
|
|
1389
1306
|
useSelectThreadOnCellFocus(model, cursor);
|
|
1390
1307
|
useThreadDecorations(model, decorations);
|
|
1391
|
-
return /* @__PURE__ */
|
|
1308
|
+
return /* @__PURE__ */ import_react8.default.createElement(SheetContext.Provider, {
|
|
1392
1309
|
value: {
|
|
1393
1310
|
id,
|
|
1394
1311
|
model,
|
|
1395
|
-
formatting,
|
|
1396
1312
|
editing,
|
|
1397
1313
|
setEditing,
|
|
1398
1314
|
cursor,
|
|
@@ -1409,12 +1325,10 @@ var SheetProvider = ({ children, graph, sheet, readonly, onInfo }) => {
|
|
|
1409
1325
|
const model = useSheetModel(graph, sheet, {
|
|
1410
1326
|
readonly
|
|
1411
1327
|
});
|
|
1412
|
-
|
|
1413
|
-
return !model || !formatting ? null : /* @__PURE__ */ import_react9.default.createElement(import_react_ui_grid3.Grid.Root, {
|
|
1328
|
+
return !model ? null : /* @__PURE__ */ import_react8.default.createElement(import_react_ui_grid3.Grid.Root, {
|
|
1414
1329
|
id: (0, import_echo3.fullyQualifiedId)(sheet)
|
|
1415
|
-
}, /* @__PURE__ */
|
|
1330
|
+
}, /* @__PURE__ */ import_react8.default.createElement(SheetProviderImpl, {
|
|
1416
1331
|
model,
|
|
1417
|
-
formatting,
|
|
1418
1332
|
onInfo
|
|
1419
1333
|
}, children));
|
|
1420
1334
|
};
|
|
@@ -1453,17 +1367,19 @@ var sheetColDefault = {
|
|
|
1453
1367
|
}
|
|
1454
1368
|
};
|
|
1455
1369
|
var GridSheet = () => {
|
|
1456
|
-
const { id, model,
|
|
1370
|
+
const { id, model, editing, setEditing, setCursor, setRange } = useSheetContext();
|
|
1457
1371
|
const dxGrid = (0, import_react4.useRef)(null);
|
|
1458
1372
|
const rangeNotifier = (0, import_react4.useRef)();
|
|
1459
1373
|
const { hasAttention } = (0, import_react_ui_attention.useAttention)(id);
|
|
1460
1374
|
const handleFocus = (0, import_react4.useCallback)((event) => {
|
|
1461
1375
|
if (!editing) {
|
|
1462
1376
|
const cell = (0, import_react_ui_grid.closestCell)(event.target);
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1377
|
+
if (cell && cell.plane === "grid") {
|
|
1378
|
+
setCursor({
|
|
1379
|
+
col: cell.col,
|
|
1380
|
+
row: cell.row
|
|
1381
|
+
});
|
|
1382
|
+
}
|
|
1467
1383
|
}
|
|
1468
1384
|
}, [
|
|
1469
1385
|
editing
|
|
@@ -1533,7 +1449,7 @@ var GridSheet = () => {
|
|
|
1533
1449
|
}, [
|
|
1534
1450
|
hasAttention
|
|
1535
1451
|
]);
|
|
1536
|
-
const { columns, rows } = useSheetModelDxGridProps(dxGrid, model
|
|
1452
|
+
const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);
|
|
1537
1453
|
const extension = (0, import_react4.useMemo)(() => [
|
|
1538
1454
|
(0, import_react_ui_grid.editorKeys)({
|
|
1539
1455
|
onClose: handleClose,
|
|
@@ -1577,7 +1493,7 @@ var GridSheet = () => {
|
|
|
1577
1493
|
ref: dxGrid
|
|
1578
1494
|
}));
|
|
1579
1495
|
};
|
|
1580
|
-
var SheetContainer = import_react3.default.lazy(() => import("./SheetContainer-
|
|
1496
|
+
var SheetContainer = import_react3.default.lazy(() => import("./SheetContainer-J7XROAMN.cjs"));
|
|
1581
1497
|
var useComputeGraph = (space) => {
|
|
1582
1498
|
const { registry } = (0, import_react2.useContext)(ComputeGraphContext) ?? (0, import_debug.raise)(new Error("Missing ComputeGraphContext"));
|
|
1583
1499
|
const [graph] = (0, import_react_hooks.useAsyncState)(async () => {
|
|
@@ -1603,8 +1519,9 @@ var useComputeGraph = (space) => {
|
|
|
1603
1519
|
compareIndexPositions,
|
|
1604
1520
|
computeGraphFacet,
|
|
1605
1521
|
createSheet,
|
|
1522
|
+
inRange,
|
|
1606
1523
|
rangeToA1Notation,
|
|
1607
1524
|
useComputeGraph,
|
|
1608
1525
|
useSheetContext
|
|
1609
1526
|
});
|
|
1610
|
-
//# sourceMappingURL=chunk-
|
|
1527
|
+
//# sourceMappingURL=chunk-AXQZA2YS.cjs.map
|