@formicoidea/labre-core 0.47.1 → 0.49.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 (239) hide show
  1. package/dist/_pkgs/affine-block-data-view/configs/slash-menu.js +3 -1
  2. package/dist/_pkgs/affine-block-data-view/view.d.ts +17 -1
  3. package/dist/_pkgs/affine-block-data-view/view.js +21 -2
  4. package/dist/_pkgs/affine-block-database/commands.d.ts +2 -2
  5. package/dist/_pkgs/affine-block-database/commands.js +3 -3
  6. package/dist/_pkgs/affine-block-database/components/values-banner.d.ts +28 -0
  7. package/dist/_pkgs/affine-block-database/components/values-banner.js +199 -0
  8. package/dist/_pkgs/affine-block-database/configs/slash-menu.d.ts +6 -1
  9. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +57 -70
  10. package/dist/_pkgs/affine-block-database/data-source.d.ts +9 -5
  11. package/dist/_pkgs/affine-block-database/data-source.js +11 -7
  12. package/dist/_pkgs/affine-block-database/database-block-styles.d.ts +2 -0
  13. package/dist/_pkgs/affine-block-database/database-block-styles.js +15 -0
  14. package/dist/_pkgs/affine-block-database/database-block.d.ts +23 -0
  15. package/dist/_pkgs/affine-block-database/database-block.js +141 -19
  16. package/dist/_pkgs/affine-block-database/effects.js +2 -0
  17. package/dist/_pkgs/affine-block-database/external-data-source.d.ts +69 -2
  18. package/dist/_pkgs/affine-block-database/external-data-source.js +88 -16
  19. package/dist/_pkgs/affine-block-database/index.d.ts +2 -0
  20. package/dist/_pkgs/affine-block-database/index.js +2 -0
  21. package/dist/_pkgs/affine-block-database/linked-view.d.ts +38 -0
  22. package/dist/_pkgs/affine-block-database/linked-view.js +109 -0
  23. package/dist/_pkgs/affine-block-database/properties/index.d.ts +2 -0
  24. package/dist/_pkgs/affine-block-database/properties/index.js +2 -0
  25. package/dist/_pkgs/affine-block-database/properties/text/hosted.d.ts +15 -0
  26. package/dist/_pkgs/affine-block-database/properties/text/hosted.js +24 -0
  27. package/dist/_pkgs/affine-block-database/properties/title/hosted.d.ts +16 -0
  28. package/dist/_pkgs/affine-block-database/properties/title/hosted.js +42 -0
  29. package/dist/_pkgs/affine-block-database/service/index.d.ts +3 -0
  30. package/dist/_pkgs/affine-block-database/service/index.js +3 -0
  31. package/dist/_pkgs/affine-block-database/service/new-row-menu.d.ts +49 -0
  32. package/dist/_pkgs/affine-block-database/service/new-row-menu.js +21 -0
  33. package/dist/_pkgs/affine-block-database/service/open-row.d.ts +77 -0
  34. package/dist/_pkgs/affine-block-database/service/open-row.js +62 -0
  35. package/dist/_pkgs/affine-block-database/service/properties-panel.d.ts +23 -0
  36. package/dist/_pkgs/affine-block-database/service/properties-panel.js +33 -0
  37. package/dist/_pkgs/affine-block-database/translations.d.ts +10 -0
  38. package/dist/_pkgs/affine-block-database/translations.js +35 -0
  39. package/dist/_pkgs/affine-block-database/view-creation.d.ts +10 -0
  40. package/dist/_pkgs/affine-block-database/view-creation.js +14 -0
  41. package/dist/_pkgs/affine-block-database/view.d.ts +31 -1
  42. package/dist/_pkgs/affine-block-database/view.js +48 -4
  43. package/dist/_pkgs/affine-block-database/views/index.d.ts +30 -3
  44. package/dist/_pkgs/affine-block-database/views/index.js +44 -3
  45. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/new-doc.d.ts +25 -0
  46. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/new-doc.js +71 -0
  47. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/slash-menu.js +3 -11
  48. package/dist/_pkgs/affine-components/date-picker/date-picker.d.ts +20 -0
  49. package/dist/_pkgs/affine-components/date-picker/date-picker.js +60 -26
  50. package/dist/_pkgs/affine-components/date-picker/style.js +1 -0
  51. package/dist/_pkgs/affine-components/translations.d.ts +4 -0
  52. package/dist/_pkgs/affine-components/translations.js +26 -0
  53. package/dist/_pkgs/affine-fragment-doc-title/doc-title.d.ts +18 -0
  54. package/dist/_pkgs/affine-fragment-doc-title/doc-title.js +41 -2
  55. package/dist/_pkgs/affine-fragment-doc-title/index.d.ts +1 -1
  56. package/dist/_pkgs/affine-fragment-doc-title/index.js +1 -1
  57. package/dist/_pkgs/affine-fragment-doc-title/title-band/band-cell.d.ts +30 -0
  58. package/dist/_pkgs/affine-fragment-doc-title/title-band/band-cell.js +137 -0
  59. package/dist/_pkgs/affine-fragment-doc-title/title-band/format.d.ts +7 -19
  60. package/dist/_pkgs/affine-fragment-doc-title/title-band/format.js +0 -38
  61. package/dist/_pkgs/affine-fragment-doc-title/title-band/show-here.d.ts +19 -0
  62. package/dist/_pkgs/affine-fragment-doc-title/title-band/show-here.js +61 -0
  63. package/dist/_pkgs/affine-fragment-doc-title/title-band/title-band.d.ts +33 -18
  64. package/dist/_pkgs/affine-fragment-doc-title/title-band/title-band.js +263 -205
  65. package/dist/_pkgs/affine-fragment-doc-title/translations.d.ts +7 -4
  66. package/dist/_pkgs/affine-fragment-doc-title/translations.js +12 -9
  67. package/dist/_pkgs/affine-model/blocks/database/types.d.ts +16 -0
  68. package/dist/_pkgs/affine-model/blocks/database/types.js +5 -1
  69. package/dist/_pkgs/affine-shared/services/data-source-picker-service.d.ts +139 -0
  70. package/dist/_pkgs/affine-shared/services/data-source-picker-service.js +22 -0
  71. package/dist/_pkgs/affine-shared/services/index.d.ts +1 -0
  72. package/dist/_pkgs/affine-shared/services/index.js +1 -0
  73. package/dist/_pkgs/affine-shared/services/linked-doc-creation-service.d.ts +15 -6
  74. package/dist/_pkgs/affine-shared/services/telemetry-service/database.d.ts +59 -0
  75. package/dist/_pkgs/affine-shared/services/title-band-service.d.ts +34 -7
  76. package/dist/_pkgs/affine-shared/utils/model/doc.d.ts +10 -2
  77. package/dist/_pkgs/affine-shared/utils/model/doc.js +17 -7
  78. package/dist/_pkgs/data-view/core/component/cell-status/cell-status-css.d.ts +2 -0
  79. package/dist/_pkgs/data-view/core/component/cell-status/cell-status-css.js +16 -0
  80. package/dist/_pkgs/data-view/core/component/cell-status/cell-status.d.ts +10 -0
  81. package/dist/_pkgs/data-view/core/component/cell-status/cell-status.js +23 -0
  82. package/dist/_pkgs/data-view/core/component/index.d.ts +1 -0
  83. package/dist/_pkgs/data-view/core/component/index.js +1 -0
  84. package/dist/_pkgs/data-view/core/component/overflow/fit.d.ts +26 -0
  85. package/dist/_pkgs/data-view/core/component/overflow/fit.js +48 -0
  86. package/dist/_pkgs/data-view/core/component/overflow/overflow.d.ts +26 -3
  87. package/dist/_pkgs/data-view/core/component/overflow/overflow.js +84 -31
  88. package/dist/_pkgs/data-view/core/component/tags/colors.d.ts +7 -0
  89. package/dist/_pkgs/data-view/core/component/tags/colors.js +22 -10
  90. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +25 -2
  91. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +81 -32
  92. package/dist/_pkgs/data-view/core/data-source/base.d.ts +5 -1
  93. package/dist/_pkgs/data-view/core/data-source/base.js +7 -1
  94. package/dist/_pkgs/data-view/core/data-source/hydration.d.ts +44 -0
  95. package/dist/_pkgs/data-view/core/data-source/hydration.js +31 -0
  96. package/dist/_pkgs/data-view/core/data-source/index.d.ts +1 -0
  97. package/dist/_pkgs/data-view/core/data-source/index.js +1 -0
  98. package/dist/_pkgs/data-view/core/data-view.d.ts +22 -2
  99. package/dist/_pkgs/data-view/core/data-view.js +14 -0
  100. package/dist/_pkgs/data-view/core/effect.js +4 -0
  101. package/dist/_pkgs/data-view/core/group-by/collapsed-state.d.ts +3 -0
  102. package/dist/_pkgs/data-view/core/group-by/collapsed-state.js +59 -0
  103. package/dist/_pkgs/data-view/core/group-by/group-properties.d.ts +21 -0
  104. package/dist/_pkgs/data-view/core/group-by/group-properties.js +38 -0
  105. package/dist/_pkgs/data-view/core/group-by/group-title.js +4 -0
  106. package/dist/_pkgs/data-view/core/group-by/group-visibility.d.ts +40 -0
  107. package/dist/_pkgs/data-view/core/group-by/group-visibility.js +291 -0
  108. package/dist/_pkgs/data-view/core/group-by/setting.d.ts +11 -3
  109. package/dist/_pkgs/data-view/core/group-by/setting.js +81 -8
  110. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +22 -0
  111. package/dist/_pkgs/data-view/core/group-by/trait.js +62 -1
  112. package/dist/_pkgs/data-view/core/index.d.ts +3 -0
  113. package/dist/_pkgs/data-view/core/index.js +3 -0
  114. package/dist/_pkgs/data-view/core/property/base-cell.d.ts +15 -1
  115. package/dist/_pkgs/data-view/core/property/base-cell.js +28 -3
  116. package/dist/_pkgs/data-view/core/property/index.d.ts +1 -0
  117. package/dist/_pkgs/data-view/core/property/index.js +1 -0
  118. package/dist/_pkgs/data-view/core/property/standalone-cell.d.ts +109 -0
  119. package/dist/_pkgs/data-view/core/property/standalone-cell.js +324 -0
  120. package/dist/_pkgs/data-view/core/telemetry.d.ts +16 -0
  121. package/dist/_pkgs/data-view/core/telemetry.js +22 -0
  122. package/dist/_pkgs/data-view/core/utils/new-tab-click.d.ts +2 -0
  123. package/dist/_pkgs/data-view/core/utils/new-tab-click.js +4 -0
  124. package/dist/_pkgs/data-view/core/utils/wording.d.ts +11 -0
  125. package/dist/_pkgs/data-view/core/utils/wording.js +9 -0
  126. package/dist/_pkgs/data-view/core/view/data-view.d.ts +7 -0
  127. package/dist/_pkgs/data-view/core/view/default-name.d.ts +10 -0
  128. package/dist/_pkgs/data-view/core/view/default-name.js +14 -0
  129. package/dist/_pkgs/data-view/core/view/index.d.ts +2 -0
  130. package/dist/_pkgs/data-view/core/view/index.js +2 -0
  131. package/dist/_pkgs/data-view/core/view/open-in.d.ts +27 -0
  132. package/dist/_pkgs/data-view/core/view/open-in.js +39 -0
  133. package/dist/_pkgs/data-view/core/view-manager/cell.d.ts +5 -0
  134. package/dist/_pkgs/data-view/core/view-manager/cell.js +11 -0
  135. package/dist/_pkgs/data-view/core/view-manager/index.d.ts +3 -0
  136. package/dist/_pkgs/data-view/core/view-manager/index.js +3 -0
  137. package/dist/_pkgs/data-view/core/view-manager/new-row-menu-opener.d.ts +18 -0
  138. package/dist/_pkgs/data-view/core/view-manager/new-row-menu-opener.js +2 -0
  139. package/dist/_pkgs/data-view/core/view-manager/properties-panel-opener.d.ts +8 -0
  140. package/dist/_pkgs/data-view/core/view-manager/properties-panel-opener.js +9 -0
  141. package/dist/_pkgs/data-view/core/view-manager/property.d.ts +14 -0
  142. package/dist/_pkgs/data-view/core/view-manager/single-view.d.ts +28 -1
  143. package/dist/_pkgs/data-view/core/view-manager/single-view.js +45 -1
  144. package/dist/_pkgs/data-view/core/view-manager/view-creation.d.ts +49 -0
  145. package/dist/_pkgs/data-view/core/view-manager/view-creation.js +40 -0
  146. package/dist/_pkgs/data-view/core/view-manager/view-manager.d.ts +6 -2
  147. package/dist/_pkgs/data-view/core/view-manager/view-manager.js +2 -2
  148. package/dist/_pkgs/data-view/property-presets/date/cell-renderer.d.ts +2 -0
  149. package/dist/_pkgs/data-view/property-presets/date/cell-renderer.js +11 -2
  150. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  151. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  152. package/dist/_pkgs/data-view/property-presets/text/cell-renderer.js +3 -1
  153. package/dist/_pkgs/data-view/translations.d.ts +55 -0
  154. package/dist/_pkgs/data-view/translations.js +181 -0
  155. package/dist/_pkgs/data-view/view-presets/calendar/define.js +3 -1
  156. package/dist/_pkgs/data-view/view-presets/convert.js +2 -0
  157. package/dist/_pkgs/data-view/view-presets/effect.js +4 -0
  158. package/dist/_pkgs/data-view/view-presets/flat/flat-converts.d.ts +2 -0
  159. package/dist/_pkgs/data-view/view-presets/flat/flat-converts.js +35 -0
  160. package/dist/_pkgs/data-view/view-presets/flat/flat-view-manager.d.ts +79 -0
  161. package/dist/_pkgs/data-view/view-presets/flat/flat-view-manager.js +194 -0
  162. package/dist/_pkgs/data-view/view-presets/flat/flat-view-ui.d.ts +56 -0
  163. package/dist/_pkgs/data-view/view-presets/flat/flat-view-ui.js +266 -0
  164. package/dist/_pkgs/data-view/view-presets/gallery/define.d.ts +14 -0
  165. package/dist/_pkgs/data-view/view-presets/gallery/define.js +15 -0
  166. package/dist/_pkgs/data-view/view-presets/gallery/effect.d.ts +1 -0
  167. package/dist/_pkgs/data-view/view-presets/gallery/effect.js +4 -0
  168. package/dist/_pkgs/data-view/view-presets/gallery/gallery-view.d.ts +27 -0
  169. package/dist/_pkgs/data-view/view-presets/gallery/gallery-view.js +179 -0
  170. package/dist/_pkgs/data-view/view-presets/gallery/index.d.ts +2 -0
  171. package/dist/_pkgs/data-view/view-presets/gallery/index.js +2 -0
  172. package/dist/_pkgs/data-view/view-presets/gallery/renderer.d.ts +1 -0
  173. package/dist/_pkgs/data-view/view-presets/gallery/renderer.js +11 -0
  174. package/dist/_pkgs/data-view/view-presets/index.d.ts +5 -0
  175. package/dist/_pkgs/data-view/view-presets/index.js +7 -0
  176. package/dist/_pkgs/data-view/view-presets/kanban/define.js +3 -1
  177. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +5 -53
  178. package/dist/_pkgs/data-view/view-presets/kanban/mobile/card.js +8 -1
  179. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +6 -1
  180. package/dist/_pkgs/data-view/view-presets/kanban/mobile/group.d.ts +4 -2
  181. package/dist/_pkgs/data-view/view-presets/kanban/mobile/group.js +52 -6
  182. package/dist/_pkgs/data-view/view-presets/kanban/mobile/kanban-view-ui-logic.js +5 -1
  183. package/dist/_pkgs/data-view/view-presets/kanban/pc/card.js +2 -0
  184. package/dist/_pkgs/data-view/view-presets/kanban/pc/cell.js +4 -0
  185. package/dist/_pkgs/data-view/view-presets/kanban/pc/group.d.ts +4 -2
  186. package/dist/_pkgs/data-view/view-presets/kanban/pc/group.js +51 -6
  187. package/dist/_pkgs/data-view/view-presets/kanban/pc/kanban-view-ui-logic.js +5 -1
  188. package/dist/_pkgs/data-view/view-presets/list/define.d.ts +14 -0
  189. package/dist/_pkgs/data-view/view-presets/list/define.js +15 -0
  190. package/dist/_pkgs/data-view/view-presets/list/effect.d.ts +1 -0
  191. package/dist/_pkgs/data-view/view-presets/list/effect.js +4 -0
  192. package/dist/_pkgs/data-view/view-presets/list/index.d.ts +2 -0
  193. package/dist/_pkgs/data-view/view-presets/list/index.js +2 -0
  194. package/dist/_pkgs/data-view/view-presets/list/list-view.d.ts +24 -0
  195. package/dist/_pkgs/data-view/view-presets/list/list-view.js +194 -0
  196. package/dist/_pkgs/data-view/view-presets/list/renderer.d.ts +1 -0
  197. package/dist/_pkgs/data-view/view-presets/list/renderer.js +11 -0
  198. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +3 -14
  199. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +6 -30
  200. package/dist/_pkgs/data-view/view-presets/table/consts.d.ts +2 -0
  201. package/dist/_pkgs/data-view/view-presets/table/consts.js +2 -0
  202. package/dist/_pkgs/data-view/view-presets/table/define.js +3 -1
  203. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +4 -1
  204. package/dist/_pkgs/data-view/view-presets/table/mobile/column-header.js +2 -2
  205. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +3 -1
  206. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +20 -5
  207. package/dist/_pkgs/data-view/view-presets/table/mobile/row.js +10 -2
  208. package/dist/_pkgs/data-view/view-presets/table/mobile/table-view-ui-logic.js +4 -1
  209. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +4 -1
  210. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +1 -1
  211. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +3 -1
  212. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +20 -5
  213. package/dist/_pkgs/data-view/view-presets/table/pc/menu.d.ts +1 -1
  214. package/dist/_pkgs/data-view/view-presets/table/pc/menu.js +2 -1
  215. package/dist/_pkgs/data-view/view-presets/table/pc/row/row.js +3 -2
  216. package/dist/_pkgs/data-view/view-presets/table/pc/table-view-ui-logic.js +4 -1
  217. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +1 -1
  218. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/bottom/stats/column-stats-column.js +5 -1
  219. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +22 -19
  220. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +4 -1
  221. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/table-view-ui-logic.js +7 -2
  222. package/dist/_pkgs/data-view/view-presets/table/stats/column-stats-column.js +5 -1
  223. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +5 -53
  224. package/dist/_pkgs/data-view/widget-presets/tools/presets/table-add-row/add-row.d.ts +1 -0
  225. package/dist/_pkgs/data-view/widget-presets/tools/presets/table-add-row/add-row.js +60 -2
  226. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.d.ts +18 -1
  227. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +121 -124
  228. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-settings.d.ts +43 -0
  229. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-settings.js +187 -0
  230. package/dist/_pkgs/data-view/widget-presets/views-bar/views-view.d.ts +36 -3
  231. package/dist/_pkgs/data-view/widget-presets/views-bar/views-view.js +187 -59
  232. package/dist/extensions/view.d.ts +2 -2
  233. package/dist/extensions/view.js +10 -3
  234. package/dist/flags.d.ts +8 -4
  235. package/dist/flags.js +8 -4
  236. package/dist/frameworks.d.ts +27 -0
  237. package/dist/frameworks.js +28 -0
  238. package/dist/translations.js +13 -1
  239. package/package.json +5 -1
