@formicoidea/labre-core 0.31.0 → 0.32.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 (483) hide show
  1. package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
  2. package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
  3. package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
  4. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
  5. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
  6. package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
  7. package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
  8. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
  9. package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
  10. package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
  11. package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
  12. package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
  13. package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
  14. package/dist/_pkgs/affine-block-code/code-block.js +44 -6
  15. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
  16. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
  17. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
  18. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
  19. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
  20. package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
  21. package/dist/_pkgs/affine-block-code/effects.js +2 -0
  22. package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
  23. package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
  24. package/dist/_pkgs/affine-block-code/index.js +1 -0
  25. package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
  26. package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
  27. package/dist/_pkgs/affine-block-code/styles.js +31 -0
  28. package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
  29. package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
  30. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
  31. package/dist/_pkgs/affine-block-database/database-block.js +13 -0
  32. package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
  33. package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
  34. package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
  35. package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
  36. package/dist/_pkgs/affine-block-database/views/index.js +1 -0
  37. package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
  38. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
  39. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
  40. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
  41. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
  42. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
  43. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
  44. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
  45. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
  46. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
  47. package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
  48. package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
  49. package/dist/_pkgs/affine-block-latex/styles.js +6 -1
  50. package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
  51. package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
  52. package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
  53. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
  54. package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
  55. package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
  56. package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
  57. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
  58. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
  59. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
  60. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
  61. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
  62. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
  63. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
  64. package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
  65. package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
  66. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
  67. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
  68. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
  69. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
  70. package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
  71. package/dist/_pkgs/affine-block-root/index.js +4 -1
  72. package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
  73. package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
  74. package/dist/_pkgs/affine-block-root/view.js +13 -4
  75. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
  76. package/dist/_pkgs/affine-block-surface/effects.js +6 -0
  77. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
  78. package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
  79. package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
  80. package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
  81. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
  82. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
  83. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
  84. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
  85. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
  86. package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
  87. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
  88. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
  89. package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
  90. package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
  91. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
  92. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
  93. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
  94. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
  95. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
  96. package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
  97. package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
  98. package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
  99. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
  100. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
  101. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
  102. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
  103. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
  104. package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
  105. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
  106. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
  107. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
  108. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
  109. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
  110. package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
  111. package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
  112. package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
  113. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
  114. package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
  115. package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
  116. package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
  117. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
  118. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
  119. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
  120. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
  121. package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
  122. package/dist/_pkgs/affine-block-surface/index.js +1 -0
  123. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
  124. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
  125. package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
  126. package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
  127. package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
  128. package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
  129. package/dist/_pkgs/affine-block-surface/view.js +57 -2
  130. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
  131. package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
  132. package/dist/_pkgs/affine-block-table/table-block.js +8 -2
  133. package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
  134. package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
  135. package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
  136. package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
  137. package/dist/_pkgs/affine-block-table/utils.js +12 -0
  138. package/dist/_pkgs/affine-block-table/view.js +2 -0
  139. package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
  140. package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
  141. package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
  142. package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
  143. package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
  144. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
  145. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
  146. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
  147. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  148. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  149. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
  150. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
  151. package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
  152. package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
  153. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
  154. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
  155. package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
  156. package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
  157. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
  158. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
  159. package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
  160. package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
  161. package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
  162. package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
  163. package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
  164. package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
  165. package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
  166. package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
  167. package/dist/_pkgs/affine-components/icons/text.js +426 -426
  168. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
  169. package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
  170. package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
  171. package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
  172. package/dist/_pkgs/affine-foundation/view.js +11 -2
  173. package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
  174. package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
  175. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
  176. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
  177. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
  178. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
  179. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
  180. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
  181. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
  182. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
  183. package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
  184. package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
  185. package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
  186. package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
  187. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
  188. package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
  189. package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
  190. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
  191. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
  192. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
  193. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
  194. package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
  195. package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
  196. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
  197. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
  198. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
  199. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
  200. package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
  201. package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
  202. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
  203. package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
  204. package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
  205. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
  206. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
  207. package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
  208. package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
  209. package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
  210. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
  211. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
  212. package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
  213. package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
  214. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
  215. package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
  216. package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
  217. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
  218. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
  219. package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
  220. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
  221. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
  222. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
  223. package/dist/_pkgs/affine-inline-latex/command.js +46 -26
  224. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
  225. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
  226. package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
  227. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
  228. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
  229. package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
  230. package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
  231. package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
  232. package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
  233. package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
  234. package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
  235. package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
  236. package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
  237. package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
  238. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
  239. package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
  240. package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
  241. package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
  242. package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
  243. package/dist/_pkgs/affine-model/elements/index.js +1 -0
  244. package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
  245. package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
  246. package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
  247. package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
  248. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
  249. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
  250. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
  251. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
  252. package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
  253. package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
  254. package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
  255. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  256. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  257. package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
  258. package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
  259. package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
  260. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
  261. package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
  262. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
  263. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
  264. package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
  265. package/dist/_pkgs/affine-shared/services/index.js +5 -0
  266. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
  267. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
  268. package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
  269. package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
  270. package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
  271. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
  272. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  273. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
  274. package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
  275. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  276. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  277. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
  278. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
  279. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
  280. package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
  281. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
  282. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
  283. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
  284. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
  285. package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
  286. package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
  287. package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
  288. package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
  289. package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
  290. package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
  291. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
  292. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
  293. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
  294. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
  295. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
  296. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
  297. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
  298. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
  299. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
  300. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
  301. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
  302. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
  303. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
  304. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
  305. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
  306. package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
  307. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  308. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
  309. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
  310. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
  311. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
  312. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
  313. package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
  314. package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
  315. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
  316. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
  317. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
  318. package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
  319. package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
  320. package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
  321. package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
  322. package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
  323. package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
  324. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
  325. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
  326. package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
  327. package/dist/_pkgs/data-view/core/data-view.js +25 -3
  328. package/dist/_pkgs/data-view/core/detail/field.js +2 -2
  329. package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
  330. package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
  331. package/dist/_pkgs/data-view/core/effect.js +2 -0
  332. package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
  333. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
  334. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
  335. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
  336. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
  337. package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
  338. package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
  339. package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
  340. package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
  341. package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
  342. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
  343. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
  344. package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
  345. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
  346. package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
  347. package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
  348. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  349. package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
  350. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  351. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
  352. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
  353. package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
  354. package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
  355. package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
  356. package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
  357. package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
  358. package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
  359. package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
  360. package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
  361. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
  362. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
  363. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
  364. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
  365. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
  366. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
  367. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
  368. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
  369. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
  370. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
  371. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
  372. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
  373. package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
  374. package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
  375. package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
  376. package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
  377. package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
  378. package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
  379. package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
  380. package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
  381. package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
  382. package/dist/_pkgs/data-view/view-presets/index.js +3 -0
  383. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
  384. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
  385. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
  386. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
  387. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
  388. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
  389. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
  390. package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
  391. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
  392. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
  393. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
  394. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
  395. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
  396. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
  397. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
  398. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
  399. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
  400. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
  401. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
  402. package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
  403. package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
  404. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
  405. package/dist/_pkgs/global/gfx/curve.js +4 -3
  406. package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
  407. package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
  408. package/dist/_pkgs/std/clipboard/utils.js +7 -0
  409. package/dist/_pkgs/std/event/dispatcher.js +27 -1
  410. package/dist/_pkgs/std/event/keymap.js +16 -6
  411. package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
  412. package/dist/_pkgs/std/extension/command-registry.js +233 -0
  413. package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
  414. package/dist/_pkgs/std/extension/index.d.ts +2 -0
  415. package/dist/_pkgs/std/extension/index.js +2 -0
  416. package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
  417. package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
  418. package/dist/_pkgs/std/gfx/index.d.ts +7 -3
  419. package/dist/_pkgs/std/gfx/index.js +6 -2
  420. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
  421. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
  422. package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
  423. package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
  424. package/dist/_pkgs/std/gfx/layer.js +1 -2
  425. package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
  426. package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
  427. package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
  428. package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
  429. package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
  430. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
  431. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
  432. package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
  433. package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
  434. package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
  435. package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
  436. package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
  437. package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
  438. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
  439. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
  440. package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
  441. package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
  442. package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
  443. package/dist/_pkgs/std/gfx/perf.js +30 -0
  444. package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
  445. package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
  446. package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
  447. package/dist/_pkgs/std/gfx/viewport.js +19 -1
  448. package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
  449. package/dist/_pkgs/std/inline/services/event.js +96 -21
  450. package/dist/_pkgs/std/utils/layer.js +2 -6
  451. package/dist/_pkgs/std/utils/tree.d.ts +14 -0
  452. package/dist/_pkgs/std/utils/tree.js +59 -8
  453. package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
  454. package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
  455. package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
  456. package/dist/_pkgs/store/model/store/crud.js +7 -4
  457. package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
  458. package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
  459. package/dist/commands.d.ts +58 -0
  460. package/dist/commands.js +66 -0
  461. package/dist/extensions/command-telemetry.d.ts +21 -0
  462. package/dist/extensions/command-telemetry.js +89 -0
  463. package/dist/extensions/store.d.ts +9 -4
  464. package/dist/extensions/store.js +27 -24
  465. package/dist/extensions/view.d.ts +9 -4
  466. package/dist/extensions/view.js +23 -8
  467. package/dist/flags.d.ts +98 -21
  468. package/dist/flags.js +103 -22
  469. package/dist/frameworks.d.ts +45 -0
  470. package/dist/frameworks.js +154 -0
  471. package/dist/schemas.d.ts +8 -5
  472. package/dist/schemas.js +28 -32
  473. package/dist/shortcuts.d.ts +16 -16
  474. package/dist/shortcuts.js +8 -36
  475. package/dist/translations.d.ts +56 -0
  476. package/dist/translations.js +112 -0
  477. package/package.json +16 -4
  478. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
  479. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
  480. package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
  481. package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
  482. package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
  483. package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
