@sectile/vue 0.18.2 → 0.19.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 (297) hide show
  1. package/README.md +53 -14
  2. package/dist/accordion.js +1 -1
  3. package/dist/accordion.js.map +1 -1
  4. package/dist/carousel.d.ts +20 -0
  5. package/dist/carousel.js +1 -1
  6. package/dist/carousel.js.map +1 -1
  7. package/dist/cascade-list.js +1 -1
  8. package/dist/cascade-list.js.map +1 -1
  9. package/dist/cascade-select.js +1 -1
  10. package/dist/cascade-select.js.map +1 -1
  11. package/dist/chart.js +1 -1
  12. package/dist/chart.js.map +1 -1
  13. package/dist/checkbox-group.js +1 -1
  14. package/dist/checkbox-group.js.map +1 -1
  15. package/dist/checkbox-tree.d.ts +102 -0
  16. package/dist/checkbox-tree.js +2 -0
  17. package/dist/checkbox-tree.js.map +1 -0
  18. package/dist/checkbox.js +1 -1
  19. package/dist/checkbox.js.map +1 -1
  20. package/dist/color-picker.d.ts +24 -0
  21. package/dist/color-picker.js +1 -1
  22. package/dist/color-picker.js.map +1 -1
  23. package/dist/combobox.d.ts +47 -1
  24. package/dist/combobox.js +1 -1
  25. package/dist/combobox.js.map +1 -1
  26. package/dist/component-handle.d.ts +8 -0
  27. package/dist/component-handle.js +2 -0
  28. package/dist/component-handle.js.map +1 -0
  29. package/dist/context-menu.d.ts +1 -0
  30. package/dist/context-menu.js +2 -0
  31. package/dist/context-menu.js.map +1 -0
  32. package/dist/drag-drop.d.ts +23 -0
  33. package/dist/drag-drop.js +2 -0
  34. package/dist/drag-drop.js.map +1 -0
  35. package/dist/editable.d.ts +3 -0
  36. package/dist/editable.js +1 -1
  37. package/dist/editable.js.map +1 -1
  38. package/dist/form/context.d.ts +3 -0
  39. package/dist/form/context.js +1 -1
  40. package/dist/form/context.js.map +1 -1
  41. package/dist/form/contracts.d.ts +1 -0
  42. package/dist/form/control-inventory.d.ts +20 -0
  43. package/dist/form/control-inventory.js +1 -1
  44. package/dist/form/control-inventory.js.map +1 -1
  45. package/dist/form/control.d.ts +44 -1
  46. package/dist/form/control.js +1 -1
  47. package/dist/form/control.js.map +1 -1
  48. package/dist/form/field.d.ts +10 -0
  49. package/dist/form/field.js +1 -1
  50. package/dist/form/field.js.map +1 -1
  51. package/dist/form/file-input.d.ts +229 -0
  52. package/dist/form/file-input.js +2 -0
  53. package/dist/form/file-input.js.map +1 -0
  54. package/dist/form/file-upload/group.d.ts +28 -0
  55. package/dist/form/file-upload/group.js +2 -0
  56. package/dist/form/file-upload/group.js.map +1 -0
  57. package/dist/form/file-upload.d.ts +26 -0
  58. package/dist/form/file-upload.js +2 -0
  59. package/dist/form/file-upload.js.map +1 -0
  60. package/dist/form/root.js +1 -1
  61. package/dist/form/root.js.map +1 -1
  62. package/dist/form-boundary.d.ts +2 -0
  63. package/dist/form-boundary.js +2 -0
  64. package/dist/form-boundary.js.map +1 -0
  65. package/dist/fullscreen.d.ts +16 -0
  66. package/dist/fullscreen.js +2 -0
  67. package/dist/fullscreen.js.map +1 -0
  68. package/dist/host-provider.d.ts +99 -1
  69. package/dist/host-provider.js +1 -1
  70. package/dist/host-provider.js.map +1 -1
  71. package/dist/image.d.ts +24 -0
  72. package/dist/image.js +2 -0
  73. package/dist/image.js.map +1 -0
  74. package/dist/index.d.ts +6 -5
  75. package/dist/index.js +1 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/input/native-field.d.ts +25 -6
  78. package/dist/input/native-field.js +1 -1
  79. package/dist/input/native-field.js.map +1 -1
  80. package/dist/input/native-range-field.d.ts +95 -0
  81. package/dist/input/native-range-field.js +2 -0
  82. package/dist/input/native-range-field.js.map +1 -0
  83. package/dist/internal/cascade-choice.js +1 -1
  84. package/dist/internal/cascade-choice.js.map +1 -1
  85. package/dist/internal/connection-lifetime.d.ts +10 -0
  86. package/dist/internal/connection-lifetime.js +2 -0
  87. package/dist/internal/connection-lifetime.js.map +1 -0
  88. package/dist/internal/controlled-state.js +1 -1
  89. package/dist/internal/controlled-state.js.map +1 -1
  90. package/dist/internal/popup-presentation.d.ts +32 -0
  91. package/dist/internal/popup-presentation.js +2 -0
  92. package/dist/internal/popup-presentation.js.map +1 -0
  93. package/dist/internal/portal-move.d.ts +11 -0
  94. package/dist/internal/portal-move.js +2 -0
  95. package/dist/internal/portal-move.js.map +1 -0
  96. package/dist/internal/scheduled-task.js +1 -1
  97. package/dist/internal/scheduled-task.js.map +1 -1
  98. package/dist/internal/tabs-context.d.ts +11 -0
  99. package/dist/internal/tabs-context.js +1 -1
  100. package/dist/internal/tabs-context.js.map +1 -1
  101. package/dist/internal/tree-parts.d.ts +142 -0
  102. package/dist/internal/tree-parts.js +2 -0
  103. package/dist/internal/tree-parts.js.map +1 -0
  104. package/dist/listbox.d.ts +11 -0
  105. package/dist/listbox.js +1 -1
  106. package/dist/listbox.js.map +1 -1
  107. package/dist/media-gesture.d.ts +20 -0
  108. package/dist/media-gesture.js +2 -0
  109. package/dist/media-gesture.js.map +1 -0
  110. package/dist/menu.d.ts +239 -0
  111. package/dist/menu.js +1 -1
  112. package/dist/menu.js.map +1 -1
  113. package/dist/meter-group.js +1 -1
  114. package/dist/meter-group.js.map +1 -1
  115. package/dist/multi-thumb-slider.js +1 -1
  116. package/dist/multi-thumb-slider.js.map +1 -1
  117. package/dist/overlay/dialog.d.ts +1 -0
  118. package/dist/overlay/dialog.js.map +1 -1
  119. package/dist/overlay/drawer.d.ts +33 -4
  120. package/dist/overlay/drawer.js +1 -1
  121. package/dist/overlay/drawer.js.map +1 -1
  122. package/dist/overlay/popover.d.ts +2 -1
  123. package/dist/overlay/popover.js.map +1 -1
  124. package/dist/overlay/popup.d.ts +46 -2
  125. package/dist/overlay/popup.js +1 -1
  126. package/dist/overlay/popup.js.map +1 -1
  127. package/dist/overlay/tooltip.d.ts +37 -3
  128. package/dist/overlay/tooltip.js +1 -1
  129. package/dist/overlay/tooltip.js.map +1 -1
  130. package/dist/pagination.js +1 -1
  131. package/dist/pagination.js.map +1 -1
  132. package/dist/pin-input.js +1 -1
  133. package/dist/pin-input.js.map +1 -1
  134. package/dist/presence/presence.d.ts +1 -1
  135. package/dist/presence/presence.js +1 -1
  136. package/dist/presence/presence.js.map +1 -1
  137. package/dist/primitive.d.ts +37 -3
  138. package/dist/primitive.js +1 -1
  139. package/dist/primitive.js.map +1 -1
  140. package/dist/quantity-field.js +1 -1
  141. package/dist/quantity-field.js.map +1 -1
  142. package/dist/radio-group.js +1 -1
  143. package/dist/radio-group.js.map +1 -1
  144. package/dist/rating.js +1 -1
  145. package/dist/rating.js.map +1 -1
  146. package/dist/reorder.d.ts +156 -77
  147. package/dist/reorder.js +1 -1
  148. package/dist/reorder.js.map +1 -1
  149. package/dist/select.d.ts +21 -0
  150. package/dist/select.js +1 -1
  151. package/dist/select.js.map +1 -1
  152. package/dist/slider.js +1 -1
  153. package/dist/slider.js.map +1 -1
  154. package/dist/spin-button.d.ts +19 -0
  155. package/dist/spin-button.js +1 -1
  156. package/dist/spin-button.js.map +1 -1
  157. package/dist/stepper.js +1 -1
  158. package/dist/stepper.js.map +1 -1
  159. package/dist/switch.js +1 -1
  160. package/dist/switch.js.map +1 -1
  161. package/dist/tabs.d.ts +2 -0
  162. package/dist/tabs.js +1 -1
  163. package/dist/tabs.js.map +1 -1
  164. package/dist/tabular/components.d.ts +5 -0
  165. package/dist/tabular/components.js.map +1 -1
  166. package/dist/tabular/controller.d.ts +1 -0
  167. package/dist/tabular/controller.js +1 -1
  168. package/dist/tabular/controller.js.map +1 -1
  169. package/dist/tabular/data-grid.d.ts +4 -4
  170. package/dist/tabular/data-grid.js +1 -1
  171. package/dist/tabular/data-grid.js.map +1 -1
  172. package/dist/tabular/data-table.d.ts +4 -4
  173. package/dist/tabular/data-table.js +1 -1
  174. package/dist/tabular/data-table.js.map +1 -1
  175. package/dist/tabular/data-tree-grid.d.ts +4 -4
  176. package/dist/tabular/data-tree-grid.js +1 -1
  177. package/dist/tabular/data-tree-grid.js.map +1 -1
  178. package/dist/tabular/parts.d.ts +11 -1
  179. package/dist/tabular/parts.js +1 -1
  180. package/dist/tabular/parts.js.map +1 -1
  181. package/dist/tabular/source.js +1 -1
  182. package/dist/tabular/source.js.map +1 -1
  183. package/dist/tags-input.d.ts +12 -1
  184. package/dist/tags-input.js +1 -1
  185. package/dist/tags-input.js.map +1 -1
  186. package/dist/temporal/calendar.d.ts +27 -123
  187. package/dist/temporal/calendar.js +1 -1
  188. package/dist/temporal/calendar.js.map +1 -1
  189. package/dist/temporal/capabilities/date-picker.js +1 -1
  190. package/dist/temporal/capabilities/date-picker.js.map +1 -1
  191. package/dist/temporal/capabilities/date-time-picker.js +1 -1
  192. package/dist/temporal/capabilities/date-time-picker.js.map +1 -1
  193. package/dist/temporal/capabilities/date-time-range-picker.js +1 -1
  194. package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -1
  195. package/dist/temporal/capability.d.ts +13 -1
  196. package/dist/temporal/capability.js.map +1 -1
  197. package/dist/temporal/date-field.d.ts +1 -1
  198. package/dist/temporal/date-field.js +1 -1
  199. package/dist/temporal/date-field.js.map +1 -1
  200. package/dist/temporal/date-picker.d.ts +16 -14
  201. package/dist/temporal/date-picker.js +1 -1
  202. package/dist/temporal/date-picker.js.map +1 -1
  203. package/dist/temporal/date-range-field.d.ts +21 -1
  204. package/dist/temporal/date-range-field.js +1 -1
  205. package/dist/temporal/date-range-field.js.map +1 -1
  206. package/dist/temporal/date-range-picker.d.ts +16 -14
  207. package/dist/temporal/date-range-picker.js +1 -1
  208. package/dist/temporal/date-range-picker.js.map +1 -1
  209. package/dist/temporal/date-time-field.d.ts +4 -1
  210. package/dist/temporal/date-time-field.js +1 -1
  211. package/dist/temporal/date-time-field.js.map +1 -1
  212. package/dist/temporal/date-time-picker.d.ts +16 -14
  213. package/dist/temporal/date-time-picker.js +1 -1
  214. package/dist/temporal/date-time-picker.js.map +1 -1
  215. package/dist/temporal/date-time-range-field.d.ts +158 -0
  216. package/dist/temporal/date-time-range-field.js +2 -0
  217. package/dist/temporal/date-time-range-field.js.map +1 -0
  218. package/dist/temporal/date-time-range-picker.d.ts +16 -14
  219. package/dist/temporal/date-time-range-picker.js +1 -1
  220. package/dist/temporal/date-time-range-picker.js.map +1 -1
  221. package/dist/temporal/internal/time-presentation.d.ts +15 -0
  222. package/dist/temporal/internal/time-presentation.js +2 -0
  223. package/dist/temporal/internal/time-presentation.js.map +1 -0
  224. package/dist/temporal/month-picker.d.ts +9 -7
  225. package/dist/temporal/month-picker.js +1 -1
  226. package/dist/temporal/month-picker.js.map +1 -1
  227. package/dist/temporal/month-range-picker.d.ts +9 -7
  228. package/dist/temporal/month-range-picker.js +1 -1
  229. package/dist/temporal/month-range-picker.js.map +1 -1
  230. package/dist/temporal/picker.d.ts +24 -3
  231. package/dist/temporal/picker.js +1 -1
  232. package/dist/temporal/picker.js.map +1 -1
  233. package/dist/temporal/range-calendar.d.ts +125 -8
  234. package/dist/temporal/range-calendar.js +1 -1
  235. package/dist/temporal/range-calendar.js.map +1 -1
  236. package/dist/temporal/temporal-provider.d.ts +23 -0
  237. package/dist/temporal/temporal-provider.js +1 -1
  238. package/dist/temporal/temporal-provider.js.map +1 -1
  239. package/dist/temporal/time-field.d.ts +4 -1
  240. package/dist/temporal/time-field.js +1 -1
  241. package/dist/temporal/time-field.js.map +1 -1
  242. package/dist/temporal/time-picker.d.ts +112 -0
  243. package/dist/temporal/time-picker.js +2 -0
  244. package/dist/temporal/time-picker.js.map +1 -0
  245. package/dist/temporal/time-range-field.d.ts +33 -2
  246. package/dist/temporal/time-range-field.js +1 -1
  247. package/dist/temporal/time-range-field.js.map +1 -1
  248. package/dist/temporal/year-picker.d.ts +9 -7
  249. package/dist/temporal/year-picker.js +1 -1
  250. package/dist/temporal/year-picker.js.map +1 -1
  251. package/dist/temporal/year-range-picker.d.ts +9 -7
  252. package/dist/temporal/year-range-picker.js +1 -1
  253. package/dist/temporal/year-range-picker.js.map +1 -1
  254. package/dist/text.d.ts +43 -1
  255. package/dist/text.js +1 -1
  256. package/dist/text.js.map +1 -1
  257. package/dist/timer.d.ts +16 -5
  258. package/dist/timer.js +1 -1
  259. package/dist/timer.js.map +1 -1
  260. package/dist/toast.js +1 -1
  261. package/dist/toast.js.map +1 -1
  262. package/dist/toggle-group.js +1 -1
  263. package/dist/toggle-group.js.map +1 -1
  264. package/dist/toolbar.js +1 -1
  265. package/dist/toolbar.js.map +1 -1
  266. package/dist/transfer.d.ts +191 -0
  267. package/dist/transfer.js +2 -0
  268. package/dist/transfer.js.map +1 -0
  269. package/dist/tree-grid.d.ts +122 -0
  270. package/dist/tree-grid.js +1 -1
  271. package/dist/tree-grid.js.map +1 -1
  272. package/dist/tree-select.d.ts +186 -0
  273. package/dist/tree-select.js +2 -0
  274. package/dist/tree-select.js.map +1 -0
  275. package/dist/tree-view.js +1 -1
  276. package/dist/tree-view.js.map +1 -1
  277. package/dist/virtual/virtual-collection.d.ts +3 -0
  278. package/dist/virtual/virtual-collection.js +1 -1
  279. package/dist/virtual/virtual-collection.js.map +1 -1
  280. package/dist/virtual/virtual-core.d.ts +1 -0
  281. package/dist/virtual/virtual-core.js +1 -1
  282. package/dist/virtual/virtual-core.js.map +1 -1
  283. package/dist/virtual/virtual-grid.d.ts +12 -2
  284. package/dist/virtual/virtual-grid.js +1 -1
  285. package/dist/virtual/virtual-grid.js.map +1 -1
  286. package/dist/virtual/virtual-list.d.ts +12 -3
  287. package/dist/virtual/virtual-list.js +1 -1
  288. package/dist/virtual/virtual-list.js.map +1 -1
  289. package/dist/virtual/virtual-masonry.d.ts +12 -2
  290. package/dist/virtual/virtual-masonry.js +1 -1
  291. package/dist/virtual/virtual-masonry.js.map +1 -1
  292. package/dist/virtual/virtual-spatial.d.ts +12 -2
  293. package/dist/virtual/virtual-spatial.js +1 -1
  294. package/dist/virtual/virtual-spatial.js.map +1 -1
  295. package/dist/window-splitter.js +1 -1
  296. package/dist/window-splitter.js.map +1 -1
  297. package/package.json +86 -16
@@ -1,6 +1,7 @@
1
1
  import type { DatePickerOptions } from '@sectile/dom/temporal/date-picker';
2
2
  import type { DateValue } from '@sectile/dom/temporal/date-field';
3
- import { type PickerPartProps, type PickerPortalProps, type PickerPositionProps, type PickerRootSlotProps, type PickerYearCellSlotProps } from './picker.js';
3
+ import { type PickerRootPartComponent, type PickerPartProps, type PickerPortalProps, type PickerPositionProps, type PickerRootSlotProps, type PickerYearCellSlotProps } from './picker.js';
4
+ import type { PickerContentPartComponent, PickerContentSlotProps } from './picker.js';
4
5
  export interface YearPickerRootProps extends PickerPartProps, PickerPositionProps {
5
6
  readonly modelValue?: DateValue | null;
6
7
  readonly defaultValue?: DateValue | null;
@@ -18,11 +19,12 @@ export interface YearPickerRootProps extends PickerPartProps, PickerPositionProp
18
19
  }
19
20
  export declare const YearPickerRoot: import("./picker.js").PickerRootComponent<"date">;
20
21
  export type YearPickerRootSlotProps = PickerRootSlotProps<DateValue | null>;
22
+ export type YearPickerContentSlotProps = PickerContentSlotProps<DateValue | null>;
21
23
  export type YearPickerValueChangeHandler = NonNullable<InstanceType<typeof YearPickerRoot>['$props']['onUpdate:modelValue']>;
22
24
  export type YearPickerOpenChangeHandler = NonNullable<InstanceType<typeof YearPickerRoot>['$props']['onUpdate:open']>;
23
25
  export type YearPickerHighlightedValueChangeHandler = NonNullable<InstanceType<typeof YearPickerRoot>['$props']['onUpdate:highlightedValue']>;
24
- export declare const YearPickerTrigger: import("./picker.js").PickerRootPartComponent<"date">;
25
- export declare const YearPickerAnchor: import("./picker.js").PickerRootPartComponent<"date">;
26
+ export declare const YearPickerTrigger: PickerRootPartComponent<'date'>;
27
+ export declare const YearPickerAnchor: PickerRootPartComponent<'date'>;
26
28
  export declare const YearPickerPortal: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
27
29
  to: {
28
30
  type: import("vue").PropType<string | HTMLElement>;
@@ -54,8 +56,8 @@ export declare const YearPickerPortal: import("vue").DefineComponent<import("vue
54
56
  disabled: boolean;
55
57
  defer: boolean;
56
58
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
57
- export declare const YearPickerContent: import("./picker.js").PickerRootPartComponent<"date">;
58
- export declare const YearPickerGrid: import("./picker.js").PickerRootPartComponent<"date">;
59
+ export declare const YearPickerContent: PickerContentPartComponent<'date'>;
60
+ export declare const YearPickerGrid: PickerRootPartComponent<'date'>;
59
61
  export declare const YearPickerCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
60
62
  value: {
61
63
  type: import("vue").PropType<import("./picker.js").PickerYearValue>;
@@ -128,7 +130,7 @@ export declare const YearPickerInput: import("vue").DefineComponent<import("vue"
128
130
  as: import("../primitive.js").PrimitiveAs;
129
131
  asChild: boolean;
130
132
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
131
- export declare const YearPickerPreviousPage: import("./picker.js").PickerRootPartComponent<"date">;
132
- export declare const YearPickerNextPage: import("./picker.js").PickerRootPartComponent<"date">;
133
+ export declare const YearPickerPreviousPage: PickerRootPartComponent<'date'>;
134
+ export declare const YearPickerNextPage: PickerRootPartComponent<'date'>;
133
135
  export type { YearPickerValue } from '@sectile/temporal/year-picker';
134
136
  export type { PickerPartProps as YearPickerPartProps, PickerPortalProps as YearPickerPortalProps, PickerYearCellSlotProps as YearPickerCellSlotProps, };
@@ -1,2 +1,2 @@
1
- import{PickerAnchor,PickerContent,PickerGrid,PickerPortal,PickerTrigger,createPickerInput,createPickerMove,createPickerYearCell,specializePickerRootPart,createPickerRoot}from'./picker.js';import{yearPickerCapability}from'./capabilities/year-picker.js';export const YearPickerRoot=createPickerRoot(yearPickerCapability,'SectileYearPickerRoot',{scope:'year-picker',granularity:'year',defaultView:'year'});export const YearPickerTrigger=specializePickerRootPart('date',PickerTrigger);export const YearPickerAnchor=specializePickerRootPart('date',PickerAnchor);export const YearPickerPortal=PickerPortal;export const YearPickerContent=/* @__PURE__ */specializePickerRootPart('date',PickerContent);export const YearPickerGrid=specializePickerRootPart('date',PickerGrid);export const YearPickerCell=createPickerYearCell('cell','SectileYearPickerCell');export const YearPickerInput=createPickerInput('input','SectileYearPickerInput');export const YearPickerPreviousPage=specializePickerRootPart('date',createPickerMove('year',-1,'SectileYearPickerPreviousPage','previous-page'));export const YearPickerNextPage=specializePickerRootPart('date',createPickerMove('year',1,'SectileYearPickerNextPage','next-page'));
1
+ import{PickerAnchor,PickerContent,PickerGrid,PickerPortal,PickerTrigger,createPickerInput,createPickerMove,createPickerYearCell,createPickerRoot}from'./picker.js';import{yearPickerCapability}from'./capabilities/year-picker.js';export const YearPickerRoot=/* @__PURE__ */createPickerRoot(yearPickerCapability,'SectileYearPickerRoot',{scope:'year-picker',granularity:'year',defaultView:'year'});export const YearPickerTrigger=PickerTrigger;export const YearPickerAnchor=PickerAnchor;export const YearPickerPortal=PickerPortal;export const YearPickerContent=PickerContent;export const YearPickerGrid=PickerGrid;export const YearPickerCell=/* @__PURE__ */createPickerYearCell('cell','SectileYearPickerCell');export const YearPickerInput=/* @__PURE__ */createPickerInput('input','SectileYearPickerInput');export const YearPickerPreviousPage=/* @__PURE__ */createPickerMove('year',-1,'SectileYearPickerPreviousPage','previous-page');export const YearPickerNextPage=/* @__PURE__ */createPickerMove('year',1,'SectileYearPickerNextPage','next-page');
2
2
  //# sourceMappingURL=year-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"year-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","specializePickerRootPart","createPickerRoot","yearPickerCapability","YearPickerRoot","scope","granularity","defaultView","YearPickerTrigger","YearPickerAnchor","YearPickerPortal","YearPickerContent","YearPickerGrid","YearPickerCell","YearPickerInput","YearPickerPreviousPage","YearPickerNextPage"],"sources":["../../src/temporal/year-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAAsBC,yBACjIC,qBACK,qBACEC,yBAA4B,uCAiB9B,MAAMC,eAAiBF,iBAAiBC,qBAAsB,wBAAyB,CAAEE,MAAO,cAAeC,YAAa,OAAQC,YAAa,gBAKjJ,MAAMC,kBAAoBP,yBAAyB,OAAQJ,sBAC3D,MAAMY,iBAAmBR,yBAAyB,OAAQR,qBAC1D,MAAMiB,iBAAmBd,oBACzB,MAAMe,iCAAoCV,yBAAyB,OAAQP,sBAC3E,MAAMkB,eAAiBX,yBAAyB,OAAQN,mBACxD,MAAMkB,eAAiBb,qBAAqB,OAAQ,gCACpD,MAAMc,gBAAkBhB,kBAAkB,QAAS,iCACnD,MAAMiB,uBAAyBd,yBAAyB,OAAQF,iBAAiB,QAAS,EAAG,gCAAiC,yBAC9H,MAAMiB,mBAAqBf,yBAAyB,OAAQF,iBAAiB,OAAQ,EAAG,4BAA6B","ignoreList":[]}
1
+ {"version":3,"file":"year-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","createPickerRoot","yearPickerCapability","YearPickerRoot","scope","granularity","defaultView","YearPickerTrigger","YearPickerAnchor","YearPickerPortal","YearPickerContent","YearPickerGrid","YearPickerCell","YearPickerInput","YearPickerPreviousPage","YearPickerNextPage"],"sources":["../../src/temporal/year-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAC3GC,qBACK,qBACEC,yBAA4B,uCAkB9B,MAAMC,8BAAiCF,iBAAiBC,qBAAsB,wBAAyB,CAAEE,MAAO,cAAeC,YAAa,OAAQC,YAAa,gBAMjK,MAAMC,kBAAoBV,qBAC1B,MAAMW,iBAAmBf,oBACzB,MAAMgB,iBAAmBb,oBACzB,MAAMc,kBAAoBhB,qBAC1B,MAAMiB,eAAiBhB,kBACvB,MAAMiB,8BAAiCZ,qBAAqB,OAAQ,gCACpE,MAAMa,+BAAkCf,kBAAkB,QAAS,iCACnE,MAAMgB,sCAAyCf,iBAAiB,QAAS,EAAG,gCAAiC,wBAC7G,MAAMgB,kCAAqChB,iBAAiB,OAAQ,EAAG,4BAA6B","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import type { DateRangePickerOptions } from '@sectile/dom/temporal/date-range-picker';
2
2
  import type { DateRange, DateValue } from '@sectile/dom/temporal/date-field';
3
- import { type PickerPartProps, type PickerPortalProps, type PickerPositionProps, type PickerRootSlotProps, type PickerYearCellSlotProps } from './picker.js';
3
+ import { type PickerRootPartComponent, type PickerPartProps, type PickerPortalProps, type PickerPositionProps, type PickerRootSlotProps, type PickerYearCellSlotProps } from './picker.js';
4
+ import type { PickerContentPartComponent, PickerContentSlotProps } from './picker.js';
4
5
  export interface YearRangePickerRootProps extends PickerPartProps, PickerPositionProps {
5
6
  readonly modelValue?: DateRange | null;
6
7
  readonly defaultValue?: DateRange | null;
@@ -18,11 +19,12 @@ export interface YearRangePickerRootProps extends PickerPartProps, PickerPositio
18
19
  }
19
20
  export declare const YearRangePickerRoot: import("./picker.js").PickerRootComponent<"date-range">;
20
21
  export type YearRangePickerRootSlotProps = PickerRootSlotProps<DateRange | null>;
22
+ export type YearRangePickerContentSlotProps = PickerContentSlotProps<DateRange | null>;
21
23
  export type YearRangePickerValueChangeHandler = NonNullable<InstanceType<typeof YearRangePickerRoot>['$props']['onUpdate:modelValue']>;
22
24
  export type YearRangePickerOpenChangeHandler = NonNullable<InstanceType<typeof YearRangePickerRoot>['$props']['onUpdate:open']>;
23
25
  export type YearRangePickerHighlightedValueChangeHandler = NonNullable<InstanceType<typeof YearRangePickerRoot>['$props']['onUpdate:highlightedValue']>;
24
- export declare const YearRangePickerTrigger: import("./picker.js").PickerRootPartComponent<"date-range">;
25
- export declare const YearRangePickerAnchor: import("./picker.js").PickerRootPartComponent<"date-range">;
26
+ export declare const YearRangePickerTrigger: PickerRootPartComponent<'date-range'>;
27
+ export declare const YearRangePickerAnchor: PickerRootPartComponent<'date-range'>;
26
28
  export declare const YearRangePickerPortal: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
27
29
  to: {
28
30
  type: import("vue").PropType<string | HTMLElement>;
@@ -54,8 +56,8 @@ export declare const YearRangePickerPortal: import("vue").DefineComponent<import
54
56
  disabled: boolean;
55
57
  defer: boolean;
56
58
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
57
- export declare const YearRangePickerContent: import("./picker.js").PickerRootPartComponent<"date-range">;
58
- export declare const YearRangePickerGrid: import("./picker.js").PickerRootPartComponent<"date-range">;
59
+ export declare const YearRangePickerContent: PickerContentPartComponent<'date-range'>;
60
+ export declare const YearRangePickerGrid: PickerRootPartComponent<'date-range'>;
59
61
  export declare const YearRangePickerCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
60
62
  value: {
61
63
  type: import("vue").PropType<import("./picker.js").PickerYearValue>;
@@ -168,8 +170,8 @@ export declare const YearRangePickerEndInput: import("vue").DefineComponent<impo
168
170
  as: import("../primitive.js").PrimitiveAs;
169
171
  asChild: boolean;
170
172
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
171
- export declare const YearRangePickerPreviousPage: import("./picker.js").PickerRootPartComponent<"date-range">;
172
- export declare const YearRangePickerNextPage: import("./picker.js").PickerRootPartComponent<"date-range">;
173
+ export declare const YearRangePickerPreviousPage: PickerRootPartComponent<'date-range'>;
174
+ export declare const YearRangePickerNextPage: PickerRootPartComponent<'date-range'>;
173
175
  export type { YearRangePickerValue } from '@sectile/temporal/year-range-picker';
174
176
  export type { YearPickerValue } from '@sectile/temporal/year-picker';
175
177
  export type { PickerPartProps as YearRangePickerPartProps, PickerPortalProps as YearRangePickerPortalProps, PickerYearCellSlotProps as YearRangePickerCellSlotProps, };
@@ -1,2 +1,2 @@
1
- import{PickerAnchor,PickerContent,PickerGrid,PickerPortal,PickerTrigger,createPickerInput,createPickerMove,createPickerYearCell,specializePickerRootPart,createPickerRoot}from'./picker.js';import{yearRangePickerCapability}from'./capabilities/year-range-picker.js';export const YearRangePickerRoot=createPickerRoot(yearRangePickerCapability,'SectileYearRangePickerRoot',{scope:'year-range-picker',granularity:'year',defaultView:'year'});export const YearRangePickerTrigger=specializePickerRootPart('date-range',PickerTrigger);export const YearRangePickerAnchor=specializePickerRootPart('date-range',PickerAnchor);export const YearRangePickerPortal=PickerPortal;export const YearRangePickerContent=/* @__PURE__ */specializePickerRootPart('date-range',PickerContent);export const YearRangePickerGrid=specializePickerRootPart('date-range',PickerGrid);export const YearRangePickerCell=createPickerYearCell('cell','SectileYearRangePickerCell');export const YearRangePickerStartInput=createPickerInput('start-input','SectileYearRangePickerStartInput');export const YearRangePickerEndInput=createPickerInput('end-input','SectileYearRangePickerEndInput');export const YearRangePickerPreviousPage=specializePickerRootPart('date-range',createPickerMove('year',-1,'SectileYearRangePickerPreviousPage','previous-page'));export const YearRangePickerNextPage=specializePickerRootPart('date-range',createPickerMove('year',1,'SectileYearRangePickerNextPage','next-page'));
1
+ import{PickerAnchor,PickerContent,PickerGrid,PickerPortal,PickerTrigger,createPickerInput,createPickerMove,createPickerYearCell,createPickerRoot}from'./picker.js';import{yearRangePickerCapability}from'./capabilities/year-range-picker.js';export const YearRangePickerRoot=/* @__PURE__ */createPickerRoot(yearRangePickerCapability,'SectileYearRangePickerRoot',{scope:'year-range-picker',granularity:'year',defaultView:'year'});export const YearRangePickerTrigger=PickerTrigger;export const YearRangePickerAnchor=PickerAnchor;export const YearRangePickerPortal=PickerPortal;export const YearRangePickerContent=PickerContent;export const YearRangePickerGrid=PickerGrid;export const YearRangePickerCell=/* @__PURE__ */createPickerYearCell('cell','SectileYearRangePickerCell');export const YearRangePickerStartInput=/* @__PURE__ */createPickerInput('start-input','SectileYearRangePickerStartInput');export const YearRangePickerEndInput=/* @__PURE__ */createPickerInput('end-input','SectileYearRangePickerEndInput');export const YearRangePickerPreviousPage=/* @__PURE__ */createPickerMove('year',-1,'SectileYearRangePickerPreviousPage','previous-page');export const YearRangePickerNextPage=/* @__PURE__ */createPickerMove('year',1,'SectileYearRangePickerNextPage','next-page');
2
2
  //# sourceMappingURL=year-range-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"year-range-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","specializePickerRootPart","createPickerRoot","yearRangePickerCapability","YearRangePickerRoot","scope","granularity","defaultView","YearRangePickerTrigger","YearRangePickerAnchor","YearRangePickerPortal","YearRangePickerContent","YearRangePickerGrid","YearRangePickerCell","YearRangePickerStartInput","YearRangePickerEndInput","YearRangePickerPreviousPage","YearRangePickerNextPage"],"sources":["../../src/temporal/year-range-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAAsBC,yBACjIC,qBACK,qBACEC,8BAAiC,6CAiBnC,MAAMC,oBAAsBF,iBAAiBC,0BAA2B,6BAA8B,CAAEE,MAAO,oBAAqBC,YAAa,OAAQC,YAAa,gBAKtK,MAAMC,uBAAyBP,yBAAyB,aAAcJ,sBACtE,MAAMY,sBAAwBR,yBAAyB,aAAcR,qBACrE,MAAMiB,sBAAwBd,oBAC9B,MAAMe,sCAAyCV,yBAAyB,aAAcP,sBACtF,MAAMkB,oBAAsBX,yBAAyB,aAAcN,mBACnE,MAAMkB,oBAAsBb,qBAAqB,OAAQ,qCACzD,MAAMc,0BAA4BhB,kBAAkB,cAAe,2CACnE,MAAMiB,wBAA0BjB,kBAAkB,YAAa,yCAC/D,MAAMkB,4BAA8Bf,yBAAyB,aAAcF,iBAAiB,QAAS,EAAG,qCAAsC,yBAC9I,MAAMkB,wBAA0BhB,yBAAyB,aAAcF,iBAAiB,OAAQ,EAAG,iCAAkC","ignoreList":[]}
1
+ {"version":3,"file":"year-range-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","createPickerRoot","yearRangePickerCapability","YearRangePickerRoot","scope","granularity","defaultView","YearRangePickerTrigger","YearRangePickerAnchor","YearRangePickerPortal","YearRangePickerContent","YearRangePickerGrid","YearRangePickerCell","YearRangePickerStartInput","YearRangePickerEndInput","YearRangePickerPreviousPage","YearRangePickerNextPage"],"sources":["../../src/temporal/year-range-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAC3GC,qBACK,qBACEC,8BAAiC,6CAkBnC,MAAMC,mCAAsCF,iBAAiBC,0BAA2B,6BAA8B,CAAEE,MAAO,oBAAqBC,YAAa,OAAQC,YAAa,gBAMtL,MAAMC,uBAAyBV,qBAC/B,MAAMW,sBAAwBf,oBAC9B,MAAMgB,sBAAwBb,oBAC9B,MAAMc,uBAAyBhB,qBAC/B,MAAMiB,oBAAsBhB,kBAC5B,MAAMiB,mCAAsCZ,qBAAqB,OAAQ,qCACzE,MAAMa,yCAA4Cf,kBAAkB,cAAe,2CACnF,MAAMgB,uCAA0ChB,kBAAkB,YAAa,yCAC/E,MAAMiB,2CAA8ChB,iBAAiB,QAAS,EAAG,qCAAsC,wBACvH,MAAMiB,uCAA0CjB,iBAAiB,OAAQ,EAAG,iCAAkC","ignoreList":[]}
package/dist/text.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import { type PropType, type VNodeChild } from 'vue';
2
+ import { type TextSnapshot, type TextQuery, type TextQueryOptions } from '@sectile/core/text';
3
+ import { type Result } from '@sectile/core/result';
2
4
  export interface TextFieldProps {
3
5
  readonly modelValue?: string | number;
4
6
  readonly defaultValue?: string | number;
@@ -18,7 +20,39 @@ export interface TextFieldModelModifiers {
18
20
  readonly number?: boolean;
19
21
  readonly trim?: boolean;
20
22
  }
21
- export declare const TextField: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
23
+ export interface TextFieldExpose {
24
+ /** Request an explicit empty-text commit; controlled parents retain acceptance. */
25
+ clear(): boolean;
26
+ /** Read the current native draft; null while unavailable, unsettled or composing. */
27
+ getTextSnapshot(): TextFieldSnapshot | null;
28
+ /** Project a bounded trigger query against the current issued native snapshot. */
29
+ getTextQuery(options: TextFieldQueryOptions): Result<TextFieldQuery | null>;
30
+ /** Commit one plain-text replacement against this field's current issued snapshot. */
31
+ replaceText(request: TextFieldReplacement): Promise<TextFieldEditResult>;
32
+ }
33
+ declare const textFieldSnapshotBrand: unique symbol;
34
+ export interface TextFieldSnapshot extends TextSnapshot {
35
+ readonly [textFieldSnapshotBrand]: true;
36
+ }
37
+ export type TextFieldQueryOptions = TextQueryOptions;
38
+ export interface TextFieldQuery extends TextQuery {
39
+ readonly snapshot: TextFieldSnapshot;
40
+ }
41
+ export interface TextFieldReplacement {
42
+ readonly snapshot: TextFieldSnapshot;
43
+ readonly startCodeUnitOffset: number;
44
+ readonly endCodeUnitOffset: number;
45
+ readonly text: string;
46
+ }
47
+ export type TextFieldEditRejection = 'unavailable' | 'disabled' | 'readonly' | 'composing' | 'busy' | 'stale' | 'invalid' | 'refused';
48
+ export type TextFieldEditResult = {
49
+ readonly status: 'accepted';
50
+ readonly snapshot: TextFieldSnapshot;
51
+ } | {
52
+ readonly status: 'rejected';
53
+ readonly reason: TextFieldEditRejection;
54
+ };
55
+ declare const TextFieldImplementation: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
22
56
  modelValue: {
23
57
  type: (NumberConstructor | StringConstructor)[];
24
58
  default: undefined;
@@ -69,6 +103,7 @@ export declare const TextField: import("vue").DefineComponent<import("vue").Extr
69
103
  };
70
104
  }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
71
105
  'update:modelValue': (_value: string | number) => boolean;
106
+ snapshotChange: () => boolean;
72
107
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
73
108
  modelValue: {
74
109
  type: (NumberConstructor | StringConstructor)[];
@@ -119,6 +154,7 @@ export declare const TextField: import("vue").DefineComponent<import("vue").Extr
119
154
  default: undefined;
120
155
  };
121
156
  }>> & Readonly<{
157
+ onSnapshotChange?: () => any;
122
158
  "onUpdate:modelValue"?: (_value: string | number) => any;
123
159
  }>, {
124
160
  modelValue: string | number;
@@ -134,4 +170,10 @@ export declare const TextField: import("vue").DefineComponent<import("vue").Extr
134
170
  placeholder: string;
135
171
  autocomplete: string;
136
172
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
173
+ type TextFieldComponent = typeof TextFieldImplementation & {
174
+ new (): InstanceType<typeof TextFieldImplementation> & TextFieldExpose;
175
+ };
176
+ export declare const TextField: TextFieldComponent;
137
177
  export type TextFieldValueChangeHandler = (value: string | number) => void;
178
+ export type TextFieldSnapshotChangeHandler = () => void;
179
+ export {};
package/dist/text.js CHANGED
@@ -1,2 +1,2 @@
1
- import{defineComponent,h,mergeProps,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from"vue";import{connectText,createTextController,createTextState}from"@sectile/dom/text";import{useNativeInputFormControl}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const TextField=defineComponent({name:"SectileTextField",inheritAttrs:false,props:{modelValue:{type:[String,Number],default:void 0},defaultValue:{type:[String,Number],default:""},modelModifiers:{type:Object,default:()=>({})},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},multiline:{type:Boolean,default:false},type:{type:String,default:"text"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},placeholder:{type:String,default:void 0},autocomplete:{type:String,default:void 0}},emits:{"update:modelValue":_value=>true},setup(props,{attrs,emit}){const element=shallowRef(null);const controlled=useControlledStateInvariant("TextField","modelValue",()=>props.modelValue);const initialValue=String(controlled?props.modelValue:props.defaultValue);const renderServerValue=typeof window==="undefined";let controller=null;let connection=null;let proposedState=null;let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;let mounted=false;const createController=state=>{const result=createTextController({...controlled&&!props.modelModifiers.lazy?{value:state}:{defaultValue:state},disabled:props.disabled,readOnly:props.readonly,onValueChange:change=>{const wasComposing=proposedState!==null&&proposedState.composition!==null;proposedState=change.value;if(change.value.composition!==null)return;if(props.modelModifiers.lazy){if(wasComposing)settleControlledProposal(change.value);return}emit("update:modelValue",change.value.snapshot.text);settleControlledProposal(change.value)}});if(!result.ok)throw new TypeError(result.error.message);return result.value};const mountConnection=state=>{if(!mounted||element.value===null)return;connection?.disconnect();controller=createController(state);connection=connectText({controller,element:element.value,disabled:props.disabled,readOnly:props.readonly,onTransition:({input})=>{if(!controlled||props.modelModifiers.lazy||input.type!=="composition-commit")return;const proposal=proposedState;if(proposal===null||proposal.composition!==null||connection===null)return;const result=connection.syncControlledValues({value:proposal});if(!result.ok)throw new TypeError(result.error.message)}});connection.render()};const requestReconnect=()=>{if(inputComposing){reconnectPending=true;return}const state=proposedState??controller?.getSnapshot().state??createTextState(String(controlled?props.modelValue:props.defaultValue));mountConnection(state)};const setInputComposing=composing=>{inputComposing=composing;if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;requestReconnect()},0)};function settleControlledProposal(proposal){if(!controlled)return;void nextTick(()=>{if(connection===null||proposedState!==proposal||props.modelValue===void 0)return;proposedState=null;const text=String(props.modelValue);const state=proposal.snapshot.text===text?proposal:createTextState(text);if(props.modelModifiers.lazy){mountConnection(state);return}const result=connection.syncControlledValues({value:state});if(!result.ok)throw new TypeError(result.error.message)})}const participation=useNativeInputFormControl(element,{reset:()=>{queueMicrotask(()=>mountConnection(createTextState(controlled?String(props.modelValue):initialValue)))}});onMounted(()=>{mounted=true;mountConnection(createTextState(initialValue))});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;connection?.disconnect();connection=null;controller=null;proposedState=null});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection===null)return;if(proposedState!==null&&proposedState.composition!==null)return;const text=String(value);const state=proposedState?.snapshot.text===text?proposedState:createTextState(text);proposedState=null;if(props.modelModifiers.lazy){mountConnection(state);return}const result=connection.syncControlledValues({value:state});if(!result.ok)throw new TypeError(result.error.message)});watch([()=>props.disabled,()=>props.readonly],requestReconnect);const commitLazyValue=()=>{if(!props.modelModifiers.lazy||controller===null)return;emit("update:modelValue",controller.getSnapshot().state.snapshot.text)};return()=>h(props.multiline?"textarea":"input",mergeProps(attrs,{ref:element,...!props.multiline?{type:props.type}:{},...renderServerValue?{value:initialValue}:{},disabled:props.disabled,readonly:props.readonly,required:props.required,name:props.name,form:props.form,placeholder:props.placeholder,autocomplete:props.autocomplete,onCompositionstart:()=>setInputComposing(true),onCompositionend:()=>setInputComposing(false),onChange:commitLazyValue,"data-scope":"text","data-part":"input","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0},participation.controlProps.value))}});export{TextField};
1
+ import{defineComponent,getCurrentInstance,h,mergeProps,nextTick,onBeforeUnmount,onMounted,onUpdated,shallowRef,watch}from"vue";import{connectText,createTextController,createTextState}from"@sectile/dom/text";import{useFormControlFlags,useNativeInputFormControl}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{captureNativeTextState}from"./input/native-text-state.js";import{cancelTextComposition,findTextQuery}from"@sectile/core/text";import{okResult}from"@sectile/core/result";function rejectedTextEdit(reason){return Object.freeze({status:"rejected",reason})}function textFieldClear(port){return()=>port.request?.()??false}function textFieldRead(port){return()=>port.read?.()??null}function textFieldQuery(port){return options=>port.query?.(options)??okResult(null)}function textFieldReplace(port){return request=>port.replace?.(request)??Promise.resolve(rejectedTextEdit("unavailable"))}const TextFieldImplementation=defineComponent({name:"SectileTextField",inheritAttrs:false,props:{modelValue:{type:[String,Number],default:void 0},defaultValue:{type:[String,Number],default:""},modelModifiers:{type:Object,default:()=>({})},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},multiline:{type:Boolean,default:false},type:{type:String,default:"text"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},placeholder:{type:String,default:void 0},autocomplete:{type:String,default:void 0}},emits:{"update:modelValue":_value=>true,snapshotChange:()=>true},setup(props,{attrs,emit}){const flags=useFormControlFlags(props);const instance=getCurrentInstance();const element=shallowRef(null);const controlled=useControlledStateInvariant("TextField","modelValue",()=>props.modelValue);const initialValue=String(controlled?props.modelValue:props.defaultValue);const renderServerValue=typeof window==="undefined";let controller=null;let connection=null;let connectedElement=null;let proposedState=null;let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;let mounted=false;let snapshotNotificationPending=false;const clearPort={request:null,read:null,query:null,replace:null};let clearing=null;let frame=null;let synchronizedModelValue=props.modelValue;Object.defineProperty(instance.proxy,"clear",{configurable:true,value:textFieldClear(clearPort)});Object.defineProperty(instance.proxy,"getTextSnapshot",{configurable:true,value:textFieldRead(clearPort)});Object.defineProperty(instance.proxy,"getTextQuery",{configurable:true,value:textFieldQuery(clearPort)});Object.defineProperty(instance.proxy,"replaceText",{configurable:true,value:textFieldReplace(clearPort)});function notifySnapshotChange(){if(!mounted||snapshotNotificationPending||!instance.vnode.props?.["onSnapshotChange"])return;snapshotNotificationPending=true;void nextTick(()=>{snapshotNotificationPending=false;if(mounted)emit("snapshotChange")})}const createController=state=>{const result=createTextController({...controlled&&!props.modelModifiers.lazy?{value:state}:{defaultValue:state},disabled:flags.value.disabled,readOnly:flags.value.readonly,onValueChange:change=>{frame=null;if(clearing!==null&&clearing.proposal===null)clearing.proposal=change.value;const wasComposing=proposedState!==null&&proposedState.composition!==null;const selectionOnly=change.value.snapshot.text===change.previousValue.snapshot.text&&change.value.composition===change.previousValue.composition;proposedState=change.value;if(change.value.composition!==null){notifySnapshotChange();return}if(selectionOnly){if(!props.modelModifiers.lazy)settleControlledProposal(change.value);notifySnapshotChange();return}if(props.modelModifiers.lazy){if(wasComposing)settleControlledProposal(change.value);notifySnapshotChange();return}emit("update:modelValue",change.value.snapshot.text);settleControlledProposal(change.value,clearing?.restore??null);notifySnapshotChange()}});if(!result.ok)throw new TypeError(result.error.message);return result.value};const mountConnection=state=>{if(!mounted||element.value===null)return;frame=null;synchronizedModelValue=props.modelValue;connection?.disconnect();connection=null;connectedElement=element.value;controller=createController(state);connection=connectText({controller,element:element.value,disabled:flags.value.disabled,readOnly:flags.value.readonly,onTransition:({input})=>{if(!controlled||props.modelModifiers.lazy||input.type!=="composition-commit")return;const proposal=proposedState;if(proposal===null||proposal.composition!==null||connection===null)return;const result=connection.syncControlledValues({value:proposal});if(!result.ok)throw new TypeError(result.error.message)}});connection.render();notifySnapshotChange()};const requestReconnect=()=>{if(inputComposing){reconnectPending=true;return}const state=proposedState??controller?.getSnapshot().state??createTextState(String(controlled?props.modelValue:props.defaultValue));mountConnection(state)};const setInputComposing=composing=>{inputComposing=composing;if(composing)frame=null;notifySnapshotChange();if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;requestReconnect()},0)};function synchronizeControlledState(state,proposal){if(connection===null)return;frame=null;synchronizedModelValue=props.modelValue;if(props.modelModifiers.lazy)mountConnection(state);else{const result=connection.syncControlledValues({value:state});if(!result.ok)throw new TypeError(result.error.message)}if(clearing!==null&&proposal!==null&&clearing.proposal===proposal&&connection!==null){clearing.settlement={accepted:state===proposal,connection,revision:connection.getSnapshot().revision}}notifySnapshotChange()}function settleControlledProposal(proposal,restore=null){if(!controlled)return;void nextTick(()=>{if(connection===null||proposedState!==proposal||props.modelValue===void 0)return;proposedState=null;const text=String(props.modelValue);const state=proposal.snapshot.text===text?proposal:restore?.snapshot.text===text?restore:createTextState(text);synchronizeControlledState(state,proposal)})}const participation=useNativeInputFormControl(element,{reset:()=>{queueMicrotask(()=>{if(!mounted)return;inputComposing=false;proposedState=null;reconnectPending=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;mountConnection(createTextState(controlled?String(props.modelValue):initialValue))})}});onMounted(()=>{mounted=true;mountConnection(createTextState(initialValue))});onUpdated(()=>{if(!mounted||element.value===null||connectedElement===element.value)return;let state=proposedState??controller?.getSnapshot().state??createTextState(initialValue);if(state.composition!==null){const cancelled=cancelTextComposition(state);if(!cancelled.ok)throw new TypeError(cancelled.error.message);state=cancelled.value}inputComposing=false;reconnectPending=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;proposedState=null;mountConnection(state)});onBeforeUnmount(()=>{clearPort.request=null;clearPort.read=null;clearPort.query=null;clearPort.replace=null;frame=null;clearing=null;mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;connection?.disconnect();connection=null;connectedElement=null;controller=null;proposedState=null});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection===null)return;if(proposedState!==null&&proposedState.composition!==null)return;const text=String(value);const proposal=proposedState;const state=proposal?.snapshot.text===text?proposal:createTextState(text);proposedState=null;synchronizeControlledState(state,proposal)});watch([()=>flags.value.disabled,()=>flags.value.readonly],requestReconnect);const commitLazyValue=()=>{if(!props.modelModifiers.lazy||controller===null)return;emit("update:modelValue",controller.getSnapshot().state.snapshot.text)};clearPort.request=()=>{let target=connection;const input=element.value;if(!mounted||!target||!input||clearing||flags.value.disabled||flags.value.readonly||inputComposing)return false;const state=proposedState??target.getSnapshot().state;if(state.composition!==null||state.snapshot.text.length===0)return false;if(connectedElement!==input){mountConnection(state);target=connection;if(!mounted||!target||connectedElement!==input){connection?.disconnect();connection=null;connectedElement=null;controller=null;return false}}const operation={restore:controlled?captureNativeTextState(input,state.snapshot.text):null,proposal:null,settlement:null};clearing=operation;try{const accepted=target.handleEvent({type:"input",inputType:"deleteByCut",text:"",startCodeUnitOffset:0,endCodeUnitOffset:state.snapshot.text.length,selection:{anchorCodeUnitOffset:0,focusCodeUnitOffset:0}});if(accepted&&mounted&&connection===target&&props.modelModifiers.lazy){const proposal=proposedState;commitLazyValue();if(mounted&&connection===target&&proposal)settleControlledProposal(proposal,operation.restore)}return accepted}finally{clearing=null}};clearPort.read=()=>{const target=connection,input=element.value;if(!mounted||!target||!input||connectedElement!==input||inputComposing||controlled&&props.modelValue!==synchronizedModelValue)return null;const current=target.getSnapshot(),state=current.state;if(state.composition!==null||input.value!==state.snapshot.text)return null;const start=input.selectionStart,end=input.selectionEnd;if(start===null||end===null)return null;const backward=input.selectionDirection==="backward",selection=state.snapshot.selection;if(selection.anchorCodeUnitOffset!==(backward?end:start)||selection.focusCodeUnitOffset!==(backward?start:end))return null;if(frame?.connection===target&&frame.revision===current.revision)return frame.snapshot;const snapshot=Object.freeze({text:state.snapshot.text,selection});frame={snapshot,connection:target,revision:current.revision};return snapshot};clearPort.query=options=>{const snapshot=clearPort.read?.(),target=connection;if(!snapshot||!target)return okResult(null);const query=findTextQuery(target.getSnapshot().state,options);if(!query.ok)return query;if(query.value===null)return okResult(null);return okResult(Object.freeze({...query.value,snapshot}))};clearPort.replace=async request=>{if(typeof request!=="object"||request===null)return rejectedTextEdit("invalid");const{snapshot,startCodeUnitOffset,endCodeUnitOffset,text}=request;if(typeof text!=="string"||typeof startCodeUnitOffset!=="number"||typeof endCodeUnitOffset!=="number")return rejectedTextEdit("invalid");const target=connection,input=element.value;if(!mounted||!target||!input||connectedElement!==input)return rejectedTextEdit("unavailable");if(flags.value.disabled)return rejectedTextEdit("disabled");if(flags.value.readonly)return rejectedTextEdit("readonly");if(inputComposing||target.getSnapshot().state.composition!==null)return rejectedTextEdit("composing");if(clearing!==null)return rejectedTextEdit("busy");const issued=clearPort.read?.();if(!issued||issued!==snapshot)return rejectedTextEdit("stale");const operation={restore:target.getSnapshot().state,proposal:null,settlement:null};clearing=operation;try{const caret=startCodeUnitOffset+text.length;const dispatched=target.handleEvent({type:"input",inputType:"insertReplacementText",text,startCodeUnitOffset,endCodeUnitOffset,selection:{anchorCodeUnitOffset:caret,focusCodeUnitOffset:caret}});if(!mounted||connection===null)return rejectedTextEdit("unavailable");if(!dispatched)return rejectedTextEdit("invalid");const proposal=operation.proposal;if(proposal!==null&&props.modelModifiers.lazy){if(proposal.snapshot.text!==operation.restore?.snapshot.text)commitLazyValue();if(mounted&&connection===target&&controlled)settleControlledProposal(proposal,operation.restore)}if(!mounted||connection===null)return rejectedTextEdit("unavailable");if(connection!==target)return rejectedTextEdit("stale");if(!controlled&&proposal!==null&&target.getSnapshot().state!==proposal)return rejectedTextEdit("stale");if(proposal===null||!controlled)operation.settlement={accepted:true,connection:target,revision:target.getSnapshot().revision};await nextTick();if(!mounted||connection===null)return rejectedTextEdit("unavailable");const settled=operation.settlement;if(settled===null||settled.connection!==connection||settled.revision!==connection.getSnapshot().revision||connectedElement!==input||flags.value.disabled||flags.value.readonly)return rejectedTextEdit("stale");if(!settled.accepted)return rejectedTextEdit("refused");const committed=clearPort.read?.();return committed?Object.freeze({status:"accepted",snapshot:committed}):rejectedTextEdit("stale")}finally{if(clearing===operation)clearing=null}};return()=>h(props.multiline?"textarea":"input",mergeProps(attrs,{ref:element,...!props.multiline?{type:props.type}:{},...renderServerValue?{value:initialValue}:{defaultValue:controlled?String(props.modelValue):initialValue},disabled:flags.value.disabled,readonly:flags.value.readonly,required:flags.value.required,name:props.name,form:props.form,placeholder:props.placeholder,autocomplete:props.autocomplete,onCompositionstart:()=>setInputComposing(true),onCompositionend:()=>setInputComposing(false),onChange:commitLazyValue,"data-scope":"text","data-part":"input","data-disabled":flags.value.disabled?"":void 0,"data-readonly":flags.value.readonly?"":void 0},participation.controlProps.value))}});const TextField=TextFieldImplementation;export{TextField};
2
2
  //# sourceMappingURL=text.js.map
package/dist/text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/text.ts"],"mappings":"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","names":[],"file":"text.js"}
1
+ {"version":3,"sources":["../src/text.ts"],"mappings":"AAAA,OACE,gBACA,mBACA,EACA,WACA,SACA,gBACA,UACA,UACA,WACA,UAGK,MACP,OACE,YACA,qBACA,oBAIK,oBACP,OAAS,oBAAqB,8BAAiC,oBAC/D,OAAS,gCAAmC,iCAC5C,OAAS,2BAA8B,+BACvC,OAAS,sBAAuB,kBAA+E,qBAC/G,OAAS,aAA6B,uBA2DtC,SAAS,iBAAiB,OAA8B,CAAyB,OAAO,OAAO,OAAO,CAAE,OAAQ,WAAY,MAAM,CAAE,CAAG,CAEvI,SAAS,eAAe,KAAyB,CAAmB,MAAO,IAAM,KAAK,UAAS,GAAM,KAAO,CAC5G,SAAS,cAAc,KAAyB,CAAoC,MAAO,IAAM,KAAK,OAAM,GAAM,IAAM,CACxH,SAAS,eAAe,KAAyB,CAC/C,OAAO,SAAW,KAAK,QAAQ,OAAO,GAAK,SAAS,IAAI,CAC1D,CACA,SAAS,iBAAiB,KAAyB,CACjD,OAAO,SAAW,KAAK,UAAU,OAAO,GAAK,QAAQ,QAAQ,iBAAiB,aAAa,CAAC,CAC9F,CAEA,MAAM,wBAA0B,gBAAgB,CAC9C,KAAM,mBACN,aAAc,MACd,MAAO,CACL,WAAY,CAAE,KAAM,CAAC,OAAQ,MAAM,EAAG,QAAS,MAAS,EACxD,aAAc,CAAE,KAAM,CAAC,OAAQ,MAAM,EAAG,QAAS,EAAE,EACnD,eAAgB,CACd,KAAM,OACN,QAAS,KAAgC,CAAA,IAE3C,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,UAAW,CAAE,KAAM,QAAS,QAAS,KAAK,EAC1C,KAAM,CAAE,KAAM,OAAQ,QAAS,MAAM,EACrC,KAAM,CAAE,KAAM,OAAQ,QAAS,MAAS,EACxC,KAAM,CAAE,KAAM,OAAQ,QAAS,MAAS,EACxC,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,YAAa,CAAE,KAAM,OAAQ,QAAS,MAAS,EAC/C,aAAc,CAAE,KAAM,OAA4B,QAAS,MAAS,GAEtE,MAAO,CACL,oBAAsB,QAAqC,KAC3D,eAAgB,IAAe,MAEjC,MAAM,MAAO,CAAE,MAAO,IAAI,EAAE,CAC1B,MAAM,MAAQ,oBAAoB,KAAK,EACvC,MAAM,SAAW,mBAAkB,EACnC,MAAM,QAAU,WAA0D,IAAI,EAC9E,MAAM,WAAa,4BAA4B,YAAa,aAAc,IAAM,MAAM,UAAU,EAChG,MAAM,aAAe,OAAO,WAAa,MAAM,WAAa,MAAM,YAAY,EAC9E,MAAM,kBAAoB,OAAO,SAAW,YAC5C,IAAI,WAAoC,KACxC,IAAI,WAAoC,KACxC,IAAI,iBAAkE,KACtE,IAAI,cAAkC,KACtC,IAAI,eAAiB,MACrB,IAAI,iBAAmB,MACvB,IAAI,eAAuD,KAC3D,IAAI,QAAU,MACd,IAAI,4BAA8B,MAClC,MAAM,UAAiC,CAAE,QAAS,KAAM,KAAM,KAAM,MAAO,KAAM,QAAS,IAAI,EAC9F,IAAI,SAAqC,KACzC,IAAI,MAA0B,KAC9B,IAAI,uBAAyB,MAAM,WAEnC,OAAO,eAAe,SAAS,MAAQ,QAAS,CAAE,aAAc,KAAM,MAAO,eAAe,SAAS,CAAC,CAAE,EACxG,OAAO,eAAe,SAAS,MAAQ,kBAAmB,CAAE,aAAc,KAAM,MAAO,cAAc,SAAS,CAAC,CAAE,EACjH,OAAO,eAAe,SAAS,MAAQ,eAAgB,CAAE,aAAc,KAAM,MAAO,eAAe,SAAS,CAAC,CAAE,EAC/G,OAAO,eAAe,SAAS,MAAQ,cAAe,CAAE,aAAc,KAAM,MAAO,iBAAiB,SAAS,CAAC,CAAE,EAEhH,SAAS,sBAAoB,CAC3B,GAAI,CAAC,SAAW,6BAA+B,CAAC,SAAS,MAAM,QAAQ,kBAAkB,EAAG,OAC5F,4BAA8B,KAC9B,KAAK,SAAS,IAAK,CACjB,4BAA8B,MAC9B,GAAI,QAAS,KAAK,gBAAgB,CACpC,CAAC,CACH,CAEA,MAAM,iBAAoB,OAAoC,CAC5D,MAAM,OAAS,qBAAqB,CAClC,GAAI,YAAc,CAAC,MAAM,eAAe,KACpC,CAAE,MAAO,KAAK,EACd,CAAE,aAAc,KAAK,EACzB,SAAU,MAAM,MAAM,SACtB,SAAU,MAAM,MAAM,SACtB,cAAgB,QAAU,CACxB,MAAQ,KACR,GAAI,WAAa,MAAQ,SAAS,WAAa,KAAM,SAAS,SAAW,OAAO,MAChF,MAAM,aAAe,gBAAkB,MAAQ,cAAc,cAAgB,KAC7E,MAAM,cAAgB,OAAO,MAAM,SAAS,OAAS,OAAO,cAAc,SAAS,MAC9E,OAAO,MAAM,cAAgB,OAAO,cAAc,YACvD,cAAgB,OAAO,MACvB,GAAI,OAAO,MAAM,cAAgB,KAAM,CAAE,qBAAoB,EAAI,MAAQ,CACzE,GAAI,cAAe,CACjB,GAAI,CAAC,MAAM,eAAe,KAAM,yBAAyB,OAAO,KAAK,EACrE,qBAAoB,EACpB,MACF,CACA,GAAI,MAAM,eAAe,KAAM,CAC7B,GAAI,aAAc,yBAAyB,OAAO,KAAK,EACvD,qBAAoB,EACpB,MACF,CACA,KAAK,oBAAqB,OAAO,MAAM,SAAS,IAAI,EACpD,yBAAyB,OAAO,MAAO,UAAU,SAAW,IAAI,EAChE,qBAAoB,CACtB,EACD,EACD,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,EACxD,OAAO,OAAO,KAChB,EACA,MAAM,gBAAmB,OAA0B,CACjD,GAAI,CAAC,SAAW,QAAQ,QAAU,KAAM,OACxC,MAAQ,KACR,uBAAyB,MAAM,WAC/B,YAAY,WAAU,EACtB,WAAa,KACb,iBAAmB,QAAQ,MAC3B,WAAa,iBAAiB,KAAK,EACnC,WAAa,YAAY,CACvB,WACA,QAAS,QAAQ,MACjB,SAAU,MAAM,MAAM,SACtB,SAAU,MAAM,MAAM,SACtB,aAAc,CAAC,CAAE,KAAK,IAAM,CAC1B,GAAI,CAAC,YAAc,MAAM,eAAe,MAAQ,MAAM,OAAS,qBAAsB,OACrF,MAAM,SAAW,cACjB,GAAI,WAAa,MAAQ,SAAS,cAAgB,MAAQ,aAAe,KAAM,OAC/E,MAAM,OAAS,WAAW,qBAAqB,CAAE,MAAO,QAAQ,CAAE,EAClE,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,CAC1D,EACD,EACD,WAAW,OAAM,EACjB,qBAAoB,CACtB,EACA,MAAM,iBAAmB,IAAW,CAClC,GAAI,eAAgB,CAClB,iBAAmB,KACnB,MACF,CACA,MAAM,MAAQ,eACT,YAAY,YAAW,EAAG,OAC1B,gBAAgB,OAAO,WAAa,MAAM,WAAa,MAAM,YAAY,CAAC,EAC/E,gBAAgB,KAAK,CACvB,EACA,MAAM,kBAAqB,WAA4B,CACrD,eAAiB,UACjB,GAAI,UAAW,MAAQ,KACvB,qBAAoB,EACpB,GAAI,WAAa,CAAC,kBAAoB,iBAAmB,KAAM,OAC/D,eAAiB,WAAW,IAAK,CAC/B,eAAiB,KACjB,GAAI,CAAC,SAAW,eAAgB,OAChC,iBAAmB,MACnB,iBAAgB,CAClB,EAAG,CAAC,CACN,EACA,SAAS,2BAA2B,MAAkB,SAA0B,CAC9E,GAAI,aAAe,KAAM,OACzB,MAAQ,KACR,uBAAyB,MAAM,WAC/B,GAAI,MAAM,eAAe,KAAM,gBAAgB,KAAK,MAC/C,CACH,MAAM,OAAS,WAAW,qBAAqB,CAAE,MAAO,KAAK,CAAE,EAC/D,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,CAC1D,CACA,GAAI,WAAa,MAAQ,WAAa,MAAQ,SAAS,WAAa,UAAY,aAAe,KAAM,CACnG,SAAS,WAAa,CAAE,SAAU,QAAU,SAAU,WAAY,SAAU,WAAW,YAAW,EAAG,QAAQ,CAC/G,CACA,qBAAoB,CACtB,CACA,SAAS,yBAAyB,SAAqB,QAA4B,KAAI,CACrF,GAAI,CAAC,WAAY,OACjB,KAAK,SAAS,IAAK,CACjB,GAAI,aAAe,MAAQ,gBAAkB,UAAY,MAAM,aAAe,OAAW,OACzF,cAAgB,KAChB,MAAM,KAAO,OAAO,MAAM,UAAU,EACpC,MAAM,MAAQ,SAAS,SAAS,OAAS,KAAO,SAC5C,SAAS,SAAS,OAAS,KAAO,QAAU,gBAAgB,IAAI,EACpE,2BAA2B,MAAO,QAAQ,CAC5C,CAAC,CACH,CACA,MAAM,cAAgB,0BAA0B,QAAS,CACvD,MAAO,IAAK,CACV,eAAe,IAAK,CAClB,GAAI,CAAC,QAAS,OACd,eAAiB,MACjB,cAAgB,KAChB,iBAAmB,MACnB,GAAI,iBAAmB,KAAM,aAAa,cAAc,EACxD,eAAiB,KACjB,gBAAgB,gBAAgB,WAAa,OAAO,MAAM,UAAU,EAAI,YAAY,CAAC,CACvF,CAAC,CACH,EACD,EAED,UAAU,IAAK,CACb,QAAU,KACV,gBAAgB,gBAAgB,YAAY,CAAC,CAC/C,CAAC,EACD,UAAU,IAAK,CACb,GAAI,CAAC,SAAW,QAAQ,QAAU,MAAQ,mBAAqB,QAAQ,MAAO,OAC9E,IAAI,MAAQ,eAAiB,YAAY,YAAW,EAAG,OAAS,gBAAgB,YAAY,EAE5F,GAAI,MAAM,cAAgB,KAAM,CAC9B,MAAM,UAAY,sBAAsB,KAAK,EAC7C,GAAI,CAAC,UAAU,GAAI,MAAM,IAAI,UAAU,UAAU,MAAM,OAAO,EAC9D,MAAQ,UAAU,KACpB,CACA,eAAiB,MACjB,iBAAmB,MACnB,GAAI,iBAAmB,KAAM,aAAa,cAAc,EACxD,eAAiB,KACjB,cAAgB,KAChB,gBAAgB,KAAK,CACvB,CAAC,EACD,gBAAgB,IAAK,CACnB,UAAU,QAAU,KACpB,UAAU,KAAO,KACjB,UAAU,MAAQ,KAClB,UAAU,QAAU,KACpB,MAAQ,KACR,SAAW,KACX,QAAU,MACV,GAAI,iBAAmB,KAAM,aAAa,cAAc,EACxD,eAAiB,KACjB,iBAAmB,MACnB,YAAY,WAAU,EACtB,WAAa,KACb,iBAAmB,KACnB,WAAa,KACb,cAAgB,IAClB,CAAC,EAED,MAAM,IAAM,MAAM,WAAa,OAAS,CACtC,GAAI,CAAC,YAAc,QAAU,QAAa,aAAe,KAAM,OAC/D,GAAI,gBAAkB,MAAQ,cAAc,cAAgB,KAAM,OAClE,MAAM,KAAO,OAAO,KAAK,EACzB,MAAM,SAAW,cACjB,MAAM,MAAQ,UAAU,SAAS,OAAS,KAAO,SAAW,gBAAgB,IAAI,EAChF,cAAgB,KAChB,2BAA2B,MAAO,QAAQ,CAC5C,CAAC,EACD,MAAM,CAAC,IAAM,MAAM,MAAM,SAAU,IAAM,MAAM,MAAM,QAAQ,EAAG,gBAAgB,EAEhF,MAAM,gBAAkB,IAAW,CACjC,GAAI,CAAC,MAAM,eAAe,MAAQ,aAAe,KAAM,OACvD,KAAK,oBAAqB,WAAW,YAAW,EAAG,MAAM,SAAS,IAAI,CACxE,EAEA,UAAU,QAAU,IAAc,CAChC,IAAI,OAAS,WACb,MAAM,MAAQ,QAAQ,MACtB,GAAI,CAAC,SAAW,CAAC,QAAU,CAAC,OAAS,UAAY,MAAM,MAAM,UAAY,MAAM,MAAM,UAAY,eAAgB,MAAO,OACxH,MAAM,MAAQ,eAAiB,OAAO,YAAW,EAAG,MACpD,GAAI,MAAM,cAAgB,MAAQ,MAAM,SAAS,KAAK,SAAW,EAAG,MAAO,OAC3E,GAAI,mBAAqB,MAAO,CAC9B,gBAAgB,KAAK,EACrB,OAAS,WACT,GAAI,CAAC,SAAW,CAAC,QAAU,mBAAqB,MAAO,CACrD,YAAY,WAAU,EAAI,WAAa,KAAM,iBAAmB,KAAM,WAAa,KACnF,MAAO,MACT,CACF,CACA,MAAM,UAA+B,CAAE,QAAS,WAAa,uBAAuB,MAAO,MAAM,SAAS,IAAI,EAAI,KAAM,SAAU,KAAM,WAAY,IAAI,EACxJ,SAAW,UACX,GAAI,CACF,MAAM,SAAW,OAAO,YAAY,CAAE,KAAM,QAAS,UAAW,cAAe,KAAM,GACnF,oBAAqB,EAAG,kBAAmB,MAAM,SAAS,KAAK,OAC/D,UAAW,CAAE,qBAAsB,EAAG,oBAAqB,CAAC,CAAE,CAAE,EAClE,GAAI,UAAY,SAAW,aAAe,QAAU,MAAM,eAAe,KAAM,CAC7E,MAAM,SAAW,cACjB,gBAAe,EACf,GAAI,SAAW,aAAe,QAAU,SAAU,yBAAyB,SAAU,UAAU,OAAO,CACxG,CACA,OAAO,QACT,SAAY,SAAW,IAAM,CAC/B,EAEA,UAAU,KAAO,IAA+B,CAC9C,MAAM,OAAS,WAAY,MAAQ,QAAQ,MAC3C,GAAI,CAAC,SAAW,CAAC,QAAU,CAAC,OAAS,mBAAqB,OAAS,gBAC9D,YAAc,MAAM,aAAe,uBAAwB,OAAO,KACvE,MAAM,QAAU,OAAO,YAAW,EAAI,MAAQ,QAAQ,MACtD,GAAI,MAAM,cAAgB,MAAQ,MAAM,QAAU,MAAM,SAAS,KAAM,OAAO,KAC9E,MAAM,MAAQ,MAAM,eAAgB,IAAM,MAAM,aAChD,GAAI,QAAU,MAAQ,MAAQ,KAAM,OAAO,KAC3C,MAAM,SAAW,MAAM,qBAAuB,WAAY,UAAY,MAAM,SAAS,UACrF,GAAI,UAAU,wBAA0B,SAAW,IAAM,QACpD,UAAU,uBAAyB,SAAW,MAAQ,KAAM,OAAO,KACxE,GAAI,OAAO,aAAe,QAAU,MAAM,WAAa,QAAQ,SAAU,OAAO,MAAM,SACtF,MAAM,SAAW,OAAO,OAAO,CAAE,KAAM,MAAM,SAAS,KAAM,SAAS,CAAE,EACvE,MAAQ,CAAE,SAAU,WAAY,OAAQ,SAAU,QAAQ,QAAQ,EAClE,OAAO,QACT,EACA,UAAU,MAAS,SAA0C,CAC3D,MAAM,SAAW,UAAU,OAAM,EAAI,OAAS,WAC9C,GAAI,CAAC,UAAY,CAAC,OAAQ,OAAO,SAAS,IAAI,EAC9C,MAAM,MAAQ,cAAc,OAAO,YAAW,EAAG,MAAO,OAAO,EAC/D,GAAI,CAAC,MAAM,GAAI,OAAO,MACtB,GAAI,MAAM,QAAU,KAAM,OAAO,SAAS,IAAI,EAC9C,OAAO,SAAS,OAAO,OAAO,CAAE,GAAG,MAAM,MAAO,QAAQ,CAAE,CAAC,CAC7D,EACA,UAAU,QAAU,MAAO,SAAyC,CAClE,GAAI,OAAO,UAAY,UAAY,UAAY,KAAM,OAAO,iBAAiB,SAAS,EACtF,KAAM,CAAE,SAAU,oBAAqB,kBAAmB,IAAI,EAAK,QACnE,GAAI,OAAO,OAAS,UAAY,OAAO,sBAAwB,UAAY,OAAO,oBAAsB,SAAU,OAAO,iBAAiB,SAAS,EACnJ,MAAM,OAAS,WAAY,MAAQ,QAAQ,MAC3C,GAAI,CAAC,SAAW,CAAC,QAAU,CAAC,OAAS,mBAAqB,MAAO,OAAO,iBAAiB,aAAa,EACtG,GAAI,MAAM,MAAM,SAAU,OAAO,iBAAiB,UAAU,EAC5D,GAAI,MAAM,MAAM,SAAU,OAAO,iBAAiB,UAAU,EAC5D,GAAI,gBAAkB,OAAO,YAAW,EAAG,MAAM,cAAgB,KAAM,OAAO,iBAAiB,WAAW,EAC1G,GAAI,WAAa,KAAM,OAAO,iBAAiB,MAAM,EACrD,MAAM,OAAS,UAAU,OAAM,EAC/B,GAAI,CAAC,QAAU,SAAW,SAAU,OAAO,iBAAiB,OAAO,EACnE,MAAM,UAA+B,CAAE,QAAS,OAAO,YAAW,EAAG,MAAO,SAAU,KAAM,WAAY,IAAI,EAC5G,SAAW,UACX,GAAI,CACF,MAAM,MAAQ,oBAAsB,KAAK,OACzC,MAAM,WAAa,OAAO,YAAY,CAAE,KAAM,QAAS,UAAW,wBAAyB,KACzF,oBAAqB,kBAAmB,UAAW,CAAE,qBAAsB,MAAO,oBAAqB,KAAK,CAAE,CAAE,EAClH,GAAI,CAAC,SAAW,aAAe,KAAM,OAAO,iBAAiB,aAAa,EAC1E,GAAI,CAAC,WAAY,OAAO,iBAAiB,SAAS,EAClD,MAAM,SAAW,UAAU,SAC3B,GAAI,WAAa,MAAQ,MAAM,eAAe,KAAM,CAClD,GAAI,SAAS,SAAS,OAAS,UAAU,SAAS,SAAS,KAAM,gBAAe,EAChF,GAAI,SAAW,aAAe,QAAU,WAAY,yBAAyB,SAAU,UAAU,OAAO,CAC1G,CACA,GAAI,CAAC,SAAW,aAAe,KAAM,OAAO,iBAAiB,aAAa,EAC1E,GAAI,aAAe,OAAQ,OAAO,iBAAiB,OAAO,EAC1D,GAAI,CAAC,YAAc,WAAa,MAAQ,OAAO,YAAW,EAAG,QAAU,SAAU,OAAO,iBAAiB,OAAO,EAChH,GAAI,WAAa,MAAQ,CAAC,WAAY,UAAU,WAAa,CAAE,SAAU,KAAM,WAAY,OAAQ,SAAU,OAAO,YAAW,EAAG,QAAQ,EAC1I,MAAM,SAAQ,EACd,GAAI,CAAC,SAAW,aAAe,KAAM,OAAO,iBAAiB,aAAa,EAC1E,MAAM,QAAU,UAAU,WAC1B,GAAI,UAAY,MAAQ,QAAQ,aAAe,YAAc,QAAQ,WAAa,WAAW,YAAW,EAAG,UACtG,mBAAqB,OAAS,MAAM,MAAM,UAAY,MAAM,MAAM,SAAU,OAAO,iBAAiB,OAAO,EAChH,GAAI,CAAC,QAAQ,SAAU,OAAO,iBAAiB,SAAS,EACxD,MAAM,UAAY,UAAU,OAAM,EAClC,OAAO,UAAY,OAAO,OAAO,CAAE,OAAQ,WAAY,SAAU,SAAS,CAAE,EAAI,iBAAiB,OAAO,CAC1G,SAAY,GAAI,WAAa,UAAW,SAAW,IAAM,CAC3D,EAEA,MAAO,IAAkB,EAAE,MAAM,UAAY,WAAa,QAAS,WACjE,MACA,CACE,IAAK,QACL,GAAI,CAAC,MAAM,UAAY,CAAE,KAAM,MAAM,IAAI,EAAK,CAAA,EAC9C,GAAI,kBAAoB,CAAE,MAAO,YAAY,EAAK,CAAE,aAAc,WAAa,OAAO,MAAM,UAAU,EAAI,YAAY,EACtH,SAAU,MAAM,MAAM,SACtB,SAAU,MAAM,MAAM,SACtB,SAAU,MAAM,MAAM,SACtB,KAAM,MAAM,KACZ,KAAM,MAAM,KACZ,YAAa,MAAM,YACnB,aAAc,MAAM,aACpB,mBAAoB,IAAM,kBAAkB,IAAI,EAChD,iBAAkB,IAAM,kBAAkB,KAAK,EAC/C,SAAU,gBACV,aAAc,OACd,YAAa,QACb,gBAAiB,MAAM,MAAM,SAAW,GAAK,OAC7C,gBAAiB,MAAM,MAAM,SAAW,GAAK,QAE/C,cAAc,aAAa,KAAK,CACjC,CACH,EACD,EAKM,MAAM,UAAgC","names":[],"file":"text.js"}
package/dist/timer.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
2
  import { type TimerAction, type TimerItemType } from '@sectile/dom/timer';
3
3
  import { type PrimitiveAs } from './primitive.js';
4
+ /** Time policies initialize the owner once; remount to replace them. Presentation props remain reactive. */
4
5
  export interface TimerRootProps {
5
- readonly countdown?: boolean;
6
- readonly startMs?: number;
7
- readonly targetMs?: number | null;
8
- readonly autoStart?: boolean;
9
- readonly intervalMs?: number;
6
+ readonly countdown?: boolean | undefined;
7
+ readonly startMs?: number | undefined;
8
+ readonly targetMs?: number | null | undefined;
9
+ readonly autoStart?: boolean | undefined;
10
+ readonly intervalMs?: number | undefined;
11
+ readonly label?: string | undefined;
10
12
  readonly as?: PrimitiveAs;
11
13
  readonly asChild?: boolean;
12
14
  }
@@ -47,6 +49,10 @@ export declare const TimerRoot: import("vue").DefineComponent<import("vue").Extr
47
49
  type: NumberConstructor;
48
50
  default: number;
49
51
  };
52
+ label: {
53
+ type: StringConstructor;
54
+ default: undefined;
55
+ };
50
56
  as: {
51
57
  type: PropType<PrimitiveAs>;
52
58
  default: string;
@@ -79,6 +85,10 @@ export declare const TimerRoot: import("vue").DefineComponent<import("vue").Extr
79
85
  type: NumberConstructor;
80
86
  default: number;
81
87
  };
88
+ label: {
89
+ type: StringConstructor;
90
+ default: undefined;
91
+ };
82
92
  as: {
83
93
  type: PropType<PrimitiveAs>;
84
94
  default: string;
@@ -96,6 +106,7 @@ export declare const TimerRoot: import("vue").DefineComponent<import("vue").Extr
96
106
  targetMs: number | null;
97
107
  autoStart: boolean;
98
108
  intervalMs: number;
109
+ label: string;
99
110
  as: PrimitiveAs;
100
111
  asChild: boolean;
101
112
  }, SlotsType<{
package/dist/timer.js CHANGED
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef}from"vue";import{createTimer}from"@sectile/dom/timer";import{Primitive}from"./primitive.js";const timerKey=Symbol("SectileTimerRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const TimerRoot=defineComponent({name:"SectileTimerRoot",inheritAttrs:false,props:{countdown:{type:Boolean,default:false},startMs:{type:Number,default:0},targetMs:{type:Number,default:void 0},autoStart:{type:Boolean,default:false},intervalMs:{type:Number,default:100},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{tick:_valueMs=>true,complete:_valueMs=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef();const connection=shallowRef();const items=new Map;const actions=new Map;const valueMs=shallowRef(props.startMs);const running=shallowRef(props.autoStart);const completed=shallowRef(false);const revision=shallowRef(0);const parts=computed(()=>splitTime(valueMs.value));const progress=computed(()=>getProgress(valueMs.value,props.startMs,props.targetMs,props.countdown));const refresh=()=>{const snapshot=connection.value?.getSnapshot();if(snapshot===void 0)return;revision.value=snapshot.revision;valueMs.value=snapshot.state.valueMs;running.value=snapshot.state.running;completed.value=snapshot.state.completed};const send=action=>{connection.value?.handleEvent(action);refresh()};const state=computed(()=>({valueMs:valueMs.value,running:running.value,completed:completed.value,progress:progress.value,parts:parts.value,start:()=>send("start"),pause:()=>send("pause"),resume:()=>send("resume"),reset:()=>send("reset"),restart:()=>send("restart")}));provide(timerKey,{state,connection,registerItem:(element,type)=>{items.set(type,element);connection.value?.setItemAttributes(element,type)},registerAction:(element,action)=>{actions.set(action,element);connection.value?.setActionAttributes(element,action)}});onMounted(()=>{if(root.value===void 0)throw new TypeError("TimerRoot must render an HTMLElement.");connection.value=createTimer({root:root.value,countdown:props.countdown,startMs:props.startMs,...props.targetMs===void 0?{}:{targetMs:props.targetMs},autoStart:props.autoStart,intervalMs:props.intervalMs,onTick:next=>emit("tick",next),onComplete:next=>emit("complete",next),onUpdate:refresh});for(const[type,element]of items)connection.value.setItemAttributes(element,type);for(const[action,element]of actions)connection.value.setActionAttributes(element,action);refresh()});onBeforeUnmount(()=>connection.value?.disconnect());return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{if(element instanceof HTMLElement)root.value=element},role:"timer","aria-live":"off","data-scope":"timer","data-part":"root","data-state":completed.value?"complete":running.value?"running":"idle","data-countdown":String(props.countdown),"data-revision":String(revision.value)}),{default:()=>slots["default"]?.(state.value)})}});const TimerArea=timerPart("SectileTimerArea","area","div");const TimerSeparator=timerPart("SectileTimerSeparator","separator","span");const TimerControl=timerPart("SectileTimerControl","control","div");const TimerItem=defineComponent({name:"SectileTimerItem",inheritAttrs:false,props:{type:{type:String,required:true},...partProps},setup(props,{attrs,slots}){const root=useTimer("TimerItem");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{if(element instanceof HTMLElement)root.registerItem(element,props.type)},"data-scope":"timer","data-part":"item","data-type":props.type}),{default:()=>slots["default"]?.(root.state.value)??formatPart(props.type,root.state.value.parts[props.type])})}});const TimerActionTrigger=defineComponent({name:"SectileTimerActionTrigger",inheritAttrs:false,props:{action:{type:String,required:true},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useTimer("TimerActionTrigger");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{if(element instanceof HTMLButtonElement)root.registerAction(element,props.action)},type:props.as==="button"?"button":void 0,"data-scope":"timer","data-part":"action-trigger","data-action":props.action}),slots)}});function timerPart(name,part,as){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:as},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){useTimer(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"timer","data-part":part}),slots)}})}function useTimer(part){const root=inject(timerKey);if(root===void 0)throw new TypeError(`${part} must be used inside TimerRoot.`);return root}function splitTime(valueMs){const whole=Math.floor(valueMs);return Object.freeze({days:Math.floor(whole/864e5),hours:Math.floor(whole/36e5)%24,minutes:Math.floor(whole/6e4)%60,seconds:Math.floor(whole/1e3)%60,milliseconds:whole%1e3})}function formatPart(type,value){return String(value).padStart(type==="milliseconds"?3:type==="days"?1:2,"0")}function getProgress(value,start,target,countdown){const resolved=target===void 0?countdown?0:null:target;if(resolved===null)return null;if(resolved===start)return 100;return Math.max(0,Math.min(100,(countdown?(start-value)/(start-resolved):(value-start)/(resolved-start))*100))}export{TimerActionTrigger,TimerArea,TimerControl,TimerItem,TimerRoot,TimerSeparator};
1
+ import{computed,defineComponent,getCurrentScope,h,inject,mergeProps,onBeforeUnmount,onMounted,onScopeDispose,provide,shallowRef}from"vue";import{createTimerState,getTimerParts,getTimerProgress}from"@sectile/core/timer";import{unwrap}from"@sectile/core/result";import{createTimer,getTimerRootAttributes,tryResolveTimerInterval}from"@sectile/dom/timer";import{Primitive}from"./primitive.js";const timerKey=Symbol("SectileTimerRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const TimerRoot=defineComponent({name:"SectileTimerRoot",inheritAttrs:false,props:{countdown:{type:Boolean,default:false},startMs:{type:Number,default:0},targetMs:{type:Number,default:void 0},autoStart:{type:Boolean,default:false},intervalMs:{type:Number,default:100},label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{tick:_valueMs=>true,complete:_valueMs=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef();const connection=shallowRef();const actions=new Map;const policies=Object.freeze({countdown:props.countdown,startMs:props.startMs,...props.targetMs===void 0?{}:{targetMs:props.targetMs}});const autoStart=props.autoStart,intervalMs=unwrap(tryResolveTimerInterval(props.intervalMs));const current=shallowRef(createTimerState(policies,policies.startMs,autoStart));const active=shallowRef(true),revision=shallowRef(0);const refresh=()=>{if(!active.value)return;const snapshot=connection.value?.getSnapshot();if(snapshot===void 0)return;revision.value=snapshot.revision;current.value=snapshot.state};const send=action=>{connection.value?.handleEvent(action);refresh()};const controls=Object.freeze({start:()=>send("start"),pause:()=>send("pause"),resume:()=>send("resume"),reset:()=>send("reset"),restart:()=>send("restart")});const state=computed(()=>{const owned=current.value;return!active.value||owned===void 0?void 0:Object.freeze({...owned,progress:unwrap(getTimerProgress(owned,policies)),parts:unwrap(getTimerParts(owned.valueMs)),...controls})});provide(timerKey,{state,registerAction:(element,action)=>active.value?registerElement(actions,action,element,(owned,key)=>connection.value?.registerAction(owned,key)):()=>{}});onMounted(()=>{if(!active.value)return;if(root.value===void 0)throw new TypeError("TimerRoot must render an HTMLElement.");connection.value=createTimer({root:root.value,...policies,autoStart,intervalMs,onTick:next=>emit("tick",next),onComplete:next=>emit("complete",next),onUpdate:refresh});for(const[action,entry]of actions)if(entry.element!==void 0)entry.release=connection.value.registerAction(entry.element,action);refresh()});const dispose=()=>{if(!active.value)return;active.value=false;const owned=connection.value;connection.value=void 0;root.value=void 0;current.value=void 0;for(const entry of actions.values()){entry.element=void 0;entry.release=void 0}actions.clear();try{owned?.destroy()}finally{void state.value}};onBeforeUnmount(dispose);if(getCurrentScope()!==void 0)onScopeDispose(dispose);const content=()=>{const owned=state.value;return owned===void 0?void 0:slots["default"]?.(owned)};const elementRef=element=>{root.value=active.value&&element instanceof HTMLElement?element:void 0};return()=>{const owned=state.value;if(owned===void 0)return null;return h(Primitive,mergeProps(attrs,getTimerRootAttributes(owned,policies,props.label===void 0?{}:{label:props.label}),{as:props.as,asChild:props.asChild,elementRef,"data-revision":String(revision.value)}),{default:content})}}});const TimerArea=timerPart("SectileTimerArea","area","div");const TimerSeparator=timerPart("SectileTimerSeparator","separator","span");const TimerControl=timerPart("SectileTimerControl","control","div");const TimerItem=defineComponent({name:"SectileTimerItem",inheritAttrs:false,props:{type:{type:String,required:true},...partProps},setup(props,{attrs,slots}){const root=useTimer("TimerItem");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"timer","data-part":"item","data-type":props.type,"data-timer-item":props.type}),{default:()=>{const owned=root.state.value;return owned===void 0?void 0:slots["default"]?.(owned)??formatPart(props.type,owned.parts[props.type])}})}});const TimerActionTrigger=defineComponent({name:"SectileTimerActionTrigger",inheritAttrs:false,props:{action:{type:String,required:true},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useTimer("TimerActionTrigger");let release,registered,registeredAction;const cleanup=()=>{release?.();release=void 0;registered=void 0;registeredAction=void 0};onBeforeUnmount(cleanup);const elementRef=element=>{if(element===registered&&props.action===registeredAction)return;cleanup();if(element instanceof HTMLButtonElement){registered=element;registeredAction=props.action;release=root.registerAction(element,props.action)}};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef,type:props.as==="button"?"button":void 0,"data-scope":"timer","data-part":"action-trigger","data-action":props.action}),slots)}});function registerElement(entries,key,element,attach){const previous=entries.get(key);if(previous!==void 0){previous.release?.();previous.release=void 0;previous.element=void 0}let entry={element,release:attach(element,key)};entries.set(key,entry);return()=>{const owned=entry;entry=void 0;if(owned===void 0)return;owned.release?.();owned.release=void 0;owned.element=void 0;if(entries.get(key)===owned)entries.delete(key)}}function timerPart(name,part,as){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:as},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){useTimer(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"timer","data-part":part}),slots)}})}function useTimer(part){const root=inject(timerKey);if(root===void 0)throw new TypeError(`${part} must be used inside TimerRoot.`);return root}function formatPart(type,value){return String(value).padStart(type==="milliseconds"?3:type==="days"?1:2,"0")}export{TimerActionTrigger,TimerArea,TimerControl,TimerItem,TimerRoot,TimerSeparator};
2
2
  //# sourceMappingURL=timer.js.map
package/dist/timer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/timer.ts"],"mappings":"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","names":[],"file":"timer.js"}
1
+ {"version":3,"sources":["../src/timer.ts"],"mappings":"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","names":[],"file":"timer.js"}
package/dist/toast.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Fragment,Teleport,computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createToast,createToastState}from"@sectile/dom/toast";import{Primitive}from"./primitive.js";import{useHostPortalTarget}from"./host-provider.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./presence/presence.js";const key=Symbol("SectileToastProvider");const ToastProvider=defineComponent({name:"SectileToastProvider",inheritAttrs:false,props:{toasts:{type:Array,default:void 0},initialToasts:{type:Array,default:()=>[]},defaultDurationMs:{type:Number,default:5e3},maxVisible:{type:Number,default:3},closeLabel:{type:String,default:"Dismiss notification"},hotkey:{type:[Array,Boolean],default:()=>["F8"]},pauseOnWindowBlur:{type:Boolean,default:true},dismissOnEscape:{type:Boolean,default:true},swipeDirection:{type:String,default:"right"},swipeThreshold:{type:Number,default:50}},emits:{"update:toasts":_items=>true},slots:Object,setup(props,{emit,slots}){const connection=shallowRef();const pending=[];const controlled=useControlledStateInvariant("ToastProvider","toasts",()=>props.toasts);const initialState=createToastState(props.toasts??props.initialToasts,false,{defaultDurationMs:props.defaultDurationMs,maxVisible:props.maxVisible});const state=shallowRef(initialState);const activeIDs=shallowRef(new Set(initialState.items.map(item=>item.id)));const closeLabel=computed(()=>props.closeLabel);const swipeDirection=computed(()=>props.swipeDirection);let activeItems=[...initialState.items];let viewport;const exiting=new Map;const finishExit=id=>{if(activeIDs.value.has(id)||!exiting.delete(id))return;state.value={...state.value,items:Object.freeze(state.value.items.filter(item=>item.id!==id))}};const refresh=()=>{const next=connection.value?.getSnapshot().state;if(next===void 0)return;const nextIDs=new Set(next.items.map(item=>item.id));for(const item of activeItems)if(!nextIDs.has(item.id))exiting.set(item.id,item);for(const item of next.items)exiting.delete(item.id);activeItems=[...next.items];activeIDs.value=nextIDs;const ordered=[];let activeIndex=0;for(const previous of state.value.items){const exitingItem=exiting.get(previous.id);if(exitingItem!==void 0){ordered.push(exitingItem);continue}if(!nextIDs.has(previous.id))continue;const active=next.items[activeIndex];if(active!==void 0){ordered.push(active);activeIndex+=1}}for(;activeIndex<next.items.length;activeIndex+=1)ordered.push(next.items[activeIndex]);state.value={items:Object.freeze(ordered),paused:next.paused}};const connect=(root,label)=>{viewport={root,label};connection.value?.disconnect();connection.value=createToast({root,...controlled?{items:props.toasts}:{initialToasts:activeItems.map(toInput)},label,closeLabel:props.closeLabel,defaultDurationMs:props.defaultDurationMs,maxVisible:props.maxVisible,hotkey:props.hotkey,pauseOnWindowBlur:props.pauseOnWindowBlur,dismissOnEscape:props.dismissOnEscape,swipeDirection:props.swipeDirection,swipeThreshold:props.swipeThreshold,manageVisibility:false,onItemsChange:items=>{emit("update:toasts",items.map(toInput))},onUpdate:refresh});for(const send2 of pending.splice(0))send2(connection.value);root.querySelectorAll("[data-sectile-toast-item]").forEach(node=>{const id=node.dataset["sectileToastItem"];if(id!==void 0)connection.value?.setToastAttributes(node,id)});root.querySelectorAll("[data-sectile-toast-close]").forEach(node=>{const id=node.dataset["sectileToastClose"];if(id!==void 0)connection.value?.setCloseButtonAttributes(node,id)});refresh()};const disconnect=()=>{connection.value?.disconnect();connection.value=void 0;viewport=void 0;exiting.clear();state.value={...state.value,items:Object.freeze([...activeItems])}};const send=event=>{const target=connection.value;if(target===void 0)pending.push(event);else event(target);refresh()};const context={state,activeIDs,connection,closeLabel,swipeDirection,connect,disconnect,push:input=>send(target=>{target.push(input)}),update:(id,toast)=>send(target=>{target.updateToast(id,toast)}),dismiss:id=>send(target=>{target.dismiss(id)}),dismissAll:()=>send(target=>{target.dismissAll()}),finishExit,registerItem:(element,id)=>connection.value?.setToastAttributes(element,id),registerClose:(element,id)=>connection.value?.setCloseButtonAttributes(element,id)};provide(key,context);watch(()=>props.toasts,items=>{if(!controlled||items===void 0||connection.value===void 0)return;const result=connection.value.syncItems(items);if(!result.ok)throw new TypeError(result.error.message);refresh()});watch([()=>props.closeLabel,()=>props.hotkey,()=>props.pauseOnWindowBlur,()=>props.dismissOnEscape,()=>props.swipeDirection,()=>props.swipeThreshold,()=>props.defaultDurationMs,()=>props.maxVisible],()=>{if(viewport!==void 0)connect(viewport.root,viewport.label)});onBeforeUnmount(()=>{disconnect();pending.length=0;exiting.clear()});return()=>h(Fragment,null,slots["default"]?.({toasts:state.value.items,paused:state.value.paused,toast:context.push,update:context.update,dismiss:context.dismiss,dismissAll:context.dismissAll})??[])}});function useToast(){const context=useProvider("useToast");return Object.freeze({toasts:computed(()=>context.state.value.items),paused:computed(()=>context.state.value.paused),toast:context.push,update:context.update,dismiss:context.dismiss,dismissAll:context.dismissAll})}const ToastPortal=defineComponent({name:"SectileToastPortal",inheritAttrs:false,props:{to:{type:[String,Object],default:void 0},disabled:{type:Boolean,default:false},defer:{type:Boolean,default:false}},setup(props,{slots}){useProvider("ToastPortal");const portalTarget=useHostPortalTarget();return()=>h(Teleport,{to:props.to??portalTarget.value??"body",disabled:props.disabled,defer:props.defer},slots["default"]?.())}});const ToastViewport=defineComponent({name:"SectileToastViewport",inheritAttrs:false,props:{label:{type:String,default:"Notifications"},as:{type:[String,Object,Function],default:"ol"},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useProvider("ToastViewport");const element=shallowRef();let mounted=false;const register=candidate=>{const next=candidate instanceof HTMLElement?candidate:void 0;if(element.value===next)return;element.value=next;if(!mounted)return;if(next===void 0)root.disconnect();else root.connect(next,props.label)};onMounted(()=>{mounted=true;if(element.value!==void 0)root.connect(element.value,props.label)});onBeforeUnmount(()=>{mounted=false;root.disconnect();element.value=void 0});watch(()=>props.label,label=>{if(element.value!==void 0)root.connect(element.value,label)});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:register,tabindex:-1,role:"region","aria-label":props.label,"aria-live":"polite","data-scope":"toast","data-part":"viewport","data-paused":String(root.state.value.paused)}),slots)}});const toastRootKey=Symbol("SectileToastRoot");const ToastRoot=defineComponent({name:"SectileToastRoot",inheritAttrs:false,props:{value:{type:String,required:true},as:{type:[String,Object,Function],default:"li"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const provider=useProvider("ToastRoot");const id=computed(()=>props.value);const item=computed(()=>provider.state.value.items.find(candidate=>candidate.id===id.value)??null);const open=computed(()=>provider.activeIDs.value.has(id.value));const element=shallowRef();const present=usePresence(open,element);let registeredID;const register=candidate=>{const next=candidate instanceof HTMLElement?candidate:void 0;if(element.value===next&&registeredID===(next===void 0?void 0:id.value))return;if(registeredID!==void 0)provider.registerItem(void 0,registeredID);element.value=next;registeredID=next===void 0?void 0:id.value;if(next!==void 0)provider.registerItem(next,id.value)};watch(id,next=>{if(element.value===void 0||registeredID===next)return;if(registeredID!==void 0)provider.registerItem(void 0,registeredID);registeredID=next;provider.registerItem(element.value,next)});watch([open,present],([active,rendered])=>{if(!active&&!rendered)provider.finishExit(id.value)},{flush:"post"});onBeforeUnmount(()=>{if(registeredID!==void 0)provider.registerItem(void 0,registeredID);registeredID=void 0;element.value=void 0});provide(toastRootKey,{id,item});return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:register,hidden:!present.value,...exiting?{inert:true,"aria-hidden":"true"}:{},role:item.value?.kind==="error"?"alert":"status","data-sectile-toast-item":id.value,"data-scope":"toast","data-part":"root","data-state":open.value?"open":"closed","data-swipe-direction":provider.swipeDirection.value,"data-kind":item.value?.kind}),{default:()=>slots["default"]?.({toast:item.value,open:open.value})})}}});const ToastTitle=toastTextPart("SectileToastTitle","title");const ToastDescription=toastTextPart("SectileToastDescription","description");const ToastClose=defineComponent({name:"SectileToastClose",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const provider=useProvider("ToastClose");const root=useToastRoot("ToastClose");const element=shallowRef();let registeredID;const register=candidate=>{const next=candidate instanceof HTMLButtonElement?candidate:void 0;if(element.value===next&&registeredID===(next===void 0?void 0:root.id.value))return;if(registeredID!==void 0)provider.registerClose(void 0,registeredID);element.value=next;registeredID=next===void 0?void 0:root.id.value;if(next!==void 0)provider.registerClose(next,root.id.value)};watch(root.id,next=>{if(element.value===void 0||registeredID===next)return;if(registeredID!==void 0)provider.registerClose(void 0,registeredID);registeredID=next;provider.registerClose(element.value,next)});onBeforeUnmount(()=>{if(registeredID!==void 0)provider.registerClose(void 0,registeredID);registeredID=void 0;element.value=void 0});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:register,type:props.as==="button"?"button":void 0,"aria-label":provider.closeLabel.value,"data-sectile-toast-close":root.id.value,"data-scope":"toast","data-part":"close"}),slots)}});function toastTextPart(name,part){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:part==="title"?"h2":"p"},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useToastRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"toast","data-part":part}),{default:()=>slots["default"]?.()??(part==="title"?root.item.value?.title:root.item.value?.description)})}})}function useProvider(part){const context=inject(key);if(context===void 0)throw new TypeError(`${part} must be used inside ToastProvider.`);return context}function useToastRoot(part){const context=inject(toastRootKey);if(context===void 0)throw new TypeError(`${part} must be used inside ToastRoot.`);return context}function toInput(item){return Object.freeze({id:item.id,title:item.title,...item.description===null?{}:{description:item.description},kind:item.kind,durationMs:item.durationMs})}export{ToastClose,ToastDescription,ToastPortal,ToastProvider,ToastRoot,ToastTitle,ToastViewport,useToast};
1
+ import{Fragment,computed,defineComponent,getCurrentScope,h,inject,mergeProps,onBeforeUnmount,onMounted,onActivated,onDeactivated,onScopeDispose,provide,shallowRef,watch}from'vue';import{createToast}from'@sectile/dom/toast';import{getToastInputs}from'@sectile/core/toast';import{Primitive}from'./primitive.js';import{HostPortal}from'./host-provider.js';import{useControlledStateInvariant}from'./internal/controlled-state.js';import{usePresence}from'./presence/presence.js';const key=Symbol('SectileToastProvider');const viewportKey=Symbol('SectileToastViewport');export const ToastProvider=/* @__PURE__ */defineComponent({name:'SectileToastProvider',inheritAttrs:false,props:{toasts:{type:Array,default:undefined},initialToasts:{type:Array,default:()=>[]},defaultDurationMs:{type:Number,default:5_000},maxVisible:{type:Number,default:3},closeLabel:{type:String,default:'Dismiss notification'},hotkey:{type:[Array,Boolean],default:()=>['F8']},pauseOnWindowBlur:{type:Boolean,default:true},dismissOnEscape:{type:Boolean,default:true},swipeDirection:{type:String,default:'right'},swipeThreshold:{type:Number,default:50}},emits:{'update:toasts':_items=>true},slots:Object,setup(props,{emit,slots}){const connection=shallowRef();let disposed=false;const controlled=useControlledStateInvariant('ToastProvider','toasts',()=>props.toasts);const state=shallowRef({items:Object.freeze([]),paused:false});const activeByID=shallowRef(new Map);const closeLabel=computed(()=>props.closeLabel);const swipeDirection=computed(()=>props.swipeDirection);let activeItems=state.value.items;let published;let viewport;const exiting=new Map;const finishExit=id=>{if(disposed||activeByID.value.has(id)||!exiting.delete(id))return;state.value={...state.value,items:Object.freeze(state.value.items.filter(item=>item.id!==id))}};const refresh=()=>{const native=connection.value,next=native?.getSnapshot().state;if(disposed||next===undefined||next===published)return;published=next;if(next.items===activeItems){if(state.value.paused!==next.paused)state.value={items:state.value.items,paused:next.paused};return}const nextIDs=new Map(next.items.map(item=>[item.id,item]));for(const item of activeItems)if(!nextIDs.has(item.id)){if(viewport!==undefined&&native?.getToastElement(item.id)!==undefined)exiting.set(item.id,item);else exiting.delete(item.id)}for(const item of next.items)exiting.delete(item.id);activeItems=next.items;activeByID.value=nextIDs;const ordered=[];let activeIndex=0;for(const previous of state.value.items){const exitingItem=exiting.get(previous.id);if(exitingItem!==undefined){ordered.push(exitingItem);continue}if(!nextIDs.has(previous.id))continue;const active=next.items[activeIndex];if(active!==undefined){ordered.push(active);activeIndex+=1}}for(;activeIndex<next.items.length;activeIndex+=1)ordered.push(next.items[activeIndex]);state.value={items:Object.freeze(ordered),paused:next.paused}};connection.value=createToast({...controlled?{items:props.toasts}:{initialToasts:props.initialToasts},closeLabel:props.closeLabel,defaultDurationMs:props.defaultDurationMs,maxVisible:props.maxVisible,hotkey:props.hotkey,pauseOnWindowBlur:props.pauseOnWindowBlur,dismissOnEscape:props.dismissOnEscape,swipeDirection:props.swipeDirection,swipeThreshold:props.swipeThreshold,manageVisibility:false,onItemsChange:items=>{if(disposed)return;refresh();if(!disposed)emit('update:toasts',getToastInputs(items))},onUpdate:refresh});refresh();const commands=toastCommands(connection.value);const connect=(root,label,owner)=>{if(disposed||connection.value===undefined)return;if(viewport?.root===root&&viewport.owner===owner){connection.value.setViewport(root,label);return}viewport={root,owner};exiting.clear();state.value={items:activeItems,paused:state.value.paused};connection.value.setViewport(root,label);if(disposed||viewport?.owner!==owner||connection.value===undefined)return;root.querySelectorAll('[data-sectile-toast-item]').forEach(node=>{const id=node.dataset['sectileToastItem'];if(id!==undefined)connection.value?.setToastAttributes(node,id)});root.querySelectorAll('[data-sectile-toast-close]').forEach(node=>{const id=node.dataset['sectileToastClose'];if(id!==undefined)connection.value?.setCloseButtonAttributes(node,id)});refresh()};const disconnect=owner=>{if(disposed||viewport?.owner!==owner)return;viewport=undefined;connection.value?.setViewport(undefined);exiting.clear();state.value={items:activeItems,paused:state.value.paused}};const context={state,activeItems:activeByID,exiting,closeLabel,swipeDirection,connect,disconnect,push:commands.push,update:commands.update,dismiss:commands.dismiss,dismissAll:commands.dismissAll,finishExit,registerItem:(element,id,owner)=>{if(!disposed&&(owner===undefined||viewport?.owner===owner))connection.value?.setToastAttributes(element,id)},registerClose:(element,id,owner)=>{if(!disposed&&(owner===undefined||viewport?.owner===owner))connection.value?.setCloseButtonAttributes(element,id)}};provide(key,context);watch(()=>props.toasts,items=>{if(!controlled||items===undefined||disposed)return;const result=connection.value?.syncItems(items);if(result&&!result.ok)throw new TypeError(result.error.message)});watch([()=>props.closeLabel,()=>props.hotkey,()=>props.pauseOnWindowBlur,()=>props.dismissOnEscape,()=>props.swipeDirection,()=>props.swipeThreshold],()=>{if(disposed)return;const result=connection.value?.syncConfiguration({closeLabel:props.closeLabel,hotkey:props.hotkey,pauseOnWindowBlur:props.pauseOnWindowBlur,dismissOnEscape:props.dismissOnEscape,swipeDirection:props.swipeDirection,swipeThreshold:props.swipeThreshold});if(result&&!result.ok)throw new TypeError(result.error.message)});watch([()=>props.defaultDurationMs,()=>props.maxVisible],(_next,previous)=>{if(disposed)return;const result=connection.value?.syncConfiguration({defaultDurationMs:props.defaultDurationMs,maxVisible:props.maxVisible});if(result&&!result.ok)throw new TypeError(result.error.message);if(controlled&&props.toasts!==undefined&&props.maxVisible!==previous[1]){const synchronized=connection.value?.syncItems(props.toasts);if(synchronized&&!synchronized.ok)throw new TypeError(synchronized.error.message)}});const dispose=()=>{if(disposed)return;disposed=true;connection.value=undefined;viewport=undefined;published=undefined;exiting.clear();state.value={items:activeItems,paused:state.value.paused};commands.dispose()};onBeforeUnmount(dispose);if(getCurrentScope()!==undefined)onScopeDispose(dispose);return()=>h(Fragment,null,slots['default']?.({toasts:state.value.items,paused:state.value.paused,toast:context.push,update:context.update,dismiss:context.dismiss,dismissAll:context.dismissAll})??[])}});export function useToast(){const{state,push,update,dismiss,dismissAll}=useProvider('useToast');return Object.freeze({toasts:computed(()=>state.value.items),paused:computed(()=>state.value.paused),toast:push,update,dismiss,dismissAll})}export const ToastPortal=/* @__PURE__ */defineComponent({name:'SectileToastPortal',inheritAttrs:false,props:{to:{type:[String,Object],default:undefined},disabled:{type:Boolean,default:false},defer:{type:Boolean,default:false}},setup(props,{slots}){useProvider('ToastPortal');return()=>h(HostPortal,props,slots)}});export const ToastViewport=/* @__PURE__ */defineComponent({name:'SectileToastViewport',inheritAttrs:false,props:{label:{type:String,default:'Notifications'},as:{type:[String,Object,Function],default:'ol'},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useProvider('ToastViewport');const element=shallowRef();const owner={};provide(viewportKey,owner);let mounted=false,disposed=false;const register=candidate=>{if(disposed)return;const next=candidate instanceof HTMLElement?candidate:undefined;if(element.value===next)return;element.value=next;if(!mounted)return;if(next===undefined)root.disconnect(owner);else root.connect(next,props.label,owner)};const activate=()=>{if(disposed)return;mounted=true;if(element.value!==undefined)root.connect(element.value,props.label,owner)};onMounted(activate);onActivated(activate);onDeactivated(()=>{mounted=false;root.disconnect(owner)});onBeforeUnmount(()=>{disposed=true;mounted=false;root.disconnect(owner);element.value=undefined});watch(()=>props.label,label=>{if(!disposed&&mounted&&element.value!==undefined)root.connect(element.value,label,owner)});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:register,tabindex:-1,role:'region','aria-label':props.label,'aria-live':'polite','data-scope':'toast','data-part':'viewport','data-paused':String(root.state.value.paused)}),slots)}});const toastRootKey=Symbol('SectileToastRoot');export const ToastRoot=/* @__PURE__ */defineComponent({name:'SectileToastRoot',inheritAttrs:false,props:{value:{type:String,required:true},as:{type:[String,Object,Function],default:'li'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const provider=useProvider('ToastRoot');const owner=inject(viewportKey,undefined);const id=computed(()=>props.value);const item=computed(()=>{const active=provider.activeItems.value.get(id.value);if(active!==undefined)return active;void provider.state.value;return provider.exiting.get(id.value)??null});const open=computed(()=>provider.activeItems.value.has(id.value));const element=shallowRef();const present=usePresence(open,element);let registeredID;let alive=true;const register=candidate=>{if(!alive)return;const next=candidate instanceof HTMLElement?candidate:undefined;if(element.value===next&&registeredID===(next===undefined?undefined:id.value))return;if(registeredID!==undefined)provider.registerItem(undefined,registeredID,owner);element.value=next;registeredID=next===undefined?undefined:id.value;if(next!==undefined)provider.registerItem(next,id.value,owner)};watch(id,next=>{if(element.value===undefined||registeredID===next)return;if(registeredID!==undefined)provider.registerItem(undefined,registeredID,owner);registeredID=next;provider.registerItem(element.value,next,owner)});watch([open,present],([active,rendered])=>{if(!active&&!rendered)provider.finishExit(id.value)},{flush:'post'});onBeforeUnmount(()=>{alive=false;if(registeredID!==undefined)provider.registerItem(undefined,registeredID,owner);registeredID=undefined;element.value=undefined});provide(toastRootKey,{id,item});return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:register,hidden:!present.value,...exiting?{inert:true,'aria-hidden':'true'}:{},role:item.value?.kind==='error'?'alert':'status','data-sectile-toast-item':id.value,'data-scope':'toast','data-part':'root','data-state':open.value?'open':'closed','data-swipe-direction':provider.swipeDirection.value,'data-kind':item.value?.kind}),{default:()=>slots['default']?.({toast:item.value,open:open.value})})}}});export const ToastTitle=/* @__PURE__ */toastTextPart('SectileToastTitle','title');export const ToastDescription=/* @__PURE__ */toastTextPart('SectileToastDescription','description');export const ToastClose=/* @__PURE__ */defineComponent({name:'SectileToastClose',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const provider=useProvider('ToastClose');const root=useToastRoot('ToastClose');const owner=inject(viewportKey,undefined);const element=shallowRef();let registeredID;let alive=true;const register=candidate=>{if(!alive)return;const next=candidate instanceof HTMLButtonElement?candidate:undefined;if(element.value===next&&registeredID===(next===undefined?undefined:root.id.value))return;if(registeredID!==undefined)provider.registerClose(undefined,registeredID,owner);element.value=next;registeredID=next===undefined?undefined:root.id.value;if(next!==undefined)provider.registerClose(next,root.id.value,owner)};watch(root.id,next=>{if(element.value===undefined||registeredID===next)return;if(registeredID!==undefined)provider.registerClose(undefined,registeredID,owner);registeredID=next;provider.registerClose(element.value,next,owner)});onBeforeUnmount(()=>{alive=false;if(registeredID!==undefined)provider.registerClose(undefined,registeredID,owner);registeredID=undefined;element.value=undefined});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:register,type:props.as==='button'?'button':undefined,'aria-label':provider.closeLabel.value,'data-sectile-toast-close':root.id.value,'data-scope':'toast','data-part':'close'}),slots)}});function toastTextPart(name,part){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:part==='title'?'h2':'p'},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useToastRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,'data-scope':'toast','data-part':part}),{default:()=>slots['default']?.()??(part==='title'?root.item.value?.title:root.item.value?.description)})}})}function useProvider(part){const context=inject(key);if(context===undefined)throw new TypeError(`${part} must be used inside ToastProvider.`);return context}function useToastRoot(part){const context=inject(toastRootKey);if(context===undefined)throw new TypeError(`${part} must be used inside ToastRoot.`);return context}function toastCommands(connection){return{push(input){connection?.push(input)},update(id,toast){connection?.updateToast(id,toast)},dismiss(id){connection?.dismiss(id)},dismissAll(){connection?.dismissAll()},dispose(){const owned=connection;connection=undefined;owned?.destroy()}}}
2
2
  //# sourceMappingURL=toast.js.map
package/dist/toast.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/toast.ts"],"mappings":"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","names":["send"],"file":"toast.js"}
1
+ {"version":3,"file":"toast.js","names":["Fragment","computed","defineComponent","getCurrentScope","h","inject","mergeProps","onBeforeUnmount","onMounted","onActivated","onDeactivated","onScopeDispose","provide","shallowRef","watch","createToast","getToastInputs","Primitive","HostPortal","useControlledStateInvariant","usePresence","key","Symbol","viewportKey","ToastProvider","name","inheritAttrs","props","toasts","type","Array","default","undefined","initialToasts","defaultDurationMs","Number","maxVisible","closeLabel","String","hotkey","Boolean","pauseOnWindowBlur","dismissOnEscape","swipeDirection","swipeThreshold","emits","_items","slots","Object","setup","emit","connection","disposed","controlled","state","items","freeze","paused","activeByID","Map","activeItems","value","published","viewport","exiting","finishExit","id","has","delete","filter","item","refresh","native","next","getSnapshot","nextIDs","map","getToastElement","set","ordered","activeIndex","previous","exitingItem","get","push","active","length","manageVisibility","onItemsChange","onUpdate","commands","toastCommands","connect","root","label","owner","setViewport","clear","querySelectorAll","forEach","node","dataset","setToastAttributes","setCloseButtonAttributes","disconnect","context","update","dismiss","dismissAll","registerItem","element","registerClose","result","syncItems","ok","TypeError","error","message","syncConfiguration","_next","synchronized","dispose","toast","useToast","useProvider","ToastPortal","to","disabled","defer","ToastViewport","as","Function","asChild","attrs","mounted","register","candidate","HTMLElement","activate","elementRef","tabindex","role","toastRootKey","ToastRoot","required","provider","open","present","registeredID","alive","rendered","flush","hidden","inert","kind","ToastTitle","toastTextPart","ToastDescription","ToastClose","useToastRoot","HTMLButtonElement","part","title","description","input","updateToast","owned","destroy"],"sources":["../src/toast.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,nextTick,provide,shallowRef,watch}from"vue";import{getToggleGroupItemAttributes,getToggleGroupRootAttributes}from"@sectile/dom/toggle-group";import{createListboxControllerFromItems}from"@sectile/dom/listbox";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{provideFormControlOwner}from"./form/control.js";import{hiddenValueSubmissionCapabilities,useCompositeFormControl}from"./form/control.js";import{useHostDirection}from"./host-provider.js";import{reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const rootKey=Symbol("SectileToggleGroupRoot");const ToggleGroupRoot=defineComponent({name:"SectileToggleGroupRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},multiple:{type:Boolean,default:false},deselectable:{type:Boolean,default:true},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},label:{type:String,default:void 0},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const direction=useHostDirection();const rootElement=shallowRef(null);const submissionElements=[];const participation=useCompositeFormControl({root:rootElement,submissions:()=>value.value.map((_,index)=>({element:()=>submissionElements[index]??null,capabilities:hiddenValueSubmissionCapabilities}))});provideFormControlOwner();const controlled=useControlledStateInvariant("ToggleGroupRoot","modelValue",()=>props.modelValue);const makeController=(value2,highlightedValue=value2[0]??null)=>{const result=createListboxControllerFromItems({items:props.items,selectionMode:props.multiple?"multiple":"single",disabledItems:props.disabledItems,disabled:props.disabled,readOnly:props.readonly,orientation:props.orientation,direction:direction.value,activationMode:"toggle",clearOnEscape:false,policies:{deselectable:props.deselectable,boundary:"wrap"},...controlled?{value:value2}:{defaultValue:value2},defaultHighlightedValue:highlightedValue??props.items.find(id=>!props.disabledItems.includes(id))??null,onValueChange:({value:next})=>emit("update:modelValue",next),onHighlightedValueChange:({value:next})=>emit("highlight",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value};const controller=shallowRef(makeController(props.modelValue??props.defaultValue));const snapshot=shallowRef(controller.value.getSnapshot());const rebuild=()=>{const requested=controlled?props.modelValue:snapshot.value.state.selection.selected;const reconciled=reconcileCollectionState(props.items,requested,snapshot.value.state.cursor.current,props.disabledItems,props.multiple?"multiple":"single");controller.value=makeController(reconciled.selected,reconciled.current);snapshot.value=controller.value.getSnapshot();if(controlled&&!sameIDs(requested,reconciled.selected))emit("update:modelValue",reconciled.selected)};watch(()=>props.modelValue,next=>{if(!controlled||next===void 0)return;const result=controller.value.syncControlledValues({value:next});if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.orientation,()=>props.multiple,()=>props.deselectable,direction],rebuild);const value=computed(()=>snapshot.value.state.selection.selected);const highlighted=computed(()=>snapshot.value.state.cursor.current);const disabled=computed(()=>props.disabled);const readonly=computed(()=>props.readonly);const disabledItems=computed(()=>new Set(props.disabledItems));const apply=(result,root)=>{if(!result.ok)return false;snapshot.value=result.snapshot;if(root!==void 0)void nextTick(()=>focusItem(root,result.snapshot.state.cursor.current));return true};provide(rootKey,{value,highlighted,disabled,readonly,disabledItems,press:(id,target)=>apply(controller.value.handleEvent({type:"toggle",id}),target.closest('[data-scope="toggle-group"][data-part="root"]'))});const slotProps=computed(()=>({value:value.value,highlightedValue:highlighted.value,disabled:props.disabled,readonly:props.readonly}));return()=>{const root=h(Primitive,mergeProps(attrs,getToggleGroupRootAttributes({orientation:props.orientation,direction:direction.value,...props.label===void 0?{}:{label:props.label},disabled:props.disabled,readOnly:props.readonly}),{as:props.as,asChild:props.asChild,elementRef:element=>{rootElement.value=element},onKeydown:event=>{if(apply(controller.value.handleKeyboardInput(event),event.currentTarget))event.preventDefault()}},participation.controlProps.value),{default:()=>slots["default"]?.(slotProps.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0)return root;return[root,...value.value.map((selected,index)=>h("input",{ref:element=>{submissionElements[index]=element instanceof HTMLInputElement?element:null},type:"hidden",name:props.name,form:props.form,value:selected,disabled:props.disabled,style:visuallyHiddenInputStyle}))]}}});const ToggleGroupItem=defineComponent({name:"SectileToggleGroupItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot();const state=computed(()=>({value:props.value,pressed:root.value.value.includes(props.value),highlighted:root.highlighted.value===props.value,disabled:root.disabled.value||props.disabled||root.disabledItems.value.has(props.value),readonly:root.readonly.value}));return()=>h(Primitive,mergeProps(attrs,getToggleGroupItemAttributes({id:props.value,pressed:state.value.pressed,highlighted:state.value.highlighted,disabled:state.value.disabled}),{as:props.as,asChild:props.asChild,onClick:event=>{if(!event.defaultPrevented&&!state.value.disabled&&!state.value.readonly)root.press(props.value,event.currentTarget)}}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(){const root=inject(rootKey);if(root===void 0)throw new TypeError("ToggleGroupItem must be used inside ToggleGroupRoot.");return root}function focusItem(root,id){if(id===null)return;for(const item of root.querySelectorAll("[data-toggle-group-id]"))if(item.dataset["toggleGroupId"]===id)item.focus()}export{ToggleGroupItem,ToggleGroupRoot};
1
+ import{computed,defineComponent,h,inject,mergeProps,nextTick,provide,shallowRef,watch}from"vue";import{getToggleGroupItemAttributes,getToggleGroupRootAttributes}from"@sectile/dom/toggle-group";import{createListboxControllerFromItems}from"@sectile/dom/listbox";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{provideFormControlOwner}from"./form/control.js";import{hiddenValueSubmissionCapabilities,useCompositeFormControl,useFormSubmissionProps,useFormControlFlags}from"./form/control.js";import{useHostDirection}from"./host-provider.js";import{reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const rootKey=Symbol("SectileToggleGroupRoot");const ToggleGroupRoot=defineComponent({__sectileFormLabelMode:"labelledby",name:"SectileToggleGroupRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},multiple:{type:Boolean,default:false},deselectable:{type:Boolean,default:true},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},label:{type:String,default:void 0},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const flags=useFormControlFlags(props);const direction=useHostDirection();const rootElement=shallowRef(null);const submissionElements=[];const submissionProps=useFormSubmissionProps({element:()=>null,capabilities:hiddenValueSubmissionCapabilities},props);const participation=useCompositeFormControl({root:rootElement,submissions:()=>value.value.map((_,index)=>({element:()=>submissionElements[index]??null,capabilities:hiddenValueSubmissionCapabilities})),reset:()=>{if(controlled)return;const reconciled=reconcileCollectionState(props.items,initialValue,initialValue[0]??null,props.disabledItems,props.multiple?"multiple":"single");controller.value=makeController(reconciled.selected,reconciled.current);snapshot.value=controller.value.getSnapshot()}});provideFormControlOwner();const controlled=useControlledStateInvariant("ToggleGroupRoot","modelValue",()=>props.modelValue);const initialValue=Object.freeze([...controlled?props.modelValue??[]:props.defaultValue]);const makeController=(value2,highlightedValue=value2[0]??null)=>{const result=createListboxControllerFromItems({items:props.items,selectionMode:props.multiple?"multiple":"single",disabledItems:props.disabledItems,disabled:flags.value.disabled,readOnly:flags.value.readonly,orientation:props.orientation,direction:direction.value,activationMode:"toggle",clearOnEscape:false,policies:{deselectable:props.deselectable,boundary:"wrap"},...controlled?{value:value2}:{defaultValue:value2},defaultHighlightedValue:highlightedValue??props.items.find(id=>!props.disabledItems.includes(id))??null,onValueChange:({value:next})=>emit("update:modelValue",next),onHighlightedValueChange:({value:next})=>emit("highlight",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value};const controller=shallowRef(makeController(props.modelValue??props.defaultValue));const snapshot=shallowRef(controller.value.getSnapshot());const rebuild=()=>{const requested=controlled?props.modelValue:snapshot.value.state.selection.selected;const reconciled=reconcileCollectionState(props.items,requested,snapshot.value.state.cursor.current,props.disabledItems,props.multiple?"multiple":"single");controller.value=makeController(reconciled.selected,reconciled.current);snapshot.value=controller.value.getSnapshot();if(controlled&&!sameIDs(requested,reconciled.selected))emit("update:modelValue",reconciled.selected)};watch(()=>props.modelValue,next=>{if(!controlled||next===void 0)return;const result=controller.value.syncControlledValues({value:next});if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.items,()=>props.disabledItems,()=>flags.value.disabled,()=>flags.value.readonly,()=>props.orientation,()=>props.multiple,()=>props.deselectable,direction],rebuild);const value=computed(()=>snapshot.value.state.selection.selected);const highlighted=computed(()=>snapshot.value.state.cursor.current);const disabled=computed(()=>flags.value.disabled);const readonly=computed(()=>flags.value.readonly);const disabledItems=computed(()=>new Set(props.disabledItems));const apply=(result,root)=>{if(!result.ok)return false;snapshot.value=result.snapshot;if(root!==void 0)void nextTick(()=>focusItem(root,result.snapshot.state.cursor.current));return true};provide(rootKey,{value,highlighted,disabled,readonly,disabledItems,focus:id=>{if(snapshot.value.state.cursor.current!==id)apply(controller.value.handleEvent({type:"focus",id}))},press:(id,target)=>apply(controller.value.handleEvent({type:"toggle",id}),target.closest('[data-scope="toggle-group"][data-part="root"]'))});const slotProps=computed(()=>({value:value.value,highlightedValue:highlighted.value,disabled:flags.value.disabled,readonly:flags.value.readonly}));return()=>{const root=h(Primitive,mergeProps(attrs,getToggleGroupRootAttributes({orientation:props.orientation,direction:direction.value,...props.label===void 0?{}:{label:props.label},disabled:flags.value.disabled,readOnly:flags.value.readonly}),{as:props.as,asChild:props.asChild,elementRef:element=>{rootElement.value=element},onKeydown:event=>{if(apply(controller.value.handleKeyboardInput(event),event.currentTarget))event.preventDefault()}},participation.controlProps.value),{default:()=>slots["default"]?.(slotProps.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0)return root;return[root,...value.value.map((selected,index)=>h("input",{ref:element=>{submissionElements[index]=element instanceof HTMLInputElement?element:null},type:"hidden",...submissionProps.value,value:selected,style:visuallyHiddenInputStyle}))]}}});const ToggleGroupItem=defineComponent({name:"SectileToggleGroupItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot();const state=computed(()=>({value:props.value,pressed:root.value.value.includes(props.value),highlighted:root.highlighted.value===props.value,disabled:root.disabled.value||props.disabled||root.disabledItems.value.has(props.value),readonly:root.readonly.value}));return()=>h(Primitive,mergeProps(attrs,getToggleGroupItemAttributes({id:props.value,pressed:state.value.pressed,highlighted:state.value.highlighted,disabled:state.value.disabled}),{as:props.as,asChild:props.asChild,onFocus:()=>{if(!state.value.disabled)root.focus(props.value)},onClick:event=>{if(!event.defaultPrevented&&!state.value.disabled&&!state.value.readonly)root.press(props.value,event.currentTarget)}}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(){const root=inject(rootKey);if(root===void 0)throw new TypeError("ToggleGroupItem must be used inside ToggleGroupRoot.");return root}function focusItem(root,id){if(id===null)return;const token=getToggleGroupItemAttributes({id,pressed:false,highlighted:false})["data-toggle-group-id"];for(const item of root.querySelectorAll("[data-toggle-group-id]"))if(item.dataset["toggleGroupId"]===token)item.focus()}export{ToggleGroupItem,ToggleGroupRoot};
2
2
  //# sourceMappingURL=toggle-group.js.map