@@ -1,19 +1,42 @@
1
1
  import { ShadowlessElement } from '../../../../std/index.js';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
+ /**
4
+ * Marks the element of the trailing slot that only exists while something is
5
+ * hidden (the "N more" button): the rest of the slot is what stays.
6
+ */
7
+ export declare const OVERFLOW_MORE_ATTR = "data-overflow-more";
3
8
  declare const Overflow_base: typeof ShadowlessElement & import("../../../../global/utils/types.js").Constructor<import("../../../../global/lit/with-disposable.js").DisposableClass>;
9
+ /**
10
+ * A row that draws as many items as its width allows and hands the rest to
11
+ * a trailing slot (`renderMore`). Every item stays in the DOM, a hidden one
12
+ * transparent and out of the flow, so its width is measured on each pass;
13
+ * which ones are drawn is `fitOverflow` (`./fit.ts`), `pinned` included.
14
+ * Until the first measure every item is drawn.
15
+ */
4
16
  export declare class Overflow extends Overflow_base {
5
17
  static styles: import("lit").CSSResult;
6
18
  protected frameId: number | undefined;
7
- protected widthList: number[];
19
+ /** Last measured width of the slot's `OVERFLOW_MORE_ATTR` element. */
20
+ private moreExtraWidth;
8
21
  adjustStyle(): void;
9
22
  connectedCallback(): void;
10
23
  protected doAdjustStyle(): void;
24
+ /** The items `renderMore` holds, in order. */
25
+ get hiddenIndices(): number[];
11
26
  render(): TemplateResult<1>;
27
+ protected willUpdate(changed: PropertyValues<this>): void;
12
28
  protected updated(_changedProperties: PropertyValues): void;
13
29
  accessor items: HTMLDivElement[] & NodeList;
14
30
  accessor more: HTMLDivElement;
15
- accessor renderCount: number;
31
+ /** The drawn items' indices, ascending; `undefined` (all) until measured. */
32
+ accessor drawn: readonly number[] | undefined;
33
+ /** The item that is always drawn (the current view); `-1` for none. */
34
+ accessor pinned: number;
16
35
  accessor renderItem: Array<() => TemplateResult>;
17
- accessor renderMore: (count: number) => TemplateResult;
36
+ /**
37
+ * The trailing slot: `count` items are drawn and `hidden` are the indices
38
+ * it stands for, empty when everything fits.
39
+ */
40
+ accessor renderMore: (count: number, hidden: readonly number[]) => TemplateResult | undefined;
18
41
  }
