@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,133 @@
1
+ import type { RootBlockModel } from '../../affine-model/index.js';
2
+ import { WidgetComponent } from '../../std/index.js';
3
+ import { type CSSResultGroup, type TemplateResult } from 'lit';
4
+ /**
5
+ * **Above every toolbar, the contextual one included.**
6
+ *
7
+ * The ceiling inside `.widgets-container` is `--affine-z-index-popover`, which
8
+ * the theme sets to `1000`: `editor-toolbar` — the contextual toolbar the PO
9
+ * found the reading panel hiding behind — takes it verbatim, and so does the
10
+ * zoom bar. The bottom `edgeless-toolbar` is only `z-index: 1`, and its senior
11
+ * sub-menus are appended INSIDE its own subtree, so they are capped at that 1
12
+ * with it. Ten above the variable clears the lot with headroom to spare.
13
+ *
14
+ * The fallback matters as much as the value: it is the host's theme stylesheet
15
+ * that defines the variable, never this library.
16
+ *
17
+ * It is set on the HOST rather than on the panel. Every widget host is a
18
+ * sibling in `.widgets-container`, and `affine-toolbar-widget` declares no
19
+ * stacking context of its own, so `editor-toolbar`'s 1000 competes at that
20
+ * level — which makes it the only level where this contest can be won.
21
+ *
22
+ * What still paints above it, correctly and by design: `popMenu` context menus
23
+ * (1001) and the toolbar drag preview (9999), both mounted on `editor-host`
24
+ * outside the contained widgets layer. A dropdown opened FROM one of these
25
+ * panels would go through `popMenu` and land on top of it, which is what one
26
+ * wants.
27
+ */
28
+ export declare const EDITOR_ANCHORED_PANEL_Z_INDEX = "calc(var(--affine-z-index-popover, 1000) + 10)";
29
+ /** Where the panel goes, in pixels relative to its own zero-sized host. */
30
+ export type AnchoredPanelBox = {
31
+ left: number;
32
+ width: number;
33
+ bottom: number;
34
+ maxHeight: number;
35
+ };
36
+ /**
37
+ * The host geometry, the layer and the panel's chrome — the half of the pattern
38
+ * that is CSS.
39
+ *
40
+ * Exported as a stylesheet rather than inherited, because a lit component that
41
+ * declares `static styles` REPLACES its base class's: a subclass composes with
42
+ * `static override styles = [editorAnchoredPanelStyles, css\`…\`]` and adds only
43
+ * what its own content needs.
44
+ */
45
+ export declare const editorAnchoredPanelStyles: import("lit").CSSResult;
46
+ /**
47
+ * The base every editor-anchored info panel extends.
48
+ *
49
+ * A subclass says WHEN it is open and HOW it closes; everything else — where it
50
+ * sits, what layer it is in, what dismisses it and when it re-measures — comes
51
+ * from here.
52
+ */
53
+ export declare abstract class EditorAnchoredPanel extends WidgetComponent<RootBlockModel> {
54
+ static styles: CSSResultGroup;
55
+ /** The bar this panel is currently observing, so it can stop observing it. */
56
+ private _observedBar;
57
+ private _anchorObserver;
58
+ get gfx(): import("../../std/gfx/controller.js").GfxController;
59
+ /** Whether a panel is on screen — the subclass's own open state. */
60
+ protected abstract get panelOpen(): boolean;
61
+ /** Put the panel away. The subclass owns what "away" means for its state. */
62
+ protected abstract closePanel(): void;
63
+ /** Keep a click inside the panel from reaching the canvas behind it. */
64
+ protected readonly swallow: (event: Event) => void;
65
+ private readonly _onDocumentPointerDown;
66
+ /**
67
+ * Escape is listened for on the EDITOR HOST, not on `document`, so a host
68
+ * application keeps its own global Escape while the panel handles its own:
69
+ * with a panel open Escape dismisses the panel rather than clearing the
70
+ * canvas selection behind it, and a library has no business making that call
71
+ * for the whole page.
72
+ */
73
+ private readonly _onHostKeydown;
74
+ /** The visible senior bar, or `null` when there is none to measure. */
75
+ protected anchorBar(): HTMLElement | null;
76
+ /**
77
+ * The panel's box: the bar's own left edge and width, lifted clear of it.
78
+ *
79
+ * Measured, and deliberately NOT clamped to a minimum when the measure
80
+ * succeeded — "same width as the bar" is the decision, and a panel that
81
+ * quietly stopped matching under some width would be the one bug this whole
82
+ * pattern exists to remove. The floors apply to the FALLBACK, which has no
83
+ * bar to agree with.
84
+ *
85
+ * The vertical is read off the same rect: the panel's bottom sits
86
+ * {@link PANEL_BAR_GAP} above the bar's top, which stays true whatever the
87
+ * bar's height and however the host's theme pads it.
88
+ */
89
+ protected anchorBox(): AnchoredPanelBox;
90
+ /**
91
+ * The panel's frame: the box, the dialog semantics and the pointer
92
+ * swallowing. The subclass passes its own body and nothing else.
93
+ *
94
+ * Deliberately NOT `aria-modal`: it promises everything behind the dialog is
95
+ * inert, and these panels promise the opposite — the canvas stays usable
96
+ * behind them, which is why they follow the editor instead of closing on a
97
+ * pan. Claiming modality without trapping focus is a label that lies to a
98
+ * screen reader, and trapping Tab from a host that is still interactive would
99
+ * be the library taking something that is not its to take.
100
+ */
101
+ protected renderAnchoredPanel(options: {
102
+ testid: string;
103
+ label: string;
104
+ /** The panel's own class, for the content styles it adds. */
105
+ variant: string;
106
+ /** The element the panel is about, when it is about one. */
107
+ elementId?: string;
108
+ }, body: unknown): TemplateResult;
109
+ /**
110
+ * Click-away, Escape, and the two things that move the bar under the panel.
111
+ *
112
+ * Idempotent by convention: a subclass calls it from both `firstUpdated` and
113
+ * a later `connectedCallback`, because `WithDisposable` throws the group away
114
+ * on disconnect while lit runs `firstUpdated` exactly once.
115
+ *
116
+ * `viewportUpdated` covers a resize and a zoom. The ResizeObserver on the bar
117
+ * covers what a viewport event CANNOT: the bar's own width is `fit-content`
118
+ * over a tool count the toolbar recomputes on a debounce of its own, so the
119
+ * measure taken during the resize is legitimately stale a frame later. The
120
+ * observer is the second look that lands on the settled value.
121
+ */
122
+ protected wireAnchoredPanel(): void;
123
+ /**
124
+ * Point the observer at whichever bar is on screen NOW.
125
+ *
126
+ * The bar is not a fixed element: a read-only board renders no toolbar at
127
+ * all, and lit's `cache` swaps the presentation toolbar in and out — so the
128
+ * node observed on mount can be gone, and a different one in its place, by
129
+ * the time a panel opens.
130
+ */
131
+ private _syncAnchorObserver;
132
+ updated(): void;
133
+ }
@@ -0,0 +1,326 @@
1
+ import { WidgetComponent } from '../../std/index.js';
2
+ import { GfxControllerIdentifier } from '../../std/gfx/index.js';
3
+ import { css, html, unsafeCSS, } from 'lit';
4
+ import { ifDefined } from 'lit/directives/if-defined.js';
5
+ import { styleMap } from 'lit/directives/style-map.js';
6
+ /**
7
+ * **The editor-anchored info panel** — ADR 0011.
8
+ *
9
+ * One place where the canvas tells you about itself: a panel pinned to the
10
+ * EDITOR, sitting just above the senior button bar and taking exactly its
11
+ * width. Not a popover beside the element it talks about.
12
+ *
13
+ * The PO's decision of 02/08/2026, in one sentence: *the metadata of the canvas
14
+ * is shown in a panel anchored to the editor, above the senior button bar, at
15
+ * its width*. Two surfaces answer to it today — the reversed reading
16
+ * (`reading-widget.ts`) and Map quality (`map-quality-widget.ts`) — and they
17
+ * answer to it through this class rather than through two copies of the same
18
+ * geometry.
19
+ *
20
+ * ## Why the toolbar is the ruler
21
+ *
22
+ * Because it is the only horizontal measure on the board that a user already
23
+ * reads as "the tool's own furniture". A fixed 480px panel was a second,
24
+ * arbitrary measure that lined up with nothing; the recette capture drew the
25
+ * alignment as two red rules down the toolbar's edges, which is precisely what
26
+ * {@link EditorAnchoredPanel.anchorBox} computes. The bar is measured, never
27
+ * predicted: its width is `fit-content` over a tool count that changes with the
28
+ * editor's width, so any arithmetic here would be a copy of `edgeless-toolbar`'s
29
+ * layout that drifts the first time a tool is added.
30
+ *
31
+ * ## What is shared, and what is not
32
+ *
33
+ * Shared: the host geometry and its layer, the panel's box and chrome, the
34
+ * click-away and Escape contracts, and the re-measure wiring. Not shared: a
35
+ * single line of CONTENT — each panel renders its own body into
36
+ * {@link EditorAnchoredPanel.renderAnchoredPanel}, and neither knows the other
37
+ * exists.
38
+ */
39
+ /** The bottom toolbar widget — the senior button bar this pattern aligns on. */
40
+ const ANCHOR_WIDGET_TAG = 'edgeless-toolbar-widget';
41
+ /**
42
+ * The visible, rounded bar inside that widget's shadow root.
43
+ *
44
+ * The WIDGET is `width: 100%` up to a 900px cap and mostly empty space; the
45
+ * BAR is the box a user sees and the one the alignment is about.
46
+ */
47
+ const ANCHOR_BAR_SELECTOR = '.edgeless-toolbar-container';
48
+ /**
49
+ * The measure used when the bar cannot be measured at all — a read-only board
50
+ * renders no toolbar, and a widget can be asked to paint before the toolbar has
51
+ * mounted. Centred, so the fallback looks deliberate rather than broken.
52
+ */
53
+ const PANEL_FALLBACK_WIDTH = 480;
54
+ /** Never narrower than this, however cramped the editor gets. */
55
+ const PANEL_MIN_WIDTH = 240;
56
+ /** Breathing room at the sides and at the top of a small editor. */
57
+ const PANEL_MARGIN = 16;
58
+ /** Clearance kept between the panel's bottom edge and the bar's top edge. */
59
+ const PANEL_BAR_GAP = 12;
60
+ /**
61
+ * Clearance above the editor's bottom edge when there is no bar to measure.
62
+ *
63
+ * `edgeless-toolbar` is 64px tall over a 16px bottom padding; the remainder is
64
+ * the gap.
65
+ */
66
+ const PANEL_FALLBACK_BOTTOM = 96;
67
+ const PANEL_MAX_HEIGHT = 420;
68
+ const PANEL_MIN_HEIGHT = 160;
69
+ /**
70
+ * **Above every toolbar, the contextual one included.**
71
+ *
72
+ * The ceiling inside `.widgets-container` is `--affine-z-index-popover`, which
73
+ * the theme sets to `1000`: `editor-toolbar` — the contextual toolbar the PO
74
+ * found the reading panel hiding behind — takes it verbatim, and so does the
75
+ * zoom bar. The bottom `edgeless-toolbar` is only `z-index: 1`, and its senior
76
+ * sub-menus are appended INSIDE its own subtree, so they are capped at that 1
77
+ * with it. Ten above the variable clears the lot with headroom to spare.
78
+ *
79
+ * The fallback matters as much as the value: it is the host's theme stylesheet
80
+ * that defines the variable, never this library.
81
+ *
82
+ * It is set on the HOST rather than on the panel. Every widget host is a
83
+ * sibling in `.widgets-container`, and `affine-toolbar-widget` declares no
84
+ * stacking context of its own, so `editor-toolbar`'s 1000 competes at that
85
+ * level — which makes it the only level where this contest can be won.
86
+ *
87
+ * What still paints above it, correctly and by design: `popMenu` context menus
88
+ * (1001) and the toolbar drag preview (9999), both mounted on `editor-host`
89
+ * outside the contained widgets layer. A dropdown opened FROM one of these
90
+ * panels would go through `popMenu` and land on top of it, which is what one
91
+ * wants.
92
+ */
93
+ export const EDITOR_ANCHORED_PANEL_Z_INDEX = 'calc(var(--affine-z-index-popover, 1000) + 10)';
94
+ /**
95
+ * The host geometry, the layer and the panel's chrome — the half of the pattern
96
+ * that is CSS.
97
+ *
98
+ * Exported as a stylesheet rather than inherited, because a lit component that
99
+ * declares `static styles` REPLACES its base class's: a subclass composes with
100
+ * `static override styles = [editorAnchoredPanelStyles, css\`…\`]` and adds only
101
+ * what its own content needs.
102
+ */
103
+ export const editorAnchoredPanelStyles = css `
104
+ /*
105
+ A ZERO-SIZED host, pinned to the bottom-left corner of the editor.
106
+
107
+ Zero-sized is not a style choice, it is the only safe one:
108
+ \`.widgets-container > * { pointer-events: auto }\` is an OUTER-tree rule on
109
+ a shadowless block component, so it beats \`:host { pointer-events: none }\`
110
+ outright. A host with a real box would swallow canvas clicks across the
111
+ whole bottom of the board. The panel below carries the box.
112
+
113
+ \`left: 0\` rather than the \`left: 50%\` a centred panel would want: the
114
+ panel is placed against the MEASURED bar, and a zero-width host at the
115
+ container's own origin is what turns a viewport rect into an offset with no
116
+ arithmetic to get wrong.
117
+ */
118
+ :host {
119
+ position: absolute;
120
+ left: 0;
121
+ bottom: 0;
122
+ z-index: ${unsafeCSS(EDITOR_ANCHORED_PANEL_Z_INDEX)};
123
+ pointer-events: none;
124
+ }
125
+
126
+ .editor-anchored-panel {
127
+ position: absolute;
128
+ box-sizing: border-box;
129
+ overflow-y: auto;
130
+ padding: 12px;
131
+ border-radius: 8px;
132
+ border: 1px solid var(--affine-border-color);
133
+ background: var(--affine-background-overlay-panel-color, #fff);
134
+ box-shadow: var(--affine-shadow-2);
135
+ color: var(--affine-text-primary-color);
136
+ font-family: var(--affine-font-family);
137
+ font-size: 14px;
138
+ line-height: 1.4;
139
+ pointer-events: auto;
140
+ }
141
+ `;
142
+ /**
143
+ * The base every editor-anchored info panel extends.
144
+ *
145
+ * A subclass says WHEN it is open and HOW it closes; everything else — where it
146
+ * sits, what layer it is in, what dismisses it and when it re-measures — comes
147
+ * from here.
148
+ */
149
+ export class EditorAnchoredPanel extends WidgetComponent {
150
+ constructor() {
151
+ super(...arguments);
152
+ /** The bar this panel is currently observing, so it can stop observing it. */
153
+ this._observedBar = null;
154
+ this._anchorObserver = null;
155
+ /** Keep a click inside the panel from reaching the canvas behind it. */
156
+ this.swallow = (event) => {
157
+ event.stopPropagation();
158
+ };
159
+ this._onDocumentPointerDown = (event) => {
160
+ if (!this.panelOpen)
161
+ return;
162
+ // Anything inside this widget keeps it open. The toolbar entry that opened
163
+ // it is in another tree, and its own click already landed.
164
+ if (event.composedPath().includes(this))
165
+ return;
166
+ this.closePanel();
167
+ };
168
+ /**
169
+ * Escape is listened for on the EDITOR HOST, not on `document`, so a host
170
+ * application keeps its own global Escape while the panel handles its own:
171
+ * with a panel open Escape dismisses the panel rather than clearing the
172
+ * canvas selection behind it, and a library has no business making that call
173
+ * for the whole page.
174
+ */
175
+ this._onHostKeydown = (event) => {
176
+ if (!this.panelOpen || event.key !== 'Escape')
177
+ return;
178
+ event.stopPropagation();
179
+ this.closePanel();
180
+ };
181
+ }
182
+ // Typed as the GROUP, not as the single sheet it defaults to: a subclass
183
+ // composes with `[editorAnchoredPanelStyles, css\`…\`]`, and a narrower
184
+ // declaration here would make that composition a type error.
185
+ static { this.styles = editorAnchoredPanelStyles; }
186
+ get gfx() {
187
+ return this.std.get(GfxControllerIdentifier);
188
+ }
189
+ /** The visible senior bar, or `null` when there is none to measure. */
190
+ anchorBar() {
191
+ const widget = this.std.host.querySelector(ANCHOR_WIDGET_TAG);
192
+ return (widget?.shadowRoot?.querySelector(ANCHOR_BAR_SELECTOR) ?? null);
193
+ }
194
+ /**
195
+ * The panel's box: the bar's own left edge and width, lifted clear of it.
196
+ *
197
+ * Measured, and deliberately NOT clamped to a minimum when the measure
198
+ * succeeded — "same width as the bar" is the decision, and a panel that
199
+ * quietly stopped matching under some width would be the one bug this whole
200
+ * pattern exists to remove. The floors apply to the FALLBACK, which has no
201
+ * bar to agree with.
202
+ *
203
+ * The vertical is read off the same rect: the panel's bottom sits
204
+ * {@link PANEL_BAR_GAP} above the bar's top, which stays true whatever the
205
+ * bar's height and however the host's theme pads it.
206
+ */
207
+ anchorBox() {
208
+ const { width: editorWidth, height: editorHeight } = this.gfx.viewport;
209
+ // A zero-sized host at the container's origin: `top` is the container's
210
+ // bottom edge, `left` its left edge.
211
+ const origin = this.getBoundingClientRect();
212
+ const bar = this.anchorBar()?.getBoundingClientRect() ?? null;
213
+ let left;
214
+ let width;
215
+ let bottom;
216
+ if (bar && bar.width > 0) {
217
+ left = bar.left - origin.left;
218
+ width = bar.width;
219
+ bottom = Math.max(origin.top - bar.top + PANEL_BAR_GAP, PANEL_BAR_GAP);
220
+ }
221
+ else {
222
+ width = Math.max(PANEL_MIN_WIDTH, Math.min(PANEL_FALLBACK_WIDTH, editorWidth - PANEL_MARGIN * 2));
223
+ left = Math.max(PANEL_MARGIN, (editorWidth - width) / 2);
224
+ bottom = PANEL_FALLBACK_BOTTOM;
225
+ }
226
+ return {
227
+ left,
228
+ width,
229
+ bottom,
230
+ maxHeight: Math.max(PANEL_MIN_HEIGHT, Math.min(PANEL_MAX_HEIGHT, editorHeight - bottom - PANEL_MARGIN)),
231
+ };
232
+ }
233
+ /**
234
+ * The panel's frame: the box, the dialog semantics and the pointer
235
+ * swallowing. The subclass passes its own body and nothing else.
236
+ *
237
+ * Deliberately NOT `aria-modal`: it promises everything behind the dialog is
238
+ * inert, and these panels promise the opposite — the canvas stays usable
239
+ * behind them, which is why they follow the editor instead of closing on a
240
+ * pan. Claiming modality without trapping focus is a label that lies to a
241
+ * screen reader, and trapping Tab from a host that is still interactive would
242
+ * be the library taking something that is not its to take.
243
+ */
244
+ renderAnchoredPanel(options, body) {
245
+ const { left, width, bottom, maxHeight } = this.anchorBox();
246
+ return html `<div
247
+ class="editor-anchored-panel ${options.variant}"
248
+ role="dialog"
249
+ tabindex="-1"
250
+ aria-label=${options.label}
251
+ data-testid=${options.testid}
252
+ data-element-id=${ifDefined(options.elementId)}
253
+ style=${styleMap({
254
+ left: `${left}px`,
255
+ width: `${width}px`,
256
+ bottom: `${bottom}px`,
257
+ maxHeight: `${maxHeight}px`,
258
+ })}
259
+ @pointerdown=${this.swallow}
260
+ @pointerup=${this.swallow}
261
+ @click=${this.swallow}
262
+ >
263
+ ${body}
264
+ </div>`;
265
+ }
266
+ /**
267
+ * Click-away, Escape, and the two things that move the bar under the panel.
268
+ *
269
+ * Idempotent by convention: a subclass calls it from both `firstUpdated` and
270
+ * a later `connectedCallback`, because `WithDisposable` throws the group away
271
+ * on disconnect while lit runs `firstUpdated` exactly once.
272
+ *
273
+ * `viewportUpdated` covers a resize and a zoom. The ResizeObserver on the bar
274
+ * covers what a viewport event CANNOT: the bar's own width is `fit-content`
275
+ * over a tool count the toolbar recomputes on a debounce of its own, so the
276
+ * measure taken during the resize is legitimately stale a frame later. The
277
+ * observer is the second look that lands on the settled value.
278
+ */
279
+ wireAnchoredPanel() {
280
+ const { _disposables } = this;
281
+ _disposables.add(this.gfx.viewport.viewportUpdated.subscribe(() => {
282
+ if (this.panelOpen)
283
+ this.requestUpdate();
284
+ }));
285
+ const observer = new ResizeObserver(() => {
286
+ if (this.panelOpen)
287
+ this.requestUpdate();
288
+ });
289
+ this._anchorObserver = observer;
290
+ this._syncAnchorObserver();
291
+ document.addEventListener('pointerdown', this._onDocumentPointerDown, true);
292
+ const host = this.std.host;
293
+ host.addEventListener('keydown', this._onHostKeydown, true);
294
+ _disposables.add(() => {
295
+ document.removeEventListener('pointerdown', this._onDocumentPointerDown, true);
296
+ host.removeEventListener('keydown', this._onHostKeydown, true);
297
+ observer.disconnect();
298
+ this._anchorObserver = null;
299
+ this._observedBar = null;
300
+ });
301
+ }
302
+ /**
303
+ * Point the observer at whichever bar is on screen NOW.
304
+ *
305
+ * The bar is not a fixed element: a read-only board renders no toolbar at
306
+ * all, and lit's `cache` swaps the presentation toolbar in and out — so the
307
+ * node observed on mount can be gone, and a different one in its place, by
308
+ * the time a panel opens.
309
+ */
310
+ _syncAnchorObserver() {
311
+ const observer = this._anchorObserver;
312
+ if (!observer)
313
+ return;
314
+ const bar = this.anchorBar();
315
+ if (bar === this._observedBar)
316
+ return;
317
+ if (this._observedBar)
318
+ observer.unobserve(this._observedBar);
319
+ this._observedBar = bar;
320
+ if (bar)
321
+ observer.observe(bar);
322
+ }
323
+ updated() {
324
+ this._syncAnchorObserver();
325
+ }
326
+ }
@@ -1,9 +1,22 @@
1
+ export * from './audit.js';
1
2
  export * from './clipboard-config.js';
