@dxos/plugin-sheet 0.6.12-main.f9d0246 → 0.6.12-staging.e11e696

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.
Files changed (114) hide show
  1. package/dist/lib/browser/{SheetContainer-VISF3VUB.mjs → SheetContainer-LG77O4RM.mjs} +11 -10
  2. package/dist/lib/browser/SheetContainer-LG77O4RM.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-ZLJ2GRE2.mjs → chunk-CHQAW4F4.mjs} +55 -33
  4. package/dist/lib/browser/chunk-CHQAW4F4.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-Z2XOOC2R.mjs → chunk-GSV5QNLD.mjs} +183 -159
  6. package/dist/lib/browser/chunk-GSV5QNLD.mjs.map +7 -0
  7. package/dist/lib/browser/graph-M4IQ76QX.mjs +33 -0
  8. package/dist/lib/browser/index.mjs +37 -15
  9. package/dist/lib/browser/index.mjs.map +4 -4
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/node/{SheetContainer-2MEALQWW.cjs → SheetContainer-OZ7DHH4L.cjs} +18 -17
  12. package/dist/lib/node/SheetContainer-OZ7DHH4L.cjs.map +7 -0
  13. package/dist/lib/node/{chunk-6DQABRGJ.cjs → chunk-5FTFZL5W.cjs} +57 -35
  14. package/dist/lib/node/chunk-5FTFZL5W.cjs.map +7 -0
  15. package/dist/lib/node/{chunk-P5QYYEHQ.cjs → chunk-5XPK2V4A.cjs} +186 -158
  16. package/dist/lib/node/chunk-5XPK2V4A.cjs.map +7 -0
  17. package/dist/lib/node/graph-Q3N2X26H.cjs +55 -0
  18. package/dist/lib/node/graph-Q3N2X26H.cjs.map +7 -0
  19. package/dist/lib/node/index.cjs +38 -18
  20. package/dist/lib/node/index.cjs.map +4 -4
  21. package/dist/lib/node/meta.json +1 -1
  22. package/dist/lib/node-esm/{SheetContainer-RPSUSXWS.mjs → SheetContainer-4XS2G25Z.mjs} +11 -10
  23. package/dist/lib/node-esm/SheetContainer-4XS2G25Z.mjs.map +7 -0
  24. package/dist/lib/node-esm/{chunk-4MM7THJW.mjs → chunk-5WPZCXNS.mjs} +183 -159
  25. package/dist/lib/node-esm/chunk-5WPZCXNS.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-5RLTCIE2.mjs → chunk-KK3XL37M.mjs} +55 -33
  27. package/dist/lib/node-esm/chunk-KK3XL37M.mjs.map +7 -0
  28. package/dist/lib/node-esm/graph-SMPUMOV2.mjs +34 -0
  29. package/dist/lib/node-esm/index.mjs +37 -15
  30. package/dist/lib/node-esm/index.mjs.map +4 -4
  31. package/dist/lib/node-esm/meta.json +1 -1
  32. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  33. package/dist/types/src/components/CellEditor/CellEditor.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/CellEditor/extension.d.ts.map +1 -1
  35. package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -1
  36. package/dist/types/src/components/Sheet/Sheet.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/SheetContainer.d.ts.map +1 -1
  38. package/dist/types/src/components/index.d.ts.map +1 -1
  39. package/dist/types/src/extensions/compute.d.ts +2 -5
  40. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  41. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  42. package/dist/types/src/graph/compute-graph-registry.d.ts +34 -0
  43. package/dist/types/src/graph/compute-graph-registry.d.ts.map +1 -0
  44. package/dist/types/src/graph/compute-graph.d.ts +13 -33
  45. package/dist/types/src/graph/compute-graph.d.ts.map +1 -1
  46. package/dist/types/src/graph/compute-node.d.ts.map +1 -1
  47. package/dist/types/src/graph/{async-function.d.ts → functions/async-function.d.ts} +6 -3
  48. package/dist/types/src/graph/functions/async-function.d.ts.map +1 -0
  49. package/dist/types/src/graph/functions/edge-function.d.ts +21 -0
  50. package/dist/types/src/graph/functions/edge-function.d.ts.map +1 -0
  51. package/dist/types/src/graph/functions/function-defs.d.ts.map +1 -0
  52. package/dist/types/src/graph/functions/index.d.ts +4 -0
  53. package/dist/types/src/graph/functions/index.d.ts.map +1 -0
  54. package/dist/types/src/graph/index.d.ts +2 -1
  55. package/dist/types/src/graph/index.d.ts.map +1 -1
  56. package/dist/types/src/graph/testing/index.d.ts +2 -1
  57. package/dist/types/src/graph/testing/index.d.ts.map +1 -1
  58. package/dist/types/src/graph/testing/test-builder.d.ts +15 -0
  59. package/dist/types/src/graph/testing/test-builder.d.ts.map +1 -0
  60. package/dist/types/src/graph/testing/test-plugin.d.ts +36 -0
  61. package/dist/types/src/graph/testing/test-plugin.d.ts.map +1 -0
  62. package/dist/types/src/hooks/useComputeGraph.d.ts.map +1 -1
  63. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  64. package/dist/types/src/model/sheet-model.test.d.ts +2 -0
  65. package/dist/types/src/model/sheet-model.test.d.ts.map +1 -0
  66. package/package.json +40 -39
  67. package/src/SheetPlugin.tsx +12 -10
  68. package/src/components/CellEditor/CellEditor.stories.tsx +1 -2
  69. package/src/components/CellEditor/extension.test.ts +0 -1
  70. package/src/components/CellEditor/extension.ts +4 -3
  71. package/src/components/Sheet/Sheet.stories.tsx +2 -2
  72. package/src/components/Sheet/Sheet.tsx +30 -14
  73. package/src/components/SheetContainer.tsx +11 -13
  74. package/src/extensions/compute.stories.tsx +9 -11
  75. package/src/extensions/compute.ts +66 -50
  76. package/src/graph/compute-graph-registry.ts +90 -0
  77. package/src/graph/compute-graph.stories.tsx +2 -2
  78. package/src/graph/compute-graph.test.ts +31 -71
  79. package/src/graph/compute-graph.ts +45 -116
  80. package/src/graph/compute-node.ts +1 -0
  81. package/src/graph/{async-function.ts → functions/async-function.ts} +10 -9
  82. package/src/graph/{edge-function.ts → functions/edge-function.ts} +13 -11
  83. package/src/graph/functions/index.ts +7 -0
  84. package/src/graph/hyperformula.test.ts +1 -2
  85. package/src/graph/index.ts +2 -1
  86. package/src/graph/testing/index.ts +2 -1
  87. package/src/graph/testing/test-builder.ts +54 -0
  88. package/src/graph/testing/{custom-function.ts → test-plugin.ts} +38 -12
  89. package/src/hooks/useComputeGraph.ts +8 -1
  90. package/src/model/sheet-model.test.ts +59 -0
  91. package/src/model/sheet-model.ts +4 -2
  92. package/dist/lib/browser/SheetContainer-VISF3VUB.mjs.map +0 -7
  93. package/dist/lib/browser/chunk-Z2XOOC2R.mjs.map +0 -7
  94. package/dist/lib/browser/chunk-ZLJ2GRE2.mjs.map +0 -7
  95. package/dist/lib/browser/graph-4XFKIHRL.mjs +0 -21
  96. package/dist/lib/node/SheetContainer-2MEALQWW.cjs.map +0 -7
  97. package/dist/lib/node/chunk-6DQABRGJ.cjs.map +0 -7
  98. package/dist/lib/node/chunk-P5QYYEHQ.cjs.map +0 -7
  99. package/dist/lib/node/graph-2LRDUXBZ.cjs +0 -43
  100. package/dist/lib/node/graph-2LRDUXBZ.cjs.map +0 -7
  101. package/dist/lib/node-esm/SheetContainer-RPSUSXWS.mjs.map +0 -7
  102. package/dist/lib/node-esm/chunk-4MM7THJW.mjs.map +0 -7
  103. package/dist/lib/node-esm/chunk-5RLTCIE2.mjs.map +0 -7
  104. package/dist/lib/node-esm/graph-WG5EKOMO.mjs +0 -22
  105. package/dist/types/src/graph/async-function.d.ts.map +0 -1
  106. package/dist/types/src/graph/edge-function.d.ts +0 -20
  107. package/dist/types/src/graph/edge-function.d.ts.map +0 -1
  108. package/dist/types/src/graph/function-defs.d.ts.map +0 -1
  109. package/dist/types/src/graph/testing/custom-function.d.ts +0 -23
  110. package/dist/types/src/graph/testing/custom-function.d.ts.map +0 -1
  111. /package/dist/lib/browser/{graph-4XFKIHRL.mjs.map → graph-M4IQ76QX.mjs.map} +0 -0
  112. /package/dist/lib/node-esm/{graph-WG5EKOMO.mjs.map → graph-SMPUMOV2.mjs.map} +0 -0
  113. /package/dist/types/src/graph/{function-defs.d.ts → functions/function-defs.d.ts} +0 -0
  114. /package/src/graph/{function-defs.ts → functions/function-defs.ts} +0 -0
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-IU2L277A.mjs";
9
9
  import {
10
10
  createSheetName
11
- } from "./chunk-4MM7THJW.mjs";
11
+ } from "./chunk-5WPZCXNS.mjs";
12
12
 
13
13
  // packages/plugins/plugin-sheet/src/components/Sheet/Sheet.tsx
14
14
  import { DndContext, DragOverlay, KeyboardSensor, MouseSensor, TouchSensor, useDraggable, useDroppable, useSensor, useSensors } from "@dnd-kit/core";
@@ -22,7 +22,7 @@ import { useResizeDetector } from "react-resize-detector";
22
22
  import { debounce as debounce2 } from "@dxos/async";
23
23
  import { fullyQualifiedId as fullyQualifiedId2, createDocAccessor } from "@dxos/client/echo";
24
24
  import { log as log2 } from "@dxos/log";
25
- import { createAttendableAttributes, useHasAttention } from "@dxos/react-ui-attention";
25
+ import { ATTENABLE_ATTRIBUTE, useAttendableAttributes, useAttention, useAttentionPath } from "@dxos/react-ui-attention";
26
26
  import { mx as mx2 } from "@dxos/react-ui-theme";
27
27
 
28
28
  // packages/plugins/plugin-sheet/src/components/Sheet/grid.ts
@@ -545,12 +545,18 @@ var ComputeGraphContextProvider = ({ registry, children }) => {
545
545
  };
546
546
 
547
547
  // packages/plugins/plugin-sheet/src/components/index.ts
548
- var SheetContainer = React2.lazy(() => import("./SheetContainer-RPSUSXWS.mjs"));
548
+ var SheetContainer = React2.lazy(() => import("./SheetContainer-4XS2G25Z.mjs"));
549
549
 
550
550
  // packages/plugins/plugin-sheet/src/hooks/useComputeGraph.ts
551
551
  var useComputeGraph = (space) => {
552
552
  const { registry } = useContext(ComputeGraphContext) ?? raise(new Error("Missing ComputeGraphContext"));
553
- const [graph] = useAsyncState(async () => space && registry.getOrCreateGraph(space), [
553
+ const [graph] = useAsyncState(async () => {
554
+ if (space) {
555
+ const graph2 = registry.getOrCreateGraph(space);
556
+ await graph2.open();
557
+ return graph2;
558
+ }
559
+ }, [
554
560
  space,
555
561
  registry
556
562
  ]);
@@ -674,6 +680,7 @@ var FormattingModel = class {
674
680
  // packages/plugins/plugin-sheet/src/model/sheet-model.ts
675
681
  import { Event } from "@dxos/async";
676
682
  import { Resource } from "@dxos/context";
683
+ import { getTypename } from "@dxos/echo-schema";
677
684
  import { invariant as invariant2 } from "@dxos/invariant";
678
685
  import { PublicKey } from "@dxos/keys";
679
686
  import { log } from "@dxos/log";
@@ -736,12 +743,16 @@ var SheetModel = class extends Resource {
736
743
  id: this.id
737
744
  }, {
738
745
  F: __dxlog_file2,
739
- L: 103,
746
+ L: 104,
740
747
  S: this,
741
748
  C: (f, a) => f(...a)
742
749
  });
743
750
  initialize(this._sheet);
744
- this._node = await this._graph.getOrCreateNode(createSheetName(this._sheet.id));
751
+ this._node = this._graph.getOrCreateNode(createSheetName({
752
+ type: getTypename(this._sheet),
753
+ id: this._sheet.id
754
+ }));
755
+ await this._node.open();
745
756
  const unsubscribe = this._node.update.on((event) => this.update.emit(event));
746
757
  this._ctx.onDispose(unsubscribe);
747
758
  this.reset();
@@ -754,7 +765,7 @@ var SheetModel = class extends Resource {
754
765
  reset() {
755
766
  invariant2(this._node, void 0, {
756
767
  F: __dxlog_file2,
757
- L: 122,
768
+ L: 124,
758
769
  S: this,
759
770
  A: [
760
771
  "this._node",
@@ -765,7 +776,7 @@ var SheetModel = class extends Resource {
765
776
  Object.entries(this._sheet.cells).forEach(([key, { value }]) => {
766
777
  invariant2(this._node, void 0, {
767
778
  F: __dxlog_file2,
768
- L: 125,
779
+ L: 127,
769
780
  S: this,
770
781
  A: [
771
782
  "this._node",
@@ -811,7 +822,7 @@ var SheetModel = class extends Resource {
811
822
  clear(range) {
812
823
  invariant2(this._node, void 0, {
813
824
  F: __dxlog_file2,
814
- L: 167,
825
+ L: 169,
815
826
  S: this,
816
827
  A: [
817
828
  "this._node",
@@ -829,7 +840,7 @@ var SheetModel = class extends Resource {
829
840
  cut(range) {
830
841
  invariant2(this._node, void 0, {
831
842
  F: __dxlog_file2,
832
- L: 178,
843
+ L: 180,
833
844
  S: this,
834
845
  A: [
835
846
  "this._node",
@@ -845,7 +856,7 @@ var SheetModel = class extends Resource {
845
856
  copy(range) {
846
857
  invariant2(this._node, void 0, {
847
858
  F: __dxlog_file2,
848
- L: 187,
859
+ L: 189,
849
860
  S: this,
850
861
  A: [
851
862
  "this._node",
@@ -857,7 +868,7 @@ var SheetModel = class extends Resource {
857
868
  paste(cell) {
858
869
  invariant2(this._node, void 0, {
859
870
  F: __dxlog_file2,
860
- L: 192,
871
+ L: 194,
861
872
  S: this,
862
873
  A: [
863
874
  "this._node",
@@ -884,7 +895,7 @@ var SheetModel = class extends Resource {
884
895
  undo() {
885
896
  invariant2(this._node, void 0, {
886
897
  F: __dxlog_file2,
887
- L: 207,
898
+ L: 209,
888
899
  S: this,
889
900
  A: [
890
901
  "this._node",
@@ -898,7 +909,7 @@ var SheetModel = class extends Resource {
898
909
  redo() {
899
910
  invariant2(this._node, void 0, {
900
911
  F: __dxlog_file2,
901
- L: 215,
912
+ L: 217,
902
913
  S: this,
903
914
  A: [
904
915
  "this._node",
@@ -942,7 +953,7 @@ var SheetModel = class extends Resource {
942
953
  getValue(cell) {
943
954
  invariant2(this._node, void 0, {
944
955
  F: __dxlog_file2,
945
- L: 258,
956
+ L: 260,
946
957
  S: this,
947
958
  A: [
948
959
  "this._node",
@@ -961,7 +972,7 @@ var SheetModel = class extends Resource {
961
972
  getValueType(cell) {
962
973
  invariant2(this._node, void 0, {
963
974
  F: __dxlog_file2,
964
- L: 271,
975
+ L: 273,
965
976
  S: this,
966
977
  A: [
967
978
  "this._node",
@@ -978,7 +989,7 @@ var SheetModel = class extends Resource {
978
989
  setValue(cell, value) {
979
990
  invariant2(this._node, void 0, {
980
991
  F: __dxlog_file2,
981
- L: 281,
992
+ L: 283,
982
993
  S: this,
983
994
  A: [
984
995
  "this._node",
@@ -1075,7 +1086,7 @@ var SheetModel = class extends Resource {
1075
1086
  mapFormulaRefsToIndices(formula) {
1076
1087
  invariant2(formula.charAt(0) === "=", void 0, {
1077
1088
  F: __dxlog_file2,
1078
- L: 370,
1089
+ L: 372,
1079
1090
  S: this,
1080
1091
  A: [
1081
1092
  "formula.charAt(0) === '='",
@@ -1092,7 +1103,7 @@ var SheetModel = class extends Resource {
1092
1103
  mapFormulaIndicesToRefs(formula) {
1093
1104
  invariant2(formula.charAt(0) === "=", void 0, {
1094
1105
  F: __dxlog_file2,
1095
- L: 380,
1106
+ L: 382,
1096
1107
  S: this,
1097
1108
  A: [
1098
1109
  "formula.charAt(0) === '='",
@@ -1118,7 +1129,7 @@ var SheetModel = class extends Resource {
1118
1129
  toDateTime(num) {
1119
1130
  invariant2(this._node, void 0, {
1120
1131
  F: __dxlog_file2,
1121
- L: 401,
1132
+ L: 403,
1122
1133
  S: this,
1123
1134
  A: [
1124
1135
  "this._node",
@@ -1130,7 +1141,7 @@ var SheetModel = class extends Resource {
1130
1141
  toDate(num) {
1131
1142
  invariant2(this._node, void 0, {
1132
1143
  F: __dxlog_file2,
1133
- L: 406,
1144
+ L: 408,
1134
1145
  S: this,
1135
1146
  A: [
1136
1147
  "this._node",
@@ -1142,7 +1153,7 @@ var SheetModel = class extends Resource {
1142
1153
  toTime(num) {
1143
1154
  invariant2(this._node, void 0, {
1144
1155
  F: __dxlog_file2,
1145
- L: 411,
1156
+ L: 413,
1146
1157
  S: this,
1147
1158
  A: [
1148
1159
  "this._node",
@@ -1587,10 +1598,10 @@ var CellEditor = ({ value, extension, autoFocus, onBlur, variant = "legacy", box
1587
1598
  // packages/plugins/plugin-sheet/src/components/CellEditor/extension.ts
1588
1599
  import { acceptCompletion, autocompletion, completionStatus, startCompletion } from "@codemirror/autocomplete";
1589
1600
  import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
1590
- import { Facet } from "@codemirror/state";
1591
1601
  import { ViewPlugin, keymap as keymap2 } from "@codemirror/view";
1592
1602
  import { tags } from "@lezer/highlight";
1593
1603
  import { spreadsheet } from "codemirror-lang-spreadsheet";
1604
+ import { singleValueFacet } from "@dxos/react-ui-editor/state";
1594
1605
  import { mx } from "@dxos/react-ui-theme";
1595
1606
  var highlightStyles = HighlightStyle.define([
1596
1607
  // Function.
@@ -1622,7 +1633,7 @@ var highlightStyles = HighlightStyle.define([
1622
1633
  class: "text-unAccent"
1623
1634
  }
1624
1635
  ]);
1625
- var languageFacet = Facet.define();
1636
+ var languageFacet = singleValueFacet();
1626
1637
  var sheetExtension = ({ functions = [] }) => {
1627
1638
  const { extension, language } = spreadsheet({
1628
1639
  idiom: "en-US",
@@ -1739,7 +1750,7 @@ var rangeExtension = (onInit) => {
1739
1750
  update(view2) {
1740
1751
  const { anchor } = view2.state.selection.ranges[0];
1741
1752
  activeRange = void 0;
1742
- const [language] = view2.state.facet(languageFacet);
1753
+ const language = view2.state.facet(languageFacet);
1743
1754
  const { topNode } = language.parser.parse(view2.state.doc.toString());
1744
1755
  visitTree(topNode, ({ type, from, to }) => {
1745
1756
  if (from <= anchor && to >= anchor) {
@@ -2303,7 +2314,7 @@ var SheetGrid = /* @__PURE__ */ forwardRef(({ size, rows, columns, rowSizes, col
2303
2314
  id: model.id
2304
2315
  }, {
2305
2316
  F: __dxlog_file4,
2306
- L: 737,
2317
+ L: 738,
2307
2318
  S: void 0,
2308
2319
  C: (f, a) => f(...a)
2309
2320
  });
@@ -2421,8 +2432,7 @@ var SheetGrid = /* @__PURE__ */ forwardRef(({ size, rows, columns, rowSizes, col
2421
2432
  columnSizes
2422
2433
  });
2423
2434
  const id = fullyQualifiedId2(model.sheet);
2424
- const attendableAttrs = createAttendableAttributes(id);
2425
- const hasAttention = useHasAttention(id);
2435
+ const { hasAttention } = useAttention(id);
2426
2436
  return /* @__PURE__ */ React6.createElement("div", {
2427
2437
  ref: containerRef,
2428
2438
  role: "grid",
@@ -2509,13 +2519,25 @@ var SheetGrid = /* @__PURE__ */ forwardRef(({ size, rows, columns, rowSizes, col
2509
2519
  }
2510
2520
  });
2511
2521
  });
2512
- }))), /* @__PURE__ */ createPortal(/* @__PURE__ */ React6.createElement("input", {
2522
+ }))), /* @__PURE__ */ createPortal(/* @__PURE__ */ React6.createElement(SheetInput, {
2513
2523
  ref: inputRef,
2514
- autoFocus: true,
2524
+ id,
2525
+ onKeyDown: handleKeyDown
2526
+ }), document.body));
2527
+ });
2528
+ var SheetInput = /* @__PURE__ */ forwardRef(({ id, onKeyDown }, forwardedRef) => {
2529
+ const path = useAttentionPath();
2530
+ const attendableAttrs = useAttendableAttributes(id);
2531
+ return path.toReversed().reduce((acc, part) => {
2532
+ return /* @__PURE__ */ React6.createElement("div", {
2533
+ [ATTENABLE_ATTRIBUTE]: part
2534
+ }, acc);
2535
+ }, /* @__PURE__ */ React6.createElement("input", {
2536
+ ref: forwardedRef,
2515
2537
  className: "absolute w-[1px] h-[1px] bg-transparent outline-none border-none caret-transparent",
2516
- onKeyDown: handleKeyDown,
2538
+ onKeyDown,
2517
2539
  ...attendableAttrs
2518
- }), document.body));
2540
+ }));
2519
2541
  });
2520
2542
  var SelectionOverlay = ({ root }) => {
2521
2543
  const { range } = useSheetContext();
@@ -2681,4 +2703,4 @@ export {
2681
2703
  Sheet,
2682
2704
  SheetContainer
2683
2705
  };
2684
- //# sourceMappingURL=chunk-5RLTCIE2.mjs.map
2706
+ //# sourceMappingURL=chunk-KK3XL37M.mjs.map