@formicoidea/labre-core 0.31.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/dist/_pkgs/affine-block-attachment/attachment-block.js +1 -1
  2. package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
  3. package/dist/_pkgs/affine-block-callout/callout-block.js +26 -4
  4. package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
  5. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
  6. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
  7. package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
  8. package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
  9. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
  10. package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
  11. package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
  12. package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
  13. package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
  14. package/dist/_pkgs/affine-block-code/code-block-inline.js +1 -1
  15. package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
  16. package/dist/_pkgs/affine-block-code/code-block.js +44 -6
  17. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
  18. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
  19. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
  20. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
  21. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +54 -5
  22. package/dist/_pkgs/affine-block-code/code-toolbar/index.js +1 -1
  23. package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
  24. package/dist/_pkgs/affine-block-code/effects.js +2 -0
  25. package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
  26. package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
  27. package/dist/_pkgs/affine-block-code/index.js +1 -0
  28. package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
  29. package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
  30. package/dist/_pkgs/affine-block-code/styles.js +31 -0
  31. package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
  32. package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
  33. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
  34. package/dist/_pkgs/affine-block-database/data-source.js +1 -2
  35. package/dist/_pkgs/affine-block-database/database-block.js +13 -0
  36. package/dist/_pkgs/affine-block-database/external-data-source.js +1 -1
  37. package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
  38. package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
  39. package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
  40. package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
  41. package/dist/_pkgs/affine-block-database/views/index.js +1 -0
  42. package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +11 -1
  43. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
  44. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
  45. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
  46. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
  47. package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-service.js +1 -1
  48. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +2 -2
  49. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
  50. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
  51. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +1 -1
  52. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
  53. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/utils.js +1 -1
  54. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +1 -1
  55. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
  56. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +23 -4
  57. package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
  58. package/dist/_pkgs/affine-block-frame/frame-manager.js +34 -2
  59. package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
  60. package/dist/_pkgs/affine-block-image/components/page-image-block.js +1 -1
  61. package/dist/_pkgs/affine-block-image/image-edgeless-block.js +1 -1
  62. package/dist/_pkgs/affine-block-latex/styles.js +6 -1
  63. package/dist/_pkgs/affine-block-list/utils/forward-delete.js +1 -1
  64. package/dist/_pkgs/affine-block-note/commands/select-block.js +1 -1
  65. package/dist/_pkgs/affine-block-note/commands/select-blocks-between.js +1 -1
  66. package/dist/_pkgs/affine-block-note/move-block.js +1 -1
  67. package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
  68. package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
  69. package/dist/_pkgs/affine-block-paragraph/utils/forward-delete.js +2 -2
  70. package/dist/_pkgs/affine-block-paragraph/utils/merge-with-prev.js +1 -1
  71. package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
  72. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
  73. package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
  74. package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
  75. package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
  76. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
  77. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
  78. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +10 -3
  79. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
  80. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +27 -2
  81. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
  82. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
  83. package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
  84. package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
  85. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
  86. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
  87. package/dist/_pkgs/affine-block-root/edgeless/utils/clipboard-utils.js +1 -1
  88. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
  89. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
  90. package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
  91. package/dist/_pkgs/affine-block-root/index.js +4 -1
  92. package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
  93. package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
  94. package/dist/_pkgs/affine-block-root/view.js +13 -4
  95. package/dist/_pkgs/affine-block-surface/adapters/markdown/element-adapter/type.js +1 -1
  96. package/dist/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/type.js +1 -1
  97. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
  98. package/dist/_pkgs/affine-block-surface/effects.js +6 -0
  99. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +21 -3
  100. package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
  101. package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
  102. package/dist/_pkgs/affine-block-surface/extensions/audit.js +489 -0
  103. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
  104. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +37 -5
  105. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
  106. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +327 -0
  107. package/dist/_pkgs/affine-block-surface/extensions/element-renderer.js +1 -1
  108. package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +1 -1
  109. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +17 -0
  110. package/dist/_pkgs/affine-block-surface/extensions/index.js +17 -0
  111. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +172 -0
  112. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +393 -0
  113. package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +306 -0
  114. package/dist/_pkgs/affine-block-surface/extensions/interchange.js +64 -0
  115. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
  116. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
  117. package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
  118. package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
  119. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +248 -0
  120. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +248 -0
  121. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
  122. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
  123. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
  124. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +588 -0
  125. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
  126. package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
  127. package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
  128. package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
  129. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.d.ts +107 -0
  130. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +958 -0
  131. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
  132. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
  133. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
  134. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
  135. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +2129 -0
  136. package/dist/_pkgs/affine-block-surface/extensions/validation.js +4620 -0
  137. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +330 -0
  138. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +1004 -0
  139. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
  140. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
  141. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +610 -0
  142. package/dist/_pkgs/affine-block-surface/framework-background/def.js +206 -0
  143. package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
  144. package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
  145. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
  146. package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
  147. package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
  148. package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
  149. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +99 -0
  150. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +193 -0
  151. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
  152. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +399 -0
  153. package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
  154. package/dist/_pkgs/affine-block-surface/index.js +1 -0
  155. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
  156. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
  157. package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
  158. package/dist/_pkgs/affine-block-surface/renderer/overlay.js +1 -1
  159. package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
  160. package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
  161. package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
  162. package/dist/_pkgs/affine-block-surface/view.js +57 -2
  163. package/dist/_pkgs/affine-block-surface-ref/portal/note.js +2 -2
  164. package/dist/_pkgs/affine-block-table/commands.js +1 -1
  165. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
  166. package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
  167. package/dist/_pkgs/affine-block-table/table-block.js +8 -2
  168. package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
  169. package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
  170. package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
  171. package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
  172. package/dist/_pkgs/affine-block-table/utils.js +12 -0
  173. package/dist/_pkgs/affine-block-table/view.js +2 -0
  174. package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
  175. package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
  176. package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
  177. package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
  178. package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
  179. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
  180. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
  181. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
  182. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +1 -1
  183. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +1 -1
  184. package/dist/_pkgs/affine-components/filterable-list/styles.js +1 -1
  185. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  186. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  187. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
  188. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
  189. package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
  190. package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
  191. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
  192. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
  193. package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
  194. package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
  195. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
  196. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
  197. package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
  198. package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
  199. package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
  200. package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
  201. package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
  202. package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
  203. package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
  204. package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
  205. package/dist/_pkgs/affine-components/icons/text.js +426 -426
  206. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
  207. package/dist/_pkgs/affine-components/peek/peekable.js +1 -1
  208. package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
  209. package/dist/_pkgs/affine-components/toolbar/index.d.ts +1 -0
  210. package/dist/_pkgs/affine-components/toolbar/index.js +1 -0
  211. package/dist/_pkgs/affine-components/toolbar/menu-button.js +2 -1
  212. package/dist/_pkgs/affine-components/toolbar/picker-menu.d.ts +55 -0
  213. package/dist/_pkgs/affine-components/toolbar/picker-menu.js +47 -0
  214. package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
  215. package/dist/_pkgs/affine-foundation/view.js +11 -2
  216. package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +2 -2
  217. package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +2 -2
  218. package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +1 -1
  219. package/dist/_pkgs/affine-fragment-outline/mobile-outline-panel.js +1 -1
  220. package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
  221. package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
  222. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
  223. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
  224. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
  225. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
  226. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
  227. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
  228. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
  229. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
  230. package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
  231. package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
  232. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +1 -1
  233. package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
  234. package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
  235. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +39 -16
  236. package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +26 -1
  237. package/dist/_pkgs/affine-gfx-connector/connector-tool.js +12 -3
  238. package/dist/_pkgs/affine-gfx-connector/connector-watcher.js +1 -4
  239. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
  240. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +282 -0
  241. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
  242. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
  243. package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
  244. package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
  245. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
  246. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +185 -0
  247. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
  248. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
  249. package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
  250. package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
  251. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
  252. package/dist/_pkgs/affine-gfx-connector/element-renderer/index.js +1 -1
  253. package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +1 -1
  254. package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
  255. package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
  256. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
  257. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +68 -2
  258. package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
  259. package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
  260. package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
  261. package/dist/_pkgs/affine-gfx-mindmap/adapter/markdown/index.js +1 -1
  262. package/dist/_pkgs/affine-gfx-mindmap/adapter/utils.js +1 -1
  263. package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +583 -4
  264. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +23 -23
  265. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +5 -1
  266. package/dist/_pkgs/affine-gfx-mindmap/view/utils.js +1 -1
  267. package/dist/_pkgs/affine-gfx-note/overlay/overlay.js +1 -1
  268. package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +1 -1
  269. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
  270. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
  271. package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
  272. package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
  273. package/dist/_pkgs/affine-gfx-shape/consts.js +1 -1
  274. package/dist/_pkgs/affine-gfx-shape/draggable/shape-draggable.js +1 -1
  275. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/polygon.js +17 -9
  276. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/utils.js +8 -3
  277. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
  278. package/dist/_pkgs/affine-gfx-shape/element-view.js +19 -12
  279. package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
  280. package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
  281. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.js +1 -1
  282. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-vertex-editing-overlay.js +12 -7
  283. package/dist/_pkgs/affine-gfx-shape/overlay/shape-overlay.js +1 -1
  284. package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +4 -2
  285. package/dist/_pkgs/affine-gfx-shape/shape-tool.js +1 -1
  286. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
  287. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -15
  288. package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
  289. package/dist/_pkgs/affine-gfx-template/builtin/other.js +66 -17
  290. package/dist/_pkgs/affine-gfx-template/toolbar/overlay-scrollbar.js +1 -1
  291. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +1 -1
  292. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
  293. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
  294. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
  295. package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +1 -1
  296. package/dist/_pkgs/affine-inline-latex/command.js +46 -26
  297. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
  298. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
  299. package/dist/_pkgs/affine-inline-link/command.js +1 -1
  300. package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
  301. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
  302. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
  303. package/dist/_pkgs/affine-inline-preset/command/format-block.js +1 -1
  304. package/dist/_pkgs/affine-inline-preset/command/format-native.js +2 -2
  305. package/dist/_pkgs/affine-inline-preset/command/format-text.js +1 -1
  306. package/dist/_pkgs/affine-inline-preset/inline-spec.js +1 -1
  307. package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +1 -1
  308. package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
  309. package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
  310. package/dist/_pkgs/affine-model/elements/bpmn/node.d.ts +40 -7
  311. package/dist/_pkgs/affine-model/elements/bpmn/node.js +4 -2
  312. package/dist/_pkgs/affine-model/elements/bpmn/pool.d.ts +74 -17
  313. package/dist/_pkgs/affine-model/elements/bpmn/pool.js +55 -26
  314. package/dist/_pkgs/affine-model/elements/c4/board.d.ts +88 -0
  315. package/dist/_pkgs/affine-model/elements/c4/board.js +128 -0
  316. package/dist/_pkgs/affine-model/elements/c4/boundary.d.ts +63 -0
  317. package/dist/_pkgs/affine-model/elements/c4/boundary.js +134 -0
  318. package/dist/_pkgs/affine-model/elements/c4/index.d.ts +3 -0
  319. package/dist/_pkgs/affine-model/elements/c4/index.js +3 -0
  320. package/dist/_pkgs/affine-model/elements/c4/node.d.ts +97 -0
  321. package/dist/_pkgs/affine-model/elements/c4/node.js +130 -0
  322. package/dist/_pkgs/affine-model/elements/connector/connector.js +25 -1
  323. package/dist/_pkgs/affine-model/elements/context-map/context-map.d.ts +27 -0
  324. package/dist/_pkgs/affine-model/elements/context-map/context-map.js +94 -0
  325. package/dist/_pkgs/affine-model/elements/context-map/index.d.ts +1 -0
  326. package/dist/_pkgs/affine-model/elements/context-map/index.js +1 -0
  327. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +34 -17
  328. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +28 -26
  329. package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
  330. package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
  331. package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
  332. package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
  333. package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
  334. package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
  335. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.d.ts +36 -0
  336. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +103 -0
  337. package/dist/_pkgs/affine-model/elements/event-storming/index.d.ts +1 -0
  338. package/dist/_pkgs/affine-model/elements/event-storming/index.js +1 -0
  339. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
  340. package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
  341. package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
  342. package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
  343. package/dist/_pkgs/affine-model/elements/index.d.ts +14 -1
  344. package/dist/_pkgs/affine-model/elements/index.js +4 -0
  345. package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
  346. package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
  347. package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
  348. package/dist/_pkgs/affine-model/elements/shape/api/polygon.js +2 -8
  349. package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
  350. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
  351. package/dist/_pkgs/affine-shared/adapters/html/block-adapter.js +1 -1
  352. package/dist/_pkgs/affine-shared/adapters/markdown/block-adapter.js +1 -1
  353. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
  354. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +161 -3
  355. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
  356. package/dist/_pkgs/affine-shared/adapters/notion-html/block-adapter.js +1 -1
  357. package/dist/_pkgs/affine-shared/adapters/notion-html/delta-converter.js +1 -1
  358. package/dist/_pkgs/affine-shared/adapters/plain-text/block-adapter.js +1 -1
  359. package/dist/_pkgs/affine-shared/adapters/plain-text/delta-converter.js +1 -1
  360. package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
  361. package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
  362. package/dist/_pkgs/affine-shared/adapters/utils/color.js +283 -0
  363. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  364. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  365. package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
  366. package/dist/_pkgs/affine-shared/commands/model-crud/draft-selected-models.js +1 -1
  367. package/dist/_pkgs/affine-shared/commands/selection/focus-block-end.js +1 -1
  368. package/dist/_pkgs/affine-shared/commands/selection/focus-block-start.js +1 -1
  369. package/dist/_pkgs/affine-shared/consts/index.d.ts +10 -0
  370. package/dist/_pkgs/affine-shared/consts/index.js +10 -0
  371. package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.d.ts +55 -0
  372. package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.js +35 -0
  373. package/dist/_pkgs/affine-shared/services/audit-service.d.ts +311 -0
  374. package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
  375. package/dist/_pkgs/affine-shared/services/command-usage-service.d.ts +31 -0
  376. package/dist/_pkgs/affine-shared/services/command-usage-service.js +109 -0
  377. package/dist/_pkgs/affine-shared/services/comment-service/block-comment-manager.js +1 -1
  378. package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +1 -1
  379. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
  380. package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
  381. package/dist/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.js +1 -1
  382. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
  383. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
  384. package/dist/_pkgs/affine-shared/services/index.d.ts +7 -0
  385. package/dist/_pkgs/affine-shared/services/index.js +7 -0
  386. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
  387. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +312 -0
  388. package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
  389. package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
  390. package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
  391. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +255 -1
  392. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  393. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
  394. package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
  395. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  396. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  397. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
  398. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
  399. package/dist/_pkgs/affine-shared/services/toolbar-service/registry.d.ts +44 -0
  400. package/dist/_pkgs/affine-shared/services/toolbar-service/registry.js +161 -3
  401. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
  402. package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
  403. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
  404. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +256 -0
  405. package/dist/_pkgs/affine-shared/test-utils/affine-template.js +1 -1
  406. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
  407. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
  408. package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
  409. package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
  410. package/dist/_pkgs/affine-shared/utils/edgeless.js +1 -1
  411. package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +34 -0
  412. package/dist/_pkgs/affine-shared/utils/file/filesys.js +48 -7
  413. package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
  414. package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
  415. package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
  416. package/dist/_pkgs/affine-shared/utils/zod-schema.js +25 -1
  417. package/dist/_pkgs/affine-widget-drag-handle/utils.js +1 -1
  418. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
  419. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
  420. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
  421. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
  422. package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +1 -1
  423. package/dist/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.js +1 -1
  424. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
  425. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
  426. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
  427. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
  428. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
  429. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
  430. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
  431. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.d.ts +14 -0
  432. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.js +40 -0
  433. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +158 -0
  434. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +572 -0
  435. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.d.ts +46 -0
  436. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.js +66 -0
  437. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.d.ts +13 -0
  438. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.js +50 -0
  439. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.d.ts +6 -0
  440. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +15 -5
  441. package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.d.ts +2 -0
  442. package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.js +2 -0
  443. package/dist/_pkgs/affine-widget-edgeless-toolbar/extension/index.d.ts +7 -0
  444. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +5 -0
  445. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +5 -0
  446. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +57 -0
  447. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +140 -0
  448. package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +9 -0
  449. package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
  450. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  451. package/dist/_pkgs/affine-widget-keyboard-toolbar/keyboard-tool-panel.js +1 -1
  452. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +1 -1
  453. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
  454. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
  455. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
  456. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
  457. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
  458. package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
  459. package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
  460. package/dist/_pkgs/affine-widget-page-dragging-area/index.js +1 -1
  461. package/dist/_pkgs/affine-widget-remote-selection/doc/doc-remote-selection.js +1 -1
  462. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
  463. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
  464. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
  465. package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
  466. package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
  467. package/dist/_pkgs/affine-widget-toolbar/toolbar.js +40 -8
  468. package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
  469. package/dist/_pkgs/affine-widget-toolbar/utils.js +744 -58
  470. package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
  471. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
  472. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
  473. package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
  474. package/dist/_pkgs/data-view/core/data-view.js +25 -3
  475. package/dist/_pkgs/data-view/core/detail/field.js +2 -2
  476. package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
  477. package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
  478. package/dist/_pkgs/data-view/core/effect.js +2 -0
  479. package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
  480. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
  481. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
  482. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
  483. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
  484. package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
  485. package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
  486. package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
  487. package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
  488. package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
  489. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
  490. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
  491. package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
  492. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
  493. package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
  494. package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
  495. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  496. package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
  497. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  498. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
  499. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
  500. package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
  501. package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
  502. package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
  503. package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
  504. package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
  505. package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
  506. package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
  507. package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
  508. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
  509. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +64 -0
  510. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
  511. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
  512. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
  513. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
  514. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
  515. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
  516. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
  517. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
  518. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
  519. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +849 -0
  520. package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
  521. package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
  522. package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
  523. package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
  524. package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
  525. package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
  526. package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
  527. package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
  528. package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
  529. package/dist/_pkgs/data-view/view-presets/index.js +3 -0
  530. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
  531. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
  532. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
  533. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
  534. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
  535. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
  536. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +89 -4
  537. package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
  538. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
  539. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
  540. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
  541. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
  542. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +86 -5
  543. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
  544. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
  545. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
  546. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
  547. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
  548. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
  549. package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
  550. package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
  551. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
  552. package/dist/_pkgs/global/gfx/curve.js +4 -3
  553. package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
  554. package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
  555. package/dist/_pkgs/std/clipboard/utils.js +10 -0
  556. package/dist/_pkgs/std/event/dispatcher.js +27 -1
  557. package/dist/_pkgs/std/event/keymap.js +16 -6
  558. package/dist/_pkgs/std/extension/command-registry.d.ts +475 -0
  559. package/dist/_pkgs/std/extension/command-registry.js +431 -0
  560. package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
  561. package/dist/_pkgs/std/extension/index.d.ts +2 -0
  562. package/dist/_pkgs/std/extension/index.js +2 -0
  563. package/dist/_pkgs/std/extension/shortcut.js +2 -1
  564. package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
  565. package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
  566. package/dist/_pkgs/std/gfx/grid.js +1 -1
  567. package/dist/_pkgs/std/gfx/index.d.ts +7 -3
  568. package/dist/_pkgs/std/gfx/index.js +6 -2
  569. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
  570. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
  571. package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
  572. package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
  573. package/dist/_pkgs/std/gfx/layer.js +1 -2
  574. package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
  575. package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
  576. package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
  577. package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
  578. package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
  579. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
  580. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
  581. package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +442 -0
  582. package/dist/_pkgs/std/gfx/model/surface/element-model.js +510 -25
  583. package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
  584. package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
  585. package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
  586. package/dist/_pkgs/std/gfx/model/surface/role.js +117 -0
  587. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
  588. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +305 -17
  589. package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
  590. package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
  591. package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
  592. package/dist/_pkgs/std/gfx/perf.js +30 -0
  593. package/dist/_pkgs/std/gfx/selection.js +1 -1
  594. package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
  595. package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
  596. package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
  597. package/dist/_pkgs/std/gfx/viewport.js +20 -2
  598. package/dist/_pkgs/std/inline/extensions/inline-manager.js +1 -1
  599. package/dist/_pkgs/std/inline/extensions/markdown-matcher.js +1 -1
  600. package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
  601. package/dist/_pkgs/std/inline/services/event.js +96 -21
  602. package/dist/_pkgs/std/utils/layer.js +2 -6
  603. package/dist/_pkgs/std/utils/tree.d.ts +14 -0
  604. package/dist/_pkgs/std/utils/tree.js +59 -8
  605. package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
  606. package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
  607. package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
  608. package/dist/_pkgs/store/model/store/crud.js +10 -4
  609. package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
  610. package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
  611. package/dist/commands.d.ts +58 -0
  612. package/dist/commands.js +66 -0
  613. package/dist/extensions/command-telemetry.d.ts +21 -0
  614. package/dist/extensions/command-telemetry.js +89 -0
  615. package/dist/extensions/command-usage.d.ts +23 -0
  616. package/dist/extensions/command-usage.js +37 -0
  617. package/dist/extensions/store.d.ts +9 -4
  618. package/dist/extensions/store.js +27 -24
  619. package/dist/extensions/view.d.ts +9 -4
  620. package/dist/extensions/view.js +35 -8
  621. package/dist/flags.d.ts +98 -21
  622. package/dist/flags.js +103 -22
  623. package/dist/frameworks.d.ts +45 -0
  624. package/dist/frameworks.js +186 -0
  625. package/dist/schemas.d.ts +8 -5
  626. package/dist/schemas.js +28 -32
  627. package/dist/shortcuts.d.ts +16 -16
  628. package/dist/shortcuts.js +8 -36
  629. package/dist/translations.d.ts +56 -0
  630. package/dist/translations.js +200 -0
  631. package/package.json +16 -4
  632. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
  633. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
  634. package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
  635. package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
  636. package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
  637. package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
