@formicoidea/labre-core 0.31.0 → 0.33.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 (637) hide show
  1. package/dist/_pkgs/affine-block-attachment/attachment-block.js +1 -1
  2. package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
  3. package/dist/_pkgs/affine-block-callout/callout-block.js +26 -4
  4. package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
  5. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
  6. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
  7. package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
  8. package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
  9. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
  10. package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
  11. package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
  12. package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
  13. package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
  14. package/dist/_pkgs/affine-block-code/code-block-inline.js +1 -1
  15. package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
  16. package/dist/_pkgs/affine-block-code/code-block.js +44 -6
  17. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
  18. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
  19. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
  20. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
  21. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +54 -5
  22. package/dist/_pkgs/affine-block-code/code-toolbar/index.js +1 -1
  23. package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
  24. package/dist/_pkgs/affine-block-code/effects.js +2 -0
  25. package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
  26. package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
  27. package/dist/_pkgs/affine-block-code/index.js +1 -0
  28. package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
  29. package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
  30. package/dist/_pkgs/affine-block-code/styles.js +31 -0
  31. package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
  32. package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
  33. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
  34. package/dist/_pkgs/affine-block-database/data-source.js +1 -2
  35. package/dist/_pkgs/affine-block-database/database-block.js +13 -0
  36. package/dist/_pkgs/affine-block-database/external-data-source.js +1 -1
  37. package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
  38. package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
  39. package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
  40. package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
  41. package/dist/_pkgs/affine-block-database/views/index.js +1 -0
  42. package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +11 -1
  43. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
  44. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
  45. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
  46. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
  47. package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-service.js +1 -1
  48. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +2 -2
  49. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
  50. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
  51. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +1 -1
  52. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
  53. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/utils.js +1 -1
  54. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +1 -1
  55. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
  56. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +23 -4
  57. package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
  58. package/dist/_pkgs/affine-block-frame/frame-manager.js +34 -2
  59. package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
  60. package/dist/_pkgs/affine-block-image/components/page-image-block.js +1 -1
  61. package/dist/_pkgs/affine-block-image/image-edgeless-block.js +1 -1
  62. package/dist/_pkgs/affine-block-latex/styles.js +6 -1
  63. package/dist/_pkgs/affine-block-list/utils/forward-delete.js +1 -1
  64. package/dist/_pkgs/affine-block-note/commands/select-block.js +1 -1
  65. package/dist/_pkgs/affine-block-note/commands/select-blocks-between.js +1 -1
  66. package/dist/_pkgs/affine-block-note/move-block.js +1 -1
  67. package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
  68. package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
  69. package/dist/_pkgs/affine-block-paragraph/utils/forward-delete.js +2 -2
  70. package/dist/_pkgs/affine-block-paragraph/utils/merge-with-prev.js +1 -1
  71. package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
  72. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
  73. package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
  74. package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
  75. package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
  76. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
  77. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
  78. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +10 -3
  79. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
  80. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +27 -2
  81. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
  82. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
  83. package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
  84. package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
  85. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
  86. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
  87. package/dist/_pkgs/affine-block-root/edgeless/utils/clipboard-utils.js +1 -1
  88. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
  89. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
  90. package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
  91. package/dist/_pkgs/affine-block-root/index.js +4 -1
  92. package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
  93. package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
  94. package/dist/_pkgs/affine-block-root/view.js +13 -4
  95. package/dist/_pkgs/affine-block-surface/adapters/markdown/element-adapter/type.js +1 -1
  96. package/dist/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/type.js +1 -1
  97. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
  98. package/dist/_pkgs/affine-block-surface/effects.js +6 -0
  99. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +21 -3
  100. package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
  101. package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
  102. package/dist/_pkgs/affine-block-surface/extensions/audit.js +489 -0
  103. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
  104. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +37 -5
  105. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
  106. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +327 -0
  107. package/dist/_pkgs/affine-block-surface/extensions/element-renderer.js +1 -1
  108. package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +1 -1
  109. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +17 -0
  110. package/dist/_pkgs/affine-block-surface/extensions/index.js +17 -0
  111. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +172 -0
  112. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +393 -0
  113. package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +306 -0
  114. package/dist/_pkgs/affine-block-surface/extensions/interchange.js +64 -0
  115. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
  116. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
  117. package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
  118. package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
  119. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +248 -0
  120. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +248 -0
  121. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
  122. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
  123. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
  124. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +588 -0
  125. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
  126. package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
  127. package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
  128. package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
  129. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.d.ts +107 -0
  130. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +958 -0
  131. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
  132. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
  133. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
  134. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
  135. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +2129 -0
  136. package/dist/_pkgs/affine-block-surface/extensions/validation.js +4620 -0
  137. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +330 -0
  138. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +1004 -0
  139. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
  140. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
  141. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +610 -0
  142. package/dist/_pkgs/affine-block-surface/framework-background/def.js +206 -0
  143. package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
  144. package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
  145. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
  146. package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
  147. package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
  148. package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
  149. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +99 -0
  150. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +193 -0
  151. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
  152. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +399 -0
  153. package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
  154. package/dist/_pkgs/affine-block-surface/index.js +1 -0
  155. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
  156. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
  157. package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
  158. package/dist/_pkgs/affine-block-surface/renderer/overlay.js +1 -1
  159. package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
  160. package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
  161. package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
  162. package/dist/_pkgs/affine-block-surface/view.js +57 -2
  163. package/dist/_pkgs/affine-block-surface-ref/portal/note.js +2 -2
  164. package/dist/_pkgs/affine-block-table/commands.js +1 -1
  165. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
  166. package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
  167. package/dist/_pkgs/affine-block-table/table-block.js +8 -2
  168. package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
  169. package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
  170. package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
  171. package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
  172. package/dist/_pkgs/affine-block-table/utils.js +12 -0
  173. package/dist/_pkgs/affine-block-table/view.js +2 -0
  174. package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
  175. package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
  176. package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
  177. package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
  178. package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
  179. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
  180. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
  181. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
  182. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +1 -1
  183. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +1 -1
  184. package/dist/_pkgs/affine-components/filterable-list/styles.js +1 -1
  185. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  186. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  187. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
  188. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
  189. package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
  190. package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
  191. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
  192. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
  193. package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
  194. package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
  195. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
  196. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
  197. package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
  198. package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
  199. package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
  200. package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
  201. package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
  202. package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
  203. package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
  204. package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
  205. package/dist/_pkgs/affine-components/icons/text.js +426 -426
  206. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
  207. package/dist/_pkgs/affine-components/peek/peekable.js +1 -1
  208. package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
  209. package/dist/_pkgs/affine-components/toolbar/index.d.ts +1 -0
  210. package/dist/_pkgs/affine-components/toolbar/index.js +1 -0
  211. package/dist/_pkgs/affine-components/toolbar/menu-button.js +2 -1
  212. package/dist/_pkgs/affine-components/toolbar/picker-menu.d.ts +55 -0
  213. package/dist/_pkgs/affine-components/toolbar/picker-menu.js +47 -0
  214. package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
  215. package/dist/_pkgs/affine-foundation/view.js +11 -2
  216. package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +2 -2
  217. package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +2 -2
  218. package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +1 -1
  219. package/dist/_pkgs/affine-fragment-outline/mobile-outline-panel.js +1 -1
  220. package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
  221. package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
  222. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
  223. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
  224. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
  225. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
  226. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
  227. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
  228. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
  229. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
  230. package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
  231. package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
  232. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +1 -1
  233. package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
  234. package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
  235. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +39 -16
  236. package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +26 -1
  237. package/dist/_pkgs/affine-gfx-connector/connector-tool.js +12 -3
  238. package/dist/_pkgs/affine-gfx-connector/connector-watcher.js +1 -4
  239. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
  240. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +282 -0
  241. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
  242. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
  243. package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
  244. package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
  245. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
  246. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +185 -0
  247. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
  248. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
  249. package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
  250. package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
  251. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
  252. package/dist/_pkgs/affine-gfx-connector/element-renderer/index.js +1 -1
  253. package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +1 -1
  254. package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
  255. package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
  256. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
  257. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +68 -2
  258. package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
  259. package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
  260. package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
  261. package/dist/_pkgs/affine-gfx-mindmap/adapter/markdown/index.js +1 -1
  262. package/dist/_pkgs/affine-gfx-mindmap/adapter/utils.js +1 -1
  263. package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +583 -4
  264. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +23 -23
  265. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +5 -1
  266. package/dist/_pkgs/affine-gfx-mindmap/view/utils.js +1 -1
  267. package/dist/_pkgs/affine-gfx-note/overlay/overlay.js +1 -1
  268. package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +1 -1
  269. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
  270. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
  271. package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
  272. package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
  273. package/dist/_pkgs/affine-gfx-shape/consts.js +1 -1
  274. package/dist/_pkgs/affine-gfx-shape/draggable/shape-draggable.js +1 -1
  275. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/polygon.js +17 -9
  276. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/utils.js +8 -3
  277. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
  278. package/dist/_pkgs/affine-gfx-shape/element-view.js +19 -12
  279. package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
  280. package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
  281. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.js +1 -1
  282. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-vertex-editing-overlay.js +12 -7
  283. package/dist/_pkgs/affine-gfx-shape/overlay/shape-overlay.js +1 -1
  284. package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +4 -2
  285. package/dist/_pkgs/affine-gfx-shape/shape-tool.js +1 -1
  286. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
  287. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -15
  288. package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
  289. package/dist/_pkgs/affine-gfx-template/builtin/other.js +66 -17
  290. package/dist/_pkgs/affine-gfx-template/toolbar/overlay-scrollbar.js +1 -1
  291. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +1 -1
  292. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
  293. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
  294. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
  295. package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +1 -1
  296. package/dist/_pkgs/affine-inline-latex/command.js +46 -26
  297. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
  298. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
  299. package/dist/_pkgs/affine-inline-link/command.js +1 -1
  300. package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
  301. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
  302. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
  303. package/dist/_pkgs/affine-inline-preset/command/format-block.js +1 -1
  304. package/dist/_pkgs/affine-inline-preset/command/format-native.js +2 -2
  305. package/dist/_pkgs/affine-inline-preset/command/format-text.js +1 -1
  306. package/dist/_pkgs/affine-inline-preset/inline-spec.js +1 -1
  307. package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +1 -1
  308. package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
  309. package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
  310. package/dist/_pkgs/affine-model/elements/bpmn/node.d.ts +40 -7
  311. package/dist/_pkgs/affine-model/elements/bpmn/node.js +4 -2
  312. package/dist/_pkgs/affine-model/elements/bpmn/pool.d.ts +74 -17
  313. package/dist/_pkgs/affine-model/elements/bpmn/pool.js +55 -26
  314. package/dist/_pkgs/affine-model/elements/c4/board.d.ts +88 -0
  315. package/dist/_pkgs/affine-model/elements/c4/board.js +128 -0
  316. package/dist/_pkgs/affine-model/elements/c4/boundary.d.ts +63 -0
  317. package/dist/_pkgs/affine-model/elements/c4/boundary.js +134 -0
  318. package/dist/_pkgs/affine-model/elements/c4/index.d.ts +3 -0
  319. package/dist/_pkgs/affine-model/elements/c4/index.js +3 -0
  320. package/dist/_pkgs/affine-model/elements/c4/node.d.ts +97 -0
  321. package/dist/_pkgs/affine-model/elements/c4/node.js +130 -0
  322. package/dist/_pkgs/affine-model/elements/connector/connector.js +25 -1
  323. package/dist/_pkgs/affine-model/elements/context-map/context-map.d.ts +27 -0
  324. package/dist/_pkgs/affine-model/elements/context-map/context-map.js +94 -0
  325. package/dist/_pkgs/affine-model/elements/context-map/index.d.ts +1 -0
  326. package/dist/_pkgs/affine-model/elements/context-map/index.js +1 -0
  327. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +34 -17
  328. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +28 -26
  329. package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
  330. package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
  331. package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
  332. package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
  333. package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
  334. package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
  335. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.d.ts +36 -0
  336. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +103 -0
  337. package/dist/_pkgs/affine-model/elements/event-storming/index.d.ts +1 -0
  338. package/dist/_pkgs/affine-model/elements/event-storming/index.js +1 -0
  339. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
  340. package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
  341. package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
  342. package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
  343. package/dist/_pkgs/affine-model/elements/index.d.ts +14 -1
  344. package/dist/_pkgs/affine-model/elements/index.js +4 -0
  345. package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
  346. package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
  347. package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
  348. package/dist/_pkgs/affine-model/elements/shape/api/polygon.js +2 -8
  349. package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
  350. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
  351. package/dist/_pkgs/affine-shared/adapters/html/block-adapter.js +1 -1
  352. package/dist/_pkgs/affine-shared/adapters/markdown/block-adapter.js +1 -1
  353. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
  354. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +161 -3
  355. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
  356. package/dist/_pkgs/affine-shared/adapters/notion-html/block-adapter.js +1 -1
  357. package/dist/_pkgs/affine-shared/adapters/notion-html/delta-converter.js +1 -1
  358. package/dist/_pkgs/affine-shared/adapters/plain-text/block-adapter.js +1 -1
  359. package/dist/_pkgs/affine-shared/adapters/plain-text/delta-converter.js +1 -1
  360. package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
  361. package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
  362. package/dist/_pkgs/affine-shared/adapters/utils/color.js +283 -0
  363. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  364. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  365. package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
  366. package/dist/_pkgs/affine-shared/commands/model-crud/draft-selected-models.js +1 -1
  367. package/dist/_pkgs/affine-shared/commands/selection/focus-block-end.js +1 -1
  368. package/dist/_pkgs/affine-shared/commands/selection/focus-block-start.js +1 -1
  369. package/dist/_pkgs/affine-shared/consts/index.d.ts +10 -0
  370. package/dist/_pkgs/affine-shared/consts/index.js +10 -0
  371. package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.d.ts +55 -0
  372. package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.js +35 -0
  373. package/dist/_pkgs/affine-shared/services/audit-service.d.ts +311 -0
  374. package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
  375. package/dist/_pkgs/affine-shared/services/command-usage-service.d.ts +31 -0
  376. package/dist/_pkgs/affine-shared/services/command-usage-service.js +109 -0
  377. package/dist/_pkgs/affine-shared/services/comment-service/block-comment-manager.js +1 -1
  378. package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +1 -1
  379. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
  380. package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
  381. package/dist/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.js +1 -1
  382. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
  383. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
  384. package/dist/_pkgs/affine-shared/services/index.d.ts +7 -0
  385. package/dist/_pkgs/affine-shared/services/index.js +7 -0
  386. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
  387. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +312 -0
  388. package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
  389. package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
  390. package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
  391. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +255 -1
  392. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  393. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
  394. package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
  395. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  396. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  397. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
  398. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
  399. package/dist/_pkgs/affine-shared/services/toolbar-service/registry.d.ts +44 -0
  400. package/dist/_pkgs/affine-shared/services/toolbar-service/registry.js +161 -3
  401. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
  402. package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
  403. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
  404. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +256 -0
  405. package/dist/_pkgs/affine-shared/test-utils/affine-template.js +1 -1
  406. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
  407. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
  408. package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
  409. package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
  410. package/dist/_pkgs/affine-shared/utils/edgeless.js +1 -1
  411. package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +34 -0
  412. package/dist/_pkgs/affine-shared/utils/file/filesys.js +48 -7
  413. package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
  414. package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
  415. package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
  416. package/dist/_pkgs/affine-shared/utils/zod-schema.js +25 -1
  417. package/dist/_pkgs/affine-widget-drag-handle/utils.js +1 -1
  418. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
  419. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
  420. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
  421. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
  422. package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +1 -1
  423. package/dist/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.js +1 -1
  424. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
  425. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
  426. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
  427. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
  428. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
  429. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
  430. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
  431. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.d.ts +14 -0
  432. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.js +40 -0
  433. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +158 -0
  434. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +572 -0
  435. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.d.ts +46 -0
  436. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.js +66 -0
  437. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.d.ts +13 -0
  438. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.js +50 -0
  439. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.d.ts +6 -0
  440. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +15 -5
  441. package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.d.ts +2 -0
  442. package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.js +2 -0
  443. package/dist/_pkgs/affine-widget-edgeless-toolbar/extension/index.d.ts +7 -0
  444. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +5 -0
  445. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +5 -0
  446. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +57 -0
  447. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +140 -0
  448. package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +9 -0
  449. package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
  450. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  451. package/dist/_pkgs/affine-widget-keyboard-toolbar/keyboard-tool-panel.js +1 -1
  452. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +1 -1
  453. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
  454. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
  455. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
  456. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
  457. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
  458. package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
  459. package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
  460. package/dist/_pkgs/affine-widget-page-dragging-area/index.js +1 -1
  461. package/dist/_pkgs/affine-widget-remote-selection/doc/doc-remote-selection.js +1 -1
  462. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
  463. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
  464. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
  465. package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
  466. package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
  467. package/dist/_pkgs/affine-widget-toolbar/toolbar.js +40 -8
  468. package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
  469. package/dist/_pkgs/affine-widget-toolbar/utils.js +744 -58
  470. package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
  471. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
  472. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
  473. package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
  474. package/dist/_pkgs/data-view/core/data-view.js +25 -3
  475. package/dist/_pkgs/data-view/core/detail/field.js +2 -2
  476. package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
  477. package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
  478. package/dist/_pkgs/data-view/core/effect.js +2 -0
  479. package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
  480. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
  481. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
  482. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
  483. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
  484. package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
  485. package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
  486. package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
  487. package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
  488. package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
  489. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
  490. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
  491. package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
  492. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
  493. package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
  494. package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
  495. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  496. package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
  497. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  498. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
  499. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
  500. package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
  501. package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
  502. package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
  503. package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
  504. package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
  505. package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
  506. package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
  507. package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
  508. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
  509. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +64 -0
  510. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
  511. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
  512. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
  513. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
  514. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
  515. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
  516. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
  517. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
  518. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
  519. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +849 -0
  520. package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
  521. package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
  522. package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
  523. package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
  524. package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
  525. package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
  526. package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
  527. package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
  528. package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
  529. package/dist/_pkgs/data-view/view-presets/index.js +3 -0
  530. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
  531. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
  532. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
  533. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
  534. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
  535. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
  536. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +89 -4
  537. package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
  538. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
  539. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
  540. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
  541. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
  542. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +86 -5
  543. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
  544. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
  545. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
  546. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
  547. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
  548. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
  549. package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
  550. package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
  551. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
  552. package/dist/_pkgs/global/gfx/curve.js +4 -3
  553. package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
  554. package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
  555. package/dist/_pkgs/std/clipboard/utils.js +10 -0
  556. package/dist/_pkgs/std/event/dispatcher.js +27 -1
  557. package/dist/_pkgs/std/event/keymap.js +16 -6
  558. package/dist/_pkgs/std/extension/command-registry.d.ts +475 -0
  559. package/dist/_pkgs/std/extension/command-registry.js +431 -0
  560. package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
  561. package/dist/_pkgs/std/extension/index.d.ts +2 -0
  562. package/dist/_pkgs/std/extension/index.js +2 -0
  563. package/dist/_pkgs/std/extension/shortcut.js +2 -1
  564. package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
  565. package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
  566. package/dist/_pkgs/std/gfx/grid.js +1 -1
  567. package/dist/_pkgs/std/gfx/index.d.ts +7 -3
  568. package/dist/_pkgs/std/gfx/index.js +6 -2
  569. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
  570. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
  571. package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
  572. package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
  573. package/dist/_pkgs/std/gfx/layer.js +1 -2
  574. package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
  575. package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
  576. package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
  577. package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
  578. package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
  579. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
  580. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
  581. package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +442 -0
  582. package/dist/_pkgs/std/gfx/model/surface/element-model.js +510 -25
  583. package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
  584. package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
  585. package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
  586. package/dist/_pkgs/std/gfx/model/surface/role.js +117 -0
  587. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
  588. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +305 -17
  589. package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
  590. package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
  591. package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
  592. package/dist/_pkgs/std/gfx/perf.js +30 -0
  593. package/dist/_pkgs/std/gfx/selection.js +1 -1
  594. package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
  595. package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
  596. package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
  597. package/dist/_pkgs/std/gfx/viewport.js +20 -2
  598. package/dist/_pkgs/std/inline/extensions/inline-manager.js +1 -1
  599. package/dist/_pkgs/std/inline/extensions/markdown-matcher.js +1 -1
  600. package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
  601. package/dist/_pkgs/std/inline/services/event.js +96 -21
  602. package/dist/_pkgs/std/utils/layer.js +2 -6
  603. package/dist/_pkgs/std/utils/tree.d.ts +14 -0
  604. package/dist/_pkgs/std/utils/tree.js +59 -8
  605. package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
  606. package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
  607. package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
  608. package/dist/_pkgs/store/model/store/crud.js +10 -4
  609. package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
  610. package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
  611. package/dist/commands.d.ts +58 -0
  612. package/dist/commands.js +66 -0
  613. package/dist/extensions/command-telemetry.d.ts +21 -0
  614. package/dist/extensions/command-telemetry.js +89 -0
  615. package/dist/extensions/command-usage.d.ts +23 -0
  616. package/dist/extensions/command-usage.js +37 -0
  617. package/dist/extensions/store.d.ts +9 -4
  618. package/dist/extensions/store.js +27 -24
  619. package/dist/extensions/view.d.ts +9 -4
  620. package/dist/extensions/view.js +35 -8
  621. package/dist/flags.d.ts +98 -21
  622. package/dist/flags.js +103 -22
  623. package/dist/frameworks.d.ts +45 -0
  624. package/dist/frameworks.js +186 -0
  625. package/dist/schemas.d.ts +8 -5
  626. package/dist/schemas.js +28 -32
  627. package/dist/shortcuts.d.ts +16 -16
  628. package/dist/shortcuts.js +8 -36
  629. package/dist/translations.d.ts +56 -0
  630. package/dist/translations.js +200 -0
  631. package/package.json +16 -4
  632. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
  633. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
  634. package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
  635. package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
  636. package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
  637. package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