2
3
  export * from './crud-extension.js';
3
4
  export * from './dom-element-renderer.js';
4
5
  export * from './edit-props-middleware-builder.js';
6
+ export * from './editor-anchored-panel.js';
5
7
  export * from './element-renderer.js';
6
8
  export * from './export-manager/index.js';
7
9
  export * from './legacy-slot-extension.js';
10
+ export * from './map-quality.js';
11
+ export * from './map-quality-widget.js';
8
12
  export * from './query.js';
13
+ export * from './reading.js';
14
+ export * from './reading-toolbar.js';
15
+ export * from './reading-widget.js';
16
+ export * from './spotlight.js';
9
17
  export * from './surface-middleware.js';
18
+ export * from './tags-toolbar.js';
19
+ export * from './validation.js';
20
+ export * from './validation-toolbar.js';
21
+ export * from './violation-detail-widget.js';
22
+ export * from './violation-timeline.js';
@@ -1,9 +1,22 @@
1
+ export * from './audit.js';
1
2
  export * from './clipboard-config.js';
2
3
  export * from './crud-extension.js';
3
4
  export * from './dom-element-renderer.js';
4
5
  export * from './edit-props-middleware-builder.js';
6
+ export * from './editor-anchored-panel.js';
5
7
  export * from './element-renderer.js';