19
42
  export {};
@@ -38,6 +38,24 @@ import { css, html } from 'lit';
38
38
  import { property, query, queryAll, state } from 'lit/decorators.js';
39
39
  import { classMap } from 'lit/directives/class-map.js';
40
40
  import { repeat } from 'lit/directives/repeat.js';
41
+ import { fitOverflow } from './fit.js';
42
+ /**
43
+ * Until the "N more" button has been drawn once, its width is guessed; the
44
+ * next layout pass measures it and settles.
45
+ */
46
+ const MORE_EXTRA_GUESS = 72;
47
+ /**
48
+ * Marks the element of the trailing slot that only exists while something is
49
+ * hidden (the "N more" button): the rest of the slot is what stays.
50
+ */
51
+ export const OVERFLOW_MORE_ATTR = 'data-overflow-more';
52
+ /**
53
+ * A row that draws as many items as its width allows and hands the rest to
54
+ * a trailing slot (`renderMore`). Every item stays in the DOM, a hidden one
55
+ * transparent and out of the flow, so its width is measured on each pass;
56
+ * which ones are drawn is `fitOverflow` (`./fit.ts`), `pinned` included.
57
+ * Until the first measure every item is drawn.
58
+ */
41
59
  let Overflow = (() => {
42
60
  let _classSuper = SignalWatcher(WithDisposable(ShadowlessElement));
43
61
  let _items_decorators;
@@ -46,9 +64,12 @@ let Overflow = (() => {
46
64
  let _more_decorators;
47
65
  let _more_initializers = [];
48
66
  let _more_extraInitializers = [];
49
- let _renderCount_decorators;
50
- let _renderCount_initializers = [];
51
- let _renderCount_extraInitializers = [];
67
+ let _drawn_decorators;
68
+ let _drawn_initializers = [];
69
+ let _drawn_extraInitializers = [];
70
+ let _pinned_decorators;
71
+ let _pinned_initializers = [];
72
+ let _pinned_extraInitializers = [];
52
73
  let _renderItem_decorators;
53
74
  let _renderItem_initializers = [];
54
75
  let _renderItem_extraInitializers = [];
@@ -60,12 +81,14 @@ let Overflow = (() => {
60
81
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
61
82
  _items_decorators = [queryAll(':scope > .component-overflow-item')];
62
83
  _more_decorators = [query(':scope > .component-overflow-more')];
63
- _renderCount_decorators = [state()];
84
+ _drawn_decorators = [state()];
85
+ _pinned_decorators = [property({ attribute: false })];
64
86
  _renderItem_decorators = [property({ attribute: false })];
65
87
  _renderMore_decorators = [property({ attribute: false })];
66
88
  __esDecorate(this, null, _items_decorators, { kind: "accessor", name: "items", static: false, private: false, access: { has: obj => "items" in obj, get: obj => obj.items, set: (obj, value) => { obj.items = value; } }, metadata: _metadata }, _items_initializers, _items_extraInitializers);
67
89
  __esDecorate(this, null, _more_decorators, { kind: "accessor", name: "more", static: false, private: false, access: { has: obj => "more" in obj, get: obj => obj.more, set: (obj, value) => { obj.more = value; } }, metadata: _metadata }, _more_initializers, _more_extraInitializers);
68
- __esDecorate(this, null, _renderCount_decorators, { kind: "accessor", name: "renderCount", static: false, private: false, access: { has: obj => "renderCount" in obj, get: obj => obj.renderCount, set: (obj, value) => { obj.renderCount = value; } }, metadata: _metadata }, _renderCount_initializers, _renderCount_extraInitializers);
90
+ __esDecorate(this, null, _drawn_decorators, { kind: "accessor", name: "drawn", static: false, private: false, access: { has: obj => "drawn" in obj, get: obj => obj.drawn, set: (obj, value) => { obj.drawn = value; } }, metadata: _metadata }, _drawn_initializers, _drawn_extraInitializers);
91
+ __esDecorate(this, null, _pinned_decorators, { kind: "accessor", name: "pinned", static: false, private: false, access: { has: obj => "pinned" in obj, get: obj => obj.pinned, set: (obj, value) => { obj.pinned = value; } }, metadata: _metadata }, _pinned_initializers, _pinned_extraInitializers);
69
92
  __esDecorate(this, null, _renderItem_decorators, { kind: "accessor", name: "renderItem", static: false, private: false, access: { has: obj => "renderItem" in obj, get: obj => obj.renderItem, set: (obj, value) => { obj.renderItem = value; } }, metadata: _metadata }, _renderItem_initializers, _renderItem_extraInitializers);
70
93
  __esDecorate(this, null, _renderMore_decorators, { kind: "accessor", name: "renderMore", static: false, private: false, access: { has: obj => "renderMore" in obj, get: obj => obj.renderMore, set: (obj, value) => { obj.renderMore = value; } }, metadata: _metadata }, _renderMore_initializers, _renderMore_extraInitializers);
71
94
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -85,6 +108,9 @@ let Overflow = (() => {
85
108
  pointer-events: none;
86
109
  position: absolute;
87
110
  }
111
+ .component-overflow-more {
112
+ display: flex;
113
+ }
88
114
  `; }
89
115
  adjustStyle() {
90
116
  if (this.frameId) {
@@ -105,40 +131,56 @@ let Overflow = (() => {
105
131
  });
106
132
  }
107
133
  doAdjustStyle() {
108
- const moreWidth = this.more.getBoundingClientRect().width;
109
- this.widthList[this.renderCount] = moreWidth;
110
- const containerWidth = this.getBoundingClientRect().width;
111
- let width = 0;
112
- for (let i = 0; i < this.items.length; i++) {
113
- const item = this.items[i];
114
- if (!item)
115
- continue;
116
- const itemWidth = item.getBoundingClientRect().width;
117
- // Try to calculate the width occupied by rendering n+1 items;
118
- // if it exceeds the limit, render n items(in i++ round).
119
- const totalWidth = width + itemWidth + (this.widthList[i + 1] ?? moreWidth);
120
- if (totalWidth > containerWidth) {
121
- this.renderCount = i;
122
- return;
123
- }
124
- width += itemWidth;
134
+ const slotWidth = this.more.getBoundingClientRect().width;
135
+ const moreButton = this.more.querySelector(`[${OVERFLOW_MORE_ATTR}]`);
136
+ const moreWidth = moreButton?.getBoundingClientRect().width;
137
+ if (moreWidth !== undefined)
138
+ this.moreExtraWidth = moreWidth;
139
+ const widths = Array.from(this.items, item => item.getBoundingClientRect().width);
140
+ const drawn = fitOverflow({
141
+ widths,
142
+ container: this.getBoundingClientRect().width,
143
+ trailing: slotWidth - (moreWidth ?? 0),
144
+ moreExtra: this.moreExtraWidth ?? MORE_EXTRA_GUESS,
145
+ pinned: this.pinned,
146
+ });
147
+ // Assigned only on a change: an equal array is a new identity, and a
148
+ // state write would re-render, re-measure and loop.
149
+ if (drawn.join() !== this.drawn?.join()) {
150
+ this.drawn = drawn;
125
151
  }
126
- this.renderCount = this.items.length;
152
+ }
153
+ /** The items `renderMore` holds, in order. */
154
+ get hiddenIndices() {
155
+ if (!this.drawn)
156
+ return [];
157
+ const drawn = new Set(this.drawn);
158
+ return this.renderItem.flatMap((_, index) => drawn.has(index) ? [] : [index]);
127
159
  }
128
160
  render() {
161
+ const drawn = this.drawn ? new Set(this.drawn) : undefined;
162
+ const hidden = this.hiddenIndices;
129
163
  return html `
130
164
  ${repeat(this.renderItem, (render, index) => {
131
165
  const className = classMap({
132
166
  'component-overflow-item': true,
133
- hidden: index >= this.renderCount,
167
+ hidden: drawn ? !drawn.has(index) : false,
134
168
  });
135
169
  return html `<div class="${className}">${render()}</div>`;
136
170
  })}
137
171
  <div class="component-overflow-more">
138
- ${this.renderMore(this.renderCount)}
172
+ ${this.renderMore(this.renderItem.length - hidden.length, hidden)}
139
173
  </div>
140
174
  `;
141
175
  }
176
+ willUpdate(changed) {
177
+ super.willUpdate(changed);
178
+ // Another set of items: the drawn indices no longer name the same ones.
179
+ if (changed.has('renderItem') &&
180
+ changed.get('renderItem')?.length !== this.renderItem.length) {
181
+ this.drawn = undefined;
182
+ }
183
+ }
142
184
  updated(_changedProperties) {
143
185
  super.updated(_changedProperties);
144
186
  this.adjustStyle();
@@ -149,23 +191,34 @@ let Overflow = (() => {
149
191
  #more_accessor_storage;
150
192
  get more() { return this.#more_accessor_storage; }
151
193
  set more(value) { this.#more_accessor_storage = value; }
152
- #renderCount_accessor_storage;
153
- get renderCount() { return this.#renderCount_accessor_storage; }
154
- set renderCount(value) { this.#renderCount_accessor_storage = value; }
194
+ #drawn_accessor_storage;
195
+ /** The drawn items' indices, ascending; `undefined` (all) until measured. */
196
+ get drawn() { return this.#drawn_accessor_storage; }
197
+ set drawn(value) { this.#drawn_accessor_storage = value; }
198
+ #pinned_accessor_storage;
199
+ /** The item that is always drawn (the current view); `-1` for none. */
200
+ get pinned() { return this.#pinned_accessor_storage; }
201
+ set pinned(value) { this.#pinned_accessor_storage = value; }
155
202
  #renderItem_accessor_storage;
156
203
  get renderItem() { return this.#renderItem_accessor_storage; }
157
204
  set renderItem(value) { this.#renderItem_accessor_storage = value; }
158
205
  #renderMore_accessor_storage;
206
+ /**
207
+ * The trailing slot: `count` items are drawn and `hidden` are the indices
208
+ * it stands for, empty when everything fits.
209
+ */
159
210
  get renderMore() { return this.#renderMore_accessor_storage; }
160
211
  set renderMore(value) { this.#renderMore_accessor_storage = value; }
161
212
  constructor() {
162
213
  super(...arguments);
163
214
  this.frameId = undefined;
164
- this.widthList = [];
215
+ /** Last measured width of the slot's `OVERFLOW_MORE_ATTR` element. */
216
+ this.moreExtraWidth = undefined;
165
217
  this.#items_accessor_storage = __runInitializers(this, _items_initializers, void 0);
166
218
  this.#more_accessor_storage = (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _more_initializers, void 0));
167
- this.#renderCount_accessor_storage = (__runInitializers(this, _more_extraInitializers), __runInitializers(this, _renderCount_initializers, 0));
168
- this.#renderItem_accessor_storage = (__runInitializers(this, _renderCount_extraInitializers), __runInitializers(this, _renderItem_initializers, void 0));
219
+ this.#drawn_accessor_storage = (__runInitializers(this, _more_extraInitializers), __runInitializers(this, _drawn_initializers, undefined));
220
+ this.#pinned_accessor_storage = (__runInitializers(this, _drawn_extraInitializers), __runInitializers(this, _pinned_initializers, -1));
221
+ this.#renderItem_accessor_storage = (__runInitializers(this, _pinned_extraInitializers), __runInitializers(this, _renderItem_initializers, void 0));
169
222
  this.#renderMore_accessor_storage = (__runInitializers(this, _renderItem_extraInitializers), __runInitializers(this, _renderMore_initializers, void 0));
170
223
  __runInitializers(this, _renderMore_extraInitializers);
171
224
  }
@@ -1,7 +1,14 @@
1
+ import { type ChromeWording } from '../../../../affine-shared/services/index.js';
1
2
  export type SelectOptionColor = {
2
3
  oldColor: string;
3
4
  color: string;
5
+ /** The English name, `wording`'s fallback. */
4
6
  name: string;
7
+ /**
8
+ * What the option menu shows, resolved where an editor is at hand;
9
+ * absent (a colour list a host built in 0.48), `name` is shown.
10
+ */
11
+ wording?: ChromeWording;
5
12
  };
6
13
  export declare const selectOptionColors: SelectOptionColor[];
7
14
  export declare const getColorByColor: (color: string) => string;
@@ -1,54 +1,66 @@
1
+ import { PALETTE_NAME_BLUE, PALETTE_NAME_GREEN, PALETTE_NAME_GREY, PALETTE_NAME_MAGENTA, PALETTE_NAME_ORANGE, PALETTE_NAME_PURPLE, PALETTE_NAME_RED, PALETTE_NAME_WHITE, PALETTE_NAME_YELLOW, } from '../../../../affine-shared/services/index.js';
1
2
  import { cssVarV2 } from '@toeverything/theme/v2';
3
+ import { TAG_COLOR_TEAL } from '../../../translations.js';
2
4
  export const selectOptionColors = [
3
5
  {
4
6
  oldColor: 'var(--affine-tag-red)',
5
7
  color: cssVarV2('chip/label/red'),
6
- name: 'Red',
8
+ name: PALETTE_NAME_RED[1],
9
+ wording: PALETTE_NAME_RED,
7
10
  },
8
11
  {
9
12
  oldColor: 'var(--affine-tag-pink)',
10
13
  color: cssVarV2('chip/label/magenta'),
11
- name: 'Magenta',
14
+ name: PALETTE_NAME_MAGENTA[1],
15
+ wording: PALETTE_NAME_MAGENTA,
12
16
  },
13
17
  {
14
18
  oldColor: 'var(--affine-tag-orange)',
15
19
  color: cssVarV2('chip/label/orange'),
16
- name: 'Orange',
20
+ name: PALETTE_NAME_ORANGE[1],
21
+ wording: PALETTE_NAME_ORANGE,
17
22
  },
18
23
  {
19
24
  oldColor: 'var(--affine-tag-yellow)',
20
25
  color: cssVarV2('chip/label/yellow'),
21
- name: 'Yellow',
26
+ name: PALETTE_NAME_YELLOW[1],
27
+ wording: PALETTE_NAME_YELLOW,
22
28
  },
23
29
  {
24
30
  oldColor: 'var(--affine-tag-green)',
25
31
  color: cssVarV2('chip/label/green'),
26
- name: 'Green',
32
+ name: PALETTE_NAME_GREEN[1],
33
+ wording: PALETTE_NAME_GREEN,
27
34
  },
28
35
  {
29
36
  oldColor: 'var(--affine-tag-teal)',
30
37
  color: cssVarV2('chip/label/teal'),
31
- name: 'Teal',
38
+ name: TAG_COLOR_TEAL[1],
39
+ wording: TAG_COLOR_TEAL,
32
40
  },
33
41
  {
34
42
  oldColor: 'var(--affine-tag-blue)',
35
43
  color: cssVarV2('chip/label/blue'),
36
- name: 'Blue',
44
+ name: PALETTE_NAME_BLUE[1],
45
+ wording: PALETTE_NAME_BLUE,
37
46
  },
38
47
  {
39
48
  oldColor: 'var(--affine-tag-purple)',
40
49
  color: cssVarV2('chip/label/purple'),
41
- name: 'Purple',
50
+ name: PALETTE_NAME_PURPLE[1],
51
+ wording: PALETTE_NAME_PURPLE,
42
52
  },
43
53
  {
44
54
  oldColor: 'var(--affine-tag-gray)',
45
55
  color: cssVarV2('chip/label/grey'),
46
- name: 'Grey',
56
+ name: PALETTE_NAME_GREY[1],
57
+ wording: PALETTE_NAME_GREY,
47
58
  },
48
59
  {
49
60
  oldColor: 'var(--affine-tag-white)',
50
61
  color: cssVarV2('chip/label/white'),
51
- name: 'White',
62
+ name: PALETTE_NAME_WHITE[1],
63
+ wording: PALETTE_NAME_WHITE,
52
64
  },
53
65
  ];
54
66
  const oldColorMap = Object.fromEntries(selectOptionColors.map(tag => [tag.oldColor, tag.color]));
@@ -1,15 +1,35 @@
1
1
  import { type PopupTarget } from '../../../../affine-components/context-menu/index.js';
2
+ import { type ChromeWording } from '../../../../affine-shared/services/index.js';
2
3
  import { ShadowlessElement } from '../../../../std/index.js';
3
4
  import { type ReadonlySignal } from '@preact/signals-core';
4
5
  import type { SelectTag } from '../../logical/index.js';
6
+ export type TagOptionEdits = 'all' | 'create-rename';
5
7
  export type TagManagerOptions = {
6
8
  mode?: 'single' | 'multi';
7
9
  value: ReadonlySignal<string[]>;
8
10
  onChange: (value: string[]) => void;
9
11
  options: ReadonlySignal<SelectTag[]>;
10
- onOptionsChange: (options: SelectTag[]) => void;
12
+ /**
13
+ * Absent, the options are fixed: the menu picks among them and offers no
14
+ * "Create", no option menu and no reordering (a standalone cell whose host
15
+ * cannot write the property's config, `standalone-cell.ts`).
16
+ */
17
+ onOptionsChange?: (options: SelectTag[]) => void;
18
+ /**
19
+ * Which edits `onOptionsChange` takes; absent, `'all'` (the table).
20
+ * `'create-rename'`: "Create" and the option menu's name only, no delete,
21
+ * no colour and no reordering: a host that writes an option's definition
22
+ * one edit at a time and offers no more (the title band, ADR 0035
23
+ * amendment of 2026-10-14).
24
+ */
25
+ optionEdits?: TagOptionEdits;
11
26
  onComplete?: () => void;
12
27
  initialDraftText?: string;
28
+ /**
29
+ * Resolves the menu's own wordings; the caller holds the editor, the
30
+ * popup renders outside it. Absent, the English fallbacks.
31
+ */
32
+ wording?: (wording: ChromeWording) => string;
13
33
  };
14
34
  export declare function consumeTagDraftFromTableCellHost(fromElement: Element): string | undefined;
15
35
  declare const MultiTagSelect_base: typeof ShadowlessElement & import("../../../../global/utils/types.js").Constructor<import("../../../../global/lit/with-disposable.js").DisposableClass>;
@@ -32,11 +52,14 @@ export declare class MultiTagSelect extends MultiTagSelect_base {
32
52
  accessor mode: 'multi' | 'single';
33
53
  accessor onChange: (value: string[]) => void;
34
54
  accessor onComplete: () => void;
35
- accessor onOptionsChange: (options: SelectTag[]) => void;
55
+ accessor onOptionsChange: ((options: SelectTag[]) => void) | undefined;
56
+ accessor optionEdits: TagOptionEdits;
36
57
  accessor options: ReadonlySignal<SelectTag[]>;
37
58
  private readonly selectedIndex$;
38
59
  accessor value: ReadonlySignal<string[]>;
39
60
  accessor initialDraftText: string | undefined;
61
+ accessor wording: ((wording: ChromeWording) => string) | undefined;
62
+ private say;
40
63
  }
41
64
  declare global {
42
65
  interface HTMLElementTagNameMap {