@@ -0,0 +1,849 @@
1
+ import { menu, popFilterableSimpleMenu, popupTargetFromElement, } from '../../../../affine-components/context-menu/index.js';
2
+ import { ArrowLeftSmallIcon, ArrowRightSmallIcon, CloseIcon, DateTimeIcon, IntegrationsIcon, LinkedPageIcon, PlusIcon, TodayIcon, } from '@blocksuite/icons/lit';
3
+ import { html, nothing } from 'lit';
4
+ import { ref } from 'lit/directives/ref.js';
5
+ import { repeat } from 'lit/directives/repeat.js';
6
+ import { createUniComponentFromWebComponent, renderUniLit, } from '../../../core/index.js';
7
+ import { DataViewUIBase, DataViewUILogicBase, } from '../../../core/view/data-view-base.js';
8
+ import { createCalendarMonthLayout, getCalendarDayContentSlots, getCalendarDaySegmentSlots, getCalendarVisibleMonthRange, } from '../layout.js';
9
+ import { openCalendarEntry } from './actions.js';
10
+ import { CalendarDnd } from './dnd.js';
11
+ import { getCalendarDateFromPoint } from './hit-test.js';
12
+ import { calendarViewStyles } from './styles.js';
13
+ const dateFormatter = new Intl.DateTimeFormat(undefined, { day: 'numeric' });
14
+ const monthFormatter = new Intl.DateTimeFormat(undefined, {
15
+ month: 'long',
16
+ year: 'numeric',
17
+ });
18
+ const weekdayFormatter = new Intl.DateTimeFormat(undefined, {
19
+ weekday: 'short',
20
+ });
21
+ const startOfDay = (time) => {
22
+ const date = time instanceof Date ? time : new Date(time);
23
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
24
+ };
25
+ const getDefaultCreateDate = (month) => {
26
+ const today = startOfDay(Date.now());
27
+ const monthDate = new Date(month);
28
+ const todayDate = new Date(today);
29
+ if (monthDate.getFullYear() === todayDate.getFullYear() &&
30
+ monthDate.getMonth() === todayDate.getMonth()) {
31
+ return today;
32
+ }
33
+ return new Date(monthDate.getFullYear(), monthDate.getMonth(), 1).getTime();
34
+ };
35
+ export class CalendarViewUILogic extends DataViewUILogicBase {
36
+ constructor() {
37
+ super(...arguments);
38
+ this.dnd = new CalendarDnd(this.root.config.dnd, {
39
+ getEntry: entryId => this.view.entries$.value.find(entry => entry.id === entryId),
40
+ canDragEntry: () => !this.view.readonly$.value,
41
+ canDrop: entity => this.canDropDndEntity(entity),
42
+ onEntryDragStart: entry => {
43
+ this.interactionState = { type: 'drag', entry };
44
+ this.ui?.requestUpdate();
45
+ },
46
+ onEntryDragEnd: () => {
47
+ this.endInteraction();
48
+ },
49
+ onDropTargetChange: (day, entity) => {
50
+ this.setInteractionTarget(day, entity);
51
+ },
52
+ onDrop: (entity, date) => {
53
+ this.dropDndEntity(entity, date);
54
+ },
55
+ });
56
+ this.suppressNextClick = false;
57
+ this.currentMonth = startOfDay(Date.now());
58
+ this.clearSelection = () => {
59
+ this.setSelection(undefined);
60
+ };
61
+ this.addRow = (position) => {
62
+ if (this.view.readonly$.value)
63
+ return;
64
+ const rowId = this.view.rowAdd(position);
65
+ if (rowId) {
66
+ this.root.openDetailPanel({
67
+ view: this.view,
68
+ rowId,
69
+ });
70
+ }
71
+ return rowId;
72
+ };
73
+ this.focusFirstCell = () => { };
74
+ this.onWheel = (event) => {
75
+ if (event.metaKey || event.ctrlKey) {
76
+ return;
77
+ }
78
+ const ele = event.currentTarget;
79
+ if (ele instanceof HTMLElement) {
80
+ if (ele.scrollWidth === ele.clientWidth) {
81
+ return;
82
+ }
83
+ event.stopPropagation();
84
+ }
85
+ };
86
+ this.showIndicator = () => false;
87
+ this.hideIndicator = () => { };
88
+ this.moveTo = () => { };
89
+ this.renderer = createUniComponentFromWebComponent(CalendarViewUI);
90
+ }
91
+ getPreviewRange() {
92
+ const state = this.interactionState;
93
+ const target = state?.targetDay;
94
+ if (!state || target === undefined)
95
+ return undefined;
96
+ if (state.type === 'doc') {
97
+ return { start: target, end: target };
98
+ }
99
+ if (state.type === 'drag') {
100
+ const entry = state.entry;
101
+ const duration = entry.endAt !== undefined ? entry.endAt - entry.startAt : 0;
102
+ return { start: target, end: startOfDay(target + duration) };
103
+ }
104
+ const entry = state.entry;
105
+ const entryStart = startOfDay(entry.startAt);
106
+ const entryEnd = entry.endAt !== undefined ? startOfDay(entry.endAt) : entryStart;
107
+ if (state.edge === 'start') {
108
+ return {
109
+ start: Math.min(target, entryEnd),
110
+ end: Math.max(target, entryEnd),
111
+ };
112
+ }
113
+ return {
114
+ start: Math.min(entryStart, target),
115
+ end: Math.max(entryStart, target),
116
+ };
117
+ }
118
+ isDayInPreview(day) {
119
+ const range = this.getPreviewRange();
120
+ if (!range)
121
+ return false;
122
+ return day >= range.start && day <= range.end;
123
+ }
124
+ isEntryBeingMoved(entryId) {
125
+ const state = this.interactionState;
126
+ return (state !== undefined && state.type !== 'doc' && state.entry.id === entryId);
127
+ }
128
+ attach(ui) {
129
+ this.ui = ui;
130
+ this.loadExternalEntries();
131
+ }
132
+ detach(ui) {
133
+ if (this.ui !== ui)
134
+ return;
135
+ this.cleanupResizeInteraction();
136
+ this.dnd.cleanup();
137
+ this.endInteraction();
138
+ this.ui = undefined;
139
+ }
140
+ moveMonth(offset) {
141
+ const date = new Date(this.currentMonth);
142
+ this.currentMonth = startOfDay(new Date(date.getFullYear(), date.getMonth() + offset, 1));
143
+ this.ui?.requestUpdate();
144
+ this.loadExternalEntries();
145
+ }
146
+ goToday() {
147
+ this.currentMonth = startOfDay(Date.now());
148
+ this.ui?.requestUpdate();
149
+ this.loadExternalEntries();
150
+ }
151
+ isCurrentMonth() {
152
+ const cursor = new Date(this.currentMonth);
153
+ const today = new Date();
154
+ return (cursor.getFullYear() === today.getFullYear() &&
155
+ cursor.getMonth() === today.getMonth());
156
+ }
157
+ createRowOnDate(date) {
158
+ if (this.view.readonly$.value)
159
+ return;
160
+ const rowId = this.view.createRowOnDate(date);
161
+ if (rowId) {
162
+ this.root.openDetailPanel({
163
+ view: this.view,
164
+ rowId,
165
+ });
166
+ }
167
+ }
168
+ openSetupMenu(target) {
169
+ const items = this.view.dateProperties$.value.map(property => menu.action({
170
+ name: property.name$.value || 'Date',
171
+ select: () => {
172
+ this.view.setDateColumn(property.id);
173
+ },
174
+ }));
175
+ if (!this.view.readonly$.value) {
176
+ items.push(menu.action({
177
+ name: 'Create date property',
178
+ select: () => {
179
+ this.view.createDateColumn();
180
+ },
181
+ }));
182
+ }
183
+ popFilterableSimpleMenu(popupTargetFromElement(target), items);
184
+ }
185
+ getWorkspaceCalendarConfig() {
186
+ return (this.view.data$.value?.sources.workspaceCalendar ?? {
187
+ enabled: true,
188
+ });
189
+ }
190
+ createSourceControlItems() {
191
+ const workspaceCalendar = this.getWorkspaceCalendarConfig();
192
+ const selectedIds = workspaceCalendar.subscriptionIds
193
+ ? new Set(workspaceCalendar.subscriptionIds)
194
+ : undefined;
195
+ const hasSubscriptionOptions = this.view.externalSources$.value.some(source => (source.getSubscriptionOptions?.().length ?? 0) > 0);
196
+ const subscriptionItems = this.view.externalSources$.value.flatMap(source => source.getSubscriptionOptions?.().map(subscription => menu.action({
197
+ name: `${selectedIds && !selectedIds.has(subscription.id) ? 'Show' : 'Hide'} ${subscription.name}`,
198
+ closeOnSelect: false,
199
+ select: () => {
200
+ const allIds = source
201
+ .getSubscriptionOptions?.()
202
+ .map(subscription => subscription.id);
203
+ if (!allIds?.length) {
204
+ return;
205
+ }
206
+ const next = new Set(selectedIds ?? allIds);
207
+ if (next.has(subscription.id)) {
208
+ next.delete(subscription.id);
209
+ }
210
+ else {
211
+ next.add(subscription.id);
212
+ }
213
+ this.view.setWorkspaceCalendarSubscriptionIds([...next]);
214
+ this.loadExternalEntries();
215
+ },
216
+ })) ?? []);
217
+ const connectItems = this.view.externalSources$.value.flatMap(source => source.openConnectSettings
218
+ ? [
219
+ menu.action({
220
+ name: 'Connect calendar',
221
+ closeOnSelect: false,
222
+ select: () => {
223
+ source.openConnectSettings?.();
224
+ },
225
+ }),
226
+ ]
227
+ : []);
228
+ const toggleItems = hasSubscriptionOptions
229
+ ? [
230
+ menu.action({
231
+ name: workspaceCalendar.enabled
232
+ ? 'Hide workspace calendar'
233
+ : 'Show workspace calendar',
234
+ closeOnSelect: false,
235
+ select: () => {
236
+ this.view.setWorkspaceCalendarEnabled(!workspaceCalendar.enabled);
237
+ this.loadExternalEntries();
238
+ },
239
+ }),
240
+ menu.action({
241
+ name: 'Show all workspace calendars',
242
+ closeOnSelect: false,
243
+ select: () => {
244
+ this.view.setWorkspaceCalendarSubscriptionIds(undefined);
245
+ this.loadExternalEntries();
246
+ },
247
+ }),
248
+ ]
249
+ : [];
250
+ return [...toggleItems, ...subscriptionItems, ...connectItems];
251
+ }
252
+ openSourceMenu(target) {
253
+ popFilterableSimpleMenu(popupTargetFromElement(target), this.createSourceControlItems());
254
+ }
255
+ getDatePropertyMenuItems(selectedPropertyId, onSelect, create, options) {
256
+ const closeOnSelect = options?.closeOnSelect;
257
+ const items = [];
258
+ if (options?.includeNone) {
259
+ items.push(menu.action({
260
+ name: 'None',
261
+ isSelected: !selectedPropertyId,
262
+ closeOnSelect,
263
+ select: () => onSelect(undefined),
264
+ }));
265
+ }
266
+ items.push(...this.view.dateProperties$.value.map(property => menu.action({
267
+ name: property.name$.value || 'Date',
268
+ isSelected: property.id === selectedPropertyId,
269
+ closeOnSelect,
270
+ select: () => onSelect(property.id),
271
+ })));
272
+ if (!this.view.readonly$.value && create) {
273
+ items.push(menu.action({
274
+ name: options?.createLabel ?? 'Create date property',
275
+ closeOnSelect,
276
+ select: create,
277
+ }));
278
+ }
279
+ return items;
280
+ }
281
+ getViewOptionsSettingItems(navigateToSubPage, goBack) {
282
+ const selectedStart = this.view.startDateMapping$.value.propertyId;
283
+ const selectedEnd = this.view.endDateMapping$.value.propertyId;
284
+ return [
285
+ menu.group({
286
+ name: 'Date range',
287
+ items: [
288
+ menu.action({
289
+ name: 'Calendar by',
290
+ prefix: TodayIcon(),
291
+ closeOnSelect: false,
292
+ postfix: html `<div
293
+ style="font-size:14px;color:var(--affine-text-secondary-color);"
294
+ >
295
+ ${this.view.startDateMapping$.value.status === 'ready'
296
+ ? this.view.propertyGetOrCreate(selectedStart ?? '').name$
297
+ .value
298
+ : ''}
299
+ </div>
300
+ ${ArrowRightSmallIcon()}`,
301
+ select: () => {
302
+ navigateToSubPage('Calendar by', () => this.getDatePropertyMenuItems(this.view.startDateMapping$.value.propertyId, propertyId => {
303
+ if (propertyId) {
304
+ this.view.setStartDateColumn(propertyId);
305
+ goBack();
306
+ }
307
+ }, () => {
308
+ this.view.createStartDateColumn();
309
+ goBack();
310
+ }, { closeOnSelect: false }));
311
+ },
312
+ }),
313
+ menu.action({
314
+ name: 'End date',
315
+ prefix: DateTimeIcon(),
316
+ closeOnSelect: false,
317
+ postfix: html `<div
318
+ style="font-size:14px;color:var(--affine-text-secondary-color);"
319
+ >
320
+ ${selectedEnd
321
+ ? this.view.propertyGetOrCreate(selectedEnd).name$.value
322
+ : 'None'}
323
+ </div>
324
+ ${ArrowRightSmallIcon()}`,
325
+ select: () => {
326
+ navigateToSubPage('End date', () => this.getDatePropertyMenuItems(this.view.endDateMapping$.value.propertyId, propertyId => {
327
+ this.view.setEndDateColumn(propertyId);
328
+ goBack();
329
+ }, () => {
330
+ this.view.createEndDateColumn();
331
+ goBack();
332
+ }, {
333
+ includeNone: true,
334
+ createLabel: 'Create end date property',
335
+ closeOnSelect: false,
336
+ }));
337
+ },
338
+ }),
339
+ menu.action({
340
+ name: 'External calendars',
341
+ prefix: IntegrationsIcon(),
342
+ closeOnSelect: false,
343
+ postfix: html `${ArrowRightSmallIcon()}`,
344
+ select: () => {
345
+ navigateToSubPage('External calendars', () => this.createSourceControlItems());
346
+ },
347
+ }),
348
+ ],
349
+ }),
350
+ ];
351
+ }
352
+ openEntry(entry, target) {
353
+ openCalendarEntry(this.root, this.view, entry, target, {
354
+ selectEntry: entryId => {
355
+ this.selectedEntryId = entryId;
356
+ this.ui?.requestUpdate();
357
+ },
358
+ });
359
+ }
360
+ get isInteracting() {
361
+ return this.interactionState !== undefined;
362
+ }
363
+ setInteractionTarget(day, entity) {
364
+ if (day !== undefined && entity?.type === 'doc') {
365
+ const current = this.interactionState;
366
+ if (current?.type === 'doc' &&
367
+ current.docId === entity.docId &&
368
+ current.targetDay === day) {
369
+ return;
370
+ }
371
+ this.interactionState = {
372
+ type: 'doc',
373
+ docId: entity.docId,
374
+ targetDay: day,
375
+ };
376
+ this.ui?.requestUpdate();
377
+ return;
378
+ }
379
+ if (this.interactionState?.type === 'doc') {
380
+ this.interactionState = undefined;
381
+ this.ui?.requestUpdate();
382
+ return;
383
+ }
384
+ if (this.interactionState?.targetDay !== day) {
385
+ if (this.interactionState) {
386
+ this.interactionState = {
387
+ ...this.interactionState,
388
+ targetDay: day,
389
+ };
390
+ }
391
+ this.ui?.requestUpdate();
392
+ }
393
+ }
394
+ endInteraction() {
395
+ this.interactionState = undefined;
396
+ this.ui?.requestUpdate();
397
+ }
398
+ bindCalendarDropTarget(element) {
399
+ this.dnd.bindRoot(element);
400
+ }
401
+ bindEntryDraggable(key, entry, element) {
402
+ this.dnd.bindEntry(key, entry, element, this.view.readonly$.value);
403
+ }
404
+ canDropDndEntity(entity) {
405
+ if (this.view.readonly$.value) {
406
+ return false;
407
+ }
408
+ if (entity.type === 'calendar-entry') {
409
+ const entry = this.view.entries$.value.find(entry => entry.id === entity.entryId);
410
+ return entry?.kind === 'row';
411
+ }
412
+ if (entity.type === 'doc') {
413
+ return this.view.startDateMapping$.value.status === 'ready';
414
+ }
415
+ return false;
416
+ }
417
+ dropDndEntity(entity, day) {
418
+ try {
419
+ if (entity.type === 'calendar-entry') {
420
+ const entry = this.view.entries$.value.find(entry => entry.id === entity.entryId);
421
+ if (entry?.kind === 'row') {
422
+ this.view.moveRowToDate(entry.rowId, day);
423
+ }
424
+ }
425
+ if (entity.type === 'doc') {
426
+ this.view.createLinkedDocRowOnDate(day, entity.docId);
427
+ }
428
+ }
429
+ finally {
430
+ this.endInteraction();
431
+ }
432
+ }
433
+ startResize(entry, edge, event) {
434
+ if (entry.kind !== 'row' || !entry.canResizeRange) {
435
+ return;
436
+ }
437
+ event.preventDefault();
438
+ event.stopPropagation();
439
+ this.cleanupResizeInteraction();
440
+ this.interactionState = {
441
+ type: 'resize',
442
+ entry: entry,
443
+ edge,
444
+ };
445
+ this.ui?.requestUpdate();
446
+ const root = event.currentTarget.closest('.calendar-grid');
447
+ const doc = event.currentTarget.ownerDocument;
448
+ const dayFromPointer = (pointerEvent) => {
449
+ if (!root) {
450
+ return;
451
+ }
452
+ return getCalendarDateFromPoint(root, pointerEvent.clientX, pointerEvent.clientY);
453
+ };
454
+ const onPointerMove = (pointerEvent) => {
455
+ this.setInteractionTarget(dayFromPointer(pointerEvent));
456
+ };
457
+ const onPointerUp = (pointerEvent) => {
458
+ cleanup();
459
+ const date = dayFromPointer(pointerEvent);
460
+ if (date !== undefined) {
461
+ this.view.resizeRowRange(entry.rowId, edge, date);
462
+ }
463
+ this.endInteraction();
464
+ // Suppress the click event that the browser fires after pointerup
465
+ // when the pointer is released on top of the entry element.
466
+ this.suppressNextClick = true;
467
+ requestAnimationFrame(() => {
468
+ this.suppressNextClick = false;
469
+ });
470
+ };
471
+ const cleanup = () => {
472
+ doc.removeEventListener('pointermove', onPointerMove);
473
+ doc.removeEventListener('pointerup', onPointerUp);
474
+ if (this.cleanupResize === cleanup) {
475
+ this.cleanupResize = undefined;
476
+ }
477
+ };
478
+ this.cleanupResize = cleanup;
479
+ doc.addEventListener('pointermove', onPointerMove);
480
+ doc.addEventListener('pointerup', onPointerUp);
481
+ }
482
+ cleanupResizeInteraction() {
483
+ this.cleanupResize?.();
484
+ this.cleanupResize = undefined;
485
+ }
486
+ handleEntryClick(entry, target) {
487
+ if (this.suppressNextClick) {
488
+ return;
489
+ }
490
+ this.openEntry(entry, target);
491
+ }
492
+ handleEntryKeydown(entry, event) {
493
+ if (event.key !== 'Enter' && event.key !== ' ') {
494
+ return;
495
+ }
496
+ event.preventDefault();
497
+ this.handleEntryClick(entry, event.currentTarget);
498
+ }
499
+ loadExternalEntries() {
500
+ const range = getCalendarVisibleMonthRange(this.currentMonth);
501
+ this.view
502
+ .loadExternalEntries({ from: range.from, to: range.to })
503
+ .catch(() => {
504
+ this.root.config.notification.toast('Failed to load calendar entries');
505
+ });
506
+ }
507
+ }
508
+ export class CalendarViewUI extends DataViewUIBase {
509
+ static { this.styles = calendarViewStyles; }
510
+ connectedCallback() {
511
+ super.connectedCallback();
512
+ this.logic.attach(this);
513
+ this.dataset['testid'] = 'dv-calendar-view';
514
+ }
515
+ disconnectedCallback() {
516
+ this.logic.detach(this);
517
+ super.disconnectedCallback();
518
+ }
519
+ renderEntry(entry, extraStyle = '', segment) {
520
+ const dndKey = segment
521
+ ? `${entry.id}:${segment.weekIndex}:${segment.startIndex}`
522
+ : `${entry.id}:day`;
523
+ const colorStyle = entry.kind === 'external' && entry.color
524
+ ? `--calendar-external-color:${entry.color};`
525
+ : '';
526
+ const segmentClass = segment
527
+ ? `${segment.startsBeforeWeek ? 'continues-left' : ''} ${segment.endsAfterWeek ? 'continues-right' : ''}`
528
+ : '';
529
+ const canResize = entry.kind === 'row' && entry.canResizeRange;
530
+ const showLeftHandle = canResize && segment && !segment.startsBeforeWeek;
531
+ const showRightHandle = canResize && segment && !segment.endsAfterWeek;
532
+ return html `
533
+ <div
534
+ ${ref(element => this.logic.bindEntryDraggable(dndKey, entry, element))}
535
+ class="calendar-entry ${entry.kind} ${segmentClass} ${this.logic
536
+ .selectedEntryId === entry.id
537
+ ? 'selected'
538
+ : ''}"
539
+ role="button"
540
+ tabindex="0"
541
+ aria-label=${entry.title || 'Untitled'}
542
+ style=${`${colorStyle}${extraStyle}`}
543
+ @click=${(event) => {
544
+ this.logic.handleEntryClick(entry, event.currentTarget);
545
+ }}
546
+ @keydown=${(event) => {
547
+ this.logic.handleEntryKeydown(entry, event);
548
+ }}
549
+ >
550
+ ${showLeftHandle
551
+ ? html `<span
552
+ class="calendar-resize-handle left"
553
+ @pointerdown=${(event) => this.logic.startResize(entry, 'start', event)}
554
+ ></span>`
555
+ : nothing}
556
+ ${this.renderEntryTitle(entry)}
557
+ ${entry.kind === 'row' && entry.cardProperties.length
558
+ ? html `<span class="calendar-entry-properties">
559
+ ${entry.cardProperties.map(property => html `<span class="calendar-entry-property"
560
+ >${property.value}</span
561
+ >`)}
562
+ </span>`
563
+ : nothing}
564
+ ${showRightHandle
565
+ ? html `<span
566
+ class="calendar-resize-handle right"
567
+ @pointerdown=${(event) => this.logic.startResize(entry, 'end', event)}
568
+ ></span>`
569
+ : nothing}
570
+ </div>
571
+ `;
572
+ }
573
+ renderEntryTitle(entry) {
574
+ if (entry.kind !== 'row') {
575
+ return html `<span
576
+ class="calendar-entry-title ${entry.title ? '' : 'is-empty'}"
577
+ >${entry.title || 'Untitled'}</span
578
+ >`;
579
+ }
580
+ if (entry.titleSegments?.length) {
581
+ return html `<span class="calendar-entry-title title-segments">
582
+ ${entry.titleSegments.map(segment => html `<span
583
+ class="calendar-entry-title-segment ${segment.linkedDoc
584
+ ? 'linked-doc-segment'
585
+ : ''}"
586
+ >
587
+ ${segment.linkedDoc ? LinkedPageIcon() : nothing}
588
+ ${segment.text
589
+ ? html `<span class="calendar-entry-title-text"
590
+ >${segment.text}</span
591
+ >`
592
+ : nothing}
593
+ </span>`)}
594
+ </span>`;
595
+ }
596
+ return html `<span
597
+ class="calendar-entry-title ${entry.title ? '' : 'is-empty'}"
598
+ >${entry.title || 'Untitled'}</span
599
+ >`;
600
+ }
601
+ getMovingEntryId() {
602
+ const state = this.logic.interactionState;
603
+ return state?.type !== 'doc' ? state?.entry.id : undefined;
604
+ }
605
+ renderDayPreview(dayDate) {
606
+ const range = this.logic.getPreviewRange();
607
+ if (!range || range.start !== range.end)
608
+ return nothing;
609
+ if (dayDate !== range.start)
610
+ return nothing;
611
+ const state = this.logic.interactionState;
612
+ if (!state)
613
+ return nothing;
614
+ if (state.type === 'doc') {
615
+ return html `<div class="calendar-entry-preview doc">
616
+ ${LinkedPageIcon()}
617
+ <span class="calendar-entry-title-text"
618
+ >${this.logic.view.getDocDisplayTitle(state.docId)}</span
619
+ >
620
+ </div>`;
621
+ }
622
+ const title = state.entry.title || 'Untitled';
623
+ return html `<div class="calendar-entry-preview">${title}</div>`;
624
+ }
625
+ getSegmentPreviewLayout(week) {
626
+ const range = this.logic.getPreviewRange();
627
+ if (!range || range.start === range.end)
628
+ return;
629
+ const state = this.logic.interactionState;
630
+ if (!state || state.type === 'doc')
631
+ return;
632
+ const weekStart = week[0]?.date;
633
+ const weekEnd = week[6]?.date;
634
+ if (weekStart === undefined || weekEnd === undefined)
635
+ return;
636
+ if (range.start > weekEnd || range.end < weekStart)
637
+ return;
638
+ const segStart = Math.max(range.start, weekStart);
639
+ const segEnd = Math.min(range.end, weekEnd);
640
+ const sIdx = week.findIndex(d => d.date === segStart);
641
+ const eIdx = week.findIndex(d => d.date === segEnd);
642
+ if (sIdx < 0 || eIdx < 0)
643
+ return;
644
+ const slot = Math.max(0, ...week
645
+ .slice(sIdx, eIdx + 1)
646
+ .map(day => getCalendarDayContentSlots(day, state.entry.id)));
647
+ return {
648
+ sIdx,
649
+ eIdx,
650
+ span: eIdx - sIdx + 1,
651
+ slot,
652
+ continuesLeft: range.start < weekStart,
653
+ continuesRight: range.end > weekEnd,
654
+ title: range.start < weekStart ? '' : state.entry.title || 'Untitled',
655
+ };
656
+ }
657
+ renderPreviewSpacer(day, preview, dayIndex) {
658
+ const movingEntryId = this.getMovingEntryId();
659
+ if (!preview || dayIndex < preview.sIdx || dayIndex > preview.eIdx) {
660
+ return nothing;
661
+ }
662
+ const spacerSlots = preview.slot + 1 - getCalendarDayContentSlots(day, movingEntryId);
663
+ if (spacerSlots <= 0) {
664
+ return nothing;
665
+ }
666
+ return html `<div
667
+ class="calendar-preview-spacer"
668
+ style="height:calc(${spacerSlots} * var(--calendar-entry-slot-height));"
669
+ ></div>`;
670
+ }
671
+ renderSegmentPreview(preview) {
672
+ if (!preview)
673
+ return nothing;
674
+ return html `<div
675
+ class="calendar-entry-preview ${preview.continuesLeft
676
+ ? 'continues-left'
677
+ : ''} ${preview.continuesRight ? 'continues-right' : ''}"
678
+ style="grid-column:${preview.sIdx +
679
+ 1} / span ${preview.span};grid-row:${preview.slot + 1};"
680
+ >
681
+ ${preview.title}
682
+ </div>`;
683
+ }
684
+ renderEmptyMonthHint(showHint) {
685
+ if (!showHint) {
686
+ return nothing;
687
+ }
688
+ return html `<div class="calendar-empty-month-hint">
689
+ <div class="calendar-empty-month-hint-copy">
690
+ <span class="calendar-empty-month-hint-title">Nothing here yet</span>
691
+ <span class="calendar-empty-month-hint-body">
692
+ Add a row to any date, it'll appear here on the calendar.
693
+ </span>
694
+ </div>
695
+ <div class="calendar-empty-month-hint-actions">
696
+ ${this.logic.view.readonly$.value
697
+ ? nothing
698
+ : html `<button
699
+ class="calendar-empty-month-hint-action"
700
+ @click=${() => this.logic.createRowOnDate(getDefaultCreateDate(this.logic.currentMonth))}
701
+ >
702
+ ${PlusIcon()}<span>New row</span>
703
+ </button>`}
704
+ <button
705
+ class="calendar-empty-month-hint-close"
706
+ aria-label="Dismiss"
707
+ @click=${() => this.logic.view.dismissEmptyMonthHint()}
708
+ >
709
+ ${CloseIcon()}
710
+ </button>
711
+ </div>
712
+ </div>`;
713
+ }
714
+ renderCalendar(skeleton = false) {
715
+ const entries = skeleton ? [] : this.logic.view.entries$.value;
716
+ const layout = createCalendarMonthLayout({
717
+ month: this.logic.currentMonth,
718
+ entries,
719
+ });
720
+ const weekdays = layout.weeks[0] ?? [];
721
+ const today = startOfDay(Date.now());
722
+ const currentMonthEmpty = layout.days
723
+ .filter(day => day.inMonth)
724
+ .every(day => day.entries.length === 0 && day.segments.length === 0);
725
+ const showEmptyMonthHint = currentMonthEmpty &&
726
+ !skeleton &&
727
+ !this.logic.view.emptyMonthHintDismissed$.value;
728
+ return html `
729
+ <div class="calendar-shell">
730
+ <div class="calendar-toolbar">
731
+ <div class="calendar-title">
732
+ ${monthFormatter.format(new Date(this.logic.currentMonth))}
733
+ </div>
734
+ <div class="calendar-nav">
735
+ ${this.logic.isCurrentMonth()
736
+ ? nothing
737
+ : html `<button
738
+ class="calendar-today-button"
739
+ @click=${() => this.logic.goToday()}
740
+ >
741
+ <span>Today</span>
742
+ </button>`}
743
+ <button
744
+ class="calendar-icon-button"
745
+ aria-label="Previous month"
746
+ @click=${() => this.logic.moveMonth(-1)}
747
+ >
748
+ ${ArrowLeftSmallIcon()}
749
+ </button>
750
+ <button
751
+ class="calendar-icon-button"
752
+ aria-label="Next month"
753
+ @click=${() => this.logic.moveMonth(1)}
754
+ >
755
+ ${ArrowRightSmallIcon()}
756
+ </button>
757
+ </div>
758
+ </div>
759
+ ${this.renderEmptyMonthHint(showEmptyMonthHint)}
760
+ <div class="calendar-weekdays">
761
+ ${repeat(weekdays, day => day.date, day => html `<div class="calendar-weekday">
762
+ ${weekdayFormatter.format(new Date(day.date))}
763
+ </div>`)}
764
+ </div>
765
+ <div
766
+ ${ref(element => this.logic.bindCalendarDropTarget(element))}
767
+ class="calendar-grid"
768
+ >
769
+ ${repeat(layout.weeks, week => week[0]?.date ?? 0, week => {
770
+ const weekSegments = layout.segments.filter(segment => segment.weekIndex === layout.weeks.indexOf(week));
771
+ const preview = this.getSegmentPreviewLayout(week);
772
+ const movingEntryId = this.getMovingEntryId();
773
+ return html `
774
+ <div class="calendar-week">
775
+ ${repeat(week, day => day.date, (day, dayIndex) => {
776
+ const canReserveNewRow = !this.logic.view.readonly$.value && day.inMonth;
777
+ return html `
778
+ <div
779
+ data-date=${day.date}
780
+ class="calendar-day ${day.inMonth
781
+ ? ''
782
+ : 'is-outside'} ${day.date === today
783
+ ? 'is-today'
784
+ : ''} ${this.logic.isDayInPreview(day.date)
785
+ ? 'is-drop-target'
786
+ : ''}"
787
+ style="--calendar-segment-slots:${getCalendarDaySegmentSlots(day, movingEntryId)};"
788
+ >
789
+ <div class="calendar-day-number">
790
+ ${dateFormatter.format(new Date(day.date))}
791
+ </div>
792
+ <div class="calendar-day-entries">
793
+ ${day.entries
794
+ .filter(e => !this.logic.isEntryBeingMoved(e.id))
795
+ .map(entry => this.renderEntry(entry))}
796
+ ${this.renderDayPreview(day.date)}
797
+ ${this.renderPreviewSpacer(day, preview, dayIndex)}
798
+ </div>
799
+ ${canReserveNewRow
800
+ ? html `<button
801
+ class="calendar-new-row"
802
+ aria-label="+ New row"
803
+ ?disabled=${this.logic.isInteracting}
804
+ @click=${() => this.logic.createRowOnDate(day.date)}
805
+ >
806
+ ${PlusIcon()}<span>New row</span>
807
+ </button>`
808
+ : nothing}
809
+ </div>
810
+ `;
811
+ })}
812
+ <div class="calendar-segments">
813
+ ${weekSegments
814
+ .filter(s => !this.logic.isEntryBeingMoved(s.entry.id))
815
+ .map(segment => this.renderEntry(segment.entry, `grid-column:${segment.startIndex + 1} / span ${segment.span};grid-row:${segment.slot + 1};`, segment))}
816
+ ${this.renderSegmentPreview(preview)}
817
+ </div>
818
+ </div>
819
+ `;
820
+ })}
821
+ </div>
822
+ </div>
823
+ `;
824
+ }
825
+ render() {
826
+ const setup = this.logic.view.dateMapping$.value.status === 'setup';
827
+ return html `
828
+ ${this.logic.headerWidget
829
+ ? renderUniLit(this.logic.headerWidget, {
830
+ dataViewLogic: this.logic,
831
+ })
832
+ : nothing}
833
+ <div class=${setup ? 'calendar-setup-wrap' : ''}>
834
+ <div class="calendar-scroll" @wheel="${this.logic.onWheel}">
835
+ ${this.renderCalendar(setup)}
836
+ </div>
837
+ ${setup
838
+ ? html `<div class="calendar-setup">
839
+ <button
840
+ @click=${(event) => this.logic.openSetupMenu(event.currentTarget)}
841
+ >
842
+ ${TodayIcon()}<span>Select or create date property</span>
843
+ </button>
844
+ </div>`
845
+ : nothing}
846
+ </div>
847
+ `;
848
+ }
849
+ }