@formicoidea/labre-core 1.0.0 → 2.0.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 (207) hide show
  1. package/architecture/code.c4 +48 -44
  2. package/architecture/likec4.config.json +3 -3
  3. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -1
  4. package/dist/_pkgs/affine-block-root/configs/toolbar.js +4 -2
  5. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +12 -12
  6. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +1 -0
  7. package/dist/_pkgs/affine-components/context-menu/menu-renderer.d.ts +3 -1
  8. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +9 -1
  9. package/dist/_pkgs/affine-components/context-menu/menu.d.ts +7 -0
  10. package/dist/_pkgs/affine-components/context-menu/menu.js +5 -0
  11. package/dist/_pkgs/affine-components/context-menu/sub-menu.d.ts +19 -1
  12. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +46 -7
  13. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  14. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  15. package/dist/_pkgs/affine-database-block/configs/slash-menu.d.ts +24 -0
  16. package/dist/_pkgs/affine-database-block/configs/slash-menu.js +52 -37
  17. package/dist/_pkgs/affine-database-block/creation-menu.d.ts +6 -0
  18. package/dist/_pkgs/affine-database-block/data-source.d.ts +6 -0
  19. package/dist/_pkgs/affine-database-block/data-source.js +16 -0
  20. package/dist/_pkgs/affine-database-block/database-block-styles.js +4 -3
  21. package/dist/_pkgs/affine-database-block/database-block.d.ts +23 -0
  22. package/dist/_pkgs/affine-database-block/database-block.js +129 -19
  23. package/dist/_pkgs/affine-database-block/database-dnd-preview-block.js +5 -1
  24. package/dist/_pkgs/affine-database-block/detail-panel/block-renderer.js +5 -2
  25. package/dist/_pkgs/affine-database-block/detail-panel/note-renderer.js +3 -2
  26. package/dist/_pkgs/affine-database-block/external-data-source.d.ts +17 -0
  27. package/dist/_pkgs/affine-database-block/external-data-source.js +54 -4
  28. package/dist/_pkgs/affine-database-block/index.d.ts +3 -0
  29. package/dist/_pkgs/affine-database-block/index.js +5 -0
  30. package/dist/_pkgs/affine-database-block/linked-view.d.ts +59 -0
  31. package/dist/_pkgs/affine-database-block/linked-view.js +131 -1
  32. package/dist/_pkgs/affine-database-block/properties/created-time/define.js +3 -1
  33. package/dist/_pkgs/affine-database-block/properties/link/cell-renderer.js +3 -2
  34. package/dist/_pkgs/affine-database-block/properties/link/define.js +3 -1
  35. package/dist/_pkgs/affine-database-block/properties/rich-text/define.js +3 -1
  36. package/dist/_pkgs/affine-database-block/properties/text/hosted.js +1 -0
  37. package/dist/_pkgs/affine-database-block/properties/title/define.js +3 -1
  38. package/dist/_pkgs/affine-database-block/properties/title/hosted.js +1 -0
  39. package/dist/_pkgs/affine-database-block/service/new-row-menu.d.ts +1 -1
  40. package/dist/_pkgs/affine-database-block/service/new-row-menu.js +1 -1
  41. package/dist/_pkgs/affine-database-block/translations.d.ts +29 -0
  42. package/dist/_pkgs/affine-database-block/translations.js +104 -0
  43. package/dist/_pkgs/affine-database-block/turn-into-source.d.ts +38 -0
  44. package/dist/_pkgs/affine-database-block/turn-into-source.js +187 -0
  45. package/dist/_pkgs/affine-database-block/view-deletion.d.ts +15 -0
  46. package/dist/_pkgs/affine-database-block/view-deletion.js +113 -0
  47. package/dist/_pkgs/affine-database-block/views/index.d.ts +7 -9
  48. package/dist/_pkgs/affine-database-block/views/index.js +7 -10
  49. package/dist/_pkgs/affine-database-engine/core/common/properties.js +7 -7
  50. package/dist/_pkgs/affine-database-engine/core/common/property-menu.d.ts +18 -2
  51. package/dist/_pkgs/affine-database-engine/core/common/property-menu.js +78 -27
  52. package/dist/_pkgs/affine-database-engine/core/data-source/base.d.ts +11 -0
  53. package/dist/_pkgs/affine-database-engine/core/data-source/base.js +3 -0
  54. package/dist/_pkgs/affine-database-engine/core/detail/detail.js +8 -5
  55. package/dist/_pkgs/affine-database-engine/core/detail/field.js +14 -7
  56. package/dist/_pkgs/affine-database-engine/core/filter/add-filter.js +4 -2
  57. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/boolean.js +7 -4
  58. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/create.d.ts +9 -1
  59. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/create.js +2 -0
  60. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/date.js +7 -4
  61. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/multi-tag.js +17 -8
  62. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/number.js +6 -6
  63. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/string.js +19 -12
  64. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/tag.js +9 -4
  65. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/unknown.js +7 -4
  66. package/dist/_pkgs/affine-database-engine/core/filter/literal/define.js +6 -4
  67. package/dist/_pkgs/affine-database-engine/core/filter/literal/matcher.d.ts +2 -1
  68. package/dist/_pkgs/affine-database-engine/core/filter/literal/matcher.js +3 -2
  69. package/dist/_pkgs/affine-database-engine/core/filter/literal/types.d.ts +4 -1
  70. package/dist/_pkgs/affine-database-engine/core/filter/literal/types.js +1 -1
  71. package/dist/_pkgs/affine-database-engine/core/group-by/define.js +11 -9
  72. package/dist/_pkgs/affine-database-engine/core/group-by/group-title.js +16 -6
  73. package/dist/_pkgs/affine-database-engine/core/group-by/locate-row.d.ts +16 -0
  74. package/dist/_pkgs/affine-database-engine/core/group-by/locate-row.js +32 -0
  75. package/dist/_pkgs/affine-database-engine/core/group-by/renderer/date-group.js +10 -3
  76. package/dist/_pkgs/affine-database-engine/core/group-by/setting.d.ts +2 -0
  77. package/dist/_pkgs/affine-database-engine/core/group-by/setting.js +40 -28
  78. package/dist/_pkgs/affine-database-engine/core/group-by/trait.d.ts +3 -0
  79. package/dist/_pkgs/affine-database-engine/core/group-by/trait.js +8 -0
  80. package/dist/_pkgs/affine-database-engine/core/group-by/types.d.ts +3 -1
  81. package/dist/_pkgs/affine-database-engine/core/group-by/types.js +1 -1
  82. package/dist/_pkgs/affine-database-engine/core/property/types.d.ts +7 -0
  83. package/dist/_pkgs/affine-database-engine/core/property/types.js +1 -1
  84. package/dist/_pkgs/affine-database-engine/core/sort/add-sort.js +3 -1
  85. package/dist/_pkgs/affine-database-engine/core/statistics/any.js +43 -21
  86. package/dist/_pkgs/affine-database-engine/core/statistics/checkbox.js +29 -14
  87. package/dist/_pkgs/affine-database-engine/core/statistics/number.js +54 -31
  88. package/dist/_pkgs/affine-database-engine/core/statistics/types.d.ts +8 -0
  89. package/dist/_pkgs/affine-database-engine/core/statistics/types.js +2 -1
  90. package/dist/_pkgs/affine-database-engine/core/utils/wording.d.ts +20 -1
  91. package/dist/_pkgs/affine-database-engine/core/utils/wording.js +24 -0
  92. package/dist/_pkgs/affine-database-engine/core/view-manager/property.d.ts +7 -0
  93. package/dist/_pkgs/affine-database-engine/core/view-manager/property.js +29 -5
  94. package/dist/_pkgs/affine-database-engine/core/view-manager/single-view.d.ts +14 -0
  95. package/dist/_pkgs/affine-database-engine/core/view-manager/single-view.js +11 -0
  96. package/dist/_pkgs/affine-database-engine/property-presets/checkbox/define.js +3 -1
  97. package/dist/_pkgs/affine-database-engine/property-presets/date/define.js +3 -1
  98. package/dist/_pkgs/affine-database-engine/property-presets/multi-select/define.js +3 -1
  99. package/dist/_pkgs/affine-database-engine/property-presets/number/define.js +3 -1
  100. package/dist/_pkgs/affine-database-engine/property-presets/number/utils/formats.d.ts +3 -0
  101. package/dist/_pkgs/affine-database-engine/property-presets/number/utils/formats.js +56 -9
  102. package/dist/_pkgs/affine-database-engine/property-presets/progress/define.js +3 -1
  103. package/dist/_pkgs/affine-database-engine/property-presets/select/define.js +3 -1
  104. package/dist/_pkgs/affine-database-engine/property-presets/text/define.js +3 -1
  105. package/dist/_pkgs/affine-database-engine/translations.d.ts +133 -5
  106. package/dist/_pkgs/affine-database-engine/translations.js +625 -9
  107. package/dist/_pkgs/affine-database-engine/view-presets/convert.js +0 -28
  108. package/dist/_pkgs/affine-database-engine/view-presets/effect.js +0 -2
  109. package/dist/_pkgs/affine-database-engine/view-presets/flat/flat-converts.js +2 -4
  110. package/dist/_pkgs/affine-database-engine/view-presets/flat/flat-view-ui.d.ts +57 -0
  111. package/dist/_pkgs/affine-database-engine/view-presets/flat/flat-view-ui.js +113 -4
  112. package/dist/_pkgs/affine-database-engine/view-presets/gallery/gallery-view.js +2 -1
  113. package/dist/_pkgs/affine-database-engine/view-presets/index.d.ts +0 -2
  114. package/dist/_pkgs/affine-database-engine/view-presets/index.js +0 -3
  115. package/dist/_pkgs/affine-database-engine/view-presets/kanban/kanban-view-manager.js +2 -0
  116. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/group.js +7 -5
  117. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/kanban-view-ui-logic.d.ts +5 -0
  118. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/kanban-view-ui-logic.js +25 -3
  119. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/menu.js +12 -6
  120. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/controller/selection.d.ts +8 -0
  121. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/controller/selection.js +35 -12
  122. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/group.js +7 -5
  123. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/header.js +5 -1
  124. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/kanban-view-ui-logic.d.ts +5 -0
  125. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/kanban-view-ui-logic.js +8 -4
  126. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/menu.js +12 -6
  127. package/dist/_pkgs/affine-database-engine/view-presets/list/list-view.js +2 -1
  128. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/column-header.js +6 -4
  129. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/group.js +6 -5
  130. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/header.js +2 -2
  131. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/table-view-ui-logic.d.ts +4 -3
  132. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/table-view-ui-logic.js +29 -5
  133. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/controller/clipboard.js +6 -2
  134. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/controller/selection.js +2 -0
  135. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/group.js +6 -5
  136. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/header/column-header.js +11 -7
  137. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/header/database-header-column.js +16 -12
  138. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/header/number-format-bar.js +4 -2
  139. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/menu.js +9 -6
  140. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/table-view-ui-logic.d.ts +8 -1
  141. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/table-view-ui-logic.js +29 -7
  142. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/controller/clipboard.js +6 -2
  143. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/controller/selection.js +2 -0
  144. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/bottom/group-footer.js +5 -2
  145. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/bottom/stats/column-stats-column.d.ts +1 -1
  146. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/bottom/stats/column-stats-column.js +14 -6
  147. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/group-header.js +5 -2
  148. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/group-title.js +5 -3
  149. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/header/column-header.js +17 -10
  150. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/header/number-format-bar.js +4 -2
  151. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/header/single-column-header.js +20 -14
  152. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/row/menu.js +9 -6
  153. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/table-view-ui-logic.d.ts +6 -1
  154. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/table-view-ui-logic.js +30 -3
  155. package/dist/_pkgs/affine-database-engine/view-presets/table/stats/column-stats-column.d.ts +1 -1
  156. package/dist/_pkgs/affine-database-engine/view-presets/table/stats/column-stats-column.js +14 -6
  157. package/dist/_pkgs/affine-database-engine/view-presets/table/table-view-manager.js +2 -0
  158. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/condition-view.d.ts +2 -0
  159. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/condition-view.js +13 -6
  160. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/group-panel-view.js +20 -13
  161. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/root-panel-view.js +10 -5
  162. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/sort/root-panel.js +8 -5
  163. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/search/search.js +2 -2
  164. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/table-add-row/add-row.d.ts +6 -0
  165. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/table-add-row/add-row.js +49 -4
  166. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/view-options/view-settings.d.ts +3 -3
  167. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/view-options/view-settings.js +3 -3
  168. package/dist/_pkgs/affine-database-engine/widget-presets/views-bar/views-view.js +5 -0
  169. package/dist/_pkgs/affine-database-view-block/configs/slash-menu.js +6 -3
  170. package/dist/_pkgs/affine-database-view-block/data-view-block.js +5 -4
  171. package/dist/_pkgs/affine-fragment-doc-title/doc-title.d.ts +3 -2
  172. package/dist/_pkgs/affine-fragment-doc-title/doc-title.js +3 -2
  173. package/dist/_pkgs/affine-shared/services/data-source-picker-service.d.ts +130 -1
  174. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/index.js +26 -26
  175. package/dist/_pkgs/affine-widget-keyboard-toolbar/config.js +10 -21
  176. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  177. package/dist/_pkgs/affine-widget-page-dragging-area/index.js +10 -10
  178. package/dist/_pkgs/affine-widget-viewport-overlay/index.js +13 -13
  179. package/package.json +1 -1
  180. package/dist/_pkgs/affine-database-engine/view-presets/calendar/calendar-view-manager.d.ts +0 -70
  181. package/dist/_pkgs/affine-database-engine/view-presets/calendar/calendar-view-manager.js +0 -449
  182. package/dist/_pkgs/affine-database-engine/view-presets/calendar/define.d.ts +0 -10
  183. package/dist/_pkgs/affine-database-engine/view-presets/calendar/define.js +0 -29
  184. package/dist/_pkgs/affine-database-engine/view-presets/calendar/effect.d.ts +0 -1
  185. package/dist/_pkgs/affine-database-engine/view-presets/calendar/effect.js +0 -4
  186. package/dist/_pkgs/affine-database-engine/view-presets/calendar/index.d.ts +0 -6
  187. package/dist/_pkgs/affine-database-engine/view-presets/calendar/index.js +0 -6
  188. package/dist/_pkgs/affine-database-engine/view-presets/calendar/layout.d.ts +0 -37
  189. package/dist/_pkgs/affine-database-engine/view-presets/calendar/layout.js +0 -138
  190. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/actions.d.ts +0 -7
  191. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/actions.js +0 -64
  192. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/dnd.d.ts +0 -32
  193. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/dnd.js +0 -159
  194. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/effect.d.ts +0 -1
  195. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/effect.js +0 -7
  196. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/hit-test.d.ts +0 -1
  197. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/hit-test.js +0 -28
  198. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/styles.d.ts +0 -1
  199. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/styles.js +0 -707
  200. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/view.d.ts +0 -89
  201. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/view.js +0 -849
  202. package/dist/_pkgs/affine-database-engine/view-presets/calendar/renderer.d.ts +0 -2
  203. package/dist/_pkgs/affine-database-engine/view-presets/calendar/renderer.js +0 -8
  204. package/dist/_pkgs/affine-database-engine/view-presets/calendar/source.d.ts +0 -8
  205. package/dist/_pkgs/affine-database-engine/view-presets/calendar/source.js +0 -3
  206. package/dist/_pkgs/affine-database-engine/view-presets/calendar/types.d.ts +0 -79
  207. package/dist/_pkgs/affine-database-engine/view-presets/calendar/types.js +0 -1
@@ -1,70 +0,0 @@
1
- import type { InsertToPosition } from '../../../affine-shared/utils/index.js';
2
- import { type ReadonlySignal } from '@preact/signals-core';
3
- import { FilterTrait } from '../../core/filter/trait.js';
4
- import { PropertyBase } from '../../core/view-manager/property.js';
5
- import { type Row, RowBase } from '../../core/view-manager/row.js';
6
- import { SingleViewBase } from '../../core/view-manager/single-view.js';
7
- import type { ViewManager } from '../../core/view-manager/view-manager.js';
8
- import type { CalendarEntry, CalendarEntryRange, CalendarExternalEntry, CalendarExternalSource, CalendarRowEntry, CalendarStoredViewData } from './types.js';
9
- export type CalendarDateMapping = {
10
- status: 'ready';
11
- propertyId: string;
12
- } | {
13
- status: 'setup';
14
- propertyId?: string;
15
- };
16
- export declare class CalendarSingleView extends SingleViewBase<CalendarStoredViewData> {
17
- private readonly externalEntries$;
18
- private externalEntriesRequestId;
19
- propertiesRaw$: ReadonlySignal<CalendarProperty[]>;
20
- properties$: ReadonlySignal<CalendarProperty[]>;
21
- detailProperties$: ReadonlySignal<CalendarProperty[]>;
22
- private readonly filter$;
23
- private readonly sortList$;
24
- emptyMonthHintDismissed$: ReadonlySignal<boolean>;
25
- private readonly sortManager;
26
- filterTrait: FilterTrait;
27
- mainProperties$: ReadonlySignal<{
28
- titleColumn: string | undefined;
29
- }>;
30
- readonly$: ReadonlySignal<boolean>;
31
- dateProperties$: ReadonlySignal<CalendarProperty[]>;
32
- dateMapping$: ReadonlySignal<CalendarDateMapping>;
33
- startDateMapping$: ReadonlySignal<CalendarDateMapping>;
34
- endDateMapping$: ReadonlySignal<CalendarDateMapping>;
35
- private readonly visibleCardProperties$;
36
- rowEntries$: ReadonlySignal<CalendarRowEntry[]>;
37
- entries$: ReadonlySignal<CalendarEntry[]>;
38
- externalSources$: ReadonlySignal<CalendarExternalSource[]>;
39
- get type(): string;
40
- constructor(viewManager: ViewManager, viewId: string);
41
- isShow(rowId: string): boolean;
42
- rowsMapping(rows: Row[]): Row[];
43
- propertyGetOrCreate(propertyId: string): CalendarProperty;
44
- rowGetOrCreate(rowId: string): CalendarRow;
45
- setStartDateColumn(propertyId: string): void;
46
- setDateColumn(propertyId: string): void;
47
- setEndDateColumn(propertyId: string | undefined): void;
48
- setWorkspaceCalendarEnabled(enabled: boolean): void;
49
- setWorkspaceCalendarSubscriptionIds(subscriptionIds?: string[]): void;
50
- dismissEmptyMonthHint(): void;
51
- getDocDisplayTitle(docId: string): string;
52
- createStartDateColumn(): string | undefined;
53
- createDateColumn(): string | undefined;
54
- createEndDateColumn(): string | undefined;
55
- createRowOnDate(date: number | Date): string | undefined;
56
- createLinkedDocRowOnDate(date: number | Date, docId: string): string | undefined;
57
- moveRowToDate(rowId: string, date: number | Date): void;
58
- resizeRowRange(rowId: string, edge: 'start' | 'end', date: number | Date): void;
59
- loadExternalEntries(range: CalendarEntryRange): Promise<CalendarExternalEntry[]>;
60
- }
61
- export declare class CalendarProperty extends PropertyBase {
62
- hide$: ReadonlySignal<boolean>;
63
- constructor(view: CalendarSingleView, propertyId: string);
64
- hideSet(_hide: boolean): void;
65
- move(_position: InsertToPosition): void;
66
- }
67
- export declare class CalendarRow extends RowBase {
68
- readonly calendarView: CalendarSingleView;
69
- constructor(calendarView: CalendarSingleView, rowId: string);
70
- }
@@ -1,449 +0,0 @@
1
- import { DocDisplayMetaProvider } from '../../../affine-shared/services/index.js';
2
- import { Text } from '../../../store/index.js';
3
- import { computed, signal } from '@preact/signals-core';
4
- import { Doc } from 'yjs';
5
- import { evalFilter } from '../../core/filter/eval.js';
6
- import { generateDefaultValues } from '../../core/filter/generate-default-values.js';
7
- import { FilterTrait, filterTraitKey } from '../../core/filter/trait.js';
8
- import { emptyFilterGroup } from '../../core/filter/utils.js';
9
- import { fromJson } from '../../core/property/utils.js';
10
- import { SortManager, sortTraitKey } from '../../core/sort/manager.js';
11
- import { PropertyBase } from '../../core/view-manager/property.js';
12
- import { RowBase } from '../../core/view-manager/row.js';
13
- import { SingleViewBase, } from '../../core/view-manager/single-view.js';
14
- import { getCalendarExternalSources } from './source.js';
15
- const getStartColumnId = (data) => data?.date?.startColumnId;
16
- const getEndColumnId = (data) => {
17
- return data?.date?.endColumnId;
18
- };
19
- const getDateData = (data) => ({
20
- ...data.date,
21
- startColumnId: getStartColumnId(data),
22
- });
23
- const getCardData = (data) => {
24
- if (data) {
25
- return data.card;
26
- }
27
- return {
28
- visiblePropertyIds: [],
29
- };
30
- };
31
- const toTimestamp = (date) => date instanceof Date ? date.getTime() : date;
32
- const isValidTimestamp = (value) => typeof value === 'number' && Number.isFinite(value);
33
- const createLinkedDocTitle = (docId) => {
34
- const text = new Text();
35
- new Doc().getMap('root').set('text', text.yText);
36
- text.applyDelta([
37
- {
38
- insert: ' ',
39
- attributes: { reference: { type: 'LinkedPage', pageId: docId } },
40
- },
41
- ]);
42
- return text;
43
- };
44
- const getTitleDeltas = (value) => typeof value === 'object' && value != null && 'deltas$' in value
45
- ? value.deltas$?.value
46
- : undefined;
47
- const getTitleSegments = (value, title, getLinkedDocTitle) => {
48
- const deltas = getTitleDeltas(value);
49
- if (!Array.isArray(deltas)) {
50
- return;
51
- }
52
- const segments = deltas.flatMap(delta => {
53
- const item = delta;
54
- const linkedDoc = item.attributes?.reference?.type === 'LinkedPage' &&
55
- typeof item.attributes.reference.pageId === 'string';
56
- const referenceTitle = item.attributes?.reference?.title;
57
- const resolvedLinkedDocTitle = linkedDoc && typeof item.attributes?.reference?.pageId === 'string'
58
- ? getLinkedDocTitle?.(item.attributes.reference.pageId, typeof referenceTitle === 'string' ? referenceTitle : undefined)
59
- : undefined;
60
- const text = resolvedLinkedDocTitle ||
61
- (linkedDoc && typeof referenceTitle === 'string' && referenceTitle
62
- ? referenceTitle
63
- : typeof item.insert === 'string'
64
- ? item.insert.trim()
65
- : '');
66
- if (linkedDoc) {
67
- return {
68
- text,
69
- linkedDoc,
70
- };
71
- }
72
- if (!text) {
73
- return [];
74
- }
75
- return {
76
- text,
77
- };
78
- });
79
- const normalizedSegments = segments.reduce((result, segment) => {
80
- const previous = result.at(-1);
81
- if (previous?.linkedDoc &&
82
- !previous.text &&
83
- !segment.linkedDoc &&
84
- segment.text) {
85
- previous.text = segment.text;
86
- return result;
87
- }
88
- result.push(segment);
89
- return result;
90
- }, []);
91
- if (!normalizedSegments.some(segment => segment.linkedDoc)) {
92
- return;
93
- }
94
- if (!normalizedSegments.some(segment => segment.text)) {
95
- return title
96
- ? [...normalizedSegments, { text: title }]
97
- : normalizedSegments;
98
- }
99
- return normalizedSegments;
100
- };
101
- export class CalendarSingleView extends SingleViewBase {
102
- get type() {
103
- return this.data$.value?.mode ?? 'calendar';
104
- }
105
- constructor(viewManager, viewId) {
106
- super(viewManager, viewId);
107
- this.externalEntries$ = signal([]);
108
- this.externalEntriesRequestId = 0;
109
- this.propertiesRaw$ = computed(() => {
110
- return this.dataSource.properties$.value.map(id => this.propertyGetOrCreate(id));
111
- });
112
- this.properties$ = this.propertiesRaw$;
113
- this.detailProperties$ = computed(() => {
114
- return this.propertiesRaw$.value.filter(property => property.type$.value !== 'title');
115
- });
116
- this.filter$ = computed(() => {
117
- return this.data$.value?.filter ?? emptyFilterGroup;
118
- });
119
- this.sortList$ = computed(() => {
120
- return this.data$.value?.sort;
121
- });
122
- this.emptyMonthHintDismissed$ = computed(() => {
123
- return this.data$.value?.ui?.emptyMonthHintDismissed ?? false;
124
- });
125
- this.sortManager = this.traitSet(sortTraitKey, new SortManager(this.sortList$, this, {
126
- setSortList: sortList => {
127
- this.dataUpdate(data => ({
128
- sort: {
129
- ...data.sort,
130
- ...sortList,
131
- },
132
- }));
133
- },
134
- }));
135
- this.filterTrait = this.traitSet(filterTraitKey, new FilterTrait(this.filter$, this, {
136
- filterSet: (filter) => {
137
- this.dataUpdate(() => ({ filter }));
138
- },
139
- }));
140
- this.mainProperties$ = computed(() => {
141
- const card = getCardData(this.data$.value);
142
- return {
143
- titleColumn: card.titleColumnId ??
144
- this.propertiesRaw$.value.find(property => property.type$.value === 'title')?.id,
145
- };
146
- });
147
- this.readonly$ = computed(() => {
148
- return this.manager.readonly$.value;
149
- });
150
- this.dateProperties$ = computed(() => {
151
- return this.propertiesRaw$.value.filter(property => property.type$.value === 'date');
152
- });
153
- this.dateMapping$ = computed(() => {
154
- const propertyId = getStartColumnId(this.data$.value);
155
- if (propertyId &&
156
- this.dataSource.properties$.value.includes(propertyId) &&
157
- this.dataSource.propertyTypeGet(propertyId) === 'date') {
158
- return {
159
- status: 'ready',
160
- propertyId,
161
- };
162
- }
163
- return {
164
- status: 'setup',
165
- propertyId,
166
- };
167
- });
168
- this.startDateMapping$ = this.dateMapping$;
169
- this.endDateMapping$ = computed(() => {
170
- const propertyId = getEndColumnId(this.data$.value);
171
- if (propertyId &&
172
- this.dataSource.properties$.value.includes(propertyId) &&
173
- this.dataSource.propertyTypeGet(propertyId) === 'date') {
174
- return {
175
- status: 'ready',
176
- propertyId,
177
- };
178
- }
179
- return {
180
- status: 'setup',
181
- propertyId,
182
- };
183
- });
184
- this.visibleCardProperties$ = computed(() => {
185
- const card = getCardData(this.data$.value);
186
- const visiblePropertyIds = card.visiblePropertyIds ?? [];
187
- const titleColumn = card.titleColumnId;
188
- return visiblePropertyIds
189
- .filter(propertyId => propertyId !== titleColumn)
190
- .map(propertyId => this.propertyGetOrCreate(propertyId));
191
- });
192
- this.rowEntries$ = computed(() => {
193
- const mapping = this.dateMapping$.value;
194
- if (mapping.status !== 'ready') {
195
- return [];
196
- }
197
- const endMapping = this.endDateMapping$.value;
198
- return this.rows$.value.flatMap(row => {
199
- const startAt = this.cellGetOrCreate(row.rowId, mapping.propertyId)
200
- .jsonValue$.value;
201
- if (!isValidTimestamp(startAt)) {
202
- return [];
203
- }
204
- const endAt = endMapping.status === 'ready'
205
- ? this.cellGetOrCreate(row.rowId, endMapping.propertyId).jsonValue$
206
- .value
207
- : undefined;
208
- const titleColumn = this.mainProperties$.value.titleColumn ?? 'title';
209
- const titleCell = this.cellGetOrCreate(row.rowId, titleColumn);
210
- const jsonTitle = titleCell.jsonValue$.value;
211
- const title = (typeof jsonTitle === 'string'
212
- ? jsonTitle
213
- : titleCell.stringValue$.value) ?? '';
214
- const docDisplayMeta = this.manager.dataSource.serviceGet(DocDisplayMetaProvider);
215
- const resolveLinkedDocTitle = (pageId, title) => docDisplayMeta?.title(pageId, { title }).value;
216
- const titleSegments = getTitleSegments(titleCell.value$.value, title, resolveLinkedDocTitle);
217
- const cardProperties = this.visibleCardProperties$.value.flatMap(property => {
218
- const cell = this.cellGetOrCreate(row.rowId, property.id);
219
- const value = cell.stringValue$.value;
220
- if (!value) {
221
- return [];
222
- }
223
- return {
224
- propertyId: property.id,
225
- value,
226
- };
227
- });
228
- return {
229
- kind: 'row',
230
- id: `database:${row.rowId}`,
231
- sourceId: 'database',
232
- rowId: row.rowId,
233
- title,
234
- startAt,
235
- endAt: isValidTimestamp(endAt) && endAt >= startAt ? endAt : undefined,
236
- titleSegments,
237
- cardProperties,
238
- canResizeRange: endMapping.status === 'ready' && !this.readonly$.value,
239
- };
240
- });
241
- });
242
- this.entries$ = computed(() => {
243
- return [...this.rowEntries$.value, ...this.externalEntries$.value];
244
- });
245
- this.externalSources$ = computed(() => {
246
- const viewData = this.data$.value;
247
- if (!viewData) {
248
- return [];
249
- }
250
- return getCalendarExternalSources(this.dataSource, viewData);
251
- });
252
- }
253
- isShow(rowId) {
254
- if (this.filter$.value.conditions.length) {
255
- const rowMap = Object.fromEntries(this.propertiesRaw$.value.map(column => [
256
- column.id,
257
- column.cellGetOrCreate(rowId).jsonValue$.value,
258
- ]));
259
- return evalFilter(this.filter$.value, rowMap);
260
- }
261
- return true;
262
- }
263
- rowsMapping(rows) {
264
- return this.sortManager.sort(super.rowsMapping(rows));
265
- }
266
- propertyGetOrCreate(propertyId) {
267
- return new CalendarProperty(this, propertyId);
268
- }
269
- rowGetOrCreate(rowId) {
270
- return new CalendarRow(this, rowId);
271
- }
272
- setStartDateColumn(propertyId) {
273
- this.dataUpdate(data => ({
274
- date: {
275
- ...getDateData(data),
276
- startColumnId: propertyId,
277
- },
278
- }));
279
- }
280
- setDateColumn(propertyId) {
281
- this.setStartDateColumn(propertyId);
282
- }
283
- setEndDateColumn(propertyId) {
284
- this.dataUpdate(data => ({
285
- date: {
286
- ...getDateData(data),
287
- endColumnId: propertyId,
288
- },
289
- }));
290
- }
291
- setWorkspaceCalendarEnabled(enabled) {
292
- this.dataUpdate(data => ({
293
- sources: {
294
- ...data.sources,
295
- workspaceCalendar: {
296
- ...(data.sources?.workspaceCalendar ?? { enabled: true }),
297
- enabled,
298
- },
299
- },
300
- }));
301
- }
302
- setWorkspaceCalendarSubscriptionIds(subscriptionIds) {
303
- this.dataUpdate(data => ({
304
- sources: {
305
- ...data.sources,
306
- workspaceCalendar: {
307
- ...(data.sources?.workspaceCalendar ?? { enabled: true }),
308
- subscriptionIds,
309
- },
310
- },
311
- }));
312
- }
313
- dismissEmptyMonthHint() {
314
- this.dataUpdate(data => ({
315
- ui: {
316
- ...data.ui,
317
- emptyMonthHintDismissed: true,
318
- },
319
- }));
320
- }
321
- getDocDisplayTitle(docId) {
322
- return (this.manager.dataSource.serviceGet(DocDisplayMetaProvider)?.title(docId)
323
- .value ?? 'Untitled');
324
- }
325
- createStartDateColumn() {
326
- const id = this.propertyAdd('end', {
327
- type: 'date',
328
- name: 'Date',
329
- });
330
- if (id) {
331
- this.setStartDateColumn(id);
332
- }
333
- return id;
334
- }
335
- createDateColumn() {
336
- return this.createStartDateColumn();
337
- }
338
- createEndDateColumn() {
339
- const id = this.propertyAdd('end', {
340
- type: 'date',
341
- name: 'End Date',
342
- });
343
- if (id) {
344
- this.setEndDateColumn(id);
345
- }
346
- return id;
347
- }
348
- createRowOnDate(date) {
349
- const mapping = this.startDateMapping$.value;
350
- if (mapping.status !== 'ready') {
351
- return;
352
- }
353
- const rowId = this.rowAdd('end');
354
- const filter = this.filter$.value;
355
- if (filter.conditions.length > 0) {
356
- const defaultValues = generateDefaultValues(filter, this.vars$.value);
357
- Object.entries(defaultValues).forEach(([propertyId, jsonValue]) => {
358
- const property = this.propertyGetOrCreate(propertyId);
359
- const propertyMeta = property.meta$.value;
360
- if (propertyMeta) {
361
- const value = fromJson(propertyMeta.config, {
362
- value: jsonValue,
363
- data: property.data$.value,
364
- dataSource: this.dataSource,
365
- });
366
- this.cellGetOrCreate(rowId, propertyId).valueSet(value);
367
- }
368
- });
369
- }
370
- this.cellGetOrCreate(rowId, mapping.propertyId).jsonValueSet(toTimestamp(date));
371
- this.dismissEmptyMonthHint();
372
- return rowId;
373
- }
374
- createLinkedDocRowOnDate(date, docId) {
375
- const rowId = this.createRowOnDate(date);
376
- if (!rowId)
377
- return;
378
- const titleColumn = this.mainProperties$.value.titleColumn ?? 'title';
379
- this.cellGetOrCreate(rowId, titleColumn).valueSet(createLinkedDocTitle(docId));
380
- return rowId;
381
- }
382
- moveRowToDate(rowId, date) {
383
- const mapping = this.startDateMapping$.value;
384
- if (mapping.status !== 'ready') {
385
- return;
386
- }
387
- const value = toTimestamp(date);
388
- const oldStartAt = this.cellGetOrCreate(rowId, mapping.propertyId)
389
- .jsonValue$.value;
390
- const endMapping = this.endDateMapping$.value;
391
- if (endMapping.status === 'ready' && isValidTimestamp(oldStartAt)) {
392
- const oldEndAt = this.cellGetOrCreate(rowId, endMapping.propertyId)
393
- .jsonValue$.value;
394
- if (isValidTimestamp(oldEndAt) && oldEndAt >= oldStartAt) {
395
- this.cellGetOrCreate(rowId, endMapping.propertyId).jsonValueSet(value + (oldEndAt - oldStartAt));
396
- }
397
- }
398
- this.cellGetOrCreate(rowId, mapping.propertyId).jsonValueSet(value);
399
- }
400
- resizeRowRange(rowId, edge, date) {
401
- const startMapping = this.startDateMapping$.value;
402
- const endMapping = this.endDateMapping$.value;
403
- if (startMapping.status !== 'ready' || endMapping.status !== 'ready') {
404
- return;
405
- }
406
- const startCell = this.cellGetOrCreate(rowId, startMapping.propertyId);
407
- const endCell = this.cellGetOrCreate(rowId, endMapping.propertyId);
408
- const startAt = startCell.jsonValue$.value;
409
- const endAt = endCell.jsonValue$.value;
410
- if (!isValidTimestamp(startAt) || !isValidTimestamp(endAt)) {
411
- return;
412
- }
413
- const value = toTimestamp(date);
414
- if (edge === 'start') {
415
- startCell.jsonValueSet(Math.min(value, endAt));
416
- }
417
- else {
418
- endCell.jsonValueSet(Math.max(value, startAt));
419
- }
420
- }
421
- async loadExternalEntries(range) {
422
- const requestId = ++this.externalEntriesRequestId;
423
- const viewData = this.data$.value;
424
- if (!viewData) {
425
- this.externalEntries$.value = [];
426
- return [];
427
- }
428
- const results = await Promise.allSettled(this.externalSources$.value.map(source => Promise.resolve(source.getEntries(range))));
429
- const entries = results.flatMap(result => result.status === 'fulfilled' ? result.value : []);
430
- if (requestId === this.externalEntriesRequestId) {
431
- this.externalEntries$.value = entries;
432
- }
433
- return entries;
434
- }
435
- }
436
- export class CalendarProperty extends PropertyBase {
437
- constructor(view, propertyId) {
438
- super(view, propertyId);
439
- this.hide$ = computed(() => false);
440
- }
441
- hideSet(_hide) { }
442
- move(_position) { }
443
- }
444
- export class CalendarRow extends RowBase {
445
- constructor(calendarView, rowId) {
446
- super(calendarView, rowId);
447
- this.calendarView = calendarView;
448
- }
449
- }
@@ -1,10 +0,0 @@
1
- import type { CalendarViewData } from './types.js';
2
- export declare const calendarViewType: {
3
- type: "calendar";
4
- createModel: <Data extends import("../../index.js").DataViewDataType>(model: import("../../index.js").DataViewModelConfig<Data>) => import("../../index.js").DataViewModel<"calendar", Data> & {
5
- createMeta: (renderer: import("../../index.js").DataViewRendererConfig) => import("../../index.js").ViewMeta<"calendar", Data>;
6
- };
7
- };
8
- export declare const calendarViewModel: import("../../index.js").DataViewModel<"calendar", CalendarViewData> & {
9
- createMeta: (renderer: import("../../index.js").DataViewRendererConfig) => import("../../index.js").ViewMeta<"calendar", CalendarViewData>;
10
- };
@@ -1,29 +0,0 @@
1
- import { viewType } from '../../core/view/data-view.js';
2
- import { VIEW_NAME_CALENDAR } from '../../translations.js';
3
- import { CalendarSingleView } from './calendar-view-manager.js';
4
- export const calendarViewType = viewType('calendar');
5
- export const calendarViewModel = calendarViewType.createModel({
6
- defaultName: VIEW_NAME_CALENDAR[1],
7
- defaultNameKey: VIEW_NAME_CALENDAR[0],
8
- dataViewManager: CalendarSingleView,
9
- defaultData: viewManager => {
10
- return {
11
- filter: {
12
- type: 'group',
13
- op: 'and',
14
- conditions: [],
15
- },
16
- date: {},
17
- card: {
18
- titleColumnId: viewManager.dataSource.properties$.value.find(id => viewManager.dataSource.propertyTypeGet(id) === 'title'),
19
- visiblePropertyIds: [],
20
- },
21
- sources: {
22
- workspaceCalendar: {
23
- enabled: true,
24
- },
25
- },
26
- ui: {},
27
- };
28
- },
29
- });
@@ -1 +0,0 @@
1
- export declare function calendarEffects(): void;
@@ -1,4 +0,0 @@
1
- import { pcEffects } from './pc/effect.js';
2
- export function calendarEffects() {
3
- pcEffects();
4
- }
@@ -1,6 +0,0 @@
1
- export * from './calendar-view-manager.js';
2
- export * from './define.js';
3
- export * from './layout.js';
4
- export * from './renderer.js';
5
- export * from './source.js';
6
- export * from './types.js';
@@ -1,6 +0,0 @@
1
- export * from './calendar-view-manager.js';
2
- export * from './define.js';
3
- export * from './layout.js';
4
- export * from './renderer.js';
5
- export * from './source.js';
6
- export * from './types.js';
@@ -1,37 +0,0 @@
1
- import type { CalendarEntry } from './types.js';
2
- export type CalendarDayLayout = {
3
- date: number;
4
- inMonth: boolean;
5
- entries: CalendarEntry[];
6
- segments: CalendarRangeSegment[];
7
- };
8
- export type CalendarRangeSegment = {
9
- entry: CalendarEntry;
10
- weekIndex: number;
11
- startIndex: number;
12
- span: number;
13
- slot: number;
14
- startsBeforeWeek: boolean;
15
- endsAfterWeek: boolean;
16
- };
17
- export type CalendarMonthLayout = {
18
- from: number;
19
- to: number;
20
- weeks: CalendarDayLayout[][];
21
- days: CalendarDayLayout[];
22
- segments: CalendarRangeSegment[];
23
- };
24
- export type CalendarMonthLayoutOptions = {
25
- month: number | Date;
26
- entries: CalendarEntry[];
27
- weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
28
- };
29
- export declare const getCalendarVisibleMonthRange: (month: number | Date, weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6) => {
30
- from: number;
31
- to: number;
32
- monthStart: number;
33
- monthEnd: number;
34
- };
35
- export declare const getCalendarDaySegmentSlots: (day: CalendarDayLayout, ignoredEntryId?: string) => number;
36
- export declare const getCalendarDayContentSlots: (day: CalendarDayLayout, ignoredEntryId?: string) => number;
37
- export declare const createCalendarMonthLayout: ({ month, entries, weekStartsOn, }: CalendarMonthLayoutOptions) => CalendarMonthLayout;