foldkit 0.90.0 → 0.91.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 (103) hide show
  1. package/README.md +21 -10
  2. package/dist/canvas/index.d.ts +5 -0
  3. package/dist/canvas/index.d.ts.map +1 -0
  4. package/dist/canvas/index.js +2 -0
  5. package/dist/canvas/paint.d.ts +14 -0
  6. package/dist/canvas/paint.d.ts.map +1 -0
  7. package/dist/canvas/paint.js +144 -0
  8. package/dist/canvas/public.d.ts +3 -0
  9. package/dist/canvas/public.d.ts.map +1 -0
  10. package/dist/canvas/public.js +1 -0
  11. package/dist/canvas/shape.d.ts +188 -0
  12. package/dist/canvas/shape.d.ts.map +1 -0
  13. package/dist/canvas/shape.js +103 -0
  14. package/dist/canvas/view.d.ts +38 -0
  15. package/dist/canvas/view.d.ts.map +1 -0
  16. package/dist/canvas/view.js +97 -0
  17. package/dist/devTools/overlay.d.ts.map +1 -1
  18. package/dist/devTools/overlay.js +148 -148
  19. package/dist/devTools/store.d.ts +1 -1
  20. package/dist/devTools/store.d.ts.map +1 -1
  21. package/dist/devTools/store.js +1 -2
  22. package/dist/html/index.d.ts +3 -3
  23. package/dist/html/index.d.ts.map +1 -1
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -0
  27. package/dist/runtime/crashUI.js +30 -30
  28. package/dist/runtime/runtime.d.ts.map +1 -1
  29. package/dist/runtime/runtime.js +15 -10
  30. package/dist/subscription/animationFrame.d.ts +53 -0
  31. package/dist/subscription/animationFrame.d.ts.map +1 -0
  32. package/dist/subscription/animationFrame.js +47 -0
  33. package/dist/subscription/public.d.ts +2 -0
  34. package/dist/subscription/public.d.ts.map +1 -1
  35. package/dist/subscription/public.js +1 -0
  36. package/dist/test/apps/bubbling.js +4 -4
  37. package/dist/test/apps/disabledButton.js +10 -10
  38. package/dist/test/apps/fileUpload.d.ts.map +1 -1
  39. package/dist/test/apps/fileUpload.js +13 -13
  40. package/dist/test/apps/interactions.d.ts.map +1 -1
  41. package/dist/test/apps/interactions.js +15 -15
  42. package/dist/test/apps/keypress.js +8 -8
  43. package/dist/test/apps/login.d.ts.map +1 -1
  44. package/dist/test/apps/login.js +32 -24
  45. package/dist/test/apps/logoutButton.d.ts.map +1 -1
  46. package/dist/test/apps/logoutButton.js +2 -2
  47. package/dist/test/apps/mountPanel.js +10 -10
  48. package/dist/test/apps/multiRole.js +3 -3
  49. package/dist/test/apps/pointer.d.ts.map +1 -1
  50. package/dist/test/apps/pointer.js +11 -11
  51. package/dist/test/apps/resumeUpload.d.ts.map +1 -1
  52. package/dist/test/apps/resumeUpload.js +8 -8
  53. package/dist/ui/animation/index.js +24 -24
  54. package/dist/ui/button/index.d.ts.map +1 -1
  55. package/dist/ui/button/index.js +6 -6
  56. package/dist/ui/calendar/index.d.ts.map +1 -1
  57. package/dist/ui/calendar/index.js +101 -99
  58. package/dist/ui/checkbox/index.d.ts.map +1 -1
  59. package/dist/ui/checkbox/index.js +15 -15
  60. package/dist/ui/combobox/shared.d.ts.map +1 -1
  61. package/dist/ui/combobox/shared.js +102 -90
  62. package/dist/ui/datePicker/index.js +4 -4
  63. package/dist/ui/dialog/index.d.ts.map +1 -1
  64. package/dist/ui/dialog/index.js +27 -27
  65. package/dist/ui/disclosure/index.d.ts.map +1 -1
  66. package/dist/ui/disclosure/index.js +24 -22
  67. package/dist/ui/dragAndDrop/index.d.ts +1 -1
  68. package/dist/ui/dragAndDrop/index.d.ts.map +1 -1
  69. package/dist/ui/dragAndDrop/index.js +15 -15
  70. package/dist/ui/fieldset/index.js +6 -6
  71. package/dist/ui/fileDrop/index.d.ts +2 -2
  72. package/dist/ui/fileDrop/index.d.ts.map +1 -1
  73. package/dist/ui/fileDrop/index.js +16 -16
  74. package/dist/ui/input/index.d.ts.map +1 -1
  75. package/dist/ui/input/index.js +15 -13
  76. package/dist/ui/listbox/multi.d.ts +1 -1
  77. package/dist/ui/listbox/shared.d.ts +1 -1
  78. package/dist/ui/listbox/shared.d.ts.map +1 -1
  79. package/dist/ui/listbox/shared.js +85 -79
  80. package/dist/ui/listbox/single.d.ts +1 -1
  81. package/dist/ui/menu/index.d.ts.map +1 -1
  82. package/dist/ui/menu/index.js +69 -67
  83. package/dist/ui/popover/index.d.ts.map +1 -1
  84. package/dist/ui/popover/index.js +41 -39
  85. package/dist/ui/radioGroup/index.d.ts.map +1 -1
  86. package/dist/ui/radioGroup/index.js +20 -20
  87. package/dist/ui/select/index.d.ts.map +1 -1
  88. package/dist/ui/select/index.js +13 -11
  89. package/dist/ui/slider/index.d.ts.map +1 -1
  90. package/dist/ui/slider/index.js +26 -26
  91. package/dist/ui/switch/index.d.ts.map +1 -1
  92. package/dist/ui/switch/index.js +14 -14
  93. package/dist/ui/tabs/index.d.ts.map +1 -1
  94. package/dist/ui/tabs/index.js +40 -36
  95. package/dist/ui/textarea/index.d.ts.map +1 -1
  96. package/dist/ui/textarea/index.js +15 -13
  97. package/dist/ui/toast/index.d.ts.map +1 -1
  98. package/dist/ui/toast/index.js +27 -27
  99. package/dist/ui/tooltip/index.d.ts.map +1 -1
  100. package/dist/ui/tooltip/index.js +23 -23
  101. package/dist/ui/virtualList/index.d.ts.map +1 -1
  102. package/dist/ui/virtualList/index.js +18 -15
  103. package/package.json +5 -1
@@ -390,7 +390,7 @@ export const PortalComboboxBackdrop = Mount.define('PortalComboboxBackdrop', Com
390
390
  }));
391
391
  /** Creates a combobox view function from variant-specific behavior. Shared rendering logic (input, items, transitions, keyboard navigation) is handled internally; only selection display varies by variant. */
392
392
  export const makeView = (behavior) => (config) => {
393
- const { div, input, AriaActiveDescendant, AriaControls, AriaDisabled, AriaExpanded, AriaInvalid, AriaLabelledBy, AriaMultiSelectable, AriaSelected, Attribute, Autocomplete, Class, DataAttribute, Id, Name, OnBlur, OnClick, OnFocus, OnInput, OnKeyDownPreventDefault, OnMount, OnPointerLeave, OnPointerMove, Placeholder, Role, Style, Tabindex, Type, Value, keyed, } = html();
393
+ const h = html();
394
394
  const { model: { id, isOpen, immediate, animation: { transitionState }, maybeActiveItemIndex, }, toParentMessage, onSelectedItem, items, itemToConfig, itemToValue, itemToDisplayText, isItemDisabled, inputClassName, inputAttributes = [], inputPlaceholder, inputWrapperClassName, inputWrapperAttributes = [], itemsClassName, itemsAttributes = [], itemsScrollClassName, itemsScrollAttributes = [], backdropClassName, backdropAttributes = [], className, attributes = [], buttonContent, buttonClassName, buttonAttributes = [], formName, isDisabled, isInvalid, openOnFocus, itemGroupKey, groupToHeading, groupClassName, groupAttributes = [], separatorClassName, separatorAttributes = [], anchor, } = config;
395
395
  const dispatchSelectedItem = (item, index) => onSelectedItem
396
396
  ? onSelectedItem(itemToValue(item, index))
@@ -401,19 +401,19 @@ export const makeView = (behavior) => (config) => {
401
401
  const isLeaving = transitionState === 'LeaveStart' || transitionState === 'LeaveAnimating';
402
402
  const isVisible = isOpen || isLeaving;
403
403
  const animationAttributes = M.value(transitionState).pipe(M.when('EnterStart', () => [
404
- DataAttribute('closed', ''),
405
- DataAttribute('enter', ''),
406
- DataAttribute('transition', ''),
404
+ h.DataAttribute('closed', ''),
405
+ h.DataAttribute('enter', ''),
406
+ h.DataAttribute('transition', ''),
407
407
  ]), M.when('EnterAnimating', () => [
408
- DataAttribute('enter', ''),
409
- DataAttribute('transition', ''),
408
+ h.DataAttribute('enter', ''),
409
+ h.DataAttribute('transition', ''),
410
410
  ]), M.when('LeaveStart', () => [
411
- DataAttribute('leave', ''),
412
- DataAttribute('transition', ''),
411
+ h.DataAttribute('leave', ''),
412
+ h.DataAttribute('transition', ''),
413
413
  ]), M.when('LeaveAnimating', () => [
414
- DataAttribute('closed', ''),
415
- DataAttribute('leave', ''),
416
- DataAttribute('transition', ''),
414
+ h.DataAttribute('closed', ''),
415
+ h.DataAttribute('leave', ''),
416
+ h.DataAttribute('transition', ''),
417
417
  ]), M.orElse(() => []));
418
418
  const isDisabledAtIndex = (index) => Predicate.isNotUndefined(isItemDisabled) &&
419
419
  pipe(items, Array.get(index), Option.exists(item => isItemDisabled(item, index)));
@@ -474,61 +474,63 @@ export const makeView = (behavior) => (config) => {
474
474
  }), M.orElse(() => Option.none()));
475
475
  const maybeActiveDescendant = Option.match(maybeActiveItemIndex, {
476
476
  onNone: () => [],
477
- onSome: index => [AriaActiveDescendant(itemId(id, index))],
477
+ onSome: index => [h.AriaActiveDescendant(itemId(id, index))],
478
478
  });
479
479
  const resolvedInputAttributes = [
480
- Id(`${id}-input`),
481
- Role('combobox'),
482
- AriaExpanded(isVisible),
483
- AriaControls(`${id}-items`),
484
- Attribute('aria-autocomplete', 'list'),
485
- Attribute('aria-haspopup', 'listbox'),
486
- Autocomplete('off'),
487
- Value(config.model.inputValue),
480
+ h.Id(`${id}-input`),
481
+ h.Role('combobox'),
482
+ h.AriaExpanded(isVisible),
483
+ h.AriaControls(`${id}-items`),
484
+ h.Attribute('aria-autocomplete', 'list'),
485
+ h.Attribute('aria-haspopup', 'listbox'),
486
+ h.Autocomplete('off'),
487
+ h.Value(config.model.inputValue),
488
488
  ...maybeActiveDescendant,
489
- ...(inputPlaceholder ? [Placeholder(inputPlaceholder)] : []),
489
+ ...(inputPlaceholder ? [h.Placeholder(inputPlaceholder)] : []),
490
490
  ...(isDisabled
491
- ? [AriaDisabled(true), DataAttribute('disabled', '')]
491
+ ? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
492
492
  : [
493
- OnInput(value => toParentMessage(UpdatedInputValue({ value }))),
494
- OnKeyDownPreventDefault(handleInputKeyDown),
495
- OnBlur(toParentMessage(BlurredInput())),
493
+ h.OnInput(value => toParentMessage(UpdatedInputValue({ value }))),
494
+ h.OnKeyDownPreventDefault(handleInputKeyDown),
495
+ h.OnBlur(toParentMessage(BlurredInput())),
496
496
  ...(openOnFocus
497
497
  ? [
498
- OnFocus(toParentMessage(Opened({ maybeActiveItemIndex: Option.none() }))),
498
+ h.OnFocus(toParentMessage(Opened({ maybeActiveItemIndex: Option.none() }))),
499
499
  ]
500
500
  : []),
501
501
  ]),
502
- ...(isInvalid ? [AriaInvalid(true), DataAttribute('invalid', '')] : []),
503
- ...(isVisible ? [DataAttribute('open', '')] : []),
502
+ ...(isInvalid
503
+ ? [h.AriaInvalid(true), h.DataAttribute('invalid', '')]
504
+ : []),
505
+ ...(isVisible ? [h.DataAttribute('open', '')] : []),
504
506
  ...(config.model.selectInputOnFocus
505
507
  ? [
506
- OnMount(Mount.mapMessage(AttachComboboxSelectOnFocus(), toParentMessage)),
508
+ h.OnMount(Mount.mapMessage(AttachComboboxSelectOnFocus(), toParentMessage)),
507
509
  ]
508
510
  : []),
509
- ...(inputClassName ? [Class(inputClassName)] : []),
511
+ ...(inputClassName ? [h.Class(inputClassName)] : []),
510
512
  ...inputAttributes,
511
513
  ];
512
514
  const anchorAttributes = anchor
513
515
  ? [
514
- Style({ position: 'absolute', margin: '0', visibility: 'hidden' }),
515
- OnMount(Mount.mapMessage(AnchorCombobox({
516
+ h.Style({ position: 'absolute', margin: '0', visibility: 'hidden' }),
517
+ h.OnMount(Mount.mapMessage(AnchorCombobox({
516
518
  buttonId: `${id}-input-wrapper`,
517
519
  anchor,
518
520
  }), toParentMessage)),
519
521
  ]
520
522
  : [
521
- OnMount(Mount.mapMessage(AttachComboboxPreventBlur(), toParentMessage)),
523
+ h.OnMount(Mount.mapMessage(AttachComboboxPreventBlur(), toParentMessage)),
522
524
  ];
523
525
  const itemsContainerAttributes = [
524
- Id(`${id}-items`),
525
- Role('listbox'),
526
- ...(behavior.ariaMultiSelectable ? [AriaMultiSelectable(true)] : []),
527
- AriaLabelledBy(`${id}-input`),
528
- Tabindex(-1),
526
+ h.Id(`${id}-items`),
527
+ h.Role('listbox'),
528
+ ...(behavior.ariaMultiSelectable ? [h.AriaMultiSelectable(true)] : []),
529
+ h.AriaLabelledBy(`${id}-input`),
530
+ h.Tabindex(-1),
529
531
  ...anchorAttributes,
530
532
  ...animationAttributes,
531
- ...(itemsClassName ? [Class(itemsClassName)] : []),
533
+ ...(itemsClassName ? [h.Class(itemsClassName)] : []),
532
534
  ...itemsAttributes,
533
535
  ];
534
536
  const comboboxItems = Array.map(items, (item, index) => {
@@ -541,27 +543,27 @@ export const makeView = (behavior) => (config) => {
541
543
  isSelected: isSelectedItem,
542
544
  });
543
545
  const isInteractive = !isDisabledItem && !isLeaving;
544
- return keyed('div')(itemId(id, index), [
545
- Id(itemId(id, index)),
546
- Role('option'),
547
- AriaSelected(isSelectedItem),
548
- ...(isActiveItem ? [DataAttribute('active', '')] : []),
549
- ...(isSelectedItem ? [DataAttribute('selected', '')] : []),
546
+ return h.keyed('div')(itemId(id, index), [
547
+ h.Id(itemId(id, index)),
548
+ h.Role('option'),
549
+ h.AriaSelected(isSelectedItem),
550
+ ...(isActiveItem ? [h.DataAttribute('active', '')] : []),
551
+ ...(isSelectedItem ? [h.DataAttribute('selected', '')] : []),
550
552
  ...(isDisabledItem
551
- ? [AriaDisabled(true), DataAttribute('disabled', '')]
553
+ ? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
552
554
  : []),
553
555
  ...(isInteractive
554
556
  ? [
555
- OnClick(dispatchSelectedItem(item, index)),
557
+ h.OnClick(dispatchSelectedItem(item, index)),
556
558
  ...(isActiveItem
557
559
  ? []
558
560
  : [
559
- OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch', toParentMessage(MovedPointerOverItem({ index, screenX, screenY })))),
561
+ h.OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch', toParentMessage(MovedPointerOverItem({ index, screenX, screenY })))),
560
562
  ]),
561
- OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch', toParentMessage(DeactivatedItem()))),
563
+ h.OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch', toParentMessage(DeactivatedItem()))),
562
564
  ]
563
565
  : []),
564
- ...(itemConfig.className ? [Class(itemConfig.className)] : []),
566
+ ...(itemConfig.className ? [h.Class(itemConfig.className)] : []),
565
567
  ], [itemConfig.content]);
566
568
  });
567
569
  const renderGroupedItems = () => {
@@ -578,27 +580,31 @@ export const makeView = (behavior) => (config) => {
578
580
  const headingElement = Option.match(maybeHeading, {
579
581
  onNone: () => [],
580
582
  onSome: heading => [
581
- keyed('div')(headingId, [
582
- Id(headingId),
583
- Role('presentation'),
584
- ...(heading.className ? [Class(heading.className)] : []),
583
+ h.keyed('div')(headingId, [
584
+ h.Id(headingId),
585
+ h.Role('presentation'),
586
+ ...(heading.className ? [h.Class(heading.className)] : []),
585
587
  ], [heading.content]),
586
588
  ],
587
589
  });
588
590
  const groupContent = [...headingElement, ...segment.items];
589
- const groupElement = keyed('div')(`${id}-group-${segment.key}`, [
590
- Role('group'),
591
- ...(Option.isSome(maybeHeading) ? [AriaLabelledBy(headingId)] : []),
592
- ...(groupClassName ? [Class(groupClassName)] : []),
591
+ const groupElement = h.keyed('div')(`${id}-group-${segment.key}`, [
592
+ h.Role('group'),
593
+ ...(Option.isSome(maybeHeading)
594
+ ? [h.AriaLabelledBy(headingId)]
595
+ : []),
596
+ ...(groupClassName ? [h.Class(groupClassName)] : []),
593
597
  ...groupAttributes,
594
598
  ], groupContent);
595
599
  const separator = segmentIndex > 0 &&
596
600
  (separatorClassName ||
597
601
  Array.isReadonlyArrayNonEmpty(separatorAttributes))
598
602
  ? [
599
- keyed('div')(`${id}-separator-${segmentIndex}`, [
600
- Role('separator'),
601
- ...(separatorClassName ? [Class(separatorClassName)] : []),
603
+ h.keyed('div')(`${id}-separator-${segmentIndex}`, [
604
+ h.Role('separator'),
605
+ ...(separatorClassName
606
+ ? [h.Class(separatorClassName)]
607
+ : []),
602
608
  ...separatorAttributes,
603
609
  ], []),
604
610
  ]
@@ -606,45 +612,47 @@ export const makeView = (behavior) => (config) => {
606
612
  return [...separator, groupElement];
607
613
  });
608
614
  };
609
- const backdrop = keyed('div')(`${id}-backdrop`, [
610
- OnMount(Mount.mapMessage(PortalComboboxBackdrop(), toParentMessage)),
611
- ...(isLeaving ? [] : [OnClick(toParentMessage(Closed()))]),
612
- ...(backdropClassName ? [Class(backdropClassName)] : []),
615
+ const backdrop = h.keyed('div')(`${id}-backdrop`, [
616
+ h.OnMount(Mount.mapMessage(PortalComboboxBackdrop(), toParentMessage)),
617
+ ...(isLeaving ? [] : [h.OnClick(toParentMessage(Closed()))]),
618
+ ...(backdropClassName ? [h.Class(backdropClassName)] : []),
613
619
  ...backdropAttributes,
614
620
  ], []);
615
621
  const renderedItems = renderGroupedItems();
616
622
  const scrollableItems = itemsScrollClassName ||
617
623
  Array.isReadonlyArrayNonEmpty(itemsScrollAttributes)
618
624
  ? [
619
- div([
620
- ...(itemsScrollClassName ? [Class(itemsScrollClassName)] : []),
625
+ h.div([
626
+ ...(itemsScrollClassName
627
+ ? [h.Class(itemsScrollClassName)]
628
+ : []),
621
629
  ...itemsScrollAttributes,
622
630
  ], renderedItems),
623
631
  ]
624
632
  : renderedItems;
625
633
  const visibleContent = [
626
634
  backdrop,
627
- keyed('div')(`${id}-items-container`, itemsContainerAttributes, scrollableItems),
635
+ h.keyed('div')(`${id}-items-container`, itemsContainerAttributes, scrollableItems),
628
636
  ];
629
637
  const resolvedInputWrapperAttributes = [
630
- Id(`${id}-input-wrapper`),
631
- ...(inputWrapperClassName ? [Class(inputWrapperClassName)] : []),
638
+ h.Id(`${id}-input-wrapper`),
639
+ ...(inputWrapperClassName ? [h.Class(inputWrapperClassName)] : []),
632
640
  ...inputWrapperAttributes,
633
641
  ];
634
642
  const toggleButton = buttonContent
635
643
  ? [
636
- keyed('button')(`${id}-button`, [
637
- Id(`${id}-button`),
638
- Type('button'),
639
- Tabindex(-1),
640
- AriaControls(`${id}-items`),
641
- AriaExpanded(isVisible),
642
- Attribute('aria-haspopup', 'listbox'),
644
+ h.keyed('button')(`${id}-button`, [
645
+ h.Id(`${id}-button`),
646
+ h.Type('button'),
647
+ h.Tabindex(-1),
648
+ h.AriaControls(`${id}-items`),
649
+ h.AriaExpanded(isVisible),
650
+ h.Attribute('aria-haspopup', 'listbox'),
643
651
  ...(isDisabled
644
- ? [AriaDisabled(true), DataAttribute('disabled', '')]
645
- : [OnClick(toParentMessage(PressedToggleButton()))]),
646
- OnMount(Mount.mapMessage(AttachComboboxPreventBlur(), toParentMessage)),
647
- ...(buttonClassName ? [Class(buttonClassName)] : []),
652
+ ? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
653
+ : [h.OnClick(toParentMessage(PressedToggleButton()))]),
654
+ h.OnMount(Mount.mapMessage(AttachComboboxPreventBlur(), toParentMessage)),
655
+ ...(buttonClassName ? [h.Class(buttonClassName)] : []),
648
656
  ...buttonAttributes,
649
657
  ], [buttonContent]),
650
658
  ]
@@ -655,20 +663,24 @@ export const makeView = (behavior) => (config) => {
655
663
  }));
656
664
  const hiddenInputs = formName
657
665
  ? Array.match(selectedValues, {
658
- onEmpty: () => [input([Type('hidden'), Name(formName)])],
659
- onNonEmpty: Array.map(selectedValue => input([Type('hidden'), Name(formName), Value(selectedValue)])),
666
+ onEmpty: () => [h.input([h.Type('hidden'), h.Name(formName)])],
667
+ onNonEmpty: Array.map(selectedValue => h.input([
668
+ h.Type('hidden'),
669
+ h.Name(formName),
670
+ h.Value(selectedValue),
671
+ ])),
660
672
  })
661
673
  : [];
662
674
  const wrapperAttributes = [
663
- ...(className ? [Class(className)] : []),
675
+ ...(className ? [h.Class(className)] : []),
664
676
  ...attributes,
665
- ...(isVisible ? [DataAttribute('open', '')] : []),
666
- ...(isDisabled ? [DataAttribute('disabled', '')] : []),
667
- ...(isInvalid ? [DataAttribute('invalid', '')] : []),
677
+ ...(isVisible ? [h.DataAttribute('open', '')] : []),
678
+ ...(isDisabled ? [h.DataAttribute('disabled', '')] : []),
679
+ ...(isInvalid ? [h.DataAttribute('invalid', '')] : []),
668
680
  ];
669
- return div(wrapperAttributes, [
670
- div(resolvedInputWrapperAttributes, [
671
- input(resolvedInputAttributes),
681
+ return h.div(wrapperAttributes, [
682
+ h.div(resolvedInputWrapperAttributes, [
683
+ h.input(resolvedInputAttributes),
672
684
  ...toggleButton,
673
685
  ]),
674
686
  ...(isVisible && Array.isReadonlyArrayNonEmpty(items)
@@ -217,7 +217,7 @@ const encodeIsoDate = S.encodeSync(Calendar.CalendarDateFromIsoString);
217
217
  * provide the trigger face and the calendar grid layout, DatePicker handles
218
218
  * focus choreography, open/close state, and form submission. */
219
219
  export const view = (config) => {
220
- const { Class, Name, Type, Value, div, input } = html();
220
+ const h = html();
221
221
  const { model, toParentMessage, onSelectedDate, anchor, triggerContent, toCalendarView, isDisabled, name, className, attributes = [], triggerClassName, triggerAttributes = [], panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], } = config;
222
222
  const dispatchSelectedDate = (date) => onSelectedDate !== undefined
223
223
  ? onSelectedDate(date)
@@ -252,13 +252,13 @@ export const view = (config) => {
252
252
  onSome: encodeIsoDate,
253
253
  });
254
254
  const maybeHiddenInput = name !== undefined
255
- ? [input([Type('hidden'), Name(name), Value(hiddenInputValue)])]
255
+ ? [h.input([h.Type('hidden'), h.Name(name), h.Value(hiddenInputValue)])]
256
256
  : [];
257
257
  const wrapperAttributes = [
258
- ...(className !== undefined ? [Class(className)] : []),
258
+ ...(className !== undefined ? [h.Class(className)] : []),
259
259
  ...attributes,
260
260
  ];
261
- return div(wrapperAttributes, [popoverVNode, ...maybeHiddenInput]);
261
+ return h.div(wrapperAttributes, [popoverVNode, ...maybeHiddenInput]);
262
262
  };
263
263
  /** Creates a memoized date picker view. Static config is captured in a closure;
264
264
  * only `model` and `toParentMessage` are compared per render via `createLazy`. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,IAAI,EAGV,MAAM,qBAAqB,CAAA;AAqB5B,6IAA6I;AAC7I,eAAO,MAAM,KAAK;;;;;;;;;;EAMhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,wEAAwE;AACxE,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,wHAAwH;AACxH,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,kFAA4B,CAAA;AAC7D,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB;;EAE9B,CAAA;AAEF,8DAA8D;AAC9D,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,OAAO,mBAAmB;IAC1B,OAAO,oBAAoB;IAC3B,OAAO,mBAAmB;CAC3B,CAOD,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AACjE,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,4HAA4H;AAC5H,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAC,CAAA;AAEF,0FAA0F;AAC1F,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KASxC,CAAA;AAMF,KAAK,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAG7E,8EAA8E;AAC9E,eAAO,MAAM,UAAU;;;;;iBAkBtB,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,WAAW;;;;iBAUvB,CAAA;AAuCD,0EAA0E;AAC1E,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO,KAAG,YA6DrD,CAAA;AAIH,iGAAiG;AACjG,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,MAA6B,CAAA;AAEpE,wGAAwG;AACxG,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,KAAG,MAAmC,CAAA;AAEhF,wDAAwD;AACxD,MAAM,MAAM,UAAU,CAAC,aAAa,IAAI,QAAQ,CAAC;IAC/C,KAAK,EAAE,KAAK,CAAA;IACZ,eAAe,EAAE,CACf,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,oBAAoB,KACzD,aAAa,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,aAAa,CAAA;IAC9B,YAAY,EAAE,IAAI,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;CACrD,CAAC,CAAA;AAEF;2EAC2E;AAC3E,eAAO,MAAM,IAAI,GACf,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAClC,CAAA;AAEzB;yFACyF;AACzF,eAAO,MAAM,KAAK,GAChB,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAClC,CAAA;AAEzB,sGAAsG;AACtG,eAAO,MAAM,IAAI,GAAI,aAAa,EAChC,QAAQ,UAAU,CAAC,aAAa,CAAC,KAChC,IA8GF,CAAA;AAED;;;;oDAIoD;AACpD,eAAO,MAAM,IAAI,GAAI,aAAa,EAChC,cAAc,IAAI,CAChB,UAAU,CAAC,aAAa,CAAC,EACzB,OAAO,GAAG,iBAAiB,GAAG,UAAU,GAAG,cAAc,CAC1D,KACA,CAAC,CACF,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,EAC7D,YAAY,EAAE,IAAI,KACf,IAAI,CAkBR,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dialog/index.ts"],"names":[],"mappings":"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"}
@@ -125,33 +125,33 @@ export const open = (model) => update(model, Opened());
125
125
  export const close = (model) => update(model, Closed());
126
126
  /** Renders a headless dialog component backed by the native `<dialog>` element with `showModal()`. */
127
127
  export const view = (config) => {
128
- const { AriaDescribedBy, AriaLabelledBy, Class, DataAttribute, Id, OnCancel, OnClick, Open, Style, keyed, } = html();
128
+ const h = html();
129
129
  const { model: { id, isOpen, animation: { transitionState }, }, toParentMessage, onClosed, panelContent, panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], className, attributes = [], } = config;
130
130
  const dispatchClosed = () => onClosed ? onClosed() : toParentMessage(Closed());
131
131
  const isLeaving = transitionState === 'LeaveStart' || transitionState === 'LeaveAnimating';
132
132
  const isVisible = isOpen || isLeaving;
133
133
  const animationAttributes = M.value(transitionState).pipe(M.when('EnterStart', () => [
134
- DataAttribute('closed', ''),
135
- DataAttribute('enter', ''),
136
- DataAttribute('transition', ''),
134
+ h.DataAttribute('closed', ''),
135
+ h.DataAttribute('enter', ''),
136
+ h.DataAttribute('transition', ''),
137
137
  ]), M.when('EnterAnimating', () => [
138
- DataAttribute('enter', ''),
139
- DataAttribute('transition', ''),
138
+ h.DataAttribute('enter', ''),
139
+ h.DataAttribute('transition', ''),
140
140
  ]), M.when('LeaveStart', () => [
141
- DataAttribute('leave', ''),
142
- DataAttribute('transition', ''),
141
+ h.DataAttribute('leave', ''),
142
+ h.DataAttribute('transition', ''),
143
143
  ]), M.when('LeaveAnimating', () => [
144
- DataAttribute('closed', ''),
145
- DataAttribute('leave', ''),
146
- DataAttribute('transition', ''),
144
+ h.DataAttribute('closed', ''),
145
+ h.DataAttribute('leave', ''),
146
+ h.DataAttribute('transition', ''),
147
147
  ]), M.orElse(() => []));
148
148
  const dialogAttributes = [
149
- Id(id),
150
- AriaLabelledBy(`${id}-title`),
151
- AriaDescribedBy(`${id}-description`),
152
- OnCancel(dispatchClosed()),
153
- Open(isVisible),
154
- Style({
149
+ h.Id(id),
150
+ h.AriaLabelledBy(`${id}-title`),
151
+ h.AriaDescribedBy(`${id}-description`),
152
+ h.OnCancel(dispatchClosed()),
153
+ h.Open(isVisible),
154
+ h.Style({
155
155
  width: '100%',
156
156
  height: '100%',
157
157
  maxWidth: '100%',
@@ -163,25 +163,25 @@ export const view = (config) => {
163
163
  ? { position: 'fixed', inset: '0', zIndex: '2147483600' }
164
164
  : {}),
165
165
  }),
166
- ...(isVisible ? [DataAttribute('open', '')] : []),
167
- ...(className ? [Class(className)] : []),
166
+ ...(isVisible ? [h.DataAttribute('open', '')] : []),
167
+ ...(className ? [h.Class(className)] : []),
168
168
  ...attributes,
169
169
  ];
170
- const backdrop = keyed('div')(`${id}-backdrop`, [
171
- Style({ minHeight: '100vh' }),
170
+ const backdrop = h.keyed('div')(`${id}-backdrop`, [
171
+ h.Style({ minHeight: '100vh' }),
172
172
  ...animationAttributes,
173
- ...(isLeaving ? [] : [OnClick(dispatchClosed())]),
174
- ...(backdropClassName ? [Class(backdropClassName)] : []),
173
+ ...(isLeaving ? [] : [h.OnClick(dispatchClosed())]),
174
+ ...(backdropClassName ? [h.Class(backdropClassName)] : []),
175
175
  ...backdropAttributes,
176
176
  ], []);
177
- const panel = keyed('div')(`${id}-panel`, [
178
- Id(`${id}-panel`),
177
+ const panel = h.keyed('div')(`${id}-panel`, [
178
+ h.Id(`${id}-panel`),
179
179
  ...animationAttributes,
180
- ...(panelClassName ? [Class(panelClassName)] : []),
180
+ ...(panelClassName ? [h.Class(panelClassName)] : []),
181
181
  ...panelAttributes,
182
182
  ], [panelContent]);
183
183
  const content = isVisible ? [backdrop, panel] : [];
184
- return keyed('dialog')(id, dialogAttributes, content);
184
+ return h.keyed('dialog')(id, dialogAttributes, content);
185
185
  };
186
186
  /** Creates a memoized dialog view. Static config (className, panelClassName,
187
187
  * etc.) is captured in a closure. Dynamic fields — `model`, `toParentMessage`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/disclosure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,OAAO,EAGb,MAAM,qBAAqB,CAAA;AAM5B,kGAAkG;AAClG,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,iFAAiF;AACjF,eAAO,MAAM,OAAO,qEAAe,CAAA;AACnC,gFAAgF;AAChF,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,kFAA4B,CAAA;AAE7D,kEAAkE;AAClE,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IAAC,OAAO,OAAO;IAAE,OAAO,MAAM;IAAE,OAAO,oBAAoB;CAAC,CACV,CAAA;AAEpD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AACzC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAC,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAUF,qDAAqD;AACrD,eAAO,MAAM,WAAW;;;;iBASvB,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CA2BxD,CAAA;AAIH,4DAA4D;AAC5D,MAAM,MAAM,UAAU,CAAC,aAAa,IAAI,QAAQ,CAAC;IAC/C,KAAK,EAAE,KAAK,CAAA;IACZ,eAAe,EAAE,CACf,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,oBAAoB,KAC7C,aAAa,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,aAAa,CAAA;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IAC1D,aAAa,EAAE,IAAI,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IACzD,YAAY,EAAE,IAAI,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;CACrD,CAAC,CAAA;AAEF;8FAC8F;AAC9F,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACjC,CAAA;AAE1B;iFACiF;AACjF,eAAO,MAAM,KAAK,GAChB,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAClC,CAAA;AAEzB,oGAAoG;AACpG,eAAO,MAAM,IAAI,GAAI,aAAa,EAChC,QAAQ,UAAU,CAAC,aAAa,CAAC,KAChC,IAyGF,CAAA;AAED;mFACmF;AACnF,eAAO,MAAM,IAAI,GAAI,aAAa,EAChC,cAAc,IAAI,CAChB,UAAU,CAAC,aAAa,CAAC,EACzB,OAAO,GAAG,iBAAiB,GAAG,WAAW,CAC1C,KACA,CAAC,CACF,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,KAC1D,IAAI,CAgBR,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/disclosure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,OAAO,EAGb,MAAM,qBAAqB,CAAA;AAM5B,kGAAkG;AAClG,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,iFAAiF;AACjF,eAAO,MAAM,OAAO,qEAAe,CAAA;AACnC,gFAAgF;AAChF,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,kFAA4B,CAAA;AAE7D,kEAAkE;AAClE,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IAAC,OAAO,OAAO;IAAE,OAAO,MAAM;IAAE,OAAO,oBAAoB;CAAC,CACV,CAAA;AAEpD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AACzC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAC,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAUF,qDAAqD;AACrD,eAAO,MAAM,WAAW;;;;iBASvB,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CA2BxD,CAAA;AAIH,4DAA4D;AAC5D,MAAM,MAAM,UAAU,CAAC,aAAa,IAAI,QAAQ,CAAC;IAC/C,KAAK,EAAE,KAAK,CAAA;IACZ,eAAe,EAAE,CACf,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,oBAAoB,KAC7C,aAAa,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,aAAa,CAAA;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IAC1D,aAAa,EAAE,IAAI,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IACzD,YAAY,EAAE,IAAI,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;CACrD,CAAC,CAAA;AAEF;8FAC8F;AAC9F,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACjC,CAAA;AAE1B;iFACiF;AACjF,eAAO,MAAM,KAAK,GAChB,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAClC,CAAA;AAEzB,oGAAoG;AACpG,eAAO,MAAM,IAAI,GAAI,aAAa,EAChC,QAAQ,UAAU,CAAC,aAAa,CAAC,KAChC,IA0FF,CAAA;AAED;mFACmF;AACnF,eAAO,MAAM,IAAI,GAAI,aAAa,EAChC,cAAc,IAAI,CAChB,UAAU,CAAC,aAAa,CAAC,EACzB,OAAO,GAAG,iBAAiB,GAAG,WAAW,CAC1C,KACA,CAAC,CACF,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,KAC1D,IAAI,CAgBR,CAAA"}
@@ -53,49 +53,51 @@ export const toggle = (model) => update(model, Toggled());
53
53
  export const close = (model) => update(model, Closed());
54
54
  /** Renders a headless disclosure component with accessible ARIA attributes and keyboard support. */
55
55
  export const view = (config) => {
56
- const { div, empty, AriaControls, AriaDisabled, AriaExpanded, Class, DataAttribute, Disabled, Hidden, Id, OnClick, OnKeyDownPreventDefault, Style, Tabindex, Type, keyed, } = html();
56
+ const h = html();
57
57
  const { model: { id, isOpen }, toParentMessage, onToggled, buttonClassName, buttonAttributes = [], buttonContent, panelClassName, panelAttributes = [], panelContent, isDisabled, persistPanel, buttonElement = 'button', panelElement = 'div', className, attributes = [], } = config;
58
58
  const dispatchToggled = () => onToggled ? onToggled() : toParentMessage(Toggled());
59
59
  const isNativeButton = buttonElement === 'button';
60
60
  const handleKeyDown = (key) => M.value(key).pipe(M.whenOr('Enter', ' ', () => Option.some(dispatchToggled())), M.orElse(() => Option.none()));
61
61
  const disabledAttributes = [
62
- Disabled(true),
63
- AriaDisabled(true),
64
- DataAttribute('disabled', ''),
62
+ h.Disabled(true),
63
+ h.AriaDisabled(true),
64
+ h.DataAttribute('disabled', ''),
65
65
  ];
66
66
  const interactionAttributes = isDisabled
67
67
  ? disabledAttributes
68
68
  : [
69
- OnClick(dispatchToggled()),
70
- ...(!isNativeButton ? [OnKeyDownPreventDefault(handleKeyDown)] : []),
69
+ h.OnClick(dispatchToggled()),
70
+ ...(!isNativeButton ? [h.OnKeyDownPreventDefault(handleKeyDown)] : []),
71
71
  ];
72
72
  const resolvedButtonAttributes = [
73
- Id(buttonId(id)),
74
- AriaExpanded(isOpen),
75
- AriaControls(panelId(id)),
76
- ...(isNativeButton ? [Type('button')] : [Tabindex(0)]),
77
- ...(isOpen ? [DataAttribute('open', '')] : []),
73
+ h.Id(buttonId(id)),
74
+ h.AriaExpanded(isOpen),
75
+ h.AriaControls(panelId(id)),
76
+ ...(isNativeButton ? [h.Type('button')] : [h.Tabindex(0)]),
77
+ ...(isOpen ? [h.DataAttribute('open', '')] : []),
78
78
  ...interactionAttributes,
79
- ...(buttonClassName ? [Class(buttonClassName)] : []),
79
+ ...(buttonClassName ? [h.Class(buttonClassName)] : []),
80
80
  ...buttonAttributes,
81
81
  ];
82
82
  const resolvedPanelAttributes = [
83
- Id(panelId(id)),
84
- ...(isOpen ? [DataAttribute('open', '')] : []),
85
- ...(panelClassName ? [Class(panelClassName)] : []),
83
+ h.Id(panelId(id)),
84
+ ...(isOpen ? [h.DataAttribute('open', '')] : []),
85
+ ...(panelClassName ? [h.Class(panelClassName)] : []),
86
86
  ...panelAttributes,
87
87
  ];
88
- const persistedPanel = keyed(panelElement)(panelId(id), [
88
+ const persistedPanel = h.keyed(panelElement)(panelId(id), [
89
89
  ...resolvedPanelAttributes,
90
- Hidden(!isOpen),
91
- ...(isOpen ? [] : [Style({ display: 'none' })]),
90
+ h.Hidden(!isOpen),
91
+ ...(isOpen ? [] : [h.Style({ display: 'none' })]),
92
92
  ], [panelContent]);
93
93
  const activePanel = isOpen
94
- ? keyed(panelElement)(panelId(id), resolvedPanelAttributes, [panelContent])
95
- : empty;
94
+ ? h.keyed(panelElement)(panelId(id), resolvedPanelAttributes, [
95
+ panelContent,
96
+ ])
97
+ : h.empty;
96
98
  const panel = persistPanel ? persistedPanel : activePanel;
97
- return div([...(className ? [Class(className)] : []), ...attributes], [
98
- keyed(buttonElement)(buttonId(id), resolvedButtonAttributes, [
99
+ return h.div([...(className ? [h.Class(className)] : []), ...attributes], [
100
+ h.keyed(buttonElement)(buttonId(id), resolvedButtonAttributes, [
99
101
  buttonContent,
100
102
  ]),
101
103
  panel,
@@ -243,7 +243,7 @@ export declare const subscriptions: import("../../runtime/subscription.js").Subs
243
243
  readonly _tag: "ConfirmedKeyboardDrop";
244
244
  } | {
245
245
  readonly _tag: "PressedArrowKey";
246
- readonly direction: "Up" | "Down" | "Left" | "Right" | "NextContainer" | "PreviousContainer";
246
+ readonly direction: "Left" | "Right" | "Up" | "Down" | "NextContainer" | "PreviousContainer";
247
247
  } | {
248
248
  readonly _tag: "CompletedAutoScroll";
249
249
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dragAndDrop/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dragAndDrop/index.ts"],"names":[],"mappings":"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"}
@@ -471,7 +471,7 @@ const LEFT_MOUSE_BUTTON = 0;
471
471
  const arrowKeyToDirection = (key) => M.value(key).pipe(M.withReturnType(), M.when('ArrowUp', () => 'Up'), M.when('ArrowDown', () => 'Down'), M.when('ArrowLeft', () => 'Left'), M.when('ArrowRight', () => 'Right'), M.option);
472
472
  /** Returns attributes the parent attaches to a draggable element. Handles pointer-down, keyboard activation, and ARIA. */
473
473
  export const draggable = (config) => {
474
- const { AriaRoleDescription, DataAttribute, OnKeyDownPreventDefault, OnPointerDown, Role, Style, Tabindex, } = html();
474
+ const h = html();
475
475
  const isKeyboardDragActivationKey = (key) => key === ' ' || key === 'Enter';
476
476
  const handleKeyDown = (key) => {
477
477
  if (isKeyboardDragActivationKey(key) &&
@@ -485,20 +485,20 @@ export const draggable = (config) => {
485
485
  return Option.none();
486
486
  };
487
487
  return [
488
- DataAttribute('draggable-id', config.itemId),
489
- DataAttribute('sortable-id', config.itemId),
490
- Role('option'),
491
- AriaRoleDescription('draggable'),
492
- Tabindex(0),
493
- OnPointerDown((_pointerType, button, screenX, screenY) => pipe(button, Option.liftPredicate(Equal.equals(LEFT_MOUSE_BUTTON)), Option.map(() => config.toParentMessage(PressedDraggable({
488
+ h.DataAttribute('draggable-id', config.itemId),
489
+ h.DataAttribute('sortable-id', config.itemId),
490
+ h.Role('option'),
491
+ h.AriaRoleDescription('draggable'),
492
+ h.Tabindex(0),
493
+ h.OnPointerDown((_pointerType, button, screenX, screenY) => pipe(button, Option.liftPredicate(Equal.equals(LEFT_MOUSE_BUTTON)), Option.map(() => config.toParentMessage(PressedDraggable({
494
494
  itemId: config.itemId,
495
495
  containerId: config.containerId,
496
496
  index: config.index,
497
497
  screenX,
498
498
  screenY,
499
499
  }))))),
500
- OnKeyDownPreventDefault(handleKeyDown),
501
- Style({
500
+ h.OnKeyDownPreventDefault(handleKeyDown),
501
+ h.Style({
502
502
  'touch-action': 'none',
503
503
  'user-select': 'none',
504
504
  '-webkit-user-select': 'none',
@@ -507,17 +507,17 @@ export const draggable = (config) => {
507
507
  };
508
508
  /** Returns attributes the parent attaches to a droppable container element. */
509
509
  export const droppable = (containerId, label) => {
510
- const { AriaLabel, DataAttribute, Role } = html();
510
+ const h = html();
511
511
  return [
512
- DataAttribute('droppable-id', containerId),
513
- Role('listbox'),
514
- ...(label ? [AriaLabel(label)] : []),
512
+ h.DataAttribute('droppable-id', containerId),
513
+ h.Role('listbox'),
514
+ ...(label ? [h.AriaLabel(label)] : []),
515
515
  ];
516
516
  };
517
517
  /** Returns attributes the parent attaches to a sortable item element. Typically combined with `draggable`. */
518
518
  export const sortable = (itemId) => {
519
- const { DataAttribute } = html();
520
- return [DataAttribute('sortable-id', itemId)];
519
+ const h = html();
520
+ return [h.DataAttribute('sortable-id', itemId)];
521
521
  };
522
522
  const ghostTransform = (clientX, clientY) => `translate3d(${String(clientX)}px, ${String(clientY)}px, 0)`;
523
523
  /** Returns positioning styles for the ghost element, or None when not dragging with a pointer. */