@@ -0,0 +1,312 @@
1
+ /**
2
+ * `PivotMaterialityPublisher` — the one place a board occurrence's derived
3
+ * materialities are announced to the host (MF3 / ADR 0006 § 4).
4
+ *
5
+ * When the level-3 qualification of a **bound** element changes, the library
6
+ * announces it and forgets. It never writes to the pivot record, never awaits
7
+ * the host, never retries and never observes the result: the element is the
8
+ * source of truth for the occurrence, the record is the source of truth for
9
+ * itself, and the channel between them is one-way.
10
+ *
11
+ * ## Why a Yjs observer and not the setter, and not the command layer
12
+ *
13
+ * Both were rejected for the same concrete reason: **undo**.
14
+ *
15
+ * The `@field()` setter runs on a JS assignment only. Undo, redo and every
16
+ * remote peer's change arrive through the element's `Y.Map` observer and never
17
+ * touch it. Publishing from the setter — or from the command that calls it —
18
+ * means: qualify a bound element, press Ctrl+Z, and the element reverts while
19
+ * the record keeps the derived materiality. A silent, permanent desync on the
20
+ * very first undo.
21
+ *
22
+ * Subscribing to the surface's change stream and gating on `local` fixes it and
23
+ * costs nothing else:
24
+ *
25
+ * | Event | `local` | Publishes? |
26
+ * | ------------------------------- | ------- | ----------------------------------------- |
27
+ * | Author qualifies an element | `true` | Yes, on the authoring client only |
28
+ * | Author presses Ctrl+Z / Ctrl+Y | `true` | Yes — this is what fixes the undo desync |
29
+ * | Remote peer receives the change | `false` | No |
30
+ *
31
+ * `local` also IS the de-duplication: it partitions the fleet into exactly one
32
+ * publisher and N−1 silent observers, with no leader election, no lock and no
33
+ * acknowledgement.
34
+ *
35
+ * ## Best-effort, and honest about it
36
+ *
37
+ * Patches are full-state and idempotent, so replaying one converges — which is
38
+ * what makes the unobservable `void` return survivable. If the authoring client
39
+ * is offline from the host at that moment the patch is lost and the record
40
+ * stays stale until the next local change to that element. The safety net is
41
+ * that the element is always authoritative: a host can rebuild every derived
42
+ * materiality by scanning `collectPivotOccurrences`. Derived materialities are
43
+ * a cache of the boards, never a second original.
44
+ */
45
+ import { LifeCycleWatcher } from '../../std/index.js';
46
+ import { FRAMEWORK_IDS } from '../../std/index.js';
47
+ import { GfxControllerIdentifier, isPivotBound, readElementTags, } from '../../std/gfx/index.js';
48
+ import { effect } from '@preact/signals-core';
49
+ import { PivotPropertiesProvider, publishOccurrenceMaterialities, } from './pivot-properties-service.js';
50
+ /** Props whose change can alter what a patch says. Everything else is noise. */
51
+ const MATERIAL_PROPS = new Set(['tags', 'role', 'pivotDocId']);
52
+ const touchesMateriality = (payload) => Object.keys(payload.props).some(key => MATERIAL_PROPS.has(key)) ||
53
+ Object.keys(payload.oldValues).some(key => MATERIAL_PROPS.has(key));
54
+ /** `'wardley:component'` → `'wardley'`, when that names a real framework. */
55
+ function frameworkOfRole(role) {
56
+ const namespace = role?.split(':')[0];
57
+ return FRAMEWORK_IDS.includes(namespace ?? '')
58
+ ? namespace
59
+ : undefined;
60
+ }
61
+ /**
62
+ * `(pivotDocId, elementId)` — the host's primary key for a derived materiality.
63
+ *
64
+ * The pair is JSON-encoded rather than joined on a separator character: both
65
+ * halves are opaque strings the library does not mint, so any separator we
66
+ * picked could in principle occur inside one of them and make two distinct
67
+ * occurrences collide on one cache entry — which would silently suppress a
68
+ * legitimate patch, the one failure mode this cache must not have.
69
+ */
70
+ const materialityKey = (pivotDocId, elementId) => JSON.stringify([pivotDocId, elementId]);
71
+ /** A patch reduced to what a host would store, for de-duplication. */
72
+ const patchFingerprint = (patch) => JSON.stringify([
73
+ patch.present,
74
+ patch.framework ?? null,
75
+ patch.role ?? null,
76
+ // Sorted so that two writes of the same qualification in a different order
77
+ // are one patch, not two.
78
+ Object.keys(patch.tags)
79
+ .sort()
80
+ .map(tagId => [tagId, patch.tags[tagId]]),
81
+ ]);
82
+ export class PivotMaterialityPublisher extends LifeCycleWatcher {
83
+ constructor() {
84
+ super(...arguments);
85
+ /** Elements whose state is to be re-examined at the end of this microtask. */
86
+ this._pending = new Set();
87
+ this._flushing = false;
88
+ /**
89
+ * The record each element was last known to be bound to, so that unbinding —
90
+ * or re-binding — can retract the OLD record's materiality. Without it the
91
+ * retraction has no `pivotDocId` to name: by the time the change is seen, the
92
+ * element no longer carries the old one.
93
+ */
94
+ this._lastBinding = new Map();
95
+ /**
96
+ * Last published fingerprint per `(pivotDocId, elementId)`. One user gesture
97
+ * produces several payloads for one element — the stash/pop path alone emits
98
+ * one per stashed prop — and a drag emits dozens that change nothing a patch
99
+ * describes. Publishing the element's CURRENT FULL STATE and dropping it when
100
+ * it repeats is what keeps that to one patch per real change.
101
+ */
102
+ this._published = new Map();
103
+ this._subscriptions = [];
104
+ this._disposeSurfaceEffect = null;
105
+ }
106
+ static { this.key = 'pivot-materiality-publisher'; }
107
+ mounted() {
108
+ // Degradation, and the reason it is checked once: with no host provider —
109
+ // the playground, unit tests, a labreapp build that failed to register —
110
+ // there is nobody to announce to, so nothing is subscribed and the whole
111
+ // watcher costs one lookup. Binding and qualification keep working: they
112
+ // are element-local writes and never needed the host.
113
+ if (!this.std.getOptional(PivotPropertiesProvider)
114
+ ?.publishOccurrenceMaterialities) {
115
+ return;
116
+ }
117
+ // The surface is a SIGNAL, not a fact: it can legitimately be null at mount
118
+ // and arrive later, and it is replaced if the surface block is.
119
+ this._disposeSurfaceEffect = effect(() => {
120
+ this._resubscribe(this.std.get(GfxControllerIdentifier).surface$.value);
121
+ });
122
+ }
123
+ unmounted() {
124
+ this._disposeSurfaceEffect?.();
125
+ this._disposeSurfaceEffect = null;
126
+ this._unsubscribe();
127
+ this._pending.clear();
128
+ this._lastBinding.clear();
129
+ this._published.clear();
130
+ super.unmounted();
131
+ }
132
+ _unsubscribe() {
133
+ for (const subscription of this._subscriptions)
134
+ subscription.unsubscribe();
135
+ this._subscriptions = [];
136
+ }
137
+ _resubscribe(surface) {
138
+ this._unsubscribe();
139
+ this._pending.clear();
140
+ // A new surface is a new document: nothing published about the last one
141
+ // says anything about this one.
142
+ this._lastBinding.clear();
143
+ this._published.clear();
144
+ if (!surface)
145
+ return;
146
+ this._subscriptions.push(surface.elementAdded.subscribe(({ id, local }) => {
147
+ if (local)
148
+ this._schedule(surface, id);
149
+ else
150
+ this._track(surface, id);
151
+ }));
152
+ this._subscriptions.push(surface.elementUpdated.subscribe(payload => {
153
+ if (!touchesMateriality(payload))
154
+ return;
155
+ if (payload.local)
156
+ this._schedule(surface, payload.id);
157
+ else
158
+ this._track(surface, payload.id);
159
+ }));
160
+ this._subscriptions.push(surface.elementRemoved.subscribe(({ id, local }) => {
161
+ if (!local) {
162
+ // Someone else's deletion is someone else's retraction to emit. Drop
163
+ // the bookkeeping so a later occurrence reusing this id — an undo on
164
+ // the peer, a paste — is not silenced by a stale fingerprint.
165
+ const previous = this._lastBinding.get(id);
166
+ if (previous !== undefined) {
167
+ this._published.delete(materialityKey(previous, id));
168
+ }
169
+ this._lastBinding.delete(id);
170
+ return;
171
+ }
172
+ // The element is already gone from the surface, so the flush below
173
+ // cannot read it — which is exactly right: an absent element retracts.
174
+ this._schedule(surface, id);
175
+ }));
176
+ // Elements already on the surface when this mounts are NOT published. They
177
+ // are not a local change, and republishing a whole board on every editor
178
+ // open would flood the host with patches it already holds. The rebuild path
179
+ // (`collectPivotOccurrences`) is the deliberate way to resynchronise.
180
+ for (const element of surface.elementModels)
181
+ this._track(surface, element.id);
182
+ }
183
+ /**
184
+ * Record what record an element is bound to, **without publishing anything**.
185
+ *
186
+ * ## Who owns a retraction in a collaborative session
187
+ *
188
+ * The client whose LOCAL transaction removes the occurrence — deletion,
189
+ * unbind, or re-bind. That is the same rule as every other emission here
190
+ * (`local` partitions the fleet into one publisher and N−1 observers), and it
191
+ * is the only rule that can work: the peer that ORIGINALLY bound the element
192
+ * sees the deletion as a remote change, so if retraction belonged to the
193
+ * binder, nobody would emit it at all.
194
+ *
195
+ * Owning the retraction requires knowing which record to retract from, and by
196
+ * the time the deletion is seen the element is gone. Hence this: **tracking
197
+ * the binding is bookkeeping, not publication.** Every client keeps the map
198
+ * for everything it can see, whoever wrote it, so that whichever client
199
+ * eventually performs the removal can name the record. Without it, retraction
200
+ * only ever worked when one client both created and deleted the occurrence —
201
+ * the rare case in an open collaborative session, and the host would keep a
202
+ * materiality attributed to an occurrence that no longer exists.
203
+ *
204
+ * A remote peer that CHANGES a binding updates this map silently: it is
205
+ * publishing its own retraction and its own patch, and a second one from here
206
+ * would be a duplicate, not a safety net.
207
+ *
208
+ * ## …and it invalidates what WE last published
209
+ *
210
+ * `_published` remembers the last patch this client sent, so an unchanged
211
+ * state is not re-announced. A remote change makes that memory a lie: the
212
+ * peer published its own patch, so the host now holds the peer's state, not
213
+ * ours. Left stale, the sequence `we publish data` → `peer switches to
214
+ * practice` → `we go back to data` compares equal to our own last
215
+ * fingerprint and DROPS the patch — the element says `data`, the host keeps
216
+ * `practice`, until some third, different value comes along.
217
+ *
218
+ * Milder than the retraction gap above (this is host-side cache staleness,
219
+ * not document data, and it heals on the next real change), but free to
220
+ * close: every remote touch drops our fingerprint for that occurrence, so
221
+ * the next local patch is always sent.
222
+ */
223
+ _track(surface, id) {
224
+ const element = surface.getElementById(id);
225
+ const previous = this._lastBinding.get(id);
226
+ if (previous !== undefined) {
227
+ this._published.delete(materialityKey(previous, id));
228
+ }
229
+ if (element && isPivotBound(element)) {
230
+ this._lastBinding.set(id, element.pivotDocId);
231
+ }
232
+ else {
233
+ this._lastBinding.delete(id);
234
+ }
235
+ }
236
+ /**
237
+ * Coalesce per element within one microtask, then publish the element's
238
+ * CURRENT FULL STATE — never a delta. `_onChange` is also invoked directly on
239
+ * the stash/pop path, so one gesture legitimately produces several payloads
240
+ * for the same element.
241
+ */
242
+ _schedule(surface, id) {
243
+ this._pending.add(id);
244
+ if (this._flushing)
245
+ return;
246
+ this._flushing = true;
247
+ queueMicrotask(() => {
248
+ this._flushing = false;
249
+ const ids = [...this._pending];
250
+ this._pending.clear();
251
+ for (const pending of ids)
252
+ this._publish(surface, pending);
253
+ });
254
+ }
255
+ _publish(surface, id) {
256
+ const element = surface.getElementById(id) ?? null;
257
+ const previous = this._lastBinding.get(id);
258
+ const current = element && isPivotBound(element) ? element.pivotDocId : undefined;
259
+ // Retract on the OLD record when the binding is gone or has moved. An
260
+ // element deleted, unbound, or re-bound elsewhere must not leave the record
261
+ // holding materialities attributed to an occurrence that no longer exists
262
+ // there — "the library never deletes host data" would quietly become "the
263
+ // library leaks host data" (ADR 0006 § 4.3).
264
+ if (previous !== undefined && previous !== current) {
265
+ this._emit({
266
+ pivotDocId: previous,
267
+ elementId: id,
268
+ framework: undefined,
269
+ role: undefined,
270
+ tags: {},
271
+ present: false,
272
+ });
273
+ this._lastBinding.delete(id);
274
+ this._published.delete(materialityKey(previous, id));
275
+ }
276
+ if (!element || current === undefined)
277
+ return;
278
+ this._lastBinding.set(id, current);
279
+ this._emit(buildOccurrencePatch(element, current));
280
+ }
281
+ _emit(patch) {
282
+ const key = materialityKey(patch.pivotDocId, patch.elementId);
283
+ const fingerprint = patchFingerprint(patch);
284
+ if (this._published.get(key) === fingerprint)
285
+ return;
286
+ if (patch.present)
287
+ this._published.set(key, fingerprint);
288
+ else
289
+ this._published.delete(key);
290
+ // Guarded, fire-and-forget: a throwing host is swallowed, because there is
291
+ // nothing a caller could do with the failure and the element remains the
292
+ // source of truth either way.
293
+ publishOccurrenceMaterialities(this.std, patch);
294
+ }
295
+ }
296
+ /**
297
+ * The full state of one occurrence, as the host stores it. Exported for the
298
+ * host's own rebuild path and for tests — it is a pure function of the element.
299
+ */
300
+ export function buildOccurrencePatch(element, pivotDocId) {
301
+ return {
302
+ pivotDocId,
303
+ elementId: element.id,
304
+ framework: frameworkOfRole(element.role),
305
+ role: element.role,
306
+ // A flattened snapshot: a transport DTO, not the persisted shape. On the
307
+ // element the same data is a nested `Y.Map<string[]>` so that concurrent
308
+ // qualification merges per tag.
309
+ tags: readElementTags(element),
310
+ present: true,
311
+ };
312
+ }
@@ -0,0 +1,217 @@
1
+ import type { BlockStdScope, FrameworkId } from '../../std/index.js';
2
+ import type { ExtensionType } from '../../store/index.js';
3
+ import type { ReadonlySignal } from '@preact/signals-core';
4
+ /**
5
+ * Typed, render-free property values. No markup, ever — not a `TemplateResult`,
6
+ * not an HTML string, not a component reference (ADR 0006 § 5).
7
+ *
8
+ * Consumers MUST handle this union exhaustively **with a default branch**: an
9
+ * unknown `kind` renders as nothing and never throws, which is what lets a new
10
+ * value kind ship without breaking an older host or an older library. Treat the
11
+ * union as public API — adding a kind is cheap, changing one is a breaking
12
+ * change for every host.
13
+ */
14
+ export type PivotPropertyValue = {
15
+ kind: 'text';
16
+ value: string;
17
+ } | {
18
+ kind: 'number';
19
+ value: number;
20
+ unit?: string;
21
+ } | {
22
+ kind: 'boolean';
23
+ value: boolean;
24
+ } | {
25
+ kind: 'date';
26
+ value: string;
27
+ } | {
28
+ kind: 'tags';
29
+ value: string[];
30
+ } | {
31
+ kind: 'user';
32
+ value: {
33
+ id: string;
34
+ name: string;
35
+ };
36
+ } | {
37
+ kind: 'ref';
38
+ value: {
39
+ docId: string;
40
+ label?: string;
41
+ };
42
+ };
43
+ export type PivotProperty = {
44
+ /** Stable, host-defined key. Used for ordering and diffing, not display. */
45
+ key: string;
46
+ /** Display label, already localized by the host. */
47
+ label: string;
48
+ value: PivotPropertyValue;
49
+ /**
50
+ * Where the value came from. `derived-from-occurrence` marks properties the
51
+ * host wrote back from a board occurrence (see {@link
52
+ * OccurrenceMaterialityPatch}); the library renders them distinctly and never
53
+ * lets the user edit them here.
54
+ */
55
+ provenance?: 'authored' | 'derived-from-occurrence';
56
+ };
57
+ export type PivotSnapshot = {
58
+ docId: string;
59
+ title: string;
60
+ /** Host-ordered. The library preserves the order and does not sort. */
61
+ properties: PivotProperty[];
62
+ };
63
+ export type PivotQueryState = {
64
+ status: 'loading';
65
+ } | {
66
+ status: 'ready';
67
+ snapshot: PivotSnapshot;
68
+ }
69
+ /** The binding is dangling: record deleted, or not visible to this user. */
70
+ | {
71
+ status: 'missing';
72
+ } | {
73
+ status: 'error';
74
+ reason?: string;
75
+ };
76
+ /** Which properties a consuming surface asks for. */
77
+ export type PivotPropertiesConfig = {
78
+ /**
79
+ * Property keys the hover popup displays, in this order. The provider MUST
80
+ * load and return ONLY these.
81
+ *
82
+ * `[]` disables the asynchronous complement entirely while keeping the
83
+ * provider registered: the library does not call `properties$` **at all** —
84
+ * not "calls it and ignores the answer". No call, no request, no work. It is
85
+ * the deliberate opt-out for hosts that want the hover to stay purely local.
86
+ */
87
+ hoverFields: readonly string[];
88
+ };
89
+ /**
90
+ * One occurrence's derived contribution to a pivot record, announced and
91
+ * forgotten. The library never writes to the pivot record and never observes
92
+ * the result (ADR 0006 § 4).
93
+ *
94
+ * Declared here — ahead of the `PivotMaterialityPublisher` that will emit it,
95
+ * which waits on the type-3 qualification of ADR 0007 — because ADRs 0005,
96
+ * 0006 and 0007 freeze ONE contract: a host implementing this interface today
97
+ * must be able to implement the whole of it, and the optional method must not
98
+ * change shape when the publisher lands.
99
+ */
100
+ export type OccurrenceMaterialityPatch = {
101
+ /** The bound pivot record. */
102
+ pivotDocId: string;
103
+ /**
104
+ * Which occurrence this patch describes. The host's primary key, together
105
+ * with `pivotDocId` — derived materialities are stored per occurrence, which
106
+ * is what lets one be retracted precisely when its element disappears while
107
+ * the record's other occurrences keep theirs (ADR 0006 § 4.3/4.4).
108
+ */
109
+ elementId: string;
110
+ /**
111
+ * Owning framework, when the occurrence has one — derived from the namespace
112
+ * of its `role` (`'wardley:component'` → `'wardley'`).
113
+ *
114
+ * OPTIONAL, which is a deviation from ADR 0006 § 4's `framework: FrameworkId`,
115
+ * for exactly the reason ADR 0007 § 7 was already amended on the twin
116
+ * telemetry field: ADR 0007 § 6 states that no rung of the ladder requires
117
+ * the previous one, so a plain rectangle bound to a pivot record — no role at
118
+ * all — is a legal state that belongs to no framework. A required field would
119
+ * oblige the library to invent an identity, which is the one thing taking
120
+ * `FrameworkId` from ADR 0008 exists to stop. Absent rather than `'unknown'`,
121
+ * per the repo convention.
122
+ */
123
+ framework?: FrameworkId;
124
+ /** Role id, e.g. `'wardley:component'`. `undefined` once the role is cleared. */
125
+ role: string | undefined;
126
+ /**
127
+ * Type-3 tags: tag def id -> selected value ids. `{}` = cleared. A plain
128
+ * object on purpose: this is a transport DTO, not the persisted shape.
129
+ */
130
+ tags: Record<string, string[]>;
131
+ /**
132
+ * `false` = this occurrence no longer exists (element deleted, or unbound).
133
+ * The host drops every derived materiality keyed by `(pivotDocId, elementId)`.
134
+ * When `false`, `role` is `undefined` and `tags` is `{}`.
135
+ */
136
+ present: boolean;
137
+ };
138
+ export interface PivotPropertiesService {
139
+ /**
140
+ * MUST return synchronously and MUST NOT throw. The returned signal may start
141
+ * at `loading` and settle later; the library never awaits it. Caching,
142
+ * deduplication, revalidation and cancellation are the host's business —
143
+ * `fields` is part of the cache key.
144
+ *
145
+ * `fields` is the configured list, passed explicitly on every call. The
146
+ * provider MUST NOT load, compute, join or return properties outside it.
147
+ * Unknown or unauthorized keys are **skipped silently**: the provider returns
148
+ * the subset it can supply, never errors, never returns a placeholder row and
149
+ * never blocks the rest.
150
+ *
151
+ * The `MUST NOT throw` is a contract for hosts, not an assumption the library
152
+ * is entitled to make — it sits on the hover path, so
153
+ * {@link queryPivotProperties} guards it anyway.
154
+ */
155
+ properties$(pivotDocId: string, opts: {
156
+ fields: readonly string[];
157
+ }): ReadonlySignal<PivotQueryState>;
158
+ /**
159
+ * Optional zero-cost cache peek, for cases where the library wants to avoid
160
+ * even a `loading` flash. MUST be O(1) and side-effect free.
161
+ */
162
+ peek?(pivotDocId: string, opts: {
163
+ fields: readonly string[];
164
+ }): PivotSnapshot | undefined;
165
+ /**
166
+ * Fire-and-forget write-back of one occurrence's derived materialities.
167
+ * Returns `void`, deliberately not a `Promise`: the library cannot await it,
168
+ * retry it, or observe its failure. The channel is unidirectional and
169
+ * best-effort — a change on the record never mutates an element.
170
+ */
171
+ publishOccurrenceMaterialities?(patch: OccurrenceMaterialityPatch): void;
172
+ }
173
+ export declare const PivotPropertiesProvider: import("../../global/di/types.js").ServiceIdentifier<PivotPropertiesService> & (<U extends PivotPropertiesService = PivotPropertiesService>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
174
+ export declare const PivotPropertiesConfigIdentifier: import("../../global/di/types.js").ServiceIdentifier<PivotPropertiesConfig> & (<U extends PivotPropertiesConfig = PivotPropertiesConfig>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
175
+ /**
176
+ * The ONLY way in. **No noop default is registered**: unlike telemetry — where
177
+ * a noop keeps the bus uniformly wired — absence here is a *meaningful* state
178
+ * (standalone playground, unit tests, a labreapp build that failed to
179
+ * register), and making it the tested default is what keeps the degraded path
180
+ * honest.
181
+ */
182
+ export declare function PivotPropertiesExtension(service: PivotPropertiesService, config: PivotPropertiesConfig): ExtensionType;
183
+ /**
184
+ * The guarded read every in-library consumer uses. Synchronous by construction,
185
+ * and the one place the provider contract is enforced rather than trusted:
186
+ *
187
+ * - **No provider registered** → `undefined`. Not a call, not a state: the
188
+ * asynchronous complement does not exist in this assembly. The caller renders
189
+ * its local facts only — no spinner, no empty "Properties" section, no error
190
+ * — and hides (rather than disables) any affordance whose *only* purpose is
191
+ * to reach the record, per the `QuickSearchProvider` precedent.
192
+ * - **`hoverFields` empty, or no config registered** → `undefined`, and the
193
+ * provider is **not called at all**. Absent config with a provider present is
194
+ * a host wiring error, not a crash: it degrades to `hoverFields: []`, whose
195
+ * observable behaviour is identical to no provider.
196
+ * - **The provider throws** → `{ status: 'error' }`. A host's broken build must
197
+ * not become a crash-on-hover.
198
+ *
199
+ * `undefined` is deliberately NOT folded into `{ status: 'missing' }`: `missing`
200
+ * means "the binding is dangling — the record was deleted, or you cannot see
201
+ * it", which is a fact worth one discreet line. "This editor has no host data
202
+ * layer" is not that fact, and rendering it as one would put an error in front
203
+ * of every standalone user.
204
+ */
205
+ export declare function queryPivotProperties(std: BlockStdScope, pivotDocId: string): ReadonlySignal<PivotQueryState> | undefined;
206
+ /**
207
+ * The guarded `peek`. Same rules as {@link queryPivotProperties}, and a throw
208
+ * is swallowed into `undefined` — a cache peek exists to avoid a flash, so
209
+ * failing it must cost nothing but the flash.
210
+ */
211
+ export declare function peekPivotProperties(std: BlockStdScope, pivotDocId: string): PivotSnapshot | undefined;
212
+ /**
213
+ * The guarded write-back. Fire-and-forget by contract, so a throwing host is
214
+ * swallowed rather than surfaced: there is nothing a caller could do with the
215
+ * failure, and the element remains the source of truth either way.
216
+ */
217
+ export declare function publishOccurrenceMaterialities(std: BlockStdScope, patch: OccurrenceMaterialityPatch): void;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * `PivotPropertiesProvider` — the injectable `pivotDocId` → properties seam
3
+ * (MF1, ADR 0006).
4
+ *
5
+ * ADR 0005 gives a surface element an optional `pivotDocId` pointing at a
6
+ * host-owned **pivot record**. This is what turns that string into something a
7
+ * user can see, without the library ever learning what a pivot record is, and
8
+ * without the host's data layer getting between the user and their gesture.
9
+ *
10
+ * Two properties carry the whole design:
11
+ *
12
+ * - `properties$` returns a `ReadonlySignal` **synchronously**. There is no
13
+ * `Promise`-returning method on the read path, so no call site can `await`
14
+ * one — blocking is structurally impossible, not merely discouraged. Same
15
+ * shape as `DocDisplayMetaExtension`, minus the one thing worth not copying:
16
+ * the host never hands the library rendered markup.
17
+ * - The popup's content is host-configured (`hoverFields`), and that is a
18
+ * performance contract: a pivot record may carry dozens of properties,
19
+ * several of them expensive, and a hover must not pay for what it will not
20
+ * draw.
21
+ */
22
+ import { createIdentifier } from '../../global/di/index.js';
23
+ import { computed } from '@preact/signals-core';
24
+ export const PivotPropertiesProvider = createIdentifier('LabrePivotPropertiesService');
25
+ export const PivotPropertiesConfigIdentifier = createIdentifier('LabrePivotPropertiesConfig');
26
+ /**
27
+ * The ONLY way in. **No noop default is registered**: unlike telemetry — where
28
+ * a noop keeps the bus uniformly wired — absence here is a *meaningful* state
29
+ * (standalone playground, unit tests, a labreapp build that failed to
30
+ * register), and making it the tested default is what keeps the degraded path
31
+ * honest.
32
+ */
33
+ export function PivotPropertiesExtension(service, config) {
34
+ return {
35
+ setup: di => {
36
+ di.override(PivotPropertiesProvider, () => service);
37
+ di.override(PivotPropertiesConfigIdentifier, () => config);
38
+ },
39
+ };
40
+ }
41
+ const errorState = (reason) => computed(() => ({ status: 'error', reason }));
42
+ /**
43
+ * The guarded read every in-library consumer uses. Synchronous by construction,
44
+ * and the one place the provider contract is enforced rather than trusted:
45
+ *
46
+ * - **No provider registered** → `undefined`. Not a call, not a state: the
47
+ * asynchronous complement does not exist in this assembly. The caller renders
48
+ * its local facts only — no spinner, no empty "Properties" section, no error
49
+ * — and hides (rather than disables) any affordance whose *only* purpose is
50
+ * to reach the record, per the `QuickSearchProvider` precedent.
51
+ * - **`hoverFields` empty, or no config registered** → `undefined`, and the
52
+ * provider is **not called at all**. Absent config with a provider present is
53
+ * a host wiring error, not a crash: it degrades to `hoverFields: []`, whose
54
+ * observable behaviour is identical to no provider.
55
+ * - **The provider throws** → `{ status: 'error' }`. A host's broken build must
56
+ * not become a crash-on-hover.
57
+ *
58
+ * `undefined` is deliberately NOT folded into `{ status: 'missing' }`: `missing`
59
+ * means "the binding is dangling — the record was deleted, or you cannot see
60
+ * it", which is a fact worth one discreet line. "This editor has no host data
61
+ * layer" is not that fact, and rendering it as one would put an error in front
62
+ * of every standalone user.
63
+ */
64
+ export function queryPivotProperties(std, pivotDocId) {
65
+ const provider = std.getOptional(PivotPropertiesProvider);
66
+ if (!provider)
67
+ return undefined;
68
+ const fields = std.getOptional(PivotPropertiesConfigIdentifier)?.hoverFields;
69
+ if (!fields?.length)
70
+ return undefined;
71
+ try {
72
+ return provider.properties$(pivotDocId, { fields });
73
+ }
74
+ catch (error) {
75
+ console.error('PivotPropertiesProvider.properties$ threw', error);
76
+ return errorState(error instanceof Error ? error.message : String(error));
77
+ }
78
+ }
79
+ /**
80
+ * The guarded `peek`. Same rules as {@link queryPivotProperties}, and a throw
81
+ * is swallowed into `undefined` — a cache peek exists to avoid a flash, so
82
+ * failing it must cost nothing but the flash.
83
+ */
84
+ export function peekPivotProperties(std, pivotDocId) {
85
+ const provider = std.getOptional(PivotPropertiesProvider);
86
+ if (!provider?.peek)
87
+ return undefined;
88
+ const fields = std.getOptional(PivotPropertiesConfigIdentifier)?.hoverFields;
89
+ if (!fields?.length)
90
+ return undefined;
91
+ try {
92
+ return provider.peek(pivotDocId, { fields });
93
+ }
94
+ catch (error) {
95
+ console.error('PivotPropertiesProvider.peek threw', error);
96
+ return undefined;
97
+ }
98
+ }
99
+ /**
100
+ * The guarded write-back. Fire-and-forget by contract, so a throwing host is
101
+ * swallowed rather than surfaced: there is nothing a caller could do with the
102
+ * failure, and the element remains the source of truth either way.
103
+ */
104
+ export function publishOccurrenceMaterialities(std, patch) {
105
+ const provider = std.getOptional(PivotPropertiesProvider);
106
+ if (!provider?.publishOccurrenceMaterialities)
107
+ return;
108
+ try {
109
+ provider.publishOccurrenceMaterialities(patch);
110
+ }
111
+ catch (error) {
112
+ console.error('PivotPropertiesProvider.publishOccurrenceMaterialities threw', error);
113
+ }
114
+ }
@@ -1,3 +1,3 @@
1
1
  import type { TelemetryEvent } from './types.js';
2
- export type CodeBlockEventType = 'codeBlockLanguageSelect' | 'htmlBlockTogglePreview' | 'htmlBlockPreviewFailed';
2
+ export type CodeBlockEventType = 'codeBlockLanguageSelect' | 'codeBlockToggleCollapse' | 'htmlBlockTogglePreview' | 'htmlBlockPreviewFailed';
3
3
  export type CodeBlockEvents = Record<CodeBlockEventType, TelemetryEvent>;