6
8
  export * from './export-manager/index.js';
7
9
  export * from './legacy-slot-extension.js';
10
+ export * from './map-quality.js';
11
+ export * from './map-quality-widget.js';
8
12
  export * from './query.js';
13
+ export * from './reading.js';
14
+ export * from './reading-toolbar.js';
15
+ export * from './reading-widget.js';
16
+ export * from './spotlight.js';
9
17
  export * from './surface-middleware.js';
18
+ export * from './tags-toolbar.js';
19
+ export * from './validation.js';
20
+ export * from './validation-toolbar.js';
21
+ export * from './violation-detail-widget.js';
22
+ export * from './violation-timeline.js';
@@ -0,0 +1,146 @@
1
+ import { type AnyCommandDescriptor } from '../../std/index.js';
2
+ import { nothing } from 'lit';
3
+ import { EditorAnchoredPanel } from './editor-anchored-panel.js';
4
+ export declare const MAP_QUALITY_WIDGET = "affine-map-quality-widget";
5
+ /**
6
+ * The **Map quality** panel (PF7.11): the checklist of nudges a framework
7
+ * declares (PF7.10), on one root instance.
8
+ *
9
+ * ## One kind of statement, and only one (PO, 02/08/2026)
10
+ *
11
+ * The panel used to carry three: the checklist, a "Run check-up" button with the
12
+ * remarks and the families it had walked, and a count of the real-time warnings
13
+ * on the map. All three were true and the reader had to work out which was
14
+ * speaking — a check-up saying "Nothing to report" over a map wearing amber
15
+ * badges reads as a contradiction until you know it never looked at them. The
16
+ * PO's answer was not more wording: it was to take the other two away. What is
17
+ * left is the one thing the panel is FOR, the expectations the tool cannot judge
18
+ * and the user says they have taken care of.
19
+ *
20
+ * Nothing was removed from the engine. The on-demand moment (PF5.14) and the
21
+ * families that used it are still there, still tested; the canvas still carries
22
+ * the real-time findings, which is where they were always legible. Only this
23
+ * panel got shorter.
24
+ *
25
+ * ## Generic, not Wardley
26
+ *
27
+ * Nothing here names a framework, a role or a rule. The panel asks the ENGINE
28
+ * what this instance has ({@link ValidationManager.nudgesFor}) and renders the
29
+ * answer. A second framework declaring nudges gets the toolbar entry and this
30
+ * panel with no code written anywhere — which is the acceptance criterion of
31
+ * PF7.11 and the reason none of this lives in `gfx/wardley`.
32
+ *
33
+ * ## Why a widget and not a menu
34
+ *
35
+ * Because a dropdown closes on the first click, and this is a surface you WORK
36
+ * in: four boxes to tick, one at a time, while looking at the map. The entry in
37
+ * the Validation dropdown opens it and gets out of the way
38
+ * (`validation-toolbar.ts`); `ValidationManager.mapQualityFor$` is the seam
39
+ * between the two, because the entry lives in `editor-menu-button`'s shadow root
40
+ * and the panel lives on the root block — two trees with no DOM path between
41
+ * them.
42
+ *
43
+ * ## Where it sits
44
+ *
45
+ * **Anchored to the EDITOR, above the senior button bar and at its width** —
46
+ * the same place, the same layer and the same shared class as the reversed
47
+ * reading's panel (ADR 0011, PO decision of 02/08/2026). It shipped as a
48
+ * popover hanging off the map's top-right corner, at 320px, flipping sides and
49
+ * ends to stay on screen; every line of that arithmetic is gone, and with it
50
+ * the two faults the PO named — a floating box that loses the z-order contest
51
+ * with the toolbars, and a measure that lines up with nothing.
52
+ *
53
+ * Only the PRESENTATION moved. The entry in the background's contextual menu is
54
+ * still the trigger, the panel is still about one root instance and still says
55
+ * so in `data-element-id`, and nothing about what it renders changed.
56
+ *
57
+ * ## Read-only
58
+ *
59
+ * Ticking a nudge WRITES on the document, so every checkbox is disabled in a
60
+ * read-only store — and `setNudgeChecked` is behind the same guard, because a
61
+ * disabled input is a UI promise and not an enforcement. Opening the panel
62
+ * writes nothing, so a reviewer still reads the checklist.
63
+ *
64
+ * ## Ticking is assuming
65
+ *
66
+ * The panel never claims a nudge is satisfied. It records that somebody said so
67
+ * — the same contract as an exception (PF8), and the reason the checklist is
68
+ * introduced as "To be checked by you" rather than as "Checklist", which left
69
+ * the reader to guess whether the tool had already been through it.
70
+ */
71
+ export declare class MapQualityWidget extends EditorAnchoredPanel {
72
+ static styles: import("lit").CSSResult[];
73
+ /** The instance whose panel is open, mirrored off the manager's signal. */
74
+ private accessor _openFor;
75
+ /**
76
+ * Bumped to force a re-render when the document changes underneath — a peer
77
+ * ticking a nudge, an undo, the instance moving. The checklist state lives in
78
+ * the Y.Map, not here: this widget renders it, it never caches it.
79
+ */
80
+ private accessor _revision;
81
+ private _elementSubscriptions;
82
+ /** The instance whose panel has already been given the focus, if any. */
83
+ private _focused;
84
+ private get _validation();
85
+ protected get panelOpen(): boolean;
86
+ protected closePanel(): void;
87
+ /** The open instance, if it still exists and still has a panel to show. */
88
+ private get _element();
89
+ private readonly _close;
90
+ /**
91
+ * Follow the open instance, and only while one is open. On a board with no
92
+ * panel these subscriptions do not exist, so the busiest signals on the
93
+ * surface cost the widget nothing.
94
+ *
95
+ * `elementRemoved` as well as `elementUpdated`, and that is not symmetry for
96
+ * its own sake: DELETING the instance is the one change that must close the
97
+ * panel, and it is the one change `elementUpdated` never reports. Without it
98
+ * the panel floats over a map that is gone, with a checkbox that writes to a
99
+ * dead element.
100
+ */
101
+ private _watchElements;
102
+ /**
103
+ * Idempotent wiring, called from both `firstUpdated` and a later
104
+ * `connectedCallback` — `WithDisposable` throws the group away on disconnect
105
+ * while lit runs `firstUpdated` exactly once.
106
+ */
107
+ private _wire;
108
+ connectedCallback(): void;
109
+ firstUpdated(): void;
110
+ /**
111
+ * Move the focus into the panel when it opens, once.
112
+ *
113
+ * Without it the panel is unreachable from the keyboard and silent to a screen
114
+ * reader — which matters most on the path the toolbar does not cover: opened
115
+ * from the command palette, the focus is still in the host's own UI, so
116
+ * nothing is announced and the Escape handler (on the editor host, which is
117
+ * the right scope) never sees the key.
118
+ *
119
+ * The panel itself takes the focus, not the first checkbox: it carries the
120
+ * dialog's label, so a screen reader reads "Map quality" before it reads the
121
+ * first expectation. `preventScroll` because the host is a zero-sized box at
122
+ * the viewport origin and the browser would otherwise scroll the editor to
123
+ * "reveal" it.
124
+ *
125
+ * The dialog semantics themselves — `role`, `tabindex`, and the deliberate
126
+ * absence of `aria-modal` — come from {@link EditorAnchoredPanel}, which is
127
+ * also where the reasoning for that absence now lives.
128
+ */
129
+ updated(): void;
130
+ /**
131
+ * Tick or untick, and report it.
132
+ *
133
+ * `captureSync` opens an undo checkpoint first, like every other write the
134
+ * validation surfaces make, so one click is one undo.
135
+ *
136
+ * The read-only test here is the CHEAP half — it keeps `captureSync` and the
137
+ * telemetry from firing for a write that will not happen. The one that
138
+ * actually protects the document is inside `setNudgeChecked`, at the seam,
139
+ * where every caller meets it (see the note there).
140
+ */
141
+ private _toggleNudge;
142
+ private _renderNudges;
143
+ render(): import("lit-html").TemplateResult | typeof nothing;
144
+ }
145
+ export declare const mapQualityWidget: import("../../store/index.js").ExtensionType;
146
+ export declare const mapQualityCommands: AnyCommandDescriptor[];