@@ -0,0 +1,528 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { TelemetryProvider, translateKey } from '../../affine-shared/services/index.js';
36
+ import { WidgetViewExtension, } from '../../std/index.js';
37
+ import { GfxControllerIdentifier, GfxPrimitiveElementModel, } from '../../std/gfx/index.js';
38
+ import { effect } from '@preact/signals-core';
39
+ import { css, html, nothing, unsafeCSS } from 'lit';
40
+ import { state } from 'lit/decorators.js';
41
+ import { literal, unsafeStatic } from 'lit/static-html.js';
42
+ import { EditorAnchoredPanel, editorAnchoredPanelStyles, } from './editor-anchored-panel.js';
43
+ import { checkedNudges, setNudgeChecked, } from './map-quality.js';
44
+ import { ValidationManager } from './validation.js';
45
+ export const MAP_QUALITY_WIDGET = 'affine-map-quality-widget';
46
+ /**
47
+ * Width of the column the checkboxes live in, in screen pixels.
48
+ *
49
+ * One vertical line runs down the left edge of every sentence in the panel: the
50
+ * box sits in this column, the words in the next. The alternative the PO offered
51
+ * (boxes aligned right) would have put the control furthest from the words it
52
+ * governs.
53
+ */
54
+ const CHECKBOX_GUTTER = 22;
55
+ /**
56
+ * The **Map quality** panel (PF7.11): the checklist of nudges a framework
57
+ * declares (PF7.10), on one root instance.
58
+ *
59
+ * ## One kind of statement, and only one (PO, 02/08/2026)
60
+ *
61
+ * The panel used to carry three: the checklist, a "Run check-up" button with the
62
+ * remarks and the families it had walked, and a count of the real-time warnings
63
+ * on the map. All three were true and the reader had to work out which was
64
+ * speaking — a check-up saying "Nothing to report" over a map wearing amber
65
+ * badges reads as a contradiction until you know it never looked at them. The
66
+ * PO's answer was not more wording: it was to take the other two away. What is
67
+ * left is the one thing the panel is FOR, the expectations the tool cannot judge
68
+ * and the user says they have taken care of.
69
+ *
70
+ * Nothing was removed from the engine. The on-demand moment (PF5.14) and the
71
+ * families that used it are still there, still tested; the canvas still carries
72
+ * the real-time findings, which is where they were always legible. Only this
73
+ * panel got shorter.
74
+ *
75
+ * ## Generic, not Wardley
76
+ *
77
+ * Nothing here names a framework, a role or a rule. The panel asks the ENGINE
78
+ * what this instance has ({@link ValidationManager.nudgesFor}) and renders the
79
+ * answer. A second framework declaring nudges gets the toolbar entry and this
80
+ * panel with no code written anywhere — which is the acceptance criterion of
81
+ * PF7.11 and the reason none of this lives in `gfx/wardley`.
82
+ *
83
+ * ## Why a widget and not a menu
84
+ *
85
+ * Because a dropdown closes on the first click, and this is a surface you WORK
86
+ * in: four boxes to tick, one at a time, while looking at the map. The entry in
87
+ * the Validation dropdown opens it and gets out of the way
88
+ * (`validation-toolbar.ts`); `ValidationManager.mapQualityFor$` is the seam
89
+ * between the two, because the entry lives in `editor-menu-button`'s shadow root
90
+ * and the panel lives on the root block — two trees with no DOM path between
91
+ * them.
92
+ *
93
+ * ## Where it sits
94
+ *
95
+ * **Anchored to the EDITOR, above the senior button bar and at its width** —
96
+ * the same place, the same layer and the same shared class as the reversed
97
+ * reading's panel (ADR 0011, PO decision of 02/08/2026). It shipped as a
98
+ * popover hanging off the map's top-right corner, at 320px, flipping sides and
99
+ * ends to stay on screen; every line of that arithmetic is gone, and with it
100
+ * the two faults the PO named — a floating box that loses the z-order contest
101
+ * with the toolbars, and a measure that lines up with nothing.
102
+ *
103
+ * Only the PRESENTATION moved. The entry in the background's contextual menu is
104
+ * still the trigger, the panel is still about one root instance and still says
105
+ * so in `data-element-id`, and nothing about what it renders changed.
106
+ *
107
+ * ## Read-only
108
+ *
109
+ * Ticking a nudge WRITES on the document, so every checkbox is disabled in a
110
+ * read-only store — and `setNudgeChecked` is behind the same guard, because a
111
+ * disabled input is a UI promise and not an enforcement. Opening the panel
112
+ * writes nothing, so a reviewer still reads the checklist.
113
+ *
114
+ * ## Ticking is assuming
115
+ *
116
+ * The panel never claims a nudge is satisfied. It records that somebody said so
117
+ * — the same contract as an exception (PF8), and the reason the checklist is
118
+ * introduced as "To be checked by you" rather than as "Checklist", which left
119
+ * the reader to guess whether the tool had already been through it.
120
+ */
121
+ let MapQualityWidget = (() => {
122
+ let _classSuper = EditorAnchoredPanel;
123
+ let __openFor_decorators;
124
+ let __openFor_initializers = [];
125
+ let __openFor_extraInitializers = [];
126
+ let __revision_decorators;
127
+ let __revision_initializers = [];
128
+ let __revision_extraInitializers = [];
129
+ return class MapQualityWidget extends _classSuper {
130
+ constructor() {
131
+ super(...arguments);
132
+ this.#_openFor_accessor_storage = __runInitializers(this, __openFor_initializers, null);
133
+ this.#_revision_accessor_storage = (__runInitializers(this, __openFor_extraInitializers), __runInitializers(this, __revision_initializers, 0));
134
+ this._elementSubscriptions = (__runInitializers(this, __revision_extraInitializers), []);
135
+ /** The instance whose panel has already been given the focus, if any. */
136
+ this._focused = null;
137
+ this._close = () => {
138
+ this._validation?.closeMapQuality();
139
+ };
140
+ }
141
+ static {
142
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
143
+ __openFor_decorators = [state()];
144
+ __revision_decorators = [state()];
145
+ __esDecorate(this, null, __openFor_decorators, { kind: "accessor", name: "_openFor", static: false, private: false, access: { has: obj => "_openFor" in obj, get: obj => obj._openFor, set: (obj, value) => { obj._openFor = value; } }, metadata: _metadata }, __openFor_initializers, __openFor_extraInitializers);
146
+ __esDecorate(this, null, __revision_decorators, { kind: "accessor", name: "_revision", static: false, private: false, access: { has: obj => "_revision" in obj, get: obj => obj._revision, set: (obj, value) => { obj._revision = value; } }, metadata: _metadata }, __revision_initializers, __revision_extraInitializers);
147
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
148
+ }
149
+ static { this.styles = [
150
+ editorAnchoredPanelStyles,
151
+ css `
152
+ /* The box, the layer and the anchoring come from the shared pattern; this
153
+ is the panel's own stacking of sections inside it. */
154
+ .map-quality-panel {
155
+ display: flex;
156
+ flex-direction: column;
157
+ gap: 12px;
158
+ }
159
+
160
+ .map-quality-head {
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: space-between;
164
+ gap: 8px;
165
+ font-weight: 600;
166
+ }
167
+
168
+ .map-quality-close {
169
+ border: none;
170
+ background: transparent;
171
+ color: var(--affine-text-secondary-color);
172
+ font-family: inherit;
173
+ font-size: 16px;
174
+ line-height: 1;
175
+ padding: 2px 6px;
176
+ border-radius: 4px;
177
+ cursor: pointer;
178
+ }
179
+
180
+ .map-quality-close:hover {
181
+ background: var(--affine-hover-color);
182
+ color: var(--affine-text-primary-color);
183
+ }
184
+
185
+ .map-quality-group-label {
186
+ color: var(--affine-text-secondary-color);
187
+ font-size: 12px;
188
+ text-transform: uppercase;
189
+ letter-spacing: 0.04em;
190
+ }
191
+
192
+ /* One column for the control, one for the words. */
193
+ .map-quality-nudge {
194
+ display: grid;
195
+ grid-template-columns: ${unsafeCSS(CHECKBOX_GUTTER)}px 1fr;
196
+ align-items: start;
197
+ padding: 4px 0;
198
+ cursor: pointer;
199
+ }
200
+
201
+ .map-quality-nudge input[disabled] {
202
+ cursor: not-allowed;
203
+ }
204
+
205
+ .map-quality-nudge input {
206
+ margin: 2px 0 0;
207
+ justify-self: start;
208
+ }
209
+
210
+ .map-quality-nudge[data-checked='true'] .map-quality-nudge-label {
211
+ color: var(--affine-text-secondary-color);
212
+ }
213
+
214
+ .map-quality-nudge-label {
215
+ overflow-wrap: anywhere;
216
+ }
217
+
218
+ .map-quality-close:focus-visible,
219
+ .map-quality-nudge input:focus-visible {
220
+ outline: 2px solid var(--affine-primary-color);
221
+ outline-offset: 1px;
222
+ }
223
+ `,
224
+ ]; }
225
+ #_openFor_accessor_storage;
226
+ /** The instance whose panel is open, mirrored off the manager's signal. */
227
+ get _openFor() { return this.#_openFor_accessor_storage; }
228
+ set _openFor(value) { this.#_openFor_accessor_storage = value; }
229
+ #_revision_accessor_storage;
230
+ /**
231
+ * Bumped to force a re-render when the document changes underneath — a peer
232
+ * ticking a nudge, an undo, the instance moving. The checklist state lives in
233
+ * the Y.Map, not here: this widget renders it, it never caches it.
234
+ */
235
+ get _revision() { return this.#_revision_accessor_storage; }
236
+ set _revision(value) { this.#_revision_accessor_storage = value; }
237
+ get _validation() {
238
+ return this.std.getOptional(ValidationManager);
239
+ }
240
+ get panelOpen() {
241
+ return this._openFor !== null;
242
+ }
243
+ closePanel() {
244
+ this._close();
245
+ }
246
+ /** The open instance, if it still exists and still has a panel to show. */
247
+ get _element() {
248
+ if (this._openFor === null)
249
+ return null;
250
+ const element = this.gfx.surface?.getElementById(this._openFor) ?? null;
251
+ if (!(element instanceof GfxPrimitiveElementModel))
252
+ return null;
253
+ return this._validation?.hasMapQuality(element) ? element : null;
254
+ }
255
+ /**
256
+ * Follow the open instance, and only while one is open. On a board with no
257
+ * panel these subscriptions do not exist, so the busiest signals on the
258
+ * surface cost the widget nothing.
259
+ *
260
+ * `elementRemoved` as well as `elementUpdated`, and that is not symmetry for
261
+ * its own sake: DELETING the instance is the one change that must close the
262
+ * panel, and it is the one change `elementUpdated` never reports. Without it
263
+ * the panel floats over a map that is gone, with a checkbox that writes to a
264
+ * dead element.
265
+ */
266
+ _watchElements() {
267
+ const wanted = this._openFor !== null;
268
+ if (wanted === (this._elementSubscriptions.length > 0))
269
+ return;
270
+ for (const subscription of this._elementSubscriptions) {
271
+ subscription.unsubscribe();
272
+ }
273
+ this._elementSubscriptions = [];
274
+ if (!wanted)
275
+ return;
276
+ const surface = this.gfx.surface;
277
+ if (!surface)
278
+ return;
279
+ this._elementSubscriptions.push(surface.elementUpdated.subscribe(() => {
280
+ this._revision += 1;
281
+ }), surface.elementRemoved.subscribe(({ id }) => {
282
+ if (id === this._openFor)
283
+ this._close();
284
+ else
285
+ this._revision += 1;
286
+ }));
287
+ }
288
+ /**
289
+ * Idempotent wiring, called from both `firstUpdated` and a later
290
+ * `connectedCallback` — `WithDisposable` throws the group away on disconnect
291
+ * while lit runs `firstUpdated` exactly once.
292
+ */
293
+ _wire() {
294
+ const { _disposables } = this;
295
+ const validation = this._validation;
296
+ if (validation) {
297
+ _disposables.add(effect(() => {
298
+ this._openFor = validation.mapQualityFor$.value;
299
+ this._watchElements();
300
+ }));
301
+ }
302
+ // Click-away, Escape, and the re-measure of the bar the panel is aligned
303
+ // on — the shared pattern, and the same call the reading panel makes.
304
+ //
305
+ // The panel no longer follows the instance on a pan or a zoom, because it
306
+ // no longer hangs off it: it is anchored to the EDITOR, so a gesture that
307
+ // moves the map leaves the surface somebody is halfway through ticking
308
+ // exactly where they left it — which was the point of not closing on pan in
309
+ // the first place, now obtained by construction.
310
+ this.wireAnchoredPanel();
311
+ _disposables.add(() => {
312
+ for (const subscription of this._elementSubscriptions) {
313
+ subscription.unsubscribe();
314
+ }
315
+ this._elementSubscriptions = [];
316
+ });
317
+ }
318
+ connectedCallback() {
319
+ super.connectedCallback();
320
+ if (this.hasUpdated)
321
+ this._wire();
322
+ }
323
+ firstUpdated() {
324
+ this._wire();
325
+ }
326
+ /**
327
+ * Move the focus into the panel when it opens, once.
328
+ *
329
+ * Without it the panel is unreachable from the keyboard and silent to a screen
330
+ * reader — which matters most on the path the toolbar does not cover: opened
331
+ * from the command palette, the focus is still in the host's own UI, so
332
+ * nothing is announced and the Escape handler (on the editor host, which is
333
+ * the right scope) never sees the key.
334
+ *
335
+ * The panel itself takes the focus, not the first checkbox: it carries the
336
+ * dialog's label, so a screen reader reads "Map quality" before it reads the
337
+ * first expectation. `preventScroll` because the host is a zero-sized box at
338
+ * the viewport origin and the browser would otherwise scroll the editor to
339
+ * "reveal" it.
340
+ *
341
+ * The dialog semantics themselves — `role`, `tabindex`, and the deliberate
342
+ * absence of `aria-modal` — come from {@link EditorAnchoredPanel}, which is
343
+ * also where the reasoning for that absence now lives.
344
+ */
345
+ updated() {
346
+ super.updated();
347
+ if (this._openFor === null || this._openFor === this._focused) {
348
+ if (this._openFor === null)
349
+ this._focused = null;
350
+ return;
351
+ }
352
+ const panel = this.shadowRoot?.querySelector('[data-testid="map-quality-panel"]');
353
+ if (!panel)
354
+ return;
355
+ this._focused = this._openFor;
356
+ panel.focus({ preventScroll: true });
357
+ }
358
+ /**
359
+ * Tick or untick, and report it.
360
+ *
361
+ * `captureSync` opens an undo checkpoint first, like every other write the
362
+ * validation surfaces make, so one click is one undo.
363
+ *
364
+ * The read-only test here is the CHEAP half — it keeps `captureSync` and the
365
+ * telemetry from firing for a write that will not happen. The one that
366
+ * actually protects the document is inside `setNudgeChecked`, at the seam,
367
+ * where every caller meets it (see the note there).
368
+ */
369
+ _toggleNudge(element, nudge, checked) {
370
+ if (this.std.store.readonly)
371
+ return;
372
+ this.std.store.captureSync();
373
+ if (!setNudgeChecked(element, nudge.id, checked))
374
+ return;
375
+ this._revision += 1;
376
+ this.std.getOptional(TelemetryProvider)?.track('MapQualityNudgeToggled', {
377
+ page: 'whiteboard editor',
378
+ segment: 'whiteboard',
379
+ module: 'map quality panel',
380
+ control: 'nudge',
381
+ framework: nudge.framework,
382
+ nudgeId: nudge.id,
383
+ checked,
384
+ });
385
+ }
386
+ _renderNudges(element) {
387
+ const nudges = this._validation?.nudgesFor(element) ?? [];
388
+ if (nudges.length === 0)
389
+ return nothing;
390
+ const checked = new Set(checkedNudges(element));
391
+ const readonly = this.std.store.readonly;
392
+ return html `<div>
393
+ <div class="map-quality-group-label" id="map-quality-checklist-label">
394
+ ${
395
+ // Who is doing the checking, said in the label itself (PO, 02/08).
396
+ // "Checklist" left the reader to guess whether the tool had already
397
+ // been through it — and the whole contract of a nudge is that it has
398
+ // not, and cannot. Ticking is assuming; the label now says so before
399
+ // the first box rather than in a comment in this file.
400
+ translateKey(this.std, 'com.labre.validation.map-quality.checklist.yours', 'To be checked by you:')}
401
+ </div>
402
+ <div role="group" aria-labelledby="map-quality-checklist-label">
403
+ ${nudges.map(nudge => {
404
+ const on = checked.has(nudge.id);
405
+ const label = translateKey(this.std, nudge.labelKey, nudge.fallback);
406
+ return html `<label
407
+ class="map-quality-nudge"
408
+ data-testid="map-quality-nudge"
409
+ data-nudge-id=${nudge.id}
410
+ data-checked=${on ? 'true' : 'false'}
411
+ >
412
+ <input
413
+ type="checkbox"
414
+ .checked=${on}
415
+ ?disabled=${readonly}
416
+ aria-label=${label}
417
+ @pointerdown=${this.swallow}
418
+ @pointerup=${this.swallow}
419
+ @change=${(event) => this._toggleNudge(element, nudge, event.target.checked)}
420
+ />
421
+ <span class="map-quality-nudge-label">${label}</span>
422
+ </label>`;
423
+ })}
424
+ </div>
425
+ </div>`;
426
+ }
427
+ render() {
428
+ const element = this._element;
429
+ // An instance that lost its role, or whose framework was flagged off while
430
+ // the panel was open, takes the panel with it — and the manager is told, so
431
+ // a stale id can never match a later element. Deletion is caught earlier, by
432
+ // the `elementRemoved` subscription; this is the backstop for the changes
433
+ // that leave the element in place.
434
+ //
435
+ // Deferred out of the render pass on purpose: `_close` writes a signal the
436
+ // widget itself reads, and lit forbids scheduling an update from inside one.
437
+ if (!element) {
438
+ if (this._openFor !== null)
439
+ queueMicrotask(this._close);
440
+ return nothing;
441
+ }
442
+ // Read so lit re-renders on a document change; the value itself means
443
+ // nothing.
444
+ void this._revision;
445
+ const title = translateKey(this.std, 'com.labre.validation.map-quality.section', 'Map quality');
446
+ return this.renderAnchoredPanel({
447
+ testid: 'map-quality-panel',
448
+ variant: 'map-quality-panel',
449
+ elementId: element.id,
450
+ label: title,
451
+ }, html `<div class="map-quality-head">
452
+ <span>${title}</span>
453
+ <button
454
+ class="map-quality-close"
455
+ type="button"
456
+ data-testid="map-quality-close"
457
+ aria-label=${translateKey(this.std, 'com.labre.validation.map-quality.close', 'Close')}
458
+ @pointerdown=${this.swallow}
459
+ @pointerup=${this.swallow}
460
+ @click=${this._close}
461
+ >
462
+ ×
463
+ </button>
464
+ </div>
465
+ ${this._renderNudges(element)}`);
466
+ }
467
+ };
468
+ })();
469
+ export { MapQualityWidget };
470
+ export const mapQualityWidget = WidgetViewExtension('affine:page', MAP_QUALITY_WIDGET, literal `${unsafeStatic(MAP_QUALITY_WIDGET)}`);
471
+ /**
472
+ * The single selected root instance with a Map quality panel, or `null` — the
473
+ * same answer the toolbar entry computes, asked without a `ToolbarContext`.
474
+ */
475
+ function mapQualityTarget(std) {
476
+ const validation = std.getOptional(ValidationManager);
477
+ if (!validation)
478
+ return null;
479
+ const selected = std.get(GfxControllerIdentifier).selection.selectedElements;
480
+ if (selected.length !== 1)
481
+ return null;
482
+ const [element] = selected;
483
+ if (!(element instanceof GfxPrimitiveElementModel))
484
+ return null;
485
+ return validation.hasMapQuality(element) ? element : null;
486
+ }
487
+ /**
488
+ * "Open Map quality", in the command registry (PF3 / ADR 0008).
489
+ *
490
+ * The toolbar entry is one SURFACE of this command, not a second implementation:
491
+ * the palette, a host panel and the agent reach the same panel through the same
492
+ * registry entry, and Settings › Shortcuts can bind it like anything else.
493
+ *
494
+ * `owner: 'core'` and not a framework's, because the panel belongs to none: it
495
+ * is generic surface tooling that appears for whichever framework declared a
496
+ * nudge. Its gating rides on `when`, which asks the engine
497
+ * exactly what the toolbar asks — so a board with every framework flagged off
498
+ * offers the command nowhere, with no flag test written here.
499
+ *
500
+ * Opening writes NOTHING, so there is no read-only guard: reading the quality of
501
+ * a map you cannot edit is precisely what a reviewer does. The write is the
502
+ * checkbox, and that one is guarded twice (see {@link MapQualityWidget}).
503
+ */
504
+ const openMapQuality = {
505
+ id: 'validation.mapQuality',
506
+ owner: 'core',
507
+ kind: 'action',
508
+ labelKey: 'com.labre.command.validation.map-quality',
509
+ labelFallback: 'Map quality',
510
+ descriptionKey: 'com.labre.command.validation.map-quality.description',
511
+ surfaces: ['palette', 'agent'],
512
+ scope: 'edgeless',
513
+ // Keyless by intent — still bindable from Settings › Shortcuts, which is what
514
+ // `toShortcutDescriptor` being total buys.
515
+ defaultKeys: { mac: [], other: [] },
516
+ // The serializable precondition a host catalogue can show. `when` narrows it
517
+ // to "…and that selection is a root instance that HAS a panel", which no
518
+ // member of the closed union can express.
519
+ availability: 'selection:framework',
520
+ when: std => mapQualityTarget(std) !== null,
521
+ run: std => {
522
+ const element = mapQualityTarget(std);
523
+ if (!element)
524
+ return;
525
+ std.getOptional(ValidationManager)?.openMapQuality(element);
526
+ },
527
+ };
528
+ export const mapQualityCommands = [openMapQuality];
@@ -0,0 +1,109 @@
1
+ import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
2
+ import type { ExtensionType } from '../../store/index.js';
3
+ /**
4
+ * Map quality — the NUDGES half (PF7.10).
5
+ *
6
+ * A nudge is an expectation a framework holds and the tool cannot judge: "the
7
+ * map has a title that frames the study", "the map is legended". The content can
8
+ * exist without being good, so there is nothing to compute — and a rule that
9
+ * pretended to compute it would be the worst kind of validation, one that says
10
+ * "valid" about something it never looked at.
11
+ *
12
+ * So a nudge is declarative DATA, exactly like a rule, a role or a profile, and
13
+ * it is never evaluated by anything. It is presented as a CHECKLIST the user
14
+ * ticks, and ticking is the same gesture as granting an exception (PF8):
15
+ * **ticking is assuming**. The tool records that the user took responsibility;
16
+ * it never claims to have checked.
17
+ *
18
+ * ## Where the state lives
19
+ *
20
+ * On the framework's BACKGROUND element — `GfxPrimitiveElementModel.qualityChecklist`
21
+ * — for the same reason the validation profile does: two maps on one canvas are
22
+ * two independent pieces of work. It is one flat array of ids in a declared
23
+ * `@field()`, so it syncs, it undoes, it survives a copy and an export, and it
24
+ * needs no block schema change and no migration.
25
+ *
26
+ * It also survives the framework's flag going off and coming back, which is the
27
+ * whole point of storing it as document data rather than as tooling state: the
28
+ * flag takes the CHECKLIST away, never the decisions somebody recorded on it.
29
+ *
30
+ * ## Gating
31
+ *
32
+ * A framework registers its nudges from its FLAG-GATED view extension, beside
33
+ * its rules and its profiles: a checklist is tooling. Flag off, nothing is
34
+ * registered, the panel offers nothing, and the ids already written go unread
35
+ * until the flag comes back.
36
+ */
37
+ /**
38
+ * One expectation, as data. Deliberately three fields: an id to persist, a key
39
+ * to translate, and the framework's own wording for a host that ships no
40
+ * catalogue for it — the same `labelKey` + `fallback` pair a profile and a
41
+ * background label already carry. The library never invents the wording of
42
+ * somebody else's expectation.
43
+ */
44
+ export interface QualityNudge {
45
+ /** Stable id, namespaced by framework: `wardley.q1-title`. This is what is persisted. */
46
+ id: string;
47
+ /** Owning framework, `wardley`. A nudge never applies across frameworks. */
48
+ framework: string;
49
+ /** i18n key of the expectation, resolved by the host. */
50
+ labelKey: string;
51
+ /** The framework's own wording, when the host ships no catalogue for the key. */
52
+ fallback?: string;
53
+ /** Ascending rank in the checklist. Ties keep declaration order. */
54
+ order?: number;
55
+ }
56
+ /** A framework registers its nudges here; nothing else registers nudges. */
57
+ export declare const QualityNudgeIdentifier: import("../../global/di/types.js").ServiceIdentifier<QualityNudge> & (<U extends QualityNudge = QualityNudge>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
58
+ /**
59
+ * Register a framework's nudges. Call it from the FLAG-GATED view extension,
60
+ * beside {@link ValidationRuleExtension}.
61
+ *
62
+ * ```ts
63
+ * context.register(QualityNudgeExtension(WARDLEY_NUDGES));
64
+ * ```
65
+ */
66
+ export declare function QualityNudgeExtension(nudges: readonly QualityNudge[]): ExtensionType;
67
+ /**
68
+ * The nudge ids ticked on `element` — always an array, never a copy to keep.
69
+ *
70
+ * The value comes out of a Y.Map, so it is whatever a peer wrote: a client that
71
+ * got it wrong must not break the panel on this one. Non-string members are
72
+ * dropped rather than shown, for the same reason.
73
+ */
74
+ export declare function checkedNudges(element: GfxPrimitiveElementModel): readonly string[];
75
+ /** Whether `nudgeId` is ticked on `element`. */
76
+ export declare function isNudgeChecked(element: GfxPrimitiveElementModel, nudgeId: string): boolean;
77
+ /**
78
+ * Tick or untick `nudgeId` on `element`.
79
+ *
80
+ * The write goes through the declared `@field()` accessor, so it lands in the
81
+ * Y.Map, syncs to every peer, joins the undo stack and survives a copy — see the
82
+ * note on `GfxPrimitiveElementModel.qualityChecklist`.
83
+ *
84
+ * Unticking the LAST one removes the key rather than leaving an empty array
85
+ * behind: assigning `[]` through the accessor would keep a key in the Y.Map,
86
+ * invisible in the panel but synced to every peer and shipped in every snapshot.
87
+ * `clearField` removes it, so an element whose checklist was emptied really is
88
+ * indistinguishable from one that never had a nudge ticked — in the document,
89
+ * and not just in this tab. Exactly what `revokeException` does with the last
90
+ * exception (PF8).
91
+ *
92
+ * ## Read-only is enforced HERE, not only in the panel
93
+ *
94
+ * The house convention for these writes: the seam guards itself
95
+ * (`setProfile`, `setException`, `revokeExceptionsOn` all do). A `disabled`
96
+ * checkbox is a UI promise and covers exactly one caller; an agent, a host or a
97
+ * future surface reaching this function directly would have no net at all. And
98
+ * the failure is not a no-op: `clearField` goes through `Store.transact`, which
99
+ * — unlike `addBlock` / `updateBlock` / `deleteBlock` — carries no read-only
100
+ * guard of its own, so unticking would genuinely delete the key from a document
101
+ * the user cannot edit.
102
+ *
103
+ * The store is reached through the element's own surface. An element not yet
104
+ * attached to one carries no document to protect and is written normally, which
105
+ * is what a unit fixture is.
106
+ *
107
+ * @returns whether the document actually changed.
108
+ */
109
+ export declare function setNudgeChecked(element: GfxPrimitiveElementModel, nudgeId: string, checked: boolean): boolean;