@formicoidea/labre-core 0.58.0 → 0.59.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 (167) hide show
  1. package/architecture/code.c4 +94 -65
  2. package/architecture/domain.c4 +11 -5
  3. package/dist/_pkgs/affine-block-attachment/edgeless-clipboard-config.d.ts +3 -2
  4. package/dist/_pkgs/affine-block-attachment/edgeless-clipboard-config.js +18 -13
  5. package/dist/_pkgs/affine-block-callout/adapters/markdown.js +4 -1
  6. package/dist/_pkgs/affine-block-code/adapters/html.js +1 -1
  7. package/dist/_pkgs/affine-block-code/adapters/markdown/preprocessor.js +13 -1
  8. package/dist/_pkgs/affine-block-code/adapters/notion-html.js +1 -1
  9. package/dist/_pkgs/affine-block-code/code-block.d.ts +17 -2
  10. package/dist/_pkgs/affine-block-code/code-block.js +28 -23
  11. package/dist/_pkgs/affine-block-code/code-toolbar/components/lang-button.js +17 -4
  12. package/dist/_pkgs/affine-block-code/code-toolbar/components/preview-button.js +1 -1
  13. package/dist/_pkgs/affine-block-data-view/data-source.js +12 -5
  14. package/dist/_pkgs/affine-block-edgeless-text/edgeless-clipboard-config.d.ts +3 -2
  15. package/dist/_pkgs/affine-block-edgeless-text/edgeless-clipboard-config.js +8 -5
  16. package/dist/_pkgs/affine-block-image/asset-picker.d.ts +23 -2
  17. package/dist/_pkgs/affine-block-image/asset-picker.js +52 -12
  18. package/dist/_pkgs/affine-block-image/configs/replace-action.d.ts +8 -5
  19. package/dist/_pkgs/affine-block-image/configs/replace-action.js +8 -8
  20. package/dist/_pkgs/affine-block-image/configs/toolbar.js +2 -1
  21. package/dist/_pkgs/affine-block-image/crop/crop-controller.d.ts +15 -0
  22. package/dist/_pkgs/affine-block-image/crop/crop-controller.js +40 -2
  23. package/dist/_pkgs/affine-block-image/crop/crop-math.d.ts +22 -0
  24. package/dist/_pkgs/affine-block-image/crop/crop-math.js +55 -2
  25. package/dist/_pkgs/affine-block-image/crop/crop-overlay.d.ts +17 -3
  26. package/dist/_pkgs/affine-block-image/crop/crop-overlay.js +64 -6
  27. package/dist/_pkgs/affine-block-image/edgeless-clipboard-config.d.ts +3 -2
  28. package/dist/_pkgs/affine-block-image/edgeless-clipboard-config.js +20 -14
  29. package/dist/_pkgs/affine-block-image/image-block.js +1 -0
  30. package/dist/_pkgs/affine-block-image/image-edgeless-block.js +3 -0
  31. package/dist/_pkgs/affine-block-image/index.d.ts +2 -0
  32. package/dist/_pkgs/affine-block-image/index.js +2 -0
  33. package/dist/_pkgs/affine-block-image/replace/commands.d.ts +68 -0
  34. package/dist/_pkgs/affine-block-image/replace/commands.js +200 -0
  35. package/dist/_pkgs/affine-block-image/replace/replace-model.d.ts +44 -0
  36. package/dist/_pkgs/affine-block-image/replace/replace-model.js +168 -0
  37. package/dist/_pkgs/affine-block-image/replace/toolbar.d.ts +21 -0
  38. package/dist/_pkgs/affine-block-image/replace/toolbar.js +159 -0
  39. package/dist/_pkgs/affine-block-image/translations.d.ts +15 -2
  40. package/dist/_pkgs/affine-block-image/translations.js +35 -2
  41. package/dist/_pkgs/affine-block-image/utils.d.ts +7 -0
  42. package/dist/_pkgs/affine-block-image/utils.js +13 -0
  43. package/dist/_pkgs/affine-block-image/view.js +7 -0
  44. package/dist/_pkgs/affine-block-note/components/edgeless-page-block-title.d.ts +14 -5
  45. package/dist/_pkgs/affine-block-note/components/edgeless-page-block-title.js +18 -11
  46. package/dist/_pkgs/affine-block-note/config.d.ts +9 -2
  47. package/dist/_pkgs/affine-block-note/edgeless-clipboard-config.d.ts +3 -2
  48. package/dist/_pkgs/affine-block-note/edgeless-clipboard-config.js +8 -5
  49. package/dist/_pkgs/affine-block-paragraph/adapters/markdown.js +11 -0
  50. package/dist/_pkgs/affine-block-root/commands/invisible-characters-commands.d.ts +17 -0
  51. package/dist/_pkgs/affine-block-root/commands/invisible-characters-commands.js +123 -0
  52. package/dist/_pkgs/affine-block-root/edgeless/clipboard/command.js +82 -65
  53. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +2 -0
  54. package/dist/_pkgs/affine-block-root/index.d.ts +1 -0
  55. package/dist/_pkgs/affine-block-root/index.js +1 -0
  56. package/dist/_pkgs/affine-block-root/translations.d.ts +6 -0
  57. package/dist/_pkgs/affine-block-root/translations.js +10 -0
  58. package/dist/_pkgs/affine-block-root/view.js +6 -1
  59. package/dist/_pkgs/affine-block-surface/commands/index.d.ts +1 -1
  60. package/dist/_pkgs/affine-block-surface/commands/index.js +1 -1
  61. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.d.ts +9 -0
  62. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +21 -12
  63. package/dist/_pkgs/affine-block-surface/extensions/clipboard-config.d.ts +33 -0
  64. package/dist/_pkgs/affine-block-surface/extensions/clipboard-config.js +53 -0
  65. package/dist/_pkgs/affine-block-surface/framework-background/background-view.js +2 -1
  66. package/dist/_pkgs/affine-block-surface/framework-background/band-widths.d.ts +104 -0
  67. package/dist/_pkgs/affine-block-surface/framework-background/band-widths.js +156 -0
  68. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +87 -4
  69. package/dist/_pkgs/affine-block-surface/framework-background/def.js +26 -7
  70. package/dist/_pkgs/affine-block-surface/framework-background/ellipsis.d.ts +58 -0
  71. package/dist/_pkgs/affine-block-surface/framework-background/ellipsis.js +110 -0
  72. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +3 -0
  73. package/dist/_pkgs/affine-block-surface/framework-background/index.js +3 -0
  74. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +12 -2
  75. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +29 -5
  76. package/dist/_pkgs/affine-block-surface/framework-background/measure-text.d.ts +14 -0
  77. package/dist/_pkgs/affine-block-surface/framework-background/measure-text.js +31 -0
  78. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +14 -1
  79. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +84 -31
  80. package/dist/_pkgs/affine-block-table/adapters/html.js +26 -14
  81. package/dist/_pkgs/affine-block-table/adapters/utils.d.ts +1 -0
  82. package/dist/_pkgs/affine-block-table/adapters/utils.js +23 -5
  83. package/dist/_pkgs/affine-block-table/header-menu.d.ts +13 -0
  84. package/dist/_pkgs/affine-block-table/header-menu.js +25 -0
  85. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +15 -0
  86. package/dist/_pkgs/affine-block-table/selection-controller.js +62 -0
  87. package/dist/_pkgs/affine-block-table/table-cell-css.d.ts +7 -0
  88. package/dist/_pkgs/affine-block-table/table-cell-css.js +10 -0
  89. package/dist/_pkgs/affine-block-table/table-cell.d.ts +8 -0
  90. package/dist/_pkgs/affine-block-table/table-cell.js +35 -3
  91. package/dist/_pkgs/affine-block-table/table-data-manager.d.ts +14 -0
  92. package/dist/_pkgs/affine-block-table/table-data-manager.js +44 -3
  93. package/dist/_pkgs/affine-block-table/translations.d.ts +14 -0
  94. package/dist/_pkgs/affine-block-table/translations.js +22 -0
  95. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.d.ts +2 -2
  96. package/dist/_pkgs/affine-gfx-template/builtin/other.d.ts +4 -0
  97. package/dist/_pkgs/affine-gfx-template/builtin/other.js +1 -1
  98. package/dist/_pkgs/affine-gfx-template/builtin/slides/build.d.ts +81 -0
  99. package/dist/_pkgs/affine-gfx-template/builtin/slides/build.js +276 -0
  100. package/dist/_pkgs/affine-gfx-template/builtin/slides/consts.d.ts +126 -0
  101. package/dist/_pkgs/affine-gfx-template/builtin/slides/consts.js +101 -0
  102. package/dist/_pkgs/affine-gfx-template/builtin/slides/index.d.ts +8 -0
  103. package/dist/_pkgs/affine-gfx-template/builtin/slides/index.js +27 -0
  104. package/dist/_pkgs/affine-gfx-template/builtin/slides/masks.d.ts +83 -0
  105. package/dist/_pkgs/affine-gfx-template/builtin/slides/masks.js +674 -0
  106. package/dist/_pkgs/affine-gfx-template/contribute.js +12 -17
  107. package/dist/_pkgs/affine-gfx-template/make-snapshot.d.ts +14 -2
  108. package/dist/_pkgs/affine-gfx-template/make-snapshot.js +6 -2
  109. package/dist/_pkgs/affine-gfx-template/services/template-middlewares.d.ts +12 -0
  110. package/dist/_pkgs/affine-gfx-template/services/template-middlewares.js +48 -0
  111. package/dist/_pkgs/affine-gfx-template/services/template.js +2 -1
  112. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.d.ts +15 -1
  113. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.js +33 -37
  114. package/dist/_pkgs/affine-gfx-template/toolbar/template-type.d.ts +6 -0
  115. package/dist/_pkgs/affine-gfx-template/translations.d.ts +94 -0
  116. package/dist/_pkgs/affine-gfx-template/translations.js +441 -2
  117. package/dist/_pkgs/affine-model/blocks/table/table-model.d.ts +4 -0
  118. package/dist/_pkgs/affine-model/blocks/table/table-model.js +4 -0
  119. package/dist/_pkgs/affine-model/elements/bpmn/node.d.ts +46 -3
  120. package/dist/_pkgs/affine-model/elements/bpmn/node.js +47 -4
  121. package/dist/_pkgs/affine-model/elements/bpmn/pool.d.ts +20 -0
  122. package/dist/_pkgs/affine-model/elements/bpmn/pool.js +33 -4
  123. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +3 -16
  124. package/dist/_pkgs/affine-shared/services/edit-props-store.js +16 -16
  125. package/dist/_pkgs/affine-shared/services/editor-setting-service.d.ts +3 -0
  126. package/dist/_pkgs/affine-shared/services/editor-setting-service.js +4 -0
  127. package/dist/_pkgs/affine-shared/services/index.d.ts +1 -0
  128. package/dist/_pkgs/affine-shared/services/index.js +1 -0
  129. package/dist/_pkgs/affine-shared/services/invisible-characters.d.ts +33 -0
  130. package/dist/_pkgs/affine-shared/services/invisible-characters.js +63 -0
  131. package/dist/_pkgs/affine-shared/services/link-preview-service/link-preview-cache.d.ts +0 -9
  132. package/dist/_pkgs/affine-shared/services/link-preview-service/link-preview-cache.js +3 -9
  133. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +26 -0
  134. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +4 -3
  135. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +11 -0
  136. package/dist/_pkgs/affine-shared/utils/index.d.ts +1 -0
  137. package/dist/_pkgs/affine-shared/utils/index.js +1 -0
  138. package/dist/_pkgs/affine-shared/utils/invisible-characters.d.ts +42 -0
  139. package/dist/_pkgs/affine-shared/utils/invisible-characters.js +81 -0
  140. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-toolbar.js +13 -2
  141. package/dist/_pkgs/data-view/view-presets/table/pc/header/column-header.js +6 -0
  142. package/dist/_pkgs/data-view/view-presets/table/pc/table-view-ui-logic.js +5 -2
  143. package/dist/_pkgs/std/clipboard/clipboard.d.ts +15 -1
  144. package/dist/_pkgs/std/clipboard/clipboard.js +18 -0
  145. package/dist/_pkgs/std/inline/components/embed-gap.js +1 -1
  146. package/dist/_pkgs/std/inline/components/v-line.js +1 -1
  147. package/dist/_pkgs/std/inline/components/v-text.d.ts +15 -2
  148. package/dist/_pkgs/std/inline/components/v-text.js +147 -15
  149. package/dist/_pkgs/std/inline/consts.d.ts +5 -0
  150. package/dist/_pkgs/std/inline/consts.js +5 -0
  151. package/dist/_pkgs/std/inline/utils/index.d.ts +1 -0
  152. package/dist/_pkgs/std/inline/utils/index.js +1 -0
  153. package/dist/_pkgs/std/inline/utils/invisible-characters.d.ts +57 -0
  154. package/dist/_pkgs/std/inline/utils/invisible-characters.js +162 -0
  155. package/dist/_pkgs/std/inline/utils/point-conversion.js +3 -3
  156. package/dist/_pkgs/std/inline/utils/text.d.ts +8 -0
  157. package/dist/_pkgs/std/inline/utils/text.js +11 -2
  158. package/dist/_pkgs/store/model/store/crud.d.ts +28 -0
  159. package/dist/_pkgs/store/model/store/crud.js +97 -30
  160. package/dist/_pkgs/store/model/store/query.js +3 -2
  161. package/dist/_pkgs/store/model/store/store.d.ts +21 -0
  162. package/dist/_pkgs/store/model/store/store.js +88 -21
  163. package/dist/_pkgs/store/transformer/transformer.d.ts +46 -0
  164. package/dist/_pkgs/store/transformer/transformer.js +72 -0
  165. package/dist/commands.js +6 -1
  166. package/dist/translations.js +2 -0
  167. package/package.json +3 -4
@@ -1,4 +1,4 @@
1
- import { CATALOGUE_OTHER, } from '../affine-shared/services/index.js';
1
+ import { BLOCK_TYPE_QUOTE, CATALOGUE_OTHER, } from '../affine-shared/services/index.js';
2
2
  /**
3
3
  * This package's own wordings, joined into `PACKAGE_WORDINGS` in
4
4
  * `@labre/affine/translations` — see that file and
@@ -70,6 +70,440 @@ export const TEMPLATE_NAME_GANTT_CHART = [
70
70
  'com.labre.template.name.gantt-chart',
71
71
  'Gantt chart',
72
72
  ];
73
+ /* ── The "Slides" category (16:9 slide masks, `builtin/slides/`) ────────
74
+ *
75
+ * Its tab and its tiles are chrome; a tile's name is ALSO written once, at
76
+ * placement, as the title of the frame the mask inserts (a frame title is
77
+ * document content, ADR 0023) — one key for both, like the frame tool's own
78
+ * seed name. Everything painted inside the frame is a seed below.
79
+ */
80
+ export const TEMPLATE_PANEL_CATEGORY_SLIDES = [
81
+ 'com.labre.template.slides.category',
82
+ 'Slides',
83
+ ];
84
+ export const SLIDE_NAME_COVER = [
85
+ 'com.labre.template.slides.name.cover',
86
+ 'Cover',
87
+ ];
88
+ export const SLIDE_NAME_COVER_IMAGE = [
89
+ 'com.labre.template.slides.name.cover-image',
90
+ 'Cover with image',
91
+ ];
92
+ export const SLIDE_NAME_SECTION = [
93
+ 'com.labre.template.slides.name.section',
94
+ 'Section',
95
+ ];
96
+ export const SLIDE_NAME_STATEMENT = [
97
+ 'com.labre.template.slides.name.statement',
98
+ 'Statement',
99
+ ];
100
+ export const SLIDE_NAME_TEXT_IMAGE = [
101
+ 'com.labre.template.slides.name.text-image',
102
+ 'Text and image',
103
+ ];
104
+ export const SLIDE_NAME_FULL_IMAGE = [
105
+ 'com.labre.template.slides.name.full-image',
106
+ 'Full image',
107
+ ];
108
+ export const SLIDE_NAME_TWO_COLUMNS = [
109
+ 'com.labre.template.slides.name.two-columns',
110
+ 'Two columns',
111
+ ];
112
+ export const SLIDE_NAME_THREE_COLUMNS = [
113
+ 'com.labre.template.slides.name.three-columns',
114
+ 'Three columns',
115
+ ];
116
+ export const SLIDE_NAME_SIX_POINTS = [
117
+ 'com.labre.template.slides.name.six-points',
118
+ 'Six points',
119
+ ];
120
+ export const SLIDE_NAME_IMAGE_CARDS = [
121
+ 'com.labre.template.slides.name.image-cards',
122
+ 'Image cards',
123
+ ];
124
+ export const SLIDE_NAME_AGENDA = [
125
+ 'com.labre.template.slides.name.agenda',
126
+ 'Agenda',
127
+ ];
128
+ /** An alias (L7 dedupe): the quote block's own word, one key. */
129
+ export const SLIDE_NAME_QUOTE = BLOCK_TYPE_QUOTE;
130
+ export const SLIDE_NAME_TESTIMONIALS = [
131
+ 'com.labre.template.slides.name.testimonials',
132
+ 'Testimonials',
133
+ ];
134
+ export const SLIDE_NAME_TEAM = [
135
+ 'com.labre.template.slides.name.team',
136
+ 'Team',
137
+ ];
138
+ export const SLIDE_NAME_CONTACT = [
139
+ 'com.labre.template.slides.name.contact',
140
+ 'Contact',
141
+ ];
142
+ export const SLIDE_NAME_ORG_CHART = [
143
+ 'com.labre.template.slides.name.org-chart',
144
+ 'Org chart',
145
+ ];
146
+ export const SLIDE_NAME_KEY_FIGURES = [
147
+ 'com.labre.template.slides.name.key-figures',
148
+ 'Key figures',
149
+ ];
150
+ export const SLIDE_NAME_TIMELINE = [
151
+ 'com.labre.template.slides.name.timeline',
152
+ 'Timeline',
153
+ ];
154
+ export const SLIDE_NAME_ROADMAP = [
155
+ 'com.labre.template.slides.name.roadmap',
156
+ 'Roadmap',
157
+ ];
158
+ export const SLIDE_NAME_PROCESS = [
159
+ 'com.labre.template.slides.name.process',
160
+ 'Process',
161
+ ];
162
+ export const SLIDE_NAME_MATRIX = [
163
+ 'com.labre.template.slides.name.matrix',
164
+ 'Two-by-two matrix',
165
+ ];
166
+ export const SLIDE_NAME_VENN = [
167
+ 'com.labre.template.slides.name.venn',
168
+ 'Venn diagram',
169
+ ];
170
+ export const SLIDE_NAME_MARKET_SIZE = [
171
+ 'com.labre.template.slides.name.market-size',
172
+ 'Market size',
173
+ ];
174
+ export const SLIDE_NAME_PRICING = [
175
+ 'com.labre.template.slides.name.pricing',
176
+ 'Pricing',
177
+ ];
178
+ export const SLIDE_NAME_LOGO_WALL = [
179
+ 'com.labre.template.slides.name.logo-wall',
180
+ 'Logo wall',
181
+ ];
182
+ export const SLIDE_NAME_GANTT = [
183
+ 'com.labre.template.slides.name.gantt',
184
+ 'Gantt plan',
185
+ ];
186
+ export const SLIDE_NAME_CHART_TEXT = [
187
+ 'com.labre.template.slides.name.chart-text',
188
+ 'Chart and text',
189
+ ];
190
+ export const SLIDE_NAME_THREE_CHARTS = [
191
+ 'com.labre.template.slides.name.three-charts',
192
+ 'Three charts',
193
+ ];
194
+ export const SLIDE_NAME_COLLAGE = [
195
+ 'com.labre.template.slides.name.collage',
196
+ 'Text and collage',
197
+ ];
198
+ export const SLIDE_NAME_BENTO = [
199
+ 'com.labre.template.slides.name.bento',
200
+ 'Picture bento',
201
+ ];
202
+ export const SLIDE_NAME_IMAGE_GRID = [
203
+ 'com.labre.template.slides.name.image-grid',
204
+ 'Picture grid',
205
+ ];
206
+ export const SLIDE_NAME_FEATURE_BENTO = [
207
+ 'com.labre.template.slides.name.feature-bento',
208
+ 'Feature bento',
209
+ ];
210
+ export const SLIDE_NAME_PHONE = [
211
+ 'com.labre.template.slides.name.phone',
212
+ 'Phone mockup',
213
+ ];
214
+ export const SLIDE_NAME_TABLET = [
215
+ 'com.labre.template.slides.name.tablet',
216
+ 'Tablet mockup',
217
+ ];
218
+ /**
219
+ * The slide-mask tile names this package declares (the quote slide's is the
220
+ * quote block's own, declared in `chrome.ts`).
221
+ */
222
+ export const SLIDE_NAME_WORDINGS = [
223
+ SLIDE_NAME_COVER,
224
+ SLIDE_NAME_COVER_IMAGE,
225
+ SLIDE_NAME_SECTION,
226
+ SLIDE_NAME_STATEMENT,
227
+ SLIDE_NAME_TEXT_IMAGE,
228
+ SLIDE_NAME_FULL_IMAGE,
229
+ SLIDE_NAME_TWO_COLUMNS,
230
+ SLIDE_NAME_THREE_COLUMNS,
231
+ SLIDE_NAME_SIX_POINTS,
232
+ SLIDE_NAME_IMAGE_CARDS,
233
+ SLIDE_NAME_AGENDA,
234
+ SLIDE_NAME_TESTIMONIALS,
235
+ SLIDE_NAME_TEAM,
236
+ SLIDE_NAME_CONTACT,
237
+ SLIDE_NAME_ORG_CHART,
238
+ SLIDE_NAME_KEY_FIGURES,
239
+ SLIDE_NAME_TIMELINE,
240
+ SLIDE_NAME_ROADMAP,
241
+ SLIDE_NAME_PROCESS,
242
+ SLIDE_NAME_MATRIX,
243
+ SLIDE_NAME_VENN,
244
+ SLIDE_NAME_MARKET_SIZE,
245
+ SLIDE_NAME_PRICING,
246
+ SLIDE_NAME_LOGO_WALL,
247
+ SLIDE_NAME_GANTT,
248
+ SLIDE_NAME_CHART_TEXT,
249
+ SLIDE_NAME_THREE_CHARTS,
250
+ SLIDE_NAME_COLLAGE,
251
+ SLIDE_NAME_BENTO,
252
+ SLIDE_NAME_IMAGE_GRID,
253
+ SLIDE_NAME_FEATURE_BENTO,
254
+ SLIDE_NAME_PHONE,
255
+ SLIDE_NAME_TABLET,
256
+ ];
257
+ /** The seeds a slide mask writes into the document, shared by every mask. */
258
+ export const SLIDE_SEED_EYEBROW = [
259
+ 'com.labre.template.slides.seed.eyebrow',
260
+ 'Your name · Company name',
261
+ ];
262
+ export const SLIDE_SEED_COVER_TITLE = [
263
+ 'com.labre.template.slides.seed.cover-title',
264
+ 'Presentation title',
265
+ ];
266
+ export const SLIDE_SEED_DATE = [
267
+ 'com.labre.template.slides.seed.date',
268
+ 'Date',
269
+ ];
270
+ export const SLIDE_SEED_TITLE = [
271
+ 'com.labre.template.slides.seed.title',
272
+ 'Describe this slide',
273
+ ];
274
+ export const SLIDE_SEED_SUBTITLE = [
275
+ 'com.labre.template.slides.seed.subtitle',
276
+ 'A short line that sets the context',
277
+ ];
278
+ export const SLIDE_SEED_SECTION_TITLE = [
279
+ 'com.labre.template.slides.seed.section-title',
280
+ 'Section title',
281
+ ];
282
+ export const SLIDE_SEED_SECTION_SUBTITLE = [
283
+ 'com.labre.template.slides.seed.section-subtitle',
284
+ 'Explain what this section is about',
285
+ ];
286
+ export const SLIDE_SEED_STATEMENT = [
287
+ 'com.labre.template.slides.seed.statement',
288
+ 'Add a bold statement to keep your audience focused',
289
+ ];
290
+ export const SLIDE_SEED_HEADING = [
291
+ 'com.labre.template.slides.seed.heading',
292
+ 'A key point, in ten words or less',
293
+ ];
294
+ export const SLIDE_SEED_BODY = [
295
+ 'com.labre.template.slides.seed.body',
296
+ 'Expand on your point: say why your audience should care, and how it ties into the other ideas on this slide.',
297
+ ];
298
+ export const SLIDE_SEED_IMAGE = [
299
+ 'com.labre.template.slides.seed.image',
300
+ 'Image',
301
+ ];
302
+ export const SLIDE_SEED_CAPTION = [
303
+ 'com.labre.template.slides.seed.caption',
304
+ 'A picture may be worth a thousand words, but a caption helps',
305
+ ];
306
+ export const SLIDE_SEED_FOOTER = [
307
+ 'com.labre.template.slides.seed.footer',
308
+ 'Footer',
309
+ ];
310
+ export const SLIDE_SEED_AGENDA_TITLE = [
311
+ 'com.labre.template.slides.seed.agenda-title',
312
+ 'Agenda',
313
+ ];
314
+ export const SLIDE_SEED_AGENDA_ITEM = [
315
+ 'com.labre.template.slides.seed.agenda-item',
316
+ 'Agenda item',
317
+ ];
318
+ export const SLIDE_SEED_QUOTE = [
319
+ 'com.labre.template.slides.seed.quote',
320
+ '“Add a quote that captures what your audience should remember.”',
321
+ ];
322
+ export const SLIDE_SEED_QUOTE_AUTHOR = [
323
+ 'com.labre.template.slides.seed.quote-author',
324
+ 'Name, Role at Company',
325
+ ];
326
+ export const SLIDE_SEED_TESTIMONIALS_TITLE = [
327
+ 'com.labre.template.slides.seed.testimonials-title',
328
+ 'What our clients say',
329
+ ];
330
+ export const SLIDE_SEED_TEAM_TITLE = [
331
+ 'com.labre.template.slides.seed.team-title',
332
+ 'Meet the team',
333
+ ];
334
+ export const SLIDE_SEED_PERSON_NAME = [
335
+ 'com.labre.template.slides.seed.person-name',
336
+ 'Name',
337
+ ];
338
+ export const SLIDE_SEED_PERSON_ROLE = [
339
+ 'com.labre.template.slides.seed.person-role',
340
+ 'Role',
341
+ ];
342
+ export const SLIDE_SEED_CONTACT_TITLE = [
343
+ 'com.labre.template.slides.seed.contact-title',
344
+ 'Contact',
345
+ ];
346
+ export const SLIDE_SEED_CONTACT_ADDRESS = [
347
+ 'com.labre.template.slides.seed.contact-address',
348
+ 'Address',
349
+ ];
350
+ export const SLIDE_SEED_CONTACT_PHONE = [
351
+ 'com.labre.template.slides.seed.contact-phone',
352
+ 'Phone',
353
+ ];
354
+ export const SLIDE_SEED_CONTACT_EMAIL = [
355
+ 'com.labre.template.slides.seed.contact-email',
356
+ 'Email',
357
+ ];
358
+ export const SLIDE_SEED_CONTACT_VALUE = [
359
+ 'com.labre.template.slides.seed.contact-value',
360
+ 'Add the details here',
361
+ ];
362
+ export const SLIDE_SEED_FIGURE = [
363
+ 'com.labre.template.slides.seed.figure',
364
+ '99%',
365
+ ];
366
+ export const SLIDE_SEED_DETAIL = [
367
+ 'com.labre.template.slides.seed.detail',
368
+ 'A short description',
369
+ ];
370
+ export const SLIDE_SEED_FIGURE_LABEL = [
371
+ 'com.labre.template.slides.seed.figure-label',
372
+ 'What this number measures',
373
+ ];
374
+ export const SLIDE_SEED_MILESTONE = [
375
+ 'com.labre.template.slides.seed.milestone',
376
+ 'Milestone',
377
+ ];
378
+ export const SLIDE_SEED_QUARTER = [
379
+ 'com.labre.template.slides.seed.quarter',
380
+ 'Q{{n}}',
381
+ ];
382
+ export const SLIDE_SEED_STEP = [
383
+ 'com.labre.template.slides.seed.step',
384
+ 'Step {{n}}',
385
+ ];
386
+ export const SLIDE_SEED_AXIS_VALUE = [
387
+ 'com.labre.template.slides.seed.axis-value',
388
+ 'Value',
389
+ ];
390
+ export const SLIDE_SEED_AXIS_EFFORT = [
391
+ 'com.labre.template.slides.seed.axis-effort',
392
+ 'Effort',
393
+ ];
394
+ export const SLIDE_SEED_QUADRANT = [
395
+ 'com.labre.template.slides.seed.quadrant',
396
+ 'Quadrant',
397
+ ];
398
+ export const SLIDE_SEED_VENN_IDEA = [
399
+ 'com.labre.template.slides.seed.venn-idea',
400
+ 'One idea',
401
+ ];
402
+ export const SLIDE_SEED_VENN_OTHER = [
403
+ 'com.labre.template.slides.seed.venn-other',
404
+ 'Another idea',
405
+ ];
406
+ export const SLIDE_SEED_VENN_OVERLAP = [
407
+ 'com.labre.template.slides.seed.venn-overlap',
408
+ 'The best of both',
409
+ ];
410
+ export const SLIDE_SEED_MARKET_TOTAL = [
411
+ 'com.labre.template.slides.seed.market-total',
412
+ 'Total market',
413
+ ];
414
+ export const SLIDE_SEED_MARKET_SERVICEABLE = [
415
+ 'com.labre.template.slides.seed.market-serviceable',
416
+ 'Serviceable market',
417
+ ];
418
+ export const SLIDE_SEED_MARKET_OBTAINABLE = [
419
+ 'com.labre.template.slides.seed.market-obtainable',
420
+ 'Obtainable market',
421
+ ];
422
+ export const SLIDE_SEED_PLAN = [
423
+ 'com.labre.template.slides.seed.plan',
424
+ 'Plan',
425
+ ];
426
+ export const SLIDE_SEED_PRICE = [
427
+ 'com.labre.template.slides.seed.price',
428
+ 'Price',
429
+ ];
430
+ export const SLIDE_SEED_FEATURE = [
431
+ 'com.labre.template.slides.seed.feature',
432
+ 'A feature of this plan',
433
+ ];
434
+ export const SLIDE_SEED_LOGO = [
435
+ 'com.labre.template.slides.seed.logo',
436
+ 'Logo',
437
+ ];
438
+ /** The label of a chart placeholder: a dashed zone, like a picture's. */
439
+ export const SLIDE_SEED_CHART = [
440
+ 'com.labre.template.slides.seed.chart',
441
+ 'Chart',
442
+ ];
443
+ /** The label of a device mockup's screen zone. */
444
+ export const SLIDE_SEED_SCREEN = [
445
+ 'com.labre.template.slides.seed.screen',
446
+ 'Screen',
447
+ ];
448
+ export const SLIDE_SEED_TASK = [
449
+ 'com.labre.template.slides.seed.task',
450
+ 'Task',
451
+ ];
452
+ export const SLIDE_SEED_MONTH = [
453
+ 'com.labre.template.slides.seed.month',
454
+ 'Month {{n}}',
455
+ ];
456
+ export const SLIDE_SEED_WORDINGS = [
457
+ SLIDE_SEED_EYEBROW,
458
+ SLIDE_SEED_COVER_TITLE,
459
+ SLIDE_SEED_DATE,
460
+ SLIDE_SEED_TITLE,
461
+ SLIDE_SEED_SUBTITLE,
462
+ SLIDE_SEED_SECTION_TITLE,
463
+ SLIDE_SEED_SECTION_SUBTITLE,
464
+ SLIDE_SEED_STATEMENT,
465
+ SLIDE_SEED_HEADING,
466
+ SLIDE_SEED_BODY,
467
+ SLIDE_SEED_IMAGE,
468
+ SLIDE_SEED_CAPTION,
469
+ SLIDE_SEED_FOOTER,
470
+ SLIDE_SEED_AGENDA_TITLE,
471
+ SLIDE_SEED_AGENDA_ITEM,
472
+ SLIDE_SEED_QUOTE,
473
+ SLIDE_SEED_QUOTE_AUTHOR,
474
+ SLIDE_SEED_TESTIMONIALS_TITLE,
475
+ SLIDE_SEED_TEAM_TITLE,
476
+ SLIDE_SEED_PERSON_NAME,
477
+ SLIDE_SEED_PERSON_ROLE,
478
+ SLIDE_SEED_CONTACT_TITLE,
479
+ SLIDE_SEED_CONTACT_ADDRESS,
480
+ SLIDE_SEED_CONTACT_PHONE,
481
+ SLIDE_SEED_CONTACT_EMAIL,
482
+ SLIDE_SEED_CONTACT_VALUE,
483
+ SLIDE_SEED_FIGURE,
484
+ SLIDE_SEED_DETAIL,
485
+ SLIDE_SEED_FIGURE_LABEL,
486
+ SLIDE_SEED_MILESTONE,
487
+ SLIDE_SEED_QUARTER,
488
+ SLIDE_SEED_STEP,
489
+ SLIDE_SEED_AXIS_VALUE,
490
+ SLIDE_SEED_AXIS_EFFORT,
491
+ SLIDE_SEED_QUADRANT,
492
+ SLIDE_SEED_VENN_IDEA,
493
+ SLIDE_SEED_VENN_OTHER,
494
+ SLIDE_SEED_VENN_OVERLAP,
495
+ SLIDE_SEED_MARKET_TOTAL,
496
+ SLIDE_SEED_MARKET_SERVICEABLE,
497
+ SLIDE_SEED_MARKET_OBTAINABLE,
498
+ SLIDE_SEED_PLAN,
499
+ SLIDE_SEED_PRICE,
500
+ SLIDE_SEED_FEATURE,
501
+ SLIDE_SEED_LOGO,
502
+ SLIDE_SEED_CHART,
503
+ SLIDE_SEED_SCREEN,
504
+ SLIDE_SEED_TASK,
505
+ SLIDE_SEED_MONTH,
506
+ ];
73
507
  export const TEMPLATE_PACKAGE_WORDINGS = [
74
508
  TEMPLATE_PANEL_ADD,
75
509
  TEMPLATE_PANEL_SEARCH_PLACEHOLDER,
@@ -80,6 +514,8 @@ export const TEMPLATE_PACKAGE_WORDINGS = [
80
514
  TEMPLATE_NAME_BUSINESS_MODEL_CANVAS,
81
515
  TEMPLATE_NAME_FISHBONE,
82
516
  TEMPLATE_NAME_GANTT_CHART,
517
+ TEMPLATE_PANEL_CATEGORY_SLIDES,
518
+ ...SLIDE_NAME_WORDINGS,
83
519
  ];
84
520
  /**
85
521
  * The generic ("Other") diagrams' own seeds: the captions painted onto the
@@ -253,4 +689,7 @@ export const OTHER_TEMPLATE_SEEDS = [
253
689
  * `PACKAGE_SEED_WORDINGS` under source `seed`
254
690
  * (`packages/affine/all/src/translations.ts`).
255
691
  */
256
- export const TEMPLATE_SEED_WORDINGS = OTHER_TEMPLATE_SEEDS;
692
+ export const TEMPLATE_SEED_WORDINGS = [
693
+ ...OTHER_TEMPLATE_SEEDS,
694
+ ...SLIDE_SEED_WORDINGS,
695
+ ];
@@ -20,6 +20,8 @@ export interface TableBlockProps extends BlockMeta {
20
20
  columns: Record<string, TableColumn>;
21
21
  cells: Record<string, TableCell>;
22
22
  comments?: Record<string, boolean>;
23
+ headerRow?: true;
24
+ headerColumn?: true;
23
25
  }
24
26
  export interface TableCellSerialized {
25
27
  text: {
@@ -30,6 +32,8 @@ export interface TableBlockPropsSerialized {
30
32
  rows: Record<string, TableRow>;
31
33
  columns: Record<string, TableColumn>;
32
34
  cells: Record<string, TableCellSerialized>;
35
+ headerRow?: true;
36
+ headerColumn?: true;
33
37
  }
34
38
  export declare class TableBlockModel extends BlockModel<TableBlockProps> {
35
39
  }
@@ -9,6 +9,10 @@ export const TableBlockSchema = defineBlockSchema({
9
9
  columns: {},
10
10
  cells: {},
11
11
  comments: undefined,
12
+ // `undefined`, never `false`: a defined default is written into every
13
+ // table the first time a document opens (ADR 0043).
14
+ headerRow: undefined,
15
+ headerColumn: undefined,
12
16
  'meta:createdAt': undefined,
13
17
  'meta:createdBy': undefined,
14
18
  'meta:updatedAt': undefined,
@@ -37,6 +37,46 @@ import { ShapeElementModel } from '../shape/index.js';
37
37
  * which is a containment model this pack does not have yet.
38
38
  */
39
39
  export type BpmnNodeKind = 'startEvent' | 'startEventMessage' | 'startEventTimer' | 'endEvent' | 'endEventMessage' | 'endEventTerminate' | 'task' | 'taskUser' | 'taskService' | 'subProcess' | 'callActivity' | 'gatewayExclusive' | 'gatewayParallel' | 'dataObject' | 'dataStore' | 'textAnnotation' | 'group';
40
+ /**
41
+ * Which kinds a connector may attach to at the CENTRE only.
42
+ *
43
+ * Every BPMN node used to be centre-only, so a sequence flow could only aim at
44
+ * the middle of a task and clip at its outline; the user could not choose the
45
+ * side a flow leaves a gateway by, which is half of how a BPMN diagram is
46
+ * read. A flow object now keeps the native anchors the connector manager casts
47
+ * from the centre to its outline (`getAnchors`, `gfx/connector`): the four
48
+ * corners of a gateway's diamond, the side midpoints of an activity's or a
49
+ * data shape's rectangle, the four cardinal points of an event's circle. The
50
+ * centre stays offered too, behind the user's `connectorCenterAnchor` setting.
51
+ *
52
+ * A `group` stays centre-only: no flow attaches to a group (BPMN 2.0.2 §10.4),
53
+ * so it has no side worth offering, and a lasso drawn round a process must not
54
+ * sprout anchor dots over the nodes it encloses.
55
+ *
56
+ * A getter over a table, not a stored prop: nothing is written, and an existing
57
+ * connector keeps its `[0.5, 0.5]` endpoints and still stops at the outline.
58
+ * Total over {@link BpmnNodeKind}, so a new kind is a compile error until it
59
+ * says which it is.
60
+ */
61
+ export declare const BPMN_CENTRE_ANCHORED: {
62
+ readonly startEvent: false;
63
+ readonly startEventMessage: false;
64
+ readonly startEventTimer: false;
65
+ readonly endEvent: false;
66
+ readonly endEventMessage: false;
67
+ readonly endEventTerminate: false;
68
+ readonly task: false;
69
+ readonly taskUser: false;
70
+ readonly taskService: false;
71
+ readonly subProcess: false;
72
+ readonly callActivity: false;
73
+ readonly gatewayExclusive: false;
74
+ readonly gatewayParallel: false;
75
+ readonly dataObject: false;
76
+ readonly dataStore: false;
77
+ readonly textAnnotation: false;
78
+ readonly group: true;
79
+ };
40
80
  /**
41
81
  * A BPMN flow-object node. Extends {@link ShapeElementModel} (a native shape)
42
82
  * so it inherits ALL shape behaviour — editable stroke width / colors, inner
@@ -51,9 +91,12 @@ export type BpmnNodeKind = 'startEvent' | 'startEventMessage' | 'startEventTimer
51
91
  export declare class BpmnNodeElementModel extends ShapeElementModel {
52
92
  get type(): string;
53
93
  /**
54
- * Connector anchors are restricted to the center for BPMN nodes (read by the
55
- * connector manager / tool), so sequence flows attach to the node center and
56
- * clip at the perimeter.
94
+ * Whether connectors may attach to this node's centre only (read by the
95
+ * connector manager / tool). Per kind, from {@link BPMN_CENTRE_ANCHORED}:
96
+ * a flow object keeps the native anchors of its outline, a group does not.
97
+ *
98
+ * `true` for an unknown kind — a value a newer client wrote — which is what
99
+ * every kind answered before the table existed.
57
100
  */
58
101
  get centerAnchorOnly(): boolean;
59
102
  accessor kind: BpmnNodeKind;
@@ -34,6 +34,46 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { field } from '../../../std/gfx/index.js';
36
36
  import { ShapeElementModel } from '../shape/index.js';
37
+ /**
38
+ * Which kinds a connector may attach to at the CENTRE only.
39
+ *
40
+ * Every BPMN node used to be centre-only, so a sequence flow could only aim at
41
+ * the middle of a task and clip at its outline; the user could not choose the
42
+ * side a flow leaves a gateway by, which is half of how a BPMN diagram is
43
+ * read. A flow object now keeps the native anchors the connector manager casts
44
+ * from the centre to its outline (`getAnchors`, `gfx/connector`): the four
45
+ * corners of a gateway's diamond, the side midpoints of an activity's or a
46
+ * data shape's rectangle, the four cardinal points of an event's circle. The
47
+ * centre stays offered too, behind the user's `connectorCenterAnchor` setting.
48
+ *
49
+ * A `group` stays centre-only: no flow attaches to a group (BPMN 2.0.2 §10.4),
50
+ * so it has no side worth offering, and a lasso drawn round a process must not
51
+ * sprout anchor dots over the nodes it encloses.
52
+ *
53
+ * A getter over a table, not a stored prop: nothing is written, and an existing
54
+ * connector keeps its `[0.5, 0.5]` endpoints and still stops at the outline.
55
+ * Total over {@link BpmnNodeKind}, so a new kind is a compile error until it
56
+ * says which it is.
57
+ */
58
+ export const BPMN_CENTRE_ANCHORED = {
59
+ startEvent: false,
60
+ startEventMessage: false,
61
+ startEventTimer: false,
62
+ endEvent: false,
63
+ endEventMessage: false,
64
+ endEventTerminate: false,
65
+ task: false,
66
+ taskUser: false,
67
+ taskService: false,
68
+ subProcess: false,
69
+ callActivity: false,
70
+ gatewayExclusive: false,
71
+ gatewayParallel: false,
72
+ dataObject: false,
73
+ dataStore: false,
74
+ textAnnotation: false,
75
+ group: true,
76
+ };
37
77
  /**
38
78
  * A BPMN flow-object node. Extends {@link ShapeElementModel} (a native shape)
39
79
  * so it inherits ALL shape behaviour — editable stroke width / colors, inner
@@ -61,12 +101,15 @@ let BpmnNodeElementModel = (() => {
61
101
  return 'bpmnNode';
62
102
  }
63
103
  /**
64
- * Connector anchors are restricted to the center for BPMN nodes (read by the
65
- * connector manager / tool), so sequence flows attach to the node center and
66
- * clip at the perimeter.
104
+ * Whether connectors may attach to this node's centre only (read by the
105
+ * connector manager / tool). Per kind, from {@link BPMN_CENTRE_ANCHORED}:
106
+ * a flow object keeps the native anchors of its outline, a group does not.
107
+ *
108
+ * `true` for an unknown kind — a value a newer client wrote — which is what
109
+ * every kind answered before the table existed.
67
110
  */
68
111
  get centerAnchorOnly() {
69
- return true;
112
+ return BPMN_CENTRE_ANCHORED[this.kind] ?? true;
70
113
  }
71
114
  #kind_accessor_storage = __runInitializers(this, _kind_initializers, 'task');
72
115
  get kind() { return this.#kind_accessor_storage; }
@@ -85,6 +85,26 @@ export declare class BpmnPoolElementModel extends FrameworkBackgroundElementMode
85
85
  * primitive paints the dividers and the names from it.
86
86
  */
87
87
  accessor lanes: BpmnLane[] | undefined;
88
+ /**
89
+ * The title band widths the renderer last PAINTED this pool with: the
90
+ * participant band (`margin`) and the shared lane strip (`zoneBandWidth`).
91
+ *
92
+ * The bands grow with their names (`fit: 'wrap'`, PO 2026-10-27), which is a
93
+ * function of measured text, and this package cannot measure text. So the
94
+ * BPMN renderer, which does, caches what it painted here after each paint,
95
+ * and {@link includesPoint} selects by it: a click on a band widened by a
96
+ * two-line name picks the pool, as the painted band promises.
97
+ *
98
+ * A derived, view-time fact cached on the model, NEVER stored — the reasoning
99
+ * ADR 0031 applies to the local hide: `@local()` lives in `_local` and is not
100
+ * written to the Y.Map, so no document carries it, no peer receives it and no
101
+ * snapshot serialises it. Undefined until the first paint; a pool never
102
+ * painted (headless) selects by the declared widths.
103
+ */
104
+ accessor paintedBands: {
105
+ margin: number;
106
+ zoneBandWidth: number;
107
+ } | undefined;
88
108
  /**
89
109
  * A pool is picked by its BORDER — and by its TITLE BANDS, which is the one
90
110
  * carve-out the recette kept (issue #194).