foldkit 0.101.0 → 0.102.1

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 (211) hide show
  1. package/README.md +2 -1
  2. package/dist/canvas/view.d.ts +1 -1
  3. package/dist/canvas/view.d.ts.map +1 -1
  4. package/dist/canvas/view.js +5 -5
  5. package/dist/command/index.d.ts +71 -0
  6. package/dist/command/index.d.ts.map +1 -1
  7. package/dist/command/index.js +34 -1
  8. package/dist/command/public.d.ts +1 -1
  9. package/dist/command/public.d.ts.map +1 -1
  10. package/dist/command/public.js +1 -1
  11. package/dist/devTools/overlay.d.ts.map +1 -1
  12. package/dist/devTools/overlay.js +137 -110
  13. package/dist/dom/dom.d.ts +8 -11
  14. package/dist/dom/dom.d.ts.map +1 -1
  15. package/dist/dom/dom.js +8 -11
  16. package/dist/dom/elementMovement.d.ts +1 -3
  17. package/dist/dom/elementMovement.d.ts.map +1 -1
  18. package/dist/dom/elementMovement.js +1 -3
  19. package/dist/dom/inert.d.ts +2 -4
  20. package/dist/dom/inert.d.ts.map +1 -1
  21. package/dist/dom/inert.js +2 -4
  22. package/dist/dom/scrollLock.d.ts +2 -2
  23. package/dist/dom/scrollLock.js +2 -2
  24. package/dist/dom/waitForAnimation.d.ts +1 -1
  25. package/dist/dom/waitForAnimation.js +1 -1
  26. package/dist/html/boundary.d.ts +98 -0
  27. package/dist/html/boundary.d.ts.map +1 -0
  28. package/dist/html/boundary.js +176 -0
  29. package/dist/html/childAttribute.d.ts +44 -0
  30. package/dist/html/childAttribute.d.ts.map +1 -0
  31. package/dist/html/childAttribute.js +34 -0
  32. package/dist/html/index.d.ts +70 -23
  33. package/dist/html/index.d.ts.map +1 -1
  34. package/dist/html/index.js +639 -575
  35. package/dist/html/lazy.d.ts +12 -7
  36. package/dist/html/lazy.d.ts.map +1 -1
  37. package/dist/html/lazy.js +30 -11
  38. package/dist/html/public.d.ts +2 -2
  39. package/dist/html/public.d.ts.map +1 -1
  40. package/dist/html/public.js +1 -1
  41. package/dist/html/runtimeSingleton.d.ts +72 -0
  42. package/dist/html/runtimeSingleton.d.ts.map +1 -0
  43. package/dist/html/runtimeSingleton.js +112 -0
  44. package/dist/html/submodel.d.ts +98 -0
  45. package/dist/html/submodel.d.ts.map +1 -0
  46. package/dist/html/submodel.js +190 -0
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +1 -0
  50. package/dist/render/render.d.ts +1 -1
  51. package/dist/render/render.js +1 -1
  52. package/dist/runtime/messagePriority.d.ts +5 -1
  53. package/dist/runtime/messagePriority.d.ts.map +1 -1
  54. package/dist/runtime/messagePriority.js +25 -4
  55. package/dist/runtime/runtime.d.ts +3 -1
  56. package/dist/runtime/runtime.d.ts.map +1 -1
  57. package/dist/runtime/runtime.js +123 -67
  58. package/dist/submodel/public.d.ts +4 -0
  59. package/dist/submodel/public.d.ts.map +1 -0
  60. package/dist/submodel/public.js +1 -0
  61. package/dist/submodel/submodel.d.ts +32 -0
  62. package/dist/submodel/submodel.d.ts.map +1 -0
  63. package/dist/submodel/submodel.js +1 -0
  64. package/dist/test/apps/disabledButton.d.ts +4 -5
  65. package/dist/test/apps/disabledButton.d.ts.map +1 -1
  66. package/dist/test/apps/disabledButton.js +16 -16
  67. package/dist/test/scene.d.ts +8 -8
  68. package/dist/test/scene.d.ts.map +1 -1
  69. package/dist/test/scene.js +25 -13
  70. package/dist/test/story.d.ts +15 -8
  71. package/dist/test/story.d.ts.map +1 -1
  72. package/dist/test/story.js +21 -9
  73. package/dist/ui/animation/index.d.ts +30 -14
  74. package/dist/ui/animation/index.d.ts.map +1 -1
  75. package/dist/ui/animation/index.js +9 -19
  76. package/dist/ui/animation/public.d.ts +2 -2
  77. package/dist/ui/animation/public.d.ts.map +1 -1
  78. package/dist/ui/animation/public.js +1 -1
  79. package/dist/ui/calendar/index.d.ts +199 -84
  80. package/dist/ui/calendar/index.d.ts.map +1 -1
  81. package/dist/ui/calendar/index.js +129 -140
  82. package/dist/ui/calendar/public.d.ts +2 -2
  83. package/dist/ui/calendar/public.d.ts.map +1 -1
  84. package/dist/ui/calendar/public.js +1 -1
  85. package/dist/ui/checkbox/index.d.ts +93 -21
  86. package/dist/ui/checkbox/index.d.ts.map +1 -1
  87. package/dist/ui/checkbox/index.js +62 -33
  88. package/dist/ui/checkbox/public.d.ts +2 -2
  89. package/dist/ui/checkbox/public.d.ts.map +1 -1
  90. package/dist/ui/checkbox/public.js +1 -1
  91. package/dist/ui/combobox/multi.d.ts +35 -91
  92. package/dist/ui/combobox/multi.d.ts.map +1 -1
  93. package/dist/ui/combobox/multi.js +34 -17
  94. package/dist/ui/combobox/multiPublic.d.ts +2 -2
  95. package/dist/ui/combobox/multiPublic.d.ts.map +1 -1
  96. package/dist/ui/combobox/multiPublic.js +1 -1
  97. package/dist/ui/combobox/public.d.ts +3 -3
  98. package/dist/ui/combobox/public.d.ts.map +1 -1
  99. package/dist/ui/combobox/public.js +2 -2
  100. package/dist/ui/combobox/shared.d.ts +56 -31
  101. package/dist/ui/combobox/shared.d.ts.map +1 -1
  102. package/dist/ui/combobox/shared.js +333 -322
  103. package/dist/ui/combobox/single.d.ts +46 -93
  104. package/dist/ui/combobox/single.d.ts.map +1 -1
  105. package/dist/ui/combobox/single.js +44 -17
  106. package/dist/ui/datePicker/index.d.ts +256 -48
  107. package/dist/ui/datePicker/index.d.ts.map +1 -1
  108. package/dist/ui/datePicker/index.js +149 -104
  109. package/dist/ui/datePicker/public.d.ts +2 -2
  110. package/dist/ui/datePicker/public.d.ts.map +1 -1
  111. package/dist/ui/datePicker/public.js +1 -1
  112. package/dist/ui/dialog/index.d.ts +95 -39
  113. package/dist/ui/dialog/index.d.ts.map +1 -1
  114. package/dist/ui/dialog/index.js +71 -62
  115. package/dist/ui/dialog/public.d.ts +2 -2
  116. package/dist/ui/dialog/public.d.ts.map +1 -1
  117. package/dist/ui/dialog/public.js +1 -1
  118. package/dist/ui/disclosure/index.d.ts +71 -31
  119. package/dist/ui/disclosure/index.d.ts.map +1 -1
  120. package/dist/ui/disclosure/index.js +57 -62
  121. package/dist/ui/disclosure/public.d.ts +2 -2
  122. package/dist/ui/disclosure/public.d.ts.map +1 -1
  123. package/dist/ui/disclosure/public.js +1 -1
  124. package/dist/ui/dragAndDrop/index.d.ts +6 -6
  125. package/dist/ui/dragAndDrop/index.d.ts.map +1 -1
  126. package/dist/ui/dragAndDrop/index.js +7 -7
  127. package/dist/ui/dragAndDrop/public.d.ts +1 -1
  128. package/dist/ui/dragAndDrop/public.d.ts.map +1 -1
  129. package/dist/ui/dragAndDrop/public.js +1 -1
  130. package/dist/ui/fileDrop/index.d.ts +42 -46
  131. package/dist/ui/fileDrop/index.d.ts.map +1 -1
  132. package/dist/ui/fileDrop/index.js +30 -46
  133. package/dist/ui/fileDrop/public.d.ts +2 -2
  134. package/dist/ui/fileDrop/public.d.ts.map +1 -1
  135. package/dist/ui/fileDrop/public.js +1 -1
  136. package/dist/ui/listbox/multi.d.ts +39 -84
  137. package/dist/ui/listbox/multi.d.ts.map +1 -1
  138. package/dist/ui/listbox/multi.js +38 -20
  139. package/dist/ui/listbox/multiPublic.d.ts +2 -2
  140. package/dist/ui/listbox/multiPublic.d.ts.map +1 -1
  141. package/dist/ui/listbox/multiPublic.js +1 -1
  142. package/dist/ui/listbox/public.d.ts +3 -3
  143. package/dist/ui/listbox/public.d.ts.map +1 -1
  144. package/dist/ui/listbox/public.js +2 -2
  145. package/dist/ui/listbox/shared.d.ts +71 -30
  146. package/dist/ui/listbox/shared.d.ts.map +1 -1
  147. package/dist/ui/listbox/shared.js +319 -296
  148. package/dist/ui/listbox/single.d.ts +57 -85
  149. package/dist/ui/listbox/single.d.ts.map +1 -1
  150. package/dist/ui/listbox/single.js +48 -24
  151. package/dist/ui/menu/index.d.ts +80 -36
  152. package/dist/ui/menu/index.d.ts.map +1 -1
  153. package/dist/ui/menu/index.js +117 -86
  154. package/dist/ui/menu/public.d.ts +2 -2
  155. package/dist/ui/menu/public.d.ts.map +1 -1
  156. package/dist/ui/menu/public.js +1 -1
  157. package/dist/ui/popover/index.d.ts +117 -44
  158. package/dist/ui/popover/index.d.ts.map +1 -1
  159. package/dist/ui/popover/index.js +88 -101
  160. package/dist/ui/popover/public.d.ts +2 -2
  161. package/dist/ui/popover/public.d.ts.map +1 -1
  162. package/dist/ui/popover/public.js +1 -1
  163. package/dist/ui/radioGroup/index.d.ts +122 -45
  164. package/dist/ui/radioGroup/index.d.ts.map +1 -1
  165. package/dist/ui/radioGroup/index.js +111 -72
  166. package/dist/ui/radioGroup/public.d.ts +2 -2
  167. package/dist/ui/radioGroup/public.d.ts.map +1 -1
  168. package/dist/ui/radioGroup/public.js +1 -1
  169. package/dist/ui/slider/index.d.ts +72 -34
  170. package/dist/ui/slider/index.d.ts.map +1 -1
  171. package/dist/ui/slider/index.js +40 -49
  172. package/dist/ui/slider/public.d.ts +2 -2
  173. package/dist/ui/slider/public.d.ts.map +1 -1
  174. package/dist/ui/slider/public.js +1 -1
  175. package/dist/ui/switch/index.d.ts +74 -21
  176. package/dist/ui/switch/index.d.ts.map +1 -1
  177. package/dist/ui/switch/index.js +62 -33
  178. package/dist/ui/switch/public.d.ts +2 -2
  179. package/dist/ui/switch/public.d.ts.map +1 -1
  180. package/dist/ui/switch/public.js +1 -1
  181. package/dist/ui/tabs/index.d.ts +107 -45
  182. package/dist/ui/tabs/index.d.ts.map +1 -1
  183. package/dist/ui/tabs/index.js +99 -81
  184. package/dist/ui/tabs/public.d.ts +2 -2
  185. package/dist/ui/tabs/public.d.ts.map +1 -1
  186. package/dist/ui/tabs/public.js +1 -1
  187. package/dist/ui/toast/index.d.ts +93 -109
  188. package/dist/ui/toast/index.d.ts.map +1 -1
  189. package/dist/ui/toast/index.js +16 -29
  190. package/dist/ui/toast/schema.d.ts +15 -4
  191. package/dist/ui/toast/schema.d.ts.map +1 -1
  192. package/dist/ui/toast/schema.js +11 -4
  193. package/dist/ui/toast/update.d.ts +36 -18
  194. package/dist/ui/toast/update.d.ts.map +1 -1
  195. package/dist/ui/toast/update.js +33 -14
  196. package/dist/ui/tooltip/index.d.ts +94 -42
  197. package/dist/ui/tooltip/index.d.ts.map +1 -1
  198. package/dist/ui/tooltip/index.js +64 -73
  199. package/dist/ui/tooltip/public.d.ts +2 -2
  200. package/dist/ui/tooltip/public.d.ts.map +1 -1
  201. package/dist/ui/tooltip/public.js +1 -1
  202. package/dist/ui/virtualList/index.d.ts +18 -41
  203. package/dist/ui/virtualList/index.d.ts.map +1 -1
  204. package/dist/ui/virtualList/index.js +17 -37
  205. package/dist/ui/virtualList/public.d.ts +2 -2
  206. package/dist/ui/virtualList/public.d.ts.map +1 -1
  207. package/dist/ui/virtualList/public.js +1 -1
  208. package/dist/vdom.d.ts +3 -2
  209. package/dist/vdom.d.ts.map +1 -1
  210. package/dist/vdom.js +44 -0
  211. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
- import { Effect, Match as M, Option, Schema as S } from 'effect';
1
+ import { Function, Match as M, Option, Schema as S } from 'effect';
2
2
  import * as Calendar from '../../calendar/index.js';
3
3
  import * as Command from '../../command/index.js';
4
- import { createLazy, html, } from '../../html/index.js';
4
+ import { defineView, html, } from '../../html/index.js';
5
5
  import { m } from '../../message/index.js';
6
6
  import { evo } from '../../struct/index.js';
7
7
  import * as UiCalendar from '../calendar/index.js';
@@ -27,7 +27,9 @@ export const GotPopoverMessage = m('GotPopoverMessage', {
27
27
  });
28
28
  /** Sent when the user commits a date via click or keyboard. Updates the
29
29
  * selected date, syncs the calendar, and closes the popover. */
30
- export const SelectedDate = m('SelectedDate', { date: Calendar.CalendarDate });
30
+ export const RequestedSelectDate = m('RequestedSelectDate', {
31
+ date: Calendar.CalendarDate,
32
+ });
31
33
  /** Sent when the user clears the selected date. Does not close the popover. */
32
34
  export const Cleared = m('Cleared');
33
35
  /** Sent when the popover should open. Triggers focus-grid on the embedded
@@ -40,7 +42,7 @@ export const Closed = m('Closed');
40
42
  export const Message = S.Union([
41
43
  GotCalendarMessage,
42
44
  GotPopoverMessage,
43
- SelectedDate,
45
+ RequestedSelectDate,
44
46
  Cleared,
45
47
  Opened,
46
48
  Closed,
@@ -52,10 +54,14 @@ export const ChangedViewMonth = m('ChangedViewMonth', {
52
54
  year: S.Int,
53
55
  month: S.Int,
54
56
  });
55
- /** The date picker's OutMessage. Matches Calendar only `ChangedViewMonth`.
56
- * Date selection goes through the `onSelectedDate` ViewConfig callback, not
57
- * OutMessage. */
58
- export const OutMessage = ChangedViewMonth;
57
+ /** Emitted when the user commits a date selection (propagated from the
58
+ * embedded Calendar). The popover has already closed; the parent reads the
59
+ * committed date and lifts it into domain state. */
60
+ export const SelectedDate = m('SelectedDate', {
61
+ date: Calendar.CalendarDate,
62
+ });
63
+ /** Union of out-messages the date picker can produce. */
64
+ export const OutMessage = S.Union([ChangedViewMonth, SelectedDate]);
59
65
  /** Creates an initial date picker model from a config. The calendar and
60
66
  * popover submodels are created with derived ids so their DOM elements stay
61
67
  * addressable. The popover is opened in `contentFocus` mode so focus lands on
@@ -86,26 +92,57 @@ export const init = (config) => ({
86
92
  }),
87
93
  });
88
94
  const withUpdateReturn = M.withReturnType();
89
- const mapCalendarCommands = (commands) => commands.map(Command.mapEffect(Effect.map(message => GotCalendarMessage({ message }))));
90
- const mapPopoverCommands = (commands) => commands.map(Command.mapEffect(Effect.map(message => GotPopoverMessage({ message }))));
91
- const mapCalendarOutMessage = (maybeOutMessage) => Option.map(maybeOutMessage, M.type().pipe(M.tagsExhaustive({
92
- ChangedViewMonth: ({ year, month }) => ChangedViewMonth({ year, month }),
93
- })));
95
+ const mapCalendarCommands = (commands) => Command.mapMessages(commands, message => GotCalendarMessage({ message }));
96
+ const mapPopoverCommands = (commands) => Command.mapMessages(commands, message => GotPopoverMessage({ message }));
94
97
  const delegateToCalendar = (model, calendarMessage) => {
95
98
  const [nextCalendar, calendarCommands, maybeCalendarOutMessage] = UiCalendar.update(model.calendar, calendarMessage);
96
- return [
97
- evo(model, { calendar: () => nextCalendar }),
98
- mapCalendarCommands(calendarCommands),
99
- mapCalendarOutMessage(maybeCalendarOutMessage),
100
- ];
99
+ const modelWithCalendar = evo(model, { calendar: () => nextCalendar });
100
+ return Option.match(maybeCalendarOutMessage, {
101
+ onNone: () => [
102
+ modelWithCalendar,
103
+ mapCalendarCommands(calendarCommands),
104
+ Option.none(),
105
+ ],
106
+ onSome: M.type().pipe(M.withReturnType(), M.tagsExhaustive({
107
+ ChangedViewMonth: ({ year, month }) => [
108
+ modelWithCalendar,
109
+ mapCalendarCommands(calendarCommands),
110
+ Option.some(ChangedViewMonth({ year, month })),
111
+ ],
112
+ SelectedDate: ({ date }) => {
113
+ const [nextPopover, popoverCommands] = Popover.close(model.popover);
114
+ return [
115
+ evo(modelWithCalendar, {
116
+ maybeSelectedDate: () => Option.some(date),
117
+ popover: () => nextPopover,
118
+ }),
119
+ [
120
+ ...mapCalendarCommands(calendarCommands),
121
+ ...mapPopoverCommands(popoverCommands),
122
+ ],
123
+ Option.some(SelectedDate({ date })),
124
+ ];
125
+ },
126
+ })),
127
+ });
101
128
  };
102
129
  const delegateToPopover = (model, popoverMessage) => {
103
- const [nextPopover, popoverCommands] = Popover.update(model.popover, popoverMessage);
104
- return [
105
- evo(model, { popover: () => nextPopover }),
106
- mapPopoverCommands(popoverCommands),
107
- Option.none(),
108
- ];
130
+ const [nextPopover, popoverCommands, maybePopoverOutMessage] = Popover.update(model.popover, popoverMessage);
131
+ const modelWithPopover = evo(model, { popover: () => nextPopover });
132
+ return Option.match(maybePopoverOutMessage, {
133
+ onNone: () => [
134
+ modelWithPopover,
135
+ mapPopoverCommands(popoverCommands),
136
+ Option.none(),
137
+ ],
138
+ onSome: () => [
139
+ evo(modelWithPopover, {
140
+ calendar: () => UiCalendar.dropToDays(modelWithPopover.calendar),
141
+ }),
142
+ mapPopoverCommands(popoverCommands),
143
+ Option.none(),
144
+ ],
145
+ });
109
146
  };
110
147
  /** Processes a date picker message and returns the next model, commands, and
111
148
  * optional OutMessage. */
@@ -134,7 +171,7 @@ export const update = (model, message) => M.value(message).pipe(withUpdateReturn
134
171
  Option.none(),
135
172
  ];
136
173
  },
137
- SelectedDate: ({ date }) => {
174
+ RequestedSelectDate: ({ date }) => {
138
175
  const [nextCalendar, calendarCommands] = UiCalendar.selectDate(model.calendar, date);
139
176
  const [nextPopover, popoverCommands] = Popover.close(model.popover);
140
177
  return [
@@ -147,105 +184,123 @@ export const update = (model, message) => M.value(message).pipe(withUpdateReturn
147
184
  ...mapCalendarCommands(calendarCommands),
148
185
  ...mapPopoverCommands(popoverCommands),
149
186
  ],
150
- Option.none(),
187
+ Option.some(SelectedDate({ date })),
151
188
  ];
152
189
  },
153
190
  Cleared: () => [
154
- evo(model, { maybeSelectedDate: () => Option.none() }),
191
+ evo(model, {
192
+ maybeSelectedDate: () => Option.none(),
193
+ calendar: UiCalendar.reflectSelectedDate(Option.none()),
194
+ }),
155
195
  [],
156
196
  Option.none(),
157
197
  ],
158
198
  }));
159
199
  /** Programmatically opens the date picker, updating the model and returning
160
200
  * focus and popover commands. Use this in domain-event handlers. */
161
- export const open = (model) => {
162
- const [nextModel, commands] = toModelAndCommands(update(model, Opened()));
163
- return [nextModel, commands];
164
- };
201
+ export const open = (model) => update(model, Opened());
165
202
  /** Programmatically closes the date picker. Use this in domain-event handlers. */
166
- export const close = (model) => {
167
- const [nextModel, commands] = toModelAndCommands(update(model, Closed()));
168
- return [nextModel, commands];
169
- };
170
- /** Programmatically selects a date, committing it and closing the popover. */
171
- export const selectDate = (model, date) => {
172
- const [nextModel, commands] = toModelAndCommands(update(model, SelectedDate({ date })));
173
- return [nextModel, commands];
174
- };
203
+ export const close = (model) => update(model, Closed());
204
+ /** Programmatically selects a date, committing it and closing the popover. Emits a `SelectedDate` OutMessage just like a user-initiated selection. */
205
+ export const selectDate = (model, date) => update(model, RequestedSelectDate({ date }));
175
206
  /** Programmatically clears the selected date. */
176
- export const clear = (model) => {
177
- const [nextModel, commands] = toModelAndCommands(update(model, Cleared()));
178
- return [nextModel, commands];
179
- };
180
- /** Sets the minimum selectable date on the embedded calendar. Pass
207
+ export const clear = (model) => update(model, Cleared());
208
+ /** Reflects an externally-sourced selected date onto the date picker
209
+ * without emitting an OutMessage or touching the popover. Sets the
210
+ * picker's selection and reflects it onto the embedded calendar (moving
211
+ * the calendar's view to the date), mirroring `selectDate`'s state change
212
+ * minus the `SelectedDate` announcement and the popover close. Pass
213
+ * `Option.none()` to clear. Use this to mirror external truth (a URL
214
+ * parameter, a saved draft) onto the picker. Contrast with `selectDate`,
215
+ * a user or programmatic *choice* that emits `SelectedDate`. Returns the
216
+ * model directly because it produces no commands and no OutMessage. */
217
+ export const reflectSelectedDate = Function.dual(2, (model, maybeDate) => evo(model, {
218
+ maybeSelectedDate: () => maybeDate,
219
+ calendar: () => UiCalendar.reflectSelectedDate(model.calendar, maybeDate),
220
+ }));
221
+ /** Reflects the minimum selectable date onto the embedded calendar. Pass
181
222
  * `Option.none()` to remove the minimum. Use this when the minimum derives
182
223
  * from other Model state (e.g. a start date field whose current selection
183
224
  * constrains an end date picker).
184
225
  *
185
- * Does NOT reconcile the current selection if a previously-selected date
226
+ * Does NOT reconcile the current selection. If a previously-selected date
186
227
  * is now below the new minimum, it remains selected. Callers should `clear`
187
228
  * or reassign the selection explicitly if their domain requires it. */
188
- export const setMinDate = (model, maybeMinDate) => evo(model, {
189
- calendar: () => UiCalendar.setMinDate(model.calendar, maybeMinDate),
190
- });
191
- /** Sets the maximum selectable date on the embedded calendar. Pass
229
+ export const reflectMinDate = Function.dual(2, (model, maybeMinDate) => evo(model, {
230
+ calendar: () => UiCalendar.reflectMinDate(model.calendar, maybeMinDate),
231
+ }));
232
+ /** Reflects the maximum selectable date onto the embedded calendar. Pass
192
233
  * `Option.none()` to remove the maximum. Does NOT reconcile the current
193
234
  * selection. */
194
- export const setMaxDate = (model, maybeMaxDate) => evo(model, {
195
- calendar: () => UiCalendar.setMaxDate(model.calendar, maybeMaxDate),
196
- });
197
- /** Sets the list of individually-disabled dates on the embedded calendar.
198
- * Pass an empty array to clear. Does NOT reconcile the current selection. */
199
- export const setDisabledDates = (model, disabledDates) => evo(model, {
200
- calendar: () => UiCalendar.setDisabledDates(model.calendar, disabledDates),
201
- });
202
- /** Sets the days of the week that are disabled on the embedded calendar
235
+ export const reflectMaxDate = Function.dual(2, (model, maybeMaxDate) => evo(model, {
236
+ calendar: () => UiCalendar.reflectMaxDate(model.calendar, maybeMaxDate),
237
+ }));
238
+ /** Reflects the list of individually-disabled dates onto the embedded
239
+ * calendar. Pass an empty array to clear. Does NOT reconcile the current
240
+ * selection. */
241
+ export const reflectDisabledDates = Function.dual(2, (model, disabledDates) => evo(model, {
242
+ calendar: () => UiCalendar.reflectDisabledDates(model.calendar, disabledDates),
243
+ }));
244
+ /** Reflects the days of the week that are disabled onto the embedded calendar
203
245
  * (e.g. weekends). Pass an empty array to clear. Does NOT reconcile the
204
246
  * current selection. */
205
- export const setDisabledDaysOfWeek = (model, disabledDaysOfWeek) => evo(model, {
206
- calendar: () => UiCalendar.setDisabledDaysOfWeek(model.calendar, disabledDaysOfWeek),
207
- });
208
- const toModelAndCommands = (result) => {
209
- const [nextModel, commands] = result;
210
- return [nextModel, commands];
211
- };
247
+ export const reflectDisabledDaysOfWeek = Function.dual(2, (model, disabledDaysOfWeek) => evo(model, {
248
+ calendar: () => UiCalendar.reflectDisabledDaysOfWeek(model.calendar, disabledDaysOfWeek),
249
+ }));
212
250
  // VIEW
213
251
  const encodeIsoDate = S.encodeSync(Calendar.CalendarDateFromIsoString);
214
252
  /** Renders an accessible date picker: a trigger button that opens a popover
215
253
  * containing an accessible calendar grid. The date picker assembles the
216
- * embedded Calendar and Popover components into one flat API — consumers
254
+ * embedded Calendar and Popover components into one flat API. Consumers
217
255
  * provide the trigger face and the calendar grid layout, DatePicker handles
218
256
  * focus choreography, open/close state, and form submission. */
219
- export const view = (config) => {
257
+ export const view = defineView((model, viewInputs) => {
220
258
  const h = html();
221
- const { model, toParentMessage, onSelectedDate, anchor, triggerContent, toCalendarView, isDisabled, name, className, attributes = [], triggerClassName, triggerAttributes = [], panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], } = config;
222
- const dispatchSelectedDate = (date) => onSelectedDate !== undefined
223
- ? onSelectedDate(date)
224
- : toParentMessage(SelectedDate({ date }));
225
- const calendarVNode = UiCalendar.view({
259
+ const { anchor, triggerContent, toCalendarView, isDisabled, name, className, attributes = [], triggerClassName, triggerAttributes = [], panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], } = viewInputs;
260
+ const calendarVNode = h.submodel({
261
+ slotId: model.calendar.id,
226
262
  model: model.calendar,
227
- toParentMessage: message => toParentMessage(GotCalendarMessage({ message })),
228
- onSelectedDate: dispatchSelectedDate,
229
- toView: toCalendarView,
263
+ view: UiCalendar.view,
264
+ viewInputs: { toView: toCalendarView },
265
+ toParentMessage: message => GotCalendarMessage({ message }),
230
266
  });
231
- const popoverVNode = Popover.view({
267
+ const popoverVNode = h.submodel({
268
+ slotId: model.popover.id,
232
269
  model: model.popover,
233
- toParentMessage: message => toParentMessage(GotPopoverMessage({ message })),
234
- onOpened: () => toParentMessage(Opened()),
235
- onClosed: () => toParentMessage(Closed()),
236
- anchor,
237
- buttonContent: triggerContent(model.maybeSelectedDate),
238
- panelContent: calendarVNode,
239
- focusSelector: `#${model.calendar.id}-grid`,
240
- ...(isDisabled !== undefined && { isDisabled }),
241
- ...(triggerClassName !== undefined && {
242
- buttonClassName: triggerClassName,
243
- }),
244
- buttonAttributes: triggerAttributes,
245
- ...(panelClassName !== undefined && { panelClassName }),
246
- panelAttributes,
247
- ...(backdropClassName !== undefined && { backdropClassName }),
248
- backdropAttributes,
270
+ view: Popover.view,
271
+ viewInputs: {
272
+ anchor,
273
+ ...(isDisabled !== undefined && { isDisabled }),
274
+ focusSelector: `#${model.calendar.id}-grid`,
275
+ toView: ({ button, panel, backdrop, isVisible }) => h.div([], [
276
+ h.button([
277
+ ...button,
278
+ ...(triggerClassName !== undefined
279
+ ? [h.Class(triggerClassName)]
280
+ : []),
281
+ ...triggerAttributes,
282
+ ], [triggerContent(model.maybeSelectedDate)]),
283
+ ...(isVisible
284
+ ? [
285
+ h.div([
286
+ ...backdrop,
287
+ ...(backdropClassName !== undefined
288
+ ? [h.Class(backdropClassName)]
289
+ : []),
290
+ ...backdropAttributes,
291
+ ], []),
292
+ h.div([
293
+ ...panel,
294
+ ...(panelClassName !== undefined
295
+ ? [h.Class(panelClassName)]
296
+ : []),
297
+ ...panelAttributes,
298
+ ], [calendarVNode]),
299
+ ]
300
+ : []),
301
+ ]),
302
+ },
303
+ toParentMessage: message => GotPopoverMessage({ message }),
249
304
  });
250
305
  const hiddenInputValue = Option.match(model.maybeSelectedDate, {
251
306
  onNone: () => '',
@@ -259,14 +314,4 @@ export const view = (config) => {
259
314
  ...attributes,
260
315
  ];
261
316
  return h.div(wrapperAttributes, [popoverVNode, ...maybeHiddenInput]);
262
- };
263
- /** Creates a memoized date picker view. Static config is captured in a closure;
264
- * only `model` and `toParentMessage` are compared per render via `createLazy`. */
265
- export const lazy = (staticConfig) => {
266
- const lazyView = createLazy();
267
- return (model, toParentMessage) => lazyView((currentModel, currentToParentMessage) => view({
268
- ...staticConfig,
269
- model: currentModel,
270
- toParentMessage: currentToParentMessage,
271
- }), [model, toParentMessage]);
272
- };
317
+ });
@@ -1,3 +1,3 @@
1
- export { init, update, view, lazy, open, close, selectDate, clear, setMinDate, setMaxDate, setDisabledDates, setDisabledDaysOfWeek, Model, Message, OutMessage, GotCalendarMessage, GotPopoverMessage, SelectedDate, Cleared, Opened, Closed, ChangedViewMonth, } from './index.js';
2
- export type { InitConfig, ViewConfig } from './index.js';
1
+ export { init, update, view, open, close, selectDate, clear, reflectSelectedDate, reflectMinDate, reflectMaxDate, reflectDisabledDates, reflectDisabledDaysOfWeek, Model, Message, OutMessage, GotCalendarMessage, GotPopoverMessage, RequestedSelectDate, SelectedDate, Cleared, Opened, Closed, ChangedViewMonth, } from './index.js';
2
+ export type { InitConfig, ViewInputs } from './index.js';
3
3
  //# sourceMappingURL=public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/datePicker/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,EACL,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/datePicker/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,EACL,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
@@ -1 +1 @@
1
- export { init, update, view, lazy, open, close, selectDate, clear, setMinDate, setMaxDate, setDisabledDates, setDisabledDaysOfWeek, Model, Message, OutMessage, GotCalendarMessage, GotPopoverMessage, SelectedDate, Cleared, Opened, Closed, ChangedViewMonth, } from './index.js';
1
+ export { init, update, view, open, close, selectDate, clear, reflectSelectedDate, reflectMinDate, reflectMaxDate, reflectDisabledDates, reflectDisabledDaysOfWeek, Model, Message, OutMessage, GotCalendarMessage, GotPopoverMessage, RequestedSelectDate, SelectedDate, Cleared, Opened, Closed, ChangedViewMonth, } from './index.js';
@@ -1,6 +1,6 @@
1
- import { Effect, Schema as S } from 'effect';
1
+ import { Effect, Option, Schema as S } from 'effect';
2
2
  import * as Command from '../../command/index.js';
3
- import { type Attribute, type Html } from '../../html/index.js';
3
+ import { type ChildAttribute, type Html } from '../../html/index.js';
4
4
  /** Schema for the dialog component's state, tracking its unique ID, open/closed status, animation support, and animation lifecycle phase. */
5
5
  export declare const Model: S.Struct<{
6
6
  readonly id: S.String;
@@ -15,12 +15,12 @@ export declare const Model: S.Struct<{
15
15
  }>;
16
16
  export type Model = typeof Model.Type;
17
17
  /** Sent when the dialog should open. Triggers the showModal command. */
18
- export declare const Opened: import("../../schema/index.js").CallableTaggedStruct<"Opened", {}>;
19
- /** Sent when the dialog should close (Escape key, backdrop click, or programmatic). Triggers the closeModal command. */
20
- export declare const Closed: import("../../schema/index.js").CallableTaggedStruct<"Closed", {}>;
21
- /** Sent when the show-dialog command completes (scroll lock + showModal). */
18
+ export declare const RequestedOpen: import("../../schema/index.js").CallableTaggedStruct<"RequestedOpen", {}>;
19
+ /** Sent when the dialog should close (Escape key, backdrop click, or programmatic). */
20
+ export declare const RequestedClose: import("../../schema/index.js").CallableTaggedStruct<"RequestedClose", {}>;
21
+ /** Sent when the show-dialog command completes. */
22
22
  export declare const CompletedShowDialog: import("../../schema/index.js").CallableTaggedStruct<"CompletedShowDialog", {}>;
23
- /** Sent when the close-dialog command completes (closeModal + scroll unlock). */
23
+ /** Sent when the close-dialog command completes. */
24
24
  export declare const CompletedCloseDialog: import("../../schema/index.js").CallableTaggedStruct<"CompletedCloseDialog", {}>;
25
25
  /** Wraps an Animation submodel message for delegation. */
26
26
  export declare const GotAnimationMessage: import("../../schema/index.js").CallableTaggedStruct<"GotAnimationMessage", {
@@ -28,18 +28,33 @@ export declare const GotAnimationMessage: import("../../schema/index.js").Callab
28
28
  }>;
29
29
  /** Union of all messages the dialog component can produce. */
30
30
  export declare const Message: S.Union<[
31
- typeof Opened,
32
- typeof Closed,
31
+ typeof RequestedOpen,
32
+ typeof RequestedClose,
33
33
  typeof CompletedShowDialog,
34
34
  typeof CompletedCloseDialog,
35
35
  typeof GotAnimationMessage
36
36
  ]>;
37
- export type Opened = typeof Opened.Type;
38
- export type Closed = typeof Closed.Type;
37
+ export type RequestedOpen = typeof RequestedOpen.Type;
38
+ export type RequestedClose = typeof RequestedClose.Type;
39
39
  export type CompletedShowDialog = typeof CompletedShowDialog.Type;
40
40
  export type CompletedCloseDialog = typeof CompletedCloseDialog.Type;
41
41
  export type Message = typeof Message.Type;
42
- /** Configuration for creating a dialog model with `init`. `isAnimated` enables animation coordination (default `false`). */
42
+ /** Sent once the dialog has transitioned to open. Fires after `update`
43
+ * has processed `RequestedOpen` and `isOpen` reflects the new state.
44
+ * Programmatic `Dialog.open` on an already-open model is a no-op that
45
+ * does not re-emit. */
46
+ export declare const Opened: import("../../schema/index.js").CallableTaggedStruct<"Opened", {}>;
47
+ /** Sent once the dialog has transitioned to closed. Programmatic
48
+ * `Dialog.close` on an already-closed model is a no-op that does not
49
+ * re-emit; calling close while a leave animation is in progress is
50
+ * also a no-op. */
51
+ export declare const Closed: import("../../schema/index.js").CallableTaggedStruct<"Closed", {}>;
52
+ /** Union of out-messages the dialog component can produce. */
53
+ export declare const OutMessage: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"Opened", {}>, import("../../schema/index.js").CallableTaggedStruct<"Closed", {}>]>;
54
+ export type Opened = typeof Opened.Type;
55
+ export type Closed = typeof Closed.Type;
56
+ export type OutMessage = typeof OutMessage.Type;
57
+ /** Configuration for creating a dialog model with `init`. */
43
58
  export type InitConfig = Readonly<{
44
59
  id: string;
45
60
  isOpen?: boolean;
@@ -48,7 +63,11 @@ export type InitConfig = Readonly<{
48
63
  }>;
49
64
  /** Creates an initial dialog model from a config. Defaults to closed and non-animated. */
50
65
  export declare const init: (config: InitConfig) => Model;
51
- type UpdateReturn = readonly [Model, ReadonlyArray<Command.Command<Message>>];
66
+ type UpdateReturn = readonly [
67
+ Model,
68
+ ReadonlyArray<Command.Command<Message>>,
69
+ Option.Option<OutMessage>
70
+ ];
52
71
  /** Locks page scroll and calls `showModal()` on the native dialog element. */
53
72
  export declare const ShowDialog: Command.CommandDefinitionWithArgs<"ShowDialog", {
54
73
  id: S.String;
@@ -64,36 +83,73 @@ export declare const CloseDialog: Command.CommandDefinitionWithArgs<"CloseDialog
64
83
  }, never, never>>;
65
84
  /** Processes a dialog message and returns the next model and commands. */
66
85
  export declare const update: (model: Model, message: Message) => UpdateReturn;
86
+ /** Programmatically opens the dialog. */
87
+ export declare const open: (model: Model) => UpdateReturn;
88
+ /** Programmatically closes the dialog. */
89
+ export declare const close: (model: Model) => UpdateReturn;
67
90
  /** Returns the ID used for `aria-labelledby` on the dialog. Apply this to your title element. */
68
91
  export declare const titleId: (model: Model) => string;
69
92
  /** Returns the ID used for `aria-describedby` on the dialog. Apply this to your description element. */
70
93
  export declare const descriptionId: (model: Model) => string;
71
- /** Configuration for rendering a dialog with `view`. */
72
- export type ViewConfig<ParentMessage> = Readonly<{
73
- model: Model;
74
- toParentMessage: (message: Closed | CompletedShowDialog | CompletedCloseDialog) => ParentMessage;
75
- onClosed?: () => ParentMessage;
76
- panelContent: Html;
77
- panelClassName?: string;
78
- panelAttributes?: ReadonlyArray<Attribute<ParentMessage>>;
79
- backdropClassName?: string;
80
- backdropAttributes?: ReadonlyArray<Attribute<ParentMessage>>;
81
- className?: string;
82
- attributes?: ReadonlyArray<Attribute<ParentMessage>>;
94
+ /** Render-time payload published to the consumer's `toView`.
95
+ *
96
+ * - `dialog`: attributes for the native `<dialog>` element. Carries
97
+ * the id, ARIA labelling, `open` prop, positioning style, and the
98
+ * `OnCancel` handler that wires Escape to `RequestedClose`. The
99
+ * consumer MUST render an `h.dialog(...)` element so the framework's
100
+ * `showModal`/`close()` commands can target it.
101
+ * - `backdrop`: attributes for the backdrop element. Includes the
102
+ * Animation data attributes and the `OnClick` handler that closes
103
+ * the dialog on outside-click (suppressed while a leave animation
104
+ * is in progress).
105
+ * - `panel`: attributes for the panel element. Includes the panel id
106
+ * (`${model.id}-panel`) and the Animation data attributes.
107
+ * - `isVisible`: derived from `isOpen` and the Animation
108
+ * `transitionState`. The consumer renders backdrop + panel only
109
+ * while this is true. */
110
+ export type RenderInfo = Readonly<{
111
+ dialog: ReadonlyArray<ChildAttribute>;
112
+ backdrop: ReadonlyArray<ChildAttribute>;
113
+ panel: ReadonlyArray<ChildAttribute>;
114
+ isVisible: boolean;
115
+ }>;
116
+ /** Per-render view inputs passed to `view` via `h.submodel`'s `viewInputs` field. */
117
+ export type ViewInputs = Readonly<{
118
+ toView: (render: RenderInfo) => Html;
83
119
  }>;
84
- /** Programmatically opens the dialog, updating the model and returning
85
- * show commands. Use this in domain-event handlers to open the dialog. */
86
- export declare const open: (model: Model) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
87
- /** Programmatically closes the dialog, updating the model and returning
88
- * close commands. Use this in domain-event handlers when the dialog uses `onClosed`. */
89
- export declare const close: (model: Model) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
90
- /** Renders a headless dialog component backed by the native `<dialog>` element with `showModal()`. */
91
- export declare const view: <ParentMessage>(config: ViewConfig<ParentMessage>) => Html;
92
- /** Creates a memoized dialog view. Static config (className, panelClassName,
93
- * etc.) is captured in a closure. Dynamic fields `model`, `toParentMessage`,
94
- * and `panelContent` — are compared by reference per render via `createLazy`.
95
- * When any of them change, the view re-renders; otherwise the cached VNode is
96
- * reused and snabbdom skips the entire subtree. */
97
- export declare const lazy: <ParentMessage>(staticConfig: Omit<ViewConfig<ParentMessage>, "model" | "toParentMessage" | "onClosed" | "panelContent">) => ((model: Model, toParentMessage: ViewConfig<ParentMessage>["toParentMessage"], panelContent: Html) => Html);
120
+ /** Renders a headless dialog component backed by the native `<dialog>`
121
+ * element with `showModal()`. */
122
+ export declare const view: import("../../html/submodel.js").SubmodelView<{
123
+ readonly id: string;
124
+ readonly isOpen: boolean;
125
+ readonly isAnimated: boolean;
126
+ readonly animation: {
127
+ readonly id: string;
128
+ readonly isShowing: boolean;
129
+ readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
130
+ };
131
+ readonly maybeFocusSelector: Option.Option<string>;
132
+ }, {
133
+ readonly _tag: "RequestedOpen";
134
+ } | {
135
+ readonly _tag: "RequestedClose";
136
+ } | {
137
+ readonly _tag: "CompletedShowDialog";
138
+ } | {
139
+ readonly _tag: "CompletedCloseDialog";
140
+ } | {
141
+ readonly _tag: "GotAnimationMessage";
142
+ readonly message: {
143
+ readonly _tag: "Showed";
144
+ } | {
145
+ readonly _tag: "Hid";
146
+ } | {
147
+ readonly _tag: "AdvancedAnimationFrame";
148
+ } | {
149
+ readonly _tag: "EndedAnimation";
150
+ };
151
+ }, Readonly<{
152
+ toView: (render: RenderInfo) => Html;
153
+ }>>;
98
154
  export {};
99
155
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dialog/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dialog/index.ts"],"names":[],"mappings":"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"}