@damiro/stylo 0.19.0 → 0.20.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.
Files changed (37) hide show
  1. package/dist/{InPlaceView-D2GIV1A-.js → InPlaceView-AZ_ufoP3.js} +634 -446
  2. package/dist/InPlaceView-AZ_ufoP3.js.map +1 -0
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/inplace/InPlaceView.d.ts.map +1 -1
  6. package/dist/inplace/config.d.ts +4 -2
  7. package/dist/inplace/config.d.ts.map +1 -1
  8. package/dist/inplace/context-menu-actions.d.ts +1 -1
  9. package/dist/inplace/context-menu-actions.d.ts.map +1 -1
  10. package/dist/inplace/extension.d.ts +4 -2
  11. package/dist/inplace/extension.d.ts.map +1 -1
  12. package/dist/inplace/host-cell.d.ts +5 -1
  13. package/dist/inplace/host-cell.d.ts.map +1 -1
  14. package/dist/inplace/host-items.d.ts +2 -0
  15. package/dist/inplace/host-items.d.ts.map +1 -1
  16. package/dist/inplace/selection-rect.d.ts +11 -0
  17. package/dist/inplace/selection-rect.d.ts.map +1 -0
  18. package/dist/inplace/table-cell-dom.d.ts +3 -2
  19. package/dist/inplace/table-cell-dom.d.ts.map +1 -1
  20. package/dist/inplace/table-cell-marks.d.ts +50 -0
  21. package/dist/inplace/table-cell-marks.d.ts.map +1 -0
  22. package/dist/inplace/table-marks-plugin.d.ts +12 -0
  23. package/dist/inplace/table-marks-plugin.d.ts.map +1 -0
  24. package/dist/inplace/table-widget-render.d.ts +6 -0
  25. package/dist/inplace/table-widget-render.d.ts.map +1 -1
  26. package/dist/inplace/table-widget.d.ts +8 -0
  27. package/dist/inplace/table-widget.d.ts.map +1 -1
  28. package/dist/stylo.js +2 -2
  29. package/dist/types/inplace.d.ts +26 -2
  30. package/dist/types/inplace.d.ts.map +1 -1
  31. package/dist/types.d.ts +1 -1
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/{useCodeMirror-Fn6qEfMx.js → useCodeMirror-DbhMZGZ7.js} +334 -322
  34. package/dist/useCodeMirror-DbhMZGZ7.js.map +1 -0
  35. package/package.json +1 -1
  36. package/dist/InPlaceView-D2GIV1A-.js.map +0 -1
  37. package/dist/useCodeMirror-Fn6qEfMx.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { Stylo } from "./Stylo";
2
2
  export { splitFrontmatter } from "./frontmatter";
3
- export type { CodeLanguages, EmbedSource, FrontmatterDisplay, InPlaceConfig, InPlaceDecorationToggles, ResolveErrorInfo, RevealMode, SelectionUI, StyloHandle, StyloMode, StyloProps, TableEditing, TagCompletion, TagSource, TaskToggleInfo, ToolbarCommandId, ToolbarConfig, ToolbarCustomItem, ToolbarItem, WikiLinkCompletion, WikiLinkSource, } from "./types";
3
+ export type { CodeLanguages, EmbedSource, FrontmatterDisplay, CellMark, InPlaceConfig, InPlaceDecorationToggles, ResolveErrorInfo, RevealMode, SelectionUI, StyloHandle, StyloMode, StyloProps, TableEditing, TagCompletion, TagSource, TaskToggleInfo, ToolbarCommandId, ToolbarConfig, ToolbarCustomItem, ToolbarItem, WikiLinkCompletion, WikiLinkSource, } from "./types";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,YAAY,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,YAAY,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"InPlaceView.d.ts","sourceRoot":"","sources":["../../src/inplace/InPlaceView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAKlD,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,cAAc,EACf,MAAM,UAAU,CAAA;AAOjB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,qDAAqD;IACrD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,uDAAuD;IACvD,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,qDAAqD;IACrD,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACjE,6CAA6C;IAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAA;IAChD,gFAAgF;IAChF,cAAc,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,kFAAkF;IAClF,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;KAAE,KAAK,SAAS,CAAA;CAC/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,eAAe,EACf,WAAW,EACX,OAAO,EACP,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,EACd,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,EAAE,gBAAgB,+BA+ElB"}
1
+ {"version":3,"file":"InPlaceView.d.ts","sourceRoot":"","sources":["../../src/inplace/InPlaceView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAKlD,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,cAAc,EACf,MAAM,UAAU,CAAA;AAOjB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,qDAAqD;IACrD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,uDAAuD;IACvD,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,qDAAqD;IACrD,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACjE,6CAA6C;IAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAA;IAChD,gFAAgF;IAChF,cAAc,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,kFAAkF;IAClF,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;KAAE,KAAK,SAAS,CAAA;CAC/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,eAAe,EACf,WAAW,EACX,OAAO,EACP,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,EACd,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,EAAE,gBAAgB,+BAmFlB"}
@@ -1,5 +1,5 @@
1
- import { Facet } from "@codemirror/state";
2
- import type { ContextMenuItem, InPlaceConfig, InPlaceDecorationToggles, MenuGroupId, RevealMode, SelectionUI, TableEditing, ToolbarCommandId } from "../types";
1
+ import { type EditorState, Facet } from "@codemirror/state";
2
+ import type { CellMark, ContextMenuItem, InPlaceConfig, InPlaceDecorationToggles, MenuGroupId, RevealMode, SelectionUI, TableEditing, ToolbarCommandId } from "../types";
3
3
  import type { EmbedRegistry } from "./embed-registry";
4
4
  /** `InPlaceDecorationToggles` with every key resolved to a concrete boolean. */
5
5
  export type ResolvedToggles = Required<InPlaceDecorationToggles>;
@@ -50,6 +50,8 @@ export declare function resolveContextMenu(c: InPlaceConfig["contextMenu"]): {
50
50
  * Seeded by `inPlaceExtension`.
51
51
  */
52
52
  export declare const hostItemsFacet: Facet<() => ContextMenuItem[], () => ContextMenuItem[]>;
53
+ /** The host's `inPlace.cellMarks`, or none. Seeded by `inPlaceExtension`. */
54
+ export declare const cellMarksFacet: Facet<(state: EditorState) => readonly CellMark[], (state: EditorState) => readonly CellMark[]>;
53
55
  /**
54
56
  * Ordered right-click menu groups. Seeded once by `inPlaceExtension`; read by
55
57
  * `context-menu-actions.ts`.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/inplace/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EACjB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,gFAAgF;AAChF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAA;AAkBhE,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,eAAe,CAEtE;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,+EAE7B,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,mDAE7B,CAAA;AAEF,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,mCAE5B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,+BAE1B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,gBAChB,MAAM,KAAK,IAAI,kBACf,MAAM,KAAK,IAAI,SAGvB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yBAE7B,CAAA;AAEF,gDAAgD;AAChD,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAO5C,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,EAAE,gBAAgB,EAQzD,CAAA;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG;IACnE,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,EAAE,eAAe,EAAE,CAAA;CACzB,CAQA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,cAAsB,eAAe,EAAE,QAAQ,eAAe,EAAE,CAEzF,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qCAE1B,CAAA;AAEF,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAIrF;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,+CAEjC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,iCAE3B,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/inplace/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EACjB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,gFAAgF;AAChF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAA;AAkBhE,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,eAAe,CAEtE;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,+EAE7B,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,mDAE7B,CAAA;AAEF,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,mCAE5B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,+BAE1B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,gBAChB,MAAM,KAAK,IAAI,kBACf,MAAM,KAAK,IAAI,SAGvB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yBAE7B,CAAA;AAEF,gDAAgD;AAChD,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAO5C,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,EAAE,gBAAgB,EAQzD,CAAA;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG;IACnE,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,EAAE,eAAe,EAAE,CAAA;CACzB,CAQA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,cAAsB,eAAe,EAAE,QAAQ,eAAe,EAAE,CAEzF,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,cAAc,gBACjB,WAAW,KAAK,SAAS,QAAQ,EAAE,UACnC,WAAW,KAAK,SAAS,QAAQ,EAAE,CAG3C,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qCAE1B,CAAA;AAEF,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAIrF;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,+CAEjC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,iCAE3B,CAAA"}
@@ -32,7 +32,7 @@ export declare function codeBlockRow(view: EditorView): MenuField;
32
32
  * gated by `menuGroups`. Shared by the canvas menu and the table widget's own
33
33
  * structural menu, which appends these under its row / column / align actions.
34
34
  */
35
- export declare function cellSelectionRows(view: EditorView): MenuRow[];
35
+ export declare function cellSelectionRows(view: EditorView, clicked?: HTMLElement): MenuRow[];
36
36
  /**
37
37
  * The right-click menu. `menuGroupsFacet` picks and orders the top-level groups
38
38
  * (`link` / `format` / `paragraph` / `insert` / `clipboard`); `selectionUI`
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-actions.d.ts","sourceRoot":"","sources":["../../src/inplace/context-menu-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAOlD,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAqBxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAK1D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAsBxD;AAgBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,CAW7D;AAkBD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,CAwDpD"}
1
+ {"version":3,"file":"context-menu-actions.d.ts","sourceRoot":"","sources":["../../src/inplace/context-menu-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAOlD,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAsBxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAK1D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAsBxD;AAgBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,CAepF;AAkBD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,CAwDpD"}
@@ -1,5 +1,5 @@
1
- import { type Extension } from "@codemirror/state";
2
- import type { ContextMenuItem, InPlaceConfig } from "../types";
1
+ import { type EditorState, type Extension } from "@codemirror/state";
2
+ import type { CellMark, ContextMenuItem, InPlaceConfig } from "../types";
3
3
  import type { EmbedRegistry } from "./embed-registry";
4
4
  export interface InPlaceOptions {
5
5
  /** Fired when a collapsed `[[wikilink]]` is clicked in the canvas. */
@@ -19,6 +19,8 @@ export interface InPlaceOptions {
19
19
  * from `inPlace.contextMenu` as given at construction.
20
20
  */
21
21
  hostItems?: () => ContextMenuItem[];
22
+ /** Reads the host's table-cell marks; omitted, they come from `inPlace.cellMarks`. */
23
+ cellMarks?: (state: EditorState) => readonly CellMark[];
22
24
  }
23
25
  /**
24
26
  * The complete in-place canvas layer: decoration plugin, display theme, a
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/inplace/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGxD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AA0B9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAWrD,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,iFAAiF;IACjF,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,eAAe,EAAE,CAAA;CACpC;AAWD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,cAAmB,GAAG,SAAS,CA0ErE"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/inplace/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG1E,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AA2BxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAYrD,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,iFAAiF;IACjF,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,eAAe,EAAE,CAAA;IACnC,sFAAsF;IACtF,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS,QAAQ,EAAE,CAAA;CACxD;AAWD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,cAAmB,GAAG,SAAS,CA4ErE"}
@@ -6,5 +6,9 @@
6
6
  * carry straight over.
7
7
  */
8
8
  import type { EditorView } from "@codemirror/view";
9
- export declare function selectCellRange(view: EditorView): void;
9
+ /**
10
+ * Put `cell`'s place in the document into `state.selection`: its selected text
11
+ * when `selected` (the focused cell), else a caret at the start of its content.
12
+ */
13
+ export declare function selectCellRange(view: EditorView, cell: HTMLElement, selected: boolean): void;
10
14
  //# sourceMappingURL=host-cell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host-cell.d.ts","sourceRoot":"","sources":["../../src/inplace/host-cell.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAMlD,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CActD"}
1
+ {"version":3,"file":"host-cell.d.ts","sourceRoot":"","sources":["../../src/inplace/host-cell.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAKlD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAa5F"}
@@ -10,6 +10,8 @@ import type { MenuRow } from "./context-menu";
10
10
  export interface HostRowsContext {
11
11
  /** Whether there is a selection to act on; decides `when`. */
12
12
  selected: boolean;
13
+ /** The screen rectangle of the selection, read as the menu opens; defaults to the editor's. */
14
+ rect?: () => DOMRect;
13
15
  /** Runs right before an item's `run` — e.g. to land a cell selection in the state. */
14
16
  prepare?: () => void;
15
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"host-items.d.ts","sourceRoot":"","sources":["../../src/inplace/host-items.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlD,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAGzD,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,CAAA;IACjB,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAyBD,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,SAAU,UAAU,KAAG,OAIpB,CAAA;AAEhC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,EAAE,CAuB1E"}
1
+ {"version":3,"file":"host-items.d.ts","sourceRoot":"","sources":["../../src/inplace/host-items.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlD,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAIzD,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,CAAA;IACjB,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;IACpB,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAyBD,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,SAAU,UAAU,KAAG,OAIpB,CAAA;AAEhC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,EAAE,CAyB1E"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The screen rectangle of a selection, for a host popover to open beside it.
3
+ * `view.coordsAtPos` inside a table lands on the widget's edge, so a cell's
4
+ * rectangle comes from the DOM selection instead.
5
+ */
6
+ import type { EditorView } from "@codemirror/view";
7
+ /** The editor's main selection (its caret when empty), or the editor's own box. */
8
+ export declare function selectionRect(view: EditorView): DOMRect;
9
+ /** The selected text in `cell` when `selected`, else the cell itself. */
10
+ export declare function cellRect(cell: HTMLElement | null | undefined, selected: boolean): DOMRect;
11
+ //# sourceMappingURL=selection-rect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-rect.d.ts","sourceRoot":"","sources":["../../src/inplace/selection-rect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAgBlD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAWvD;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAOzF"}
@@ -23,8 +23,9 @@ export declare function offsetFromPoint(cell: HTMLElement, x: number, y: number)
23
23
  */
24
24
  export declare function selectWordAtPoint(cell: HTMLElement, x: number, y: number): boolean;
25
25
  /**
26
- * Select `cell`'s first text node from char `offset` to char `head` (both
27
- * clamped). With `head` omitted or equal, the caret is simply parked at `offset`.
26
+ * Select `cell`'s text from char `offset` to char `head` (both clamped; the
27
+ * text may be split over several nodes by host marks). With `head` omitted or
28
+ * equal, the caret is simply parked at `offset`.
28
29
  */
29
30
  export declare function placeCaret(cell: HTMLElement, offset: number, head?: number): void;
30
31
  //# sourceMappingURL=table-cell-dom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-cell-dom.d.ts","sourceRoot":"","sources":["../../src/inplace/table-cell-dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,qFAAqF;AACrF,eAAO,MAAM,MAAM,MAAO,WAAW,KAAG,MAAM,EAAE,EAA4C,CAAA;AAE5F,eAAO,MAAM,QAAQ,SAAU,MAAM,EAAE,EAAE,KAAG,MAAM,EAAE,EAA6C,CAAA;AAEjG,iFAAiF;AACjF,eAAO,MAAM,YAAY,MAAO,MAAM,KAAG,MAAiC,CAAA;AAa1E,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAM7D;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAYhF;AAMD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAa/E;AAID;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAelF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAS,QAgB1E"}
1
+ {"version":3,"file":"table-cell-dom.d.ts","sourceRoot":"","sources":["../../src/inplace/table-cell-dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,qFAAqF;AACrF,eAAO,MAAM,MAAM,MAAO,WAAW,KAAG,MAAM,EAAE,EAA4C,CAAA;AAE5F,eAAO,MAAM,QAAQ,SAAU,MAAM,EAAE,EAAE,KAAG,MAAM,EAAE,EAA6C,CAAA;AAEjG,iFAAiF;AACjF,eAAO,MAAM,YAAY,MAAO,MAAM,KAAG,MAAiC,CAAA;AAsB1E,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAK7D;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAShF;AAMD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAa/E;AAID;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAelF;AAeD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAS,QAe1E"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Host marks inside a table cell. A cell is `contenteditable` DOM outside
3
+ * CodeMirror's decoration system, so a host's `Decoration.mark` never reaches
4
+ * it; instead the host's `CellMark`s (document positions) are cut down to the
5
+ * cell and drawn here as wrapper elements around the characters they cover.
6
+ *
7
+ * Offsets are into the cell's raw string (`rows[r][c]`, `\|` escapes and all).
8
+ * A raw (focused) cell shows that string as one text node, so they apply
9
+ * directly; a rendered cell shows `renderInline`'s output, whose text nodes are
10
+ * aligned back to the raw string by matching forward, skipping the syntax.
11
+ */
12
+ import type { EditorView } from "@codemirror/view";
13
+ import type { CellMark } from "../types";
14
+ export interface CellPaint {
15
+ /** `from`/`to` are offsets into the cell's raw string. */
16
+ marks: {
17
+ from: number;
18
+ to: number;
19
+ class: string;
20
+ attributes?: Record<string, string>;
21
+ }[];
22
+ cellClass: string[];
23
+ }
24
+ /**
25
+ * The marks that touch a cell whose trimmed content starts at document
26
+ * position `base`, as offsets into its raw string (`lead` leading blanks, then
27
+ * `len` characters of content). `null` when none do.
28
+ */
29
+ export declare function cellPaint(marks: readonly CellMark[], base: number, lead: number, len: number): CellPaint | null;
30
+ /**
31
+ * Draw `paint` on `cell`, just painted from `raw`. A mark that covers no
32
+ * rendered character (it sits on a link target, say) marks the whole cell
33
+ * rather than nothing; so does a cell whose text can't be aligned.
34
+ */
35
+ export declare function applyPaint(cell: HTMLElement, raw: string, paint: CellPaint, focused: boolean): void;
36
+ /** What the painter needs from its table widget. */
37
+ export interface PainterHost {
38
+ view: () => EditorView | null;
39
+ /** Whether the table is in the document yet; its place is unknown until then. */
40
+ mounted: () => boolean;
41
+ /** The table's start in the document. */
42
+ from: (view: EditorView) => number;
43
+ raw: (r: number, c: number) => string;
44
+ }
45
+ /**
46
+ * `paintCell`'s `paintOf` for one table. The host's marks and the table's
47
+ * position are read once per editor state, not once per cell.
48
+ */
49
+ export declare function markPainter(host: PainterHost): (r: number, c: number) => CellPaint | null;
50
+ //# sourceMappingURL=table-cell-marks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-cell-marks.d.ts","sourceRoot":"","sources":["../../src/inplace/table-cell-marks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,CAAA;IACzF,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,SAAS,GAAG,IAAI,CAelB;AAuFD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,QAuB5F;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,UAAU,GAAG,IAAI,CAAA;IAC7B,iFAAiF;IACjF,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,yCAAyC;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,CAAA;IAClC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CACtC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,SAAS,GAAG,IAAI,CAezF"}
@@ -0,0 +1,12 @@
1
+ import { ViewPlugin, type ViewUpdate } from "@codemirror/view";
2
+ /**
3
+ * Repaints the host's marks in table cells when they, or the document that
4
+ * their positions point into, change. A table widget owns its DOM, so
5
+ * CodeMirror never redraws it for us. The repaint waits for the measure phase:
6
+ * during `update` the widgets' DOM still shows the previous document.
7
+ */
8
+ export declare const cellMarksPlugin: ViewPlugin<{
9
+ last: string;
10
+ update(update: ViewUpdate): void;
11
+ }, undefined>;
12
+ //# sourceMappingURL=table-marks-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-marks-plugin.d.ts","sourceRoot":"","sources":["../../src/inplace/table-marks-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI9D;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;mBAIT,UAAU;aAgB5B,CAAA"}
@@ -5,11 +5,17 @@
5
5
  * focus state — just the current rows, alignments, and the `embeds` flag.
6
6
  */
7
7
  import type { Align } from "../toolbar/table-grid";
8
+ import { type CellPaint } from "./table-cell-marks";
8
9
  export interface CellGrid {
9
10
  rows: string[][];
10
11
  aligns: Align[];
11
12
  embeds: boolean;
13
+ /** The host marks on cell `(r, c)`, if any. */
14
+ paintOf?: (r: number, c: number) => CellPaint | null;
12
15
  }
16
+ export declare const paintSignature: (paint: CellPaint | null) => string;
17
+ /** Whether `cell` already shows `paint`. */
18
+ export declare const isPainted: (cell: HTMLElement, paint: CellPaint | null) => boolean;
13
19
  /** Draw `cell` from `grid.rows[r][c]` (read off its own `data-r`/`data-c`) —
14
20
  * raw text when `raw`, rendered otherwise. */
15
21
  export declare function paintCell(cell: HTMLTableCellElement, grid: CellGrid, raw: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"table-widget-render.d.ts","sourceRoot":"","sources":["../../src/inplace/table-widget-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAIlD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;IAChB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED;+CAC+C;AAC/C,wBAAgB,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAOxF;AAiBD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAU9E"}
1
+ {"version":3,"file":"table-widget-render.d.ts","sourceRoot":"","sources":["../../src/inplace/table-widget-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAG/D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;IAChB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,SAAS,GAAG,IAAI,CAAA;CACrD;AAKD,eAAO,MAAM,cAAc,UAAW,SAAS,GAAG,IAAI,KAAG,MAA+B,CAAA;AAExF,4CAA4C;AAC5C,eAAO,MAAM,SAAS,SAAU,WAAW,SAAS,SAAS,GAAG,IAAI,KAAG,OACT,CAAA;AAE9D;+CAC+C;AAC/C,wBAAgB,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAexF;AAiBD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAU9E"}
@@ -2,6 +2,8 @@ import { EditorView, WidgetType } from "@codemirror/view";
2
2
  import { type Align } from "../toolbar/table-grid";
3
3
  /** Marks a transaction that came from an editable table widget's own DOM. */
4
4
  export declare const fromTableWidget: import("@codemirror/state").AnnotationType<boolean>;
5
+ /** The widget that owns each mounted editable `<table>`, for `table-marks-plugin.ts`. */
6
+ export declare const tableWidgets: WeakMap<HTMLElement, EditableTableWidget>;
5
7
  export interface ParsedTable {
6
8
  head: string[];
7
9
  body: string[][];
@@ -25,6 +27,7 @@ export declare class EditableTableWidget extends WidgetType {
25
27
  /** `embedSource` is set: render `![[ref]]` literally in a cell (no chip). */
26
28
  private readonly embeds;
27
29
  private table;
30
+ private view;
28
31
  private rows;
29
32
  private editing;
30
33
  private syncing;
@@ -55,8 +58,13 @@ export declare class EditableTableWidget extends WidgetType {
55
58
  private bounds;
56
59
  private cellAt;
57
60
  private coords;
61
+ /** The host's marks on a cell; none until the table is in the document. */
62
+ private paintOf;
63
+ private grid;
58
64
  /** Draw `cell` from `rows[r][c]` — raw text when `raw`, rendered otherwise. */
59
65
  private paint;
66
+ /** Redraw the cells whose host marks changed; the one being edited keeps its caret. */
67
+ repaintMarks(): void;
60
68
  /** Rebuild `<thead>` / `<tbody>` from the current grid model. */
61
69
  private renderCells;
62
70
  private appendRow;
@@ -1 +1 @@
1
- {"version":3,"file":"table-widget.d.ts","sourceRoot":"","sources":["../../src/inplace/table-widget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,uBAAuB,CAAA;AAyBjE,6EAA6E;AAC7E,eAAO,MAAM,eAAe,qDAA+B,CAAA;AAE3D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;IAChB,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IAe/C,QAAQ,CAAC,IAAI,EAAE,WAAW;IAC1B,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAhBzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,OAAO,CAAQ;IACvB,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAA+B;IAChD;;+CAE2C;IAC3C,OAAO,CAAC,WAAW,CAAI;IAEvB,YACW,IAAI,EAAE,WAAW;IAC1B,6EAA6E;IAC5D,MAAM,UAAQ,EAIhC;IAEQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,WAQrC;IAEQ,WAAW,YAEnB;IAED,OAAO,CAAC,IAAI;IAIZ;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,MAAM;IAId,+EAA+E;IAC/E,OAAO,CAAC,KAAK;IAIb,iEAAiE;IACjE,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,KAAK;IAIb,iFAAiF;IACjF,OAAO,CAAC,KAAK;IAsBb,wFAAwF;IACxF,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,UAAU;IAQlB,yEAAyE;IACzE,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;IAKlB,0CAA0C;IAC1C,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,KAAK;IAmBb;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CASzC;IAED;2BACuB;IACvB,OAAO,CAAC,cAAc;IAetB,KAAK,CAAC,IAAI,EAAE,UAAU,kBA2ErB;IAEQ,OAAO,SAOf;CACF"}
1
+ {"version":3,"file":"table-widget.d.ts","sourceRoot":"","sources":["../../src/inplace/table-widget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,uBAAuB,CAAA;AA0BjE,6EAA6E;AAC7E,eAAO,MAAM,eAAe,qDAA+B,CAAA;AAE3D,yFAAyF;AACzF,eAAO,MAAM,YAAY,2CAAkD,CAAA;AAE3E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;IAChB,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IAgB/C,QAAQ,CAAC,IAAI,EAAE,WAAW;IAC1B,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjBzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,OAAO,CAAQ;IACvB,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAA+B;IAChD;;+CAE2C;IAC3C,OAAO,CAAC,WAAW,CAAI;IAEvB,YACW,IAAI,EAAE,WAAW;IAC1B,6EAA6E;IAC5D,MAAM,UAAQ,EAIhC;IAEQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,WAQrC;IAEQ,WAAW,YAEnB;IAED,OAAO,CAAC,IAAI;IAIZ;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,MAAM;IAId,2EAA2E;IAC3E,OAAO,CAAC,OAAO,CAKb;IAEF,OAAO,CAAC,IAAI;IAIZ,+EAA+E;IAC/E,OAAO,CAAC,KAAK;IAIb,uFAAuF;IACvF,YAAY,SAKX;IAED,iEAAiE;IACjE,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,KAAK;IAIb,iFAAiF;IACjF,OAAO,CAAC,KAAK;IAsBb,wFAAwF;IACxF,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,UAAU;IAQlB,yEAAyE;IACzE,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;IAKlB,0CAA0C;IAC1C,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,KAAK;IAmBb;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CASzC;IAED;2BACuB;IACvB,OAAO,CAAC,cAAc;IAetB,KAAK,CAAC,IAAI,EAAE,UAAU,kBA+ErB;IAEQ,OAAO,SAQf;CACF"}
package/dist/stylo.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { c as e, t, u as n } from "./embed-cache-BU9Smn-h.js";
2
- import { g as r, k as i, l as a, n as o, t as s } from "./useCodeMirror-Fn6qEfMx.js";
2
+ import { g as r, k as i, l as a, n as o, t as s } from "./useCodeMirror-DbhMZGZ7.js";
3
3
  import { n as c, r as l } from "./config-DTBxVhtH.js";
4
4
  import { Suspense as u, forwardRef as d, lazy as f, useCallback as p, useEffect as m, useImperativeHandle as h, useLayoutEffect as g, useReducer as _, useRef as v, useState as y, useSyncExternalStore as b } from "react";
5
5
  import { EditorView as x, showPanel as S } from "@codemirror/view";
@@ -36,7 +36,7 @@ function k({ value: e, onChange: t, readOnly: r, placeholder: a, codeLanguages:
36
36
  }
37
37
  //#endregion
38
38
  //#region src/inplace/lazyInPlace.ts
39
- var A = f(async () => ({ default: (await import("./InPlaceView-D2GIV1A-.js")).InPlaceView })), j = f(async () => ({ default: (await import("./Preview-BRA_R_Gp.js")).Preview }));
39
+ var A = f(async () => ({ default: (await import("./InPlaceView-AZ_ufoP3.js")).InPlaceView })), j = f(async () => ({ default: (await import("./Preview-BRA_R_Gp.js")).Preview }));
40
40
  //#endregion
41
41
  //#region src/SplitView.tsx
42
42
  function M({ value: e, onChange: t, onWikiLinkClick: r, readOnly: i, placeholder: a, codeLanguages: o, wikiLinkSource: s, tagSource: c, embedSource: l, onResolveError: d, frontmatter: f, softBreaks: p, onTaskToggle: h, onSave: g, onViewChange: _, canvasHeader: b, hostExtensions: x }) {
@@ -59,7 +59,9 @@ export type MenuGroupId = "host" | "link" | "format" | "paragraph" | "insert" |
59
59
  * A host-supplied right-click entry (`contextMenu.items`), the menu's parallel
60
60
  * of a custom toolbar button. `run` gets the live view with the selection as it
61
61
  * was when the menu opened — inside a table cell too, where the selected text
62
- * is mapped back to its range in the document first.
62
+ * is mapped back to its range in the document first. `info.rect` is the screen
63
+ * rectangle of that selection (a cell's selected text, or the cell itself with
64
+ * none), to anchor a popover beside it.
63
65
  */
64
66
  export interface ContextMenuItem {
65
67
  /** Stable identity; exposed on the row as `data-menu-item`. */
@@ -72,7 +74,9 @@ export interface ContextMenuItem {
72
74
  * and copied as static markup, so it cannot hold state or handlers.
73
75
  */
74
76
  icon?: string | ReactNode;
75
- run: (view: EditorView) => void;
77
+ run: (view: EditorView, info: {
78
+ rect: DOMRect;
79
+ }) => void;
76
80
  /** Greyed and not selectable while true. Read each time the menu opens. */
77
81
  disabled?: (state: EditorState) => boolean;
78
82
  /**
@@ -102,6 +106,18 @@ export interface ContextMenuConfig {
102
106
  */
103
107
  items?: ContextMenuItem[];
104
108
  }
109
+ /**
110
+ * A host mark in document positions, drawn on the characters of a table cell
111
+ * that fall inside `from`–`to`: they are wrapped in an element carrying `class`
112
+ * and `attributes`, and `cellClass` is added to the `<td>` / `<th>` holding them.
113
+ */
114
+ export interface CellMark {
115
+ from: number;
116
+ to: number;
117
+ class: string;
118
+ attributes?: Record<string, string>;
119
+ cellClass?: string;
120
+ }
105
121
  export interface InPlaceConfig {
106
122
  /** Which decoration types the in-place canvas renders. Read once, at mount. */
107
123
  decorations?: InPlaceDecorationToggles;
@@ -130,5 +146,13 @@ export interface InPlaceConfig {
130
146
  * `math`. Omit for all seven. Read once, at mount.
131
147
  */
132
148
  selectionBarItems?: ToolbarCommandId[];
149
+ /**
150
+ * Marks to draw inside table cells (`table: "cells"`), where a host's
151
+ * `Decoration.mark` cannot reach. Called with the state whenever the document
152
+ * or the host's state changes; the affected cells are repainted. Read through
153
+ * a ref, so a re-render's closure applies; a change outside the editor state
154
+ * shows on the next editor update (dispatch an empty transaction).
155
+ */
156
+ cellMarks?: (state: EditorState) => readonly CellMark[];
133
157
  }
134
158
  //# sourceMappingURL=inplace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inplace.d.ts","sourceRoot":"","sources":["../../src/types/inplace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,CAAA;AAE1C;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE3F;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAA;IACV,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAA;IAC1C;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAA;IAC9C;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,wBAAwB,CAAA;IACtC,oEAAoE;IACpE,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAA;IACzC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAA;CACvC"}
1
+ {"version":3,"file":"inplace.d.ts","sourceRoot":"","sources":["../../src/types/inplace.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -9,5 +9,5 @@ export type { StyloMode, FrontmatterDisplay, CodeLanguages, TaskToggleInfo, Styl
9
9
  export type { ToolbarCommandId, ToolbarCustomItem, ToolbarItem, ToolbarConfig, } from "./types/toolbar";
10
10
  export type { WikiLinkCompletion, WikiLinkSource, TagCompletion, TagSource } from "./types/sources";
11
11
  export type { EmbedSource, ResolveErrorInfo } from "./types/sources";
12
- export type { InPlaceDecorationToggles, TableEditing, RevealMode, SelectionUI, MenuGroupId, ContextMenuConfig, ContextMenuItem, InPlaceConfig, } from "./types/inplace";
12
+ export type { InPlaceDecorationToggles, TableEditing, RevealMode, SelectionUI, MenuGroupId, ContextMenuConfig, CellMark, ContextMenuItem, InPlaceConfig, } from "./types/inplace";
13
13
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,UAAU,EACV,WAAW,GACZ,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,aAAa,GACd,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACnG,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACpE,YAAY,EACV,wBAAwB,EACxB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,UAAU,EACV,WAAW,GACZ,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,aAAa,GACd,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACnG,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACpE,YAAY,EACV,wBAAwB,EACxB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAA"}