@oscarpalmer/oui 0.39.0 → 0.41.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 (227) hide show
  1. package/README.md +1 -1
  2. package/dist/css/color-picker.css +80 -69
  3. package/dist/css/listbox.css +169 -0
  4. package/dist/js/color-picker/color-picker.constants.d.mts +2 -0
  5. package/dist/js/color-picker/{constants.color-picker.mjs → color-picker.constants.mjs} +7 -4
  6. package/dist/js/color-picker/{dom.color-picker.d.mts → color-picker.dom.d.mts} +2 -2
  7. package/dist/js/color-picker/{dom.color-picker.mjs → color-picker.dom.mjs} +33 -16
  8. package/dist/js/color-picker/{event.color-picker.d.mts → color-picker.event.d.mts} +3 -3
  9. package/dist/js/color-picker/color-picker.event.mjs +233 -0
  10. package/dist/js/color-picker/{form.color-picker.d.mts → color-picker.form.d.mts} +2 -2
  11. package/dist/js/color-picker/{form.color-picker.mjs → color-picker.form.mjs} +9 -8
  12. package/dist/js/color-picker/color-picker.misc.d.mts +2 -0
  13. package/dist/js/color-picker/color-picker.misc.mjs +104 -0
  14. package/dist/js/color-picker/color-picker.model.d.mts +2 -0
  15. package/dist/js/color-picker/{models.color-picker.mjs → color-picker.model.mjs} +1 -1
  16. package/dist/js/color-picker/{output.color-picker.d.mts → color-picker.output.d.mts} +2 -2
  17. package/dist/js/color-picker/{output.color-picker.mjs → color-picker.output.mjs} +19 -18
  18. package/dist/js/color-picker/color-picker.state.d.mts +8 -0
  19. package/dist/js/color-picker/color-picker.state.mjs +168 -0
  20. package/dist/js/color-picker/index.d.mts +172 -2
  21. package/dist/js/color-picker/index.mjs +66 -59
  22. package/dist/js/color-picker.constants-BZgXQr5o.d.mts +177 -0
  23. package/dist/js/color-picker.misc-BIS3R6jk.d.mts +31 -0
  24. package/dist/js/combobox/combobox.constants.d.mts +2 -0
  25. package/dist/js/combobox/{constants.combobox.mjs → combobox.constants.mjs} +21 -21
  26. package/dist/js/combobox/combobox.dom.d.mts +25 -0
  27. package/dist/js/combobox/{dom.combobox.mjs → combobox.dom.mjs} +51 -49
  28. package/dist/js/combobox/{event.combobox.d.mts → combobox.event.d.mts} +9 -9
  29. package/dist/js/combobox/{event.combobox.mjs → combobox.event.mjs} +1 -1
  30. package/dist/js/combobox/combobox.misc.d.mts +2 -0
  31. package/dist/js/combobox/combobox.misc.mjs +2 -0
  32. package/dist/js/combobox/combobox.model.d.mts +2 -0
  33. package/dist/js/combobox/combobox.state.d.mts +9 -0
  34. package/dist/js/combobox/combobox.state.mjs +2 -0
  35. package/dist/js/combobox/index.d.mts +152 -2
  36. package/dist/js/combobox/index.mjs +54 -55
  37. package/dist/js/combobox.constants-Hb3bqqQJ.d.mts +19 -0
  38. package/dist/js/combobox.misc-DRDFk6X8.d.mts +26 -0
  39. package/dist/js/combobox.model-gjEI2VqZ.d.mts +46 -0
  40. package/dist/js/{state.combobox-BWDFHwoi.mjs → combobox.state-AstCICiH.mjs} +109 -106
  41. package/dist/js/dialog/dialog.model.d.mts +2 -0
  42. package/dist/js/dialog/dialog.model.mjs +11 -0
  43. package/dist/js/dialog/index.d.mts +12 -0
  44. package/dist/js/dialog/index.mjs +123 -0
  45. package/dist/js/dialog.model-HVzYWoDo.d.mts +45 -0
  46. package/dist/js/floatable/floatable.embedded.d.mts +2 -2
  47. package/dist/js/floatable/floatable.embedded.mjs +64 -92
  48. package/dist/js/floatable/floatable.model.d.mts +2 -0
  49. package/dist/js/floatable/floatable.model.mjs +23 -0
  50. package/dist/js/floatable/floatable.standalone.d.mts +2 -1
  51. package/dist/js/floatable.embedded-ncshL3Sa.d.mts +17 -0
  52. package/dist/js/{floatable.embedded-DQYkXt8X.d.mts → floatable.model-DXsQgoU7.d.mts} +13 -20
  53. package/dist/js/focus-trap/focus-trap.embedded.d.mts +2 -2
  54. package/dist/js/focus-trap/focus-trap.embedded.mjs +117 -138
  55. package/dist/js/focus-trap/focus-trap.model.d.mts +2 -0
  56. package/dist/js/focus-trap/focus-trap.model.mjs +15 -0
  57. package/dist/js/focus-trap/focus-trap.standalone.d.mts +2 -1
  58. package/dist/js/focus-trap.embedded-DpcPkP7c.d.mts +13 -0
  59. package/dist/js/{focus-trap.embedded-CjyFQYow.d.mts → focus-trap.model-CpltX5B5.d.mts} +16 -18
  60. package/dist/js/index.d.mts +26 -14
  61. package/dist/js/index.mjs +18 -17
  62. package/dist/js/internal/attributable.d.mts +1 -1
  63. package/dist/js/internal/attributable.mjs +3 -2
  64. package/dist/js/internal/draggable/draggable.model.d.mts +2 -0
  65. package/dist/js/internal/draggable/draggable.model.mjs +37 -0
  66. package/dist/js/internal/draggable/index.d.mts +13 -0
  67. package/dist/js/internal/draggable/index.mjs +243 -0
  68. package/dist/js/internal/l10n/index.d.mts +5 -0
  69. package/dist/js/internal/l10n/index.mjs +147 -0
  70. package/dist/js/internal/l10n/l10n.model.d.mts +2 -0
  71. package/dist/js/internal/l10n/l10n.model.mjs +12 -0
  72. package/dist/js/internal/misc.d.mts +3 -2
  73. package/dist/js/internal/misc.mjs +4 -6
  74. package/dist/js/internal/navigable/index.d.mts +6 -0
  75. package/dist/js/internal/navigable/index.mjs +125 -0
  76. package/dist/js/internal/navigable/navigable.model.d.mts +2 -0
  77. package/dist/js/internal/navigable/navigable.model.mjs +18 -0
  78. package/dist/js/internal/option-list/option-list.constants.d.mts +8 -0
  79. package/dist/js/internal/option-list/option-list.constants.mjs +22 -0
  80. package/dist/js/internal/option-list/option-list.data.d.mts +21 -0
  81. package/dist/js/internal/option-list/option-list.data.mjs +2 -0
  82. package/dist/js/internal/option-list/option-list.dom.d.mts +18 -0
  83. package/dist/js/internal/option-list/option-list.dom.mjs +2 -0
  84. package/dist/js/internal/option-list/option-list.event.d.mts +6 -0
  85. package/dist/js/internal/option-list/option-list.event.mjs +66 -0
  86. package/dist/js/internal/option-list/option-list.form.d.mts +7 -0
  87. package/dist/js/internal/option-list/option-list.form.mjs +53 -0
  88. package/dist/js/internal/option-list/option-list.misc.d.mts +13 -0
  89. package/dist/js/internal/option-list/option-list.misc.mjs +2 -0
  90. package/dist/js/internal/option-list/option-list.model.d.mts +2 -0
  91. package/dist/js/internal/option-list/option-list.state.d.mts +8 -0
  92. package/dist/js/internal/option-list/option-list.state.mjs +39 -0
  93. package/dist/js/l10n/index.d.mts +3 -0
  94. package/dist/js/l10n/index.mjs +2 -0
  95. package/dist/js/l10n.model-D1E1u35L.d.mts +54 -0
  96. package/dist/js/listbox/index.d.mts +9 -18
  97. package/dist/js/listbox/index.mjs +49 -52
  98. package/dist/js/listbox/listbox.constants.d.mts +2 -0
  99. package/dist/js/listbox/{constants.listbox.mjs → listbox.constants.mjs} +11 -15
  100. package/dist/js/listbox/listbox.dom.d.mts +5 -0
  101. package/dist/js/listbox/listbox.dom.mjs +2 -0
  102. package/dist/js/listbox/listbox.event.d.mts +9 -0
  103. package/dist/js/listbox/listbox.event.mjs +2 -0
  104. package/dist/js/listbox/listbox.misc.d.mts +2 -0
  105. package/dist/js/listbox/listbox.misc.mjs +2 -0
  106. package/dist/js/listbox/listbox.model.d.mts +2 -0
  107. package/dist/js/listbox/listbox.model.mjs +1 -0
  108. package/dist/js/listbox/listbox.state.d.mts +9 -0
  109. package/dist/js/listbox/listbox.state.mjs +2 -0
  110. package/dist/js/listbox.constants-DOBMwKup.d.mts +9 -0
  111. package/dist/js/listbox.misc-DwfB4Mu_.d.mts +24 -0
  112. package/dist/js/listbox.model-C0MYWXZe.d.mts +20 -0
  113. package/dist/js/listbox.state-BrN296BM.mjs +240 -0
  114. package/dist/js/menu/index.mjs +171 -0
  115. package/dist/js/menu/menu.model.d.mts +33 -0
  116. package/dist/js/menu/menu.model.mjs +15 -0
  117. package/dist/js/movable/movable.embedded.d.mts +2 -2
  118. package/dist/js/movable/movable.embedded.mjs +77 -86
  119. package/dist/js/movable/movable.model.d.mts +2 -0
  120. package/dist/js/movable/movable.model.mjs +12 -0
  121. package/dist/js/movable/movable.standalone.d.mts +2 -1
  122. package/dist/js/movable.embedded-C1bDTLGs.d.mts +11 -0
  123. package/dist/js/movable.model-D9nnPWKk.d.mts +186 -0
  124. package/dist/js/navigable.model-BqoR6iBv.d.mts +44 -0
  125. package/dist/js/option-list.data-CgMyUwPc.mjs +441 -0
  126. package/dist/js/option-list.model-CCPUlPeX.d.mts +169 -0
  127. package/dist/js/popover/index.d.mts +12 -0
  128. package/dist/js/{popover.mjs → popover/index.mjs} +41 -51
  129. package/dist/js/popover/popover.model.d.mts +2 -0
  130. package/dist/js/popover/popover.model.mjs +12 -0
  131. package/dist/js/popover.model-DiLdz0Hc.d.mts +38 -0
  132. package/dist/js/resizable/resizable.embedded.d.mts +2 -2
  133. package/dist/js/resizable/resizable.embedded.mjs +43 -58
  134. package/dist/js/resizable/resizable.model.d.mts +2 -0
  135. package/dist/js/resizable/resizable.model.mjs +21 -0
  136. package/dist/js/resizable/resizable.standalone.d.mts +2 -1
  137. package/dist/js/resizable.embedded-BemH-7Re.d.mts +11 -0
  138. package/dist/js/resizable.model-YEtcC9li.d.mts +46 -0
  139. package/dist/js/sortable/sortable.embedded.d.mts +2 -2
  140. package/dist/js/sortable/sortable.embedded.mjs +111 -116
  141. package/dist/js/sortable/sortable.model.d.mts +2 -0
  142. package/dist/js/sortable/sortable.model.mjs +24 -0
  143. package/dist/js/sortable/sortable.standalone.d.mts +2 -1
  144. package/dist/js/sortable.embedded-CrEGff9k.d.mts +11 -0
  145. package/dist/js/{splitter.d.mts → splitter/index.d.mts} +6 -4
  146. package/dist/js/{splitter.mjs → splitter/index.mjs} +90 -128
  147. package/dist/js/splitter/splitter.model.d.mts +2 -0
  148. package/dist/js/splitter/splitter.model.mjs +37 -0
  149. package/dist/js/splitter.model-C24W6eZ7.d.mts +57 -0
  150. package/dist/js/{tabs.d.mts → tabs/index.d.mts} +8 -8
  151. package/dist/js/{tabs.mjs → tabs/index.mjs} +58 -58
  152. package/dist/js/tabs/tabs.model.d.mts +2 -0
  153. package/dist/js/tabs/tabs.model.mjs +18 -0
  154. package/dist/js/tabs.model-BHPy7fPo.d.mts +40 -0
  155. package/dist/js/toolbar/index.mjs +27 -0
  156. package/dist/js/toolbar/toolbar.model.d.mts +11 -0
  157. package/dist/js/toolbar/toolbar.model.mjs +7 -0
  158. package/dist/js/tooltip/index.d.mts +19 -0
  159. package/dist/js/{tooltip.mjs → tooltip/index.mjs} +61 -86
  160. package/dist/js/tooltip/tooltip.model.d.mts +2 -0
  161. package/dist/js/tooltip/tooltip.model.mjs +15 -0
  162. package/dist/js/tooltip.model-BpNStw5z.d.mts +37 -0
  163. package/package.json +30 -24
  164. package/dist/js/color-picker/constants.color-picker.d.mts +0 -2
  165. package/dist/js/color-picker/event.color-picker.mjs +0 -2
  166. package/dist/js/color-picker/misc.color-picker.d.mts +0 -2
  167. package/dist/js/color-picker/misc.color-picker.mjs +0 -2
  168. package/dist/js/color-picker/models.color-picker.d.mts +0 -2
  169. package/dist/js/color-picker/state.color-picker.d.mts +0 -8
  170. package/dist/js/color-picker/state.color-picker.mjs +0 -2
  171. package/dist/js/combobox/constants.combobox.d.mts +0 -2
  172. package/dist/js/combobox/dom.combobox.d.mts +0 -26
  173. package/dist/js/combobox/misc.combobox.d.mts +0 -2
  174. package/dist/js/combobox/misc.combobox.mjs +0 -2
  175. package/dist/js/combobox/models.combobox.d.mts +0 -43
  176. package/dist/js/combobox/state.combobox.d.mts +0 -11
  177. package/dist/js/combobox/state.combobox.mjs +0 -2
  178. package/dist/js/constants.color-picker-B-gFjL8m.d.mts +0 -364
  179. package/dist/js/constants.combobox-8EMRmv09.d.mts +0 -18
  180. package/dist/js/constants.listbox-DGnX32kv.d.mts +0 -8
  181. package/dist/js/dialog.d.mts +0 -47
  182. package/dist/js/dialog.mjs +0 -131
  183. package/dist/js/draggable-B5-70SZm.d.mts +0 -155
  184. package/dist/js/event.color-picker-BEpq0Adu.mjs +0 -485
  185. package/dist/js/index-C5D3-oiI.d.mts +0 -177
  186. package/dist/js/internal/draggable.d.mts +0 -2
  187. package/dist/js/internal/draggable.mjs +0 -265
  188. package/dist/js/internal/listbox/listbox.constants.d.mts +0 -8
  189. package/dist/js/internal/listbox/listbox.constants.mjs +0 -22
  190. package/dist/js/internal/listbox/listbox.data.d.mts +0 -19
  191. package/dist/js/internal/listbox/listbox.data.mjs +0 -2
  192. package/dist/js/internal/listbox/listbox.dom.d.mts +0 -65
  193. package/dist/js/internal/listbox/listbox.dom.mjs +0 -2
  194. package/dist/js/internal/listbox/listbox.event.d.mts +0 -4
  195. package/dist/js/internal/listbox/listbox.event.mjs +0 -63
  196. package/dist/js/internal/listbox/listbox.form.d.mts +0 -5
  197. package/dist/js/internal/listbox/listbox.form.mjs +0 -53
  198. package/dist/js/internal/listbox/listbox.misc.d.mts +0 -11
  199. package/dist/js/internal/listbox/listbox.misc.mjs +0 -2
  200. package/dist/js/internal/listbox/listbox.model.d.mts +0 -2
  201. package/dist/js/internal/listbox/listbox.state.d.mts +0 -6
  202. package/dist/js/internal/listbox/listbox.state.mjs +0 -40
  203. package/dist/js/internal/navigable.d.mts +0 -36
  204. package/dist/js/internal/navigable.mjs +0 -135
  205. package/dist/js/l10n-Bn-7RcwR.d.mts +0 -20
  206. package/dist/js/l10n.d.mts +0 -2
  207. package/dist/js/l10n.mjs +0 -80
  208. package/dist/js/listbox/constants.listbox.d.mts +0 -2
  209. package/dist/js/listbox/event.listbox.d.mts +0 -7
  210. package/dist/js/listbox/event.listbox.mjs +0 -2
  211. package/dist/js/listbox/misc.listbox.d.mts +0 -2
  212. package/dist/js/listbox/misc.listbox.mjs +0 -2
  213. package/dist/js/listbox/state.listbox.d.mts +0 -10
  214. package/dist/js/listbox/state.listbox.mjs +0 -2
  215. package/dist/js/listbox.data-DQ7-x2uY.mjs +0 -425
  216. package/dist/js/listbox.model-BHPA7GM4.d.mts +0 -125
  217. package/dist/js/menu.mjs +0 -172
  218. package/dist/js/misc.listbox-DKB-j0UK.mjs +0 -196
  219. package/dist/js/misc.listbox-mZMuYOxg.d.mts +0 -20
  220. package/dist/js/popover.d.mts +0 -38
  221. package/dist/js/resizable.embedded-dvhdfQgt.d.mts +0 -34
  222. package/dist/js/toolbar.mjs +0 -31
  223. package/dist/js/tooltip.d.mts +0 -45
  224. /package/dist/js/combobox/{models.combobox.mjs → combobox.model.mjs} +0 -0
  225. /package/dist/js/internal/{listbox/listbox.model.mjs → option-list/option-list.model.mjs} +0 -0
  226. /package/dist/js/{menu.d.mts → menu/index.d.mts} +0 -0
  227. /package/dist/js/{toolbar.d.mts → toolbar/index.d.mts} +0 -0
@@ -1,100 +1,41 @@
1
1
  import { attributable } from "../internal/attributable.mjs";
2
+ import { FOCUSTRAP_ATTRIBUTE, FOCUSTRAP_ATTRIBUTE_CONTAIN, FOCUSTRAP_ATTRIBUTE_NOESCAPE, FOCUSTRAP_EVENT_OPTIONS, FOCUSTRAP_MESSAGE, FOCUSTRAP_SELECTOR, FOCUSTRAP_SYMBOL, disabledFocusTraps, focusTraps } from "./focus-trap.model.mjs";
3
+ import { setAttribute } from "@oscarpalmer/toretto/attribute";
2
4
  import { dispatch, on } from "@oscarpalmer/toretto/event";
5
+ import { findAncestor } from "@oscarpalmer/toretto/find";
3
6
  import { isPlainObject } from "@oscarpalmer/atoms/is";
4
- import { setAttribute } from "@oscarpalmer/toretto/attribute";
5
7
  import { isHTMLOrSVGElement } from "@oscarpalmer/toretto/is";
6
8
  import { clamp } from "@oscarpalmer/atoms/number";
7
- import { findAncestor } from "@oscarpalmer/toretto/find";
8
9
  import { getFocusable } from "@oscarpalmer/toretto/focusable";
9
10
  //#region src/js/focus-trap/focus-trap.embedded.ts
10
- var OuiFocusTrap = class {
11
- #destroyed = false;
12
- #tabIndex;
13
- #state;
14
- /**
15
- * Is focused maintained within the _focus trap_ when clicking outside of it?
16
- */
17
- get contain() {
18
- return this.#state.element.hasAttribute(ATTRIBUTE_FOCUSTRAP_CONTAIN);
19
- }
20
- /**
21
- * Should focus be maintained within the _focus trap_ when clicking outside of it?
22
- */
23
- set contain(value) {
24
- if (value === true) setAttribute(this.#state.element, ATTRIBUTE_FOCUSTRAP_CONTAIN, "");
25
- else if (value === false) setAttribute(this.#state.element, ATTRIBUTE_FOCUSTRAP_CONTAIN, void 0);
26
- }
27
- /**
28
- * Is the _focus trap_ disabled?
29
- */
30
- get disabled() {
31
- return this.#state.disabled;
32
- }
33
- /**
34
- * Should the _focus trap_ be disabled?
35
- */
36
- set disabled(value) {
37
- if (value === true) this.disable();
38
- else if (value === false) this.enable();
39
- }
40
- /**
41
- * Is focus allowed to escape when pressing _Escape_ within the _focus trap_?
42
- */
43
- get noescape() {
44
- return this.#state.element.hasAttribute(ATTRIBUTE_FOCUSTRAP_NOESCAPE);
45
- }
46
- /**
47
- * Should the _focus trap_ allow focus to escape when pressing _Escape_?
48
- */
49
- set noescape(value) {
50
- if (value === true) setAttribute(this.#state.element, ATTRIBUTE_FOCUSTRAP_NOESCAPE, "");
51
- else if (value === false) setAttribute(this.#state.element, ATTRIBUTE_FOCUSTRAP_NOESCAPE, void 0);
52
- }
53
- constructor(state) {
54
- this.#state = state;
55
- this.#tabIndex = state.element.tabIndex;
56
- state.element.tabIndex = -1;
57
- setAttribute(state.element, ATTRIBUTE_FOCUSTRAP, "");
58
- this.contain = state.options.contain;
59
- this.noescape = state.options.noescape;
60
- states.set(this, state);
61
- }
62
- /**
63
- * Destroys the _focus trap_
64
- */
65
- destroy() {
66
- if (this.#destroyed) return;
67
- this.#destroyed = true;
68
- disabled.delete(this);
69
- instances.delete(this.#state.element);
70
- states.delete(this);
71
- this.#state.element.tabIndex = this.#tabIndex;
72
- this.#state.element.removeAttribute(ATTRIBUTE_FOCUSTRAP);
73
- this.#state.element.removeAttribute(ATTRIBUTE_FOCUSTRAP_CONTAIN);
74
- this.#state.element.removeAttribute(ATTRIBUTE_FOCUSTRAP_NOESCAPE);
75
- this.#state.element = void 0;
76
- }
77
- /**
78
- * Disables the _focus trap_
79
- */
80
- disable() {
81
- if (!this.#destroyed && !(this.disabled || this.#state.options.noescape)) setDisabled(this, this.#state, true);
82
- }
83
- /**
84
- * Enables the _focus trap_
85
- */
86
- enable() {
87
- if (!this.#destroyed && this.disabled) setDisabled(this, this.#state, false);
88
- }
89
- /**
90
- * Focuses the _focus trap_
91
- *
92
- * @param last When `true`, focuses the last focusable element within the _focus trap_ instead of the first
93
- */
94
- focus(last) {
95
- if (!this.#destroyed && !this.disabled) tabToTrap(this, getFocusable(this.#state.element), this.#state.element, last ? -1 : 0);
96
- }
97
- };
11
+ function OuiFocusTrap(state) {
12
+ this[FOCUSTRAP_SYMBOL] = state;
13
+ state.element.tabIndex = -1;
14
+ setAttribute(state.element, FOCUSTRAP_ATTRIBUTE, "");
15
+ this.contain = state.options.contain;
16
+ this.noescape = state.options.noescape;
17
+ }
18
+ OuiFocusTrap.prototype.destroy = destroyFocusTrap;
19
+ OuiFocusTrap.prototype.disable = disableFocusTrap;
20
+ OuiFocusTrap.prototype.enable = enableFocusTrap;
21
+ OuiFocusTrap.prototype.focus = focusFocusTrap;
22
+ Object.defineProperties(OuiFocusTrap.prototype, {
23
+ contain: {
24
+ enumerable: true,
25
+ get: getContain,
26
+ set: setContain
27
+ },
28
+ disabled: {
29
+ enumerable: true,
30
+ get: getDisabled,
31
+ set: setDisabled
32
+ },
33
+ noescape: {
34
+ enumerable: true,
35
+ get: getNoEscape,
36
+ set: setNoEscape
37
+ }
38
+ });
98
39
  /**
99
40
  * Creates _(or retrieves)_ a _focus trap_ for an element
100
41
  *
@@ -103,44 +44,80 @@ var OuiFocusTrap = class {
103
44
  * @returns _Focus trap_ instance
104
45
  */
105
46
  function createFocusTrap(element, options) {
106
- if (!isHTMLOrSVGElement(element)) throw new TypeError(MESSAGE);
107
- let instance = instances.get(element);
47
+ if (!isHTMLOrSVGElement(element)) throw new TypeError(FOCUSTRAP_MESSAGE);
48
+ let instance = focusTraps.get(element);
108
49
  if (instance == null) {
109
50
  instance = new OuiFocusTrap(getState(element, options));
110
- instances.set(element, instance);
51
+ focusTraps.set(element, instance);
111
52
  }
112
53
  return instance;
113
54
  }
55
+ function destroyFocusTrap() {
56
+ const state = this[FOCUSTRAP_SYMBOL];
57
+ if (state.destroyed) return;
58
+ state.destroyed = true;
59
+ disabledFocusTraps.delete(this);
60
+ focusTraps.delete(state.element);
61
+ state.element.tabIndex = state.tabIndex;
62
+ state.element.removeAttribute(FOCUSTRAP_ATTRIBUTE);
63
+ state.element.removeAttribute(FOCUSTRAP_ATTRIBUTE_CONTAIN);
64
+ state.element.removeAttribute(FOCUSTRAP_ATTRIBUTE_NOESCAPE);
65
+ state.element = void 0;
66
+ }
67
+ function disableFocusTrap() {
68
+ const state = this[FOCUSTRAP_SYMBOL];
69
+ if (!state.destroyed && !(this.disabled || state.options.noescape)) setDisabledState(this, state, true);
70
+ }
71
+ function enableFocusTrap() {
72
+ const state = this[FOCUSTRAP_SYMBOL];
73
+ if (!state.destroyed && this.disabled) setDisabledState(this, state, false);
74
+ }
75
+ function focusFocusTrap(last) {
76
+ const state = this[FOCUSTRAP_SYMBOL];
77
+ if (!state.destroyed && !this.disabled) tabToTrap(this, getFocusable(state.element), state.element, last ? -1 : 0);
78
+ }
79
+ function getContain() {
80
+ return this[FOCUSTRAP_SYMBOL].element.hasAttribute(FOCUSTRAP_ATTRIBUTE_CONTAIN);
81
+ }
82
+ function getDisabled() {
83
+ return this[FOCUSTRAP_SYMBOL].disabled;
84
+ }
85
+ function getNoEscape() {
86
+ return this[FOCUSTRAP_SYMBOL].element.hasAttribute(FOCUSTRAP_ATTRIBUTE_NOESCAPE);
87
+ }
114
88
  function getOptions(element, input) {
115
89
  const options = isPlainObject(input) ? input : {};
116
90
  return {
117
- contain: typeof options.contain === "boolean" ? options.contain : element.hasAttribute(ATTRIBUTE_FOCUSTRAP_CONTAIN),
118
- noescape: typeof options.noescape === "boolean" ? options.noescape : element.hasAttribute(ATTRIBUTE_FOCUSTRAP_NOESCAPE)
91
+ contain: typeof options.contain === "boolean" ? options.contain : element.hasAttribute(FOCUSTRAP_ATTRIBUTE_CONTAIN),
92
+ noescape: typeof options.noescape === "boolean" ? options.noescape : element.hasAttribute(FOCUSTRAP_ATTRIBUTE_NOESCAPE)
119
93
  };
120
94
  }
121
95
  function getState(element, options) {
122
96
  return {
123
97
  element,
98
+ destroyed: false,
124
99
  disabled: false,
125
- options: getOptions(element, options)
100
+ options: getOptions(element, options),
101
+ tabIndex: element.tabIndex
126
102
  };
127
103
  }
128
104
  function onEscape(event) {
129
- let element = findAncestor(event, SELECTOR);
130
- let instance = instances.get(element);
131
- let state = states.get(instance);
105
+ let element = findAncestor(event, FOCUSTRAP_SELECTOR);
106
+ let instance = element == null ? void 0 : focusTraps.get(element);
107
+ let state = instance?.[FOCUSTRAP_SYMBOL];
132
108
  if (element == null || instance == null || state == null) return;
133
109
  while (state.disabled) {
134
- element = findAncestor(state.element.parentElement, SELECTOR);
135
- instance = instances.get(element);
136
- state = states.get(instance);
110
+ element = state.element.parentElement == null ? void 0 : findAncestor(state.element.parentElement, FOCUSTRAP_SELECTOR);
111
+ instance = element == null ? void 0 : focusTraps.get(element);
112
+ state = instance?.[FOCUSTRAP_SYMBOL];
137
113
  if (element == null || instance == null || state == null) return;
138
114
  if (!state.disabled) break;
139
115
  }
140
116
  instance?.disable();
141
117
  }
142
118
  function onFocusIn(event) {
143
- lastTarget = instances.get(findAncestor(event, SELECTOR)) == null ? void 0 : event.target;
119
+ const target = findAncestor(event, FOCUSTRAP_SELECTOR);
120
+ lastTarget = (target == null ? void 0 : focusTraps.get(target)) != null && event.target instanceof HTMLElement ? event.target : void 0;
144
121
  }
145
122
  function onKeydown(event) {
146
123
  switch (event.key) {
@@ -154,24 +131,24 @@ function onKeydown(event) {
154
131
  }
155
132
  }
156
133
  function onPointerdown(event) {
157
- const last = findAncestor(lastTarget, SELECTOR);
158
- const next = findAncestor(event, SELECTOR);
134
+ const last = lastTarget == null ? void 0 : findAncestor(lastTarget, FOCUSTRAP_SELECTOR);
135
+ const next = findAncestor(event, FOCUSTRAP_SELECTOR);
159
136
  if (last != null && next !== last) {
160
- if (states.get(instances.get(last))?.options.contain ?? false) {
137
+ if (focusTraps.get(last)?.[FOCUSTRAP_SYMBOL]?.options.contain ?? false) {
161
138
  event.preventDefault();
162
- lastTarget?.focus();
139
+ lastTarget?.focus?.();
163
140
  }
164
141
  }
165
- if (disabled.size === 0) return;
166
- for (const focusTrap of disabled) {
167
- const state = states.get(focusTrap);
142
+ if (disabledFocusTraps.size === 0) return;
143
+ for (const focusTrap of disabledFocusTraps) {
144
+ const state = focusTrap?.[FOCUSTRAP_SYMBOL];
168
145
  if (state != null && state.element !== next) focusTrap.enable();
169
146
  }
170
147
  }
171
148
  function onTab(event) {
172
- const element = findAncestor(event, SELECTOR);
173
- const instance = instances.get(element);
174
- if (instance == null || dispatch(element, "oui:focus-trap").defaultPrevented) return;
149
+ const element = findAncestor(event, FOCUSTRAP_SELECTOR);
150
+ const instance = element == null ? void 0 : focusTraps.get(element);
151
+ if (!(element instanceof HTMLElement) || instance == null || dispatch(element, "oui:focus-trap").defaultPrevented) return;
175
152
  if (!instance.disabled) event.preventDefault();
176
153
  const elements = getFocusable(element);
177
154
  const index = elements.indexOf(event.target);
@@ -179,13 +156,27 @@ function onTab(event) {
179
156
  else tabToElement(instance, elements, index, event.shiftKey ? -1 : 1);
180
157
  }
181
158
  function removeFocusTrap(element) {
182
- instances.get(element)?.destroy();
183
- instances.delete(element);
159
+ focusTraps.get(element)?.destroy();
160
+ focusTraps.delete(element);
184
161
  }
185
- function setDisabled(focusTrap, state, value) {
162
+ function setContain(value) {
163
+ const { element } = this[FOCUSTRAP_SYMBOL];
164
+ if (value === true) setAttribute(element, FOCUSTRAP_ATTRIBUTE_CONTAIN, "");
165
+ else if (value === false) setAttribute(element, FOCUSTRAP_ATTRIBUTE_CONTAIN, void 0);
166
+ }
167
+ function setDisabled(value) {
168
+ if (value === true) this.disable();
169
+ else if (value === false) this.enable();
170
+ }
171
+ function setDisabledState(focusTrap, state, value) {
186
172
  state.disabled = value;
187
- if (value) disabled.add(focusTrap);
188
- else disabled.delete(focusTrap);
173
+ if (value) disabledFocusTraps.add(focusTrap);
174
+ else disabledFocusTraps.delete(focusTrap);
175
+ }
176
+ function setNoEscape(value) {
177
+ const { element } = this[FOCUSTRAP_SYMBOL];
178
+ if (value === true) setAttribute(element, FOCUSTRAP_ATTRIBUTE_NOESCAPE, "");
179
+ else if (value === false) setAttribute(element, FOCUSTRAP_ATTRIBUTE_NOESCAPE, void 0);
189
180
  }
190
181
  function tabToElement(instance, elements, index, modifier) {
191
182
  const { length } = elements;
@@ -198,7 +189,7 @@ function tabToElement(instance, elements, index, modifier) {
198
189
  return;
199
190
  }
200
191
  const element = elements[next];
201
- const elementFocusTrap = instances.get(element);
192
+ const elementFocusTrap = focusTraps.get(element);
202
193
  if (elementFocusTrap != null) elementFocusTrap.focus(modifier === -1);
203
194
  else {
204
195
  elements[next].focus();
@@ -211,27 +202,15 @@ function tabToTrap(instance, elements, element, index) {
211
202
  instance.enable();
212
203
  } else {
213
204
  const next = elements.length === 0 ? element : elements.at(index ?? 0);
214
- next.focus();
205
+ next?.focus?.();
215
206
  lastTarget = next;
216
207
  }
217
208
  }
218
- const ATTRIBUTE_FOCUSTRAP = "oui-focus-trap";
219
- const ATTRIBUTE_FOCUSTRAP_CONTAIN = `${ATTRIBUTE_FOCUSTRAP}-contain`;
220
- const ATTRIBUTE_FOCUSTRAP_NOESCAPE = `${ATTRIBUTE_FOCUSTRAP}-noescape`;
221
- const EVENT_OPTIONS = {
222
- capture: true,
223
- passive: false
224
- };
225
- const MESSAGE = "Element must be an HTMLElement or SVGElement";
226
- const SELECTOR = `[${ATTRIBUTE_FOCUSTRAP}]`;
227
- const disabled = /* @__PURE__ */ new Set();
228
- const instances = /* @__PURE__ */ new WeakMap();
229
- const states = /* @__PURE__ */ new WeakMap();
230
209
  let lastTarget;
231
- attributable(ATTRIBUTE_FOCUSTRAP, createFocusTrap, removeFocusTrap);
232
- on(document, "focusin", onFocusIn, EVENT_OPTIONS);
233
- on(document, "keydown", onKeydown, EVENT_OPTIONS);
234
- on(document, "mousedown", onPointerdown, EVENT_OPTIONS);
235
- on(document, "touchstart", onPointerdown, EVENT_OPTIONS);
210
+ attributable(FOCUSTRAP_ATTRIBUTE, createFocusTrap, removeFocusTrap);
211
+ on(document, "focusin", onFocusIn, FOCUSTRAP_EVENT_OPTIONS);
212
+ on(document, "keydown", onKeydown, FOCUSTRAP_EVENT_OPTIONS);
213
+ on(document, "mousedown", onPointerdown, FOCUSTRAP_EVENT_OPTIONS);
214
+ on(document, "touchstart", onPointerdown, FOCUSTRAP_EVENT_OPTIONS);
236
215
  //#endregion
237
- export { ATTRIBUTE_FOCUSTRAP, ATTRIBUTE_FOCUSTRAP_CONTAIN, ATTRIBUTE_FOCUSTRAP_NOESCAPE, OuiFocusTrap, createFocusTrap, removeFocusTrap };
216
+ export { createFocusTrap, removeFocusTrap };
@@ -0,0 +1,2 @@
1
+ import { a as FOCUSTRAP_MESSAGE, c as OuiFocusTrap, d as disabledFocusTraps, f as focusTraps, i as FOCUSTRAP_EVENT_OPTIONS, l as OuiFocusTrapOptions, n as FOCUSTRAP_ATTRIBUTE_CONTAIN, o as FOCUSTRAP_SELECTOR, r as FOCUSTRAP_ATTRIBUTE_NOESCAPE, s as FOCUSTRAP_SYMBOL, t as FOCUSTRAP_ATTRIBUTE, u as OuiFocusTrapState } from "../focus-trap.model-CpltX5B5.mjs";
2
+ export { FOCUSTRAP_ATTRIBUTE, FOCUSTRAP_ATTRIBUTE_CONTAIN, FOCUSTRAP_ATTRIBUTE_NOESCAPE, FOCUSTRAP_EVENT_OPTIONS, FOCUSTRAP_MESSAGE, FOCUSTRAP_SELECTOR, FOCUSTRAP_SYMBOL, OuiFocusTrap, OuiFocusTrapOptions, OuiFocusTrapState, disabledFocusTraps, focusTraps };
@@ -0,0 +1,15 @@
1
+ //#region src/js/focus-trap/focus-trap.model.ts
2
+ const FOCUSTRAP_ATTRIBUTE = "oui-focus-trap";
3
+ const FOCUSTRAP_ATTRIBUTE_CONTAIN = `${FOCUSTRAP_ATTRIBUTE}-contain`;
4
+ const FOCUSTRAP_ATTRIBUTE_NOESCAPE = `${FOCUSTRAP_ATTRIBUTE}-noescape`;
5
+ const FOCUSTRAP_EVENT_OPTIONS = {
6
+ capture: true,
7
+ passive: false
8
+ };
9
+ const FOCUSTRAP_MESSAGE = "Element must be an HTMLElement or SVGElement";
10
+ const FOCUSTRAP_SELECTOR = `[${FOCUSTRAP_ATTRIBUTE}]`;
11
+ const FOCUSTRAP_SYMBOL = Symbol(FOCUSTRAP_ATTRIBUTE);
12
+ const disabledFocusTraps = /* @__PURE__ */ new Set();
13
+ const focusTraps = /* @__PURE__ */ new WeakMap();
14
+ //#endregion
15
+ export { FOCUSTRAP_ATTRIBUTE, FOCUSTRAP_ATTRIBUTE_CONTAIN, FOCUSTRAP_ATTRIBUTE_NOESCAPE, FOCUSTRAP_EVENT_OPTIONS, FOCUSTRAP_MESSAGE, FOCUSTRAP_SELECTOR, FOCUSTRAP_SYMBOL, disabledFocusTraps, focusTraps };
@@ -1,2 +1,3 @@
1
- import { a as OuiFocusTrapOptions, i as OuiFocusTrap, o as createFocusTrap } from "../focus-trap.embedded-CjyFQYow.mjs";
1
+ import { c as OuiFocusTrap, l as OuiFocusTrapOptions } from "../focus-trap.model-CpltX5B5.mjs";
2
+ import { t as createFocusTrap } from "../focus-trap.embedded-DpcPkP7c.mjs";
2
3
  export { type OuiFocusTrap, type OuiFocusTrapOptions, createFocusTrap };
@@ -0,0 +1,13 @@
1
+ import { c as OuiFocusTrap, l as OuiFocusTrapOptions } from "./focus-trap.model-CpltX5B5.mjs";
2
+ //#region src/js/focus-trap/focus-trap.embedded.d.ts
3
+ /**
4
+ * Creates _(or retrieves)_ a _focus trap_ for an element
5
+ *
6
+ * @param element Element to trap focus within
7
+ * @param options _Focus trap_ options
8
+ * @returns _Focus trap_ instance
9
+ */
10
+ declare function createFocusTrap(element: Element, options?: OuiFocusTrapOptions): OuiFocusTrap;
11
+ declare function removeFocusTrap(element: Element): void;
12
+ //#endregion
13
+ export { removeFocusTrap as n, createFocusTrap as t };
@@ -1,6 +1,6 @@
1
- //#region src/js/focus-trap/focus-trap.embedded.d.ts
2
- declare class OuiFocusTrap {
3
- #private;
1
+ //#region src/js/focus-trap/focus-trap.model.d.ts
2
+ type OuiFocusTrap = {
3
+ [FOCUSTRAP_SYMBOL]: OuiFocusTrapState;
4
4
  /**
5
5
  * Is focused maintained within the _focus trap_ when clicking outside of it?
6
6
  */
@@ -25,7 +25,6 @@ declare class OuiFocusTrap {
25
25
  * Should the _focus trap_ allow focus to escape when pressing _Escape_?
26
26
  */
27
27
  set noescape(value: boolean);
28
- constructor(state: OuiFocusTrapState);
29
28
  /**
30
29
  * Destroys the _focus trap_
31
30
  */
@@ -44,7 +43,7 @@ declare class OuiFocusTrap {
44
43
  * @param last When `true`, focuses the last focusable element within the _focus trap_ instead of the first
45
44
  */
46
45
  focus(last: boolean): void;
47
- }
46
+ };
48
47
  type OuiFocusTrapOptions = {
49
48
  /**
50
49
  * Should focus be maintained within the _focus trap_ when clicking outside of it?
@@ -56,21 +55,20 @@ type OuiFocusTrapOptions = {
56
55
  noescape?: boolean;
57
56
  };
58
57
  type OuiFocusTrapState = {
58
+ destroyed: boolean;
59
59
  disabled: boolean;
60
60
  element: HTMLElement;
61
61
  options: Required<OuiFocusTrapOptions>;
62
+ tabIndex: number;
62
63
  };
63
- /**
64
- * Creates _(or retrieves)_ a _focus trap_ for an element
65
- *
66
- * @param element Element to trap focus within
67
- * @param options _Focus trap_ options
68
- * @returns _Focus trap_ instance
69
- */
70
- declare function createFocusTrap(element: HTMLElement, options?: OuiFocusTrapOptions): OuiFocusTrap;
71
- declare function removeFocusTrap(element: HTMLElement): void;
72
- declare const ATTRIBUTE_FOCUSTRAP = "oui-focus-trap";
73
- declare const ATTRIBUTE_FOCUSTRAP_CONTAIN: string;
74
- declare const ATTRIBUTE_FOCUSTRAP_NOESCAPE: string;
64
+ declare const FOCUSTRAP_ATTRIBUTE = "oui-focus-trap";
65
+ declare const FOCUSTRAP_ATTRIBUTE_CONTAIN: string;
66
+ declare const FOCUSTRAP_ATTRIBUTE_NOESCAPE: string;
67
+ declare const FOCUSTRAP_EVENT_OPTIONS: AddEventListenerOptions;
68
+ declare const FOCUSTRAP_MESSAGE = "Element must be an HTMLElement or SVGElement";
69
+ declare const FOCUSTRAP_SELECTOR: string;
70
+ declare const FOCUSTRAP_SYMBOL: unique symbol;
71
+ declare const disabledFocusTraps: Set<OuiFocusTrap>;
72
+ declare const focusTraps: WeakMap<Element, OuiFocusTrap>;
75
73
  //#endregion
76
- export { OuiFocusTrapOptions as a, OuiFocusTrap as i, ATTRIBUTE_FOCUSTRAP_CONTAIN as n, createFocusTrap as o, ATTRIBUTE_FOCUSTRAP_NOESCAPE as r, removeFocusTrap as s, ATTRIBUTE_FOCUSTRAP as t };
74
+ export { FOCUSTRAP_MESSAGE as a, OuiFocusTrap as c, disabledFocusTraps as d, focusTraps as f, FOCUSTRAP_EVENT_OPTIONS as i, OuiFocusTrapOptions as l, FOCUSTRAP_ATTRIBUTE_CONTAIN as n, FOCUSTRAP_SELECTOR as o, FOCUSTRAP_ATTRIBUTE_NOESCAPE as r, FOCUSTRAP_SYMBOL as s, FOCUSTRAP_ATTRIBUTE as t, OuiFocusTrapState as u };
@@ -1,18 +1,30 @@
1
- import { a as OuiFloatablePosition, n as CreateOuiFloatableOptions, r as OuiFloatable, s as createFloatable } from "./floatable.embedded-DQYkXt8X.mjs";
2
- import { A as OuiColorPickerEvent, B as OuiColorPickerElement, G as setColorPickerLocalizations } from "./constants.color-picker-B-gFjL8m.mjs";
3
- import { a as setComboboxLocalizations, t as OuiComboboxElement } from "./index-C5D3-oiI.mjs";
4
- import { d as OuiSortable, f as createSortable, g as createMovable, h as OuiMovable, t as CreateOuiDraggableOptions } from "./draggable-B5-70SZm.mjs";
1
+ import { c as OuiFloatable, t as CreateOuiFloatableOptions, u as OuiFloatablePosition } from "./floatable.model-DXsQgoU7.mjs";
2
+ import { N as OuiColorPickerEvent } from "./color-picker.constants-BZgXQr5o.mjs";
3
+ import { a as setColorPickerLocalizations } from "./color-picker.misc-BIS3R6jk.mjs";
4
+ import { OuiColorPickerElement } from "./color-picker/index.mjs";
5
+ import { i as setComboboxLocalizations } from "./combobox.misc-DRDFk6X8.mjs";
6
+ import { OuiComboboxElement } from "./combobox/index.mjs";
7
+ import { $ as OuiSortable, p as CreateOuiDraggableOptions, u as OuiMovable } from "./movable.model-D9nnPWKk.mjs";
8
+ import { n as OuiResizable, t as CreateOuiResizableOptions } from "./resizable.model-YEtcC9li.mjs";
9
+ import { c as OuiDialog } from "./dialog.model-HVzYWoDo.mjs";
10
+ import { getDialog } from "./dialog/index.mjs";
11
+ import { n as createFloatable } from "./floatable.embedded-ncshL3Sa.mjs";
12
+ import "./floatable/floatable.standalone.mjs";
13
+ import { c as OuiFocusTrap, l as OuiFocusTrapOptions } from "./focus-trap.model-CpltX5B5.mjs";
14
+ import { t as createFocusTrap } from "./focus-trap.embedded-DpcPkP7c.mjs";
15
+ import { t as createMovable } from "./movable.embedded-C1bDTLGs.mjs";
5
16
  import "./movable/movable.standalone.mjs";
6
- import { a as createResizable, n as OuiResizable, t as CreateOuiResizableOptions } from "./resizable.embedded-dvhdfQgt.mjs";
17
+ import { t as createResizable } from "./resizable.embedded-BemH-7Re.mjs";
7
18
  import "./resizable/resizable.standalone.mjs";
8
- import { OuiDialog, getDialog } from "./dialog.mjs";
9
- import "./floatable/floatable.standalone.mjs";
10
- import { a as OuiFocusTrapOptions, i as OuiFocusTrap, o as createFocusTrap } from "./focus-trap.embedded-CjyFQYow.mjs";
11
- import { n as setListboxLocalizations } from "./misc.listbox-mZMuYOxg.mjs";
12
- import { OuiListboxElement } from "./listbox/index.mjs";
13
- import { OuiPopover, getPopover } from "./popover.mjs";
19
+ import { t as createSortable } from "./sortable.embedded-CrEGff9k.mjs";
14
20
  import "./sortable/sortable.standalone.mjs";
15
- import { OuiSplitterElement } from "./splitter.mjs";
16
- import { OuiTabsElement, OuiTabsEvent } from "./tabs.mjs";
17
- import { OuiTooltip, getTooltip, setTooltipDelay } from "./tooltip.mjs";
21
+ import { n as setListboxLocalizations } from "./listbox.misc-DwfB4Mu_.mjs";
22
+ import { OuiListboxElement } from "./listbox/index.mjs";
23
+ import { t as OuiPopover } from "./popover.model-DiLdz0Hc.mjs";
24
+ import { getPopover } from "./popover/index.mjs";
25
+ import { OuiSplitterElement } from "./splitter/index.mjs";
26
+ import { r as OuiTabsEvent } from "./tabs.model-BHPy7fPo.mjs";
27
+ import { OuiTabsElement } from "./tabs/index.mjs";
28
+ import { t as OuiTooltip } from "./tooltip.model-BpNStw5z.mjs";
29
+ import { getTooltip, setTooltipDelay } from "./tooltip/index.mjs";
18
30
  export { type CreateOuiFloatableOptions, type CreateOuiDraggableOptions as CreateOuiMovableOptions, type CreateOuiDraggableOptions as CreateOuiSortableOptions, type CreateOuiResizableOptions, OuiColorPickerElement, OuiColorPickerEvent, OuiComboboxElement, type OuiDialog, type OuiFloatable, type OuiFloatablePosition, type OuiFocusTrap, type OuiFocusTrapOptions, OuiListboxElement, type OuiMovable, type OuiPopover, type OuiResizable, type OuiSortable, OuiSplitterElement, OuiTabsElement, OuiTabsEvent, type OuiTooltip, createFloatable, createFocusTrap, createMovable, createResizable as createOuiResizable, createSortable, getDialog, getPopover, getTooltip, setColorPickerLocalizations, setComboboxLocalizations, setListboxLocalizations, setTooltipDelay };
package/dist/js/index.mjs CHANGED
@@ -1,25 +1,26 @@
1
1
  import { createFloatable } from "./floatable/floatable.embedded.mjs";
2
- import { createMovable } from "./movable/movable.embedded.mjs";
3
- import "./movable/movable.standalone.mjs";
4
- import { createResizable } from "./resizable/resizable.embedded.mjs";
5
- import { getDialog } from "./dialog.mjs";
6
- import "./menu.mjs";
7
- import "./toolbar.mjs";
8
- import { OuiColorPickerEvent } from "./color-picker/models.color-picker.mjs";
9
- import { d as setColorPickerLocalizations } from "./event.color-picker-BEpq0Adu.mjs";
10
- import { OuiColorPickerElement } from "./color-picker/index.mjs";
11
- import { D as setComboboxLocalizations } from "./state.combobox-BWDFHwoi.mjs";
12
- import { OuiComboboxElement } from "./combobox/index.mjs";
2
+ import "./menu/index.mjs";
3
+ import "./toolbar/index.mjs";
13
4
  import "./floatable/floatable.standalone.mjs";
14
5
  import { createFocusTrap } from "./focus-trap/focus-trap.embedded.mjs";
15
6
  import "./focus-trap/focus-trap.standalone.mjs";
16
- import { n as setListboxLocalizations } from "./misc.listbox-DKB-j0UK.mjs";
17
- import { OuiListboxElement } from "./listbox/index.mjs";
18
- import { getPopover } from "./popover.mjs";
7
+ import { createMovable } from "./movable/movable.embedded.mjs";
8
+ import "./movable/movable.standalone.mjs";
9
+ import { createResizable } from "./resizable/resizable.embedded.mjs";
19
10
  import "./resizable/resizable.standalone.mjs";
20
11
  import { createSortable } from "./sortable/sortable.embedded.mjs";
21
12
  import "./sortable/sortable.standalone.mjs";
22
- import { OuiSplitterElement } from "./splitter.mjs";
23
- import { OuiTabsElement, OuiTabsEvent } from "./tabs.mjs";
24
- import { getTooltip, setTooltipDelay } from "./tooltip.mjs";
13
+ import { OuiColorPickerEvent } from "./color-picker/color-picker.model.mjs";
14
+ import { setColorPickerLocalizations } from "./color-picker/color-picker.misc.mjs";
15
+ import { OuiColorPickerElement } from "./color-picker/index.mjs";
16
+ import { D as setComboboxLocalizations } from "./combobox.state-AstCICiH.mjs";
17
+ import { OuiComboboxElement } from "./combobox/index.mjs";
18
+ import { getDialog } from "./dialog/index.mjs";
19
+ import { s as setListboxLocalizations } from "./listbox.state-BrN296BM.mjs";
20
+ import { OuiListboxElement } from "./listbox/index.mjs";
21
+ import { getPopover } from "./popover/index.mjs";
22
+ import { OuiSplitterElement } from "./splitter/index.mjs";
23
+ import { OuiTabsEvent } from "./tabs/tabs.model.mjs";
24
+ import { OuiTabsElement } from "./tabs/index.mjs";
25
+ import { getTooltip, setTooltipDelay } from "./tooltip/index.mjs";
25
26
  export { OuiColorPickerElement, OuiColorPickerEvent, OuiComboboxElement, OuiListboxElement, OuiSplitterElement, OuiTabsElement, OuiTabsEvent, createFloatable, createFocusTrap, createMovable, createResizable as createOuiResizable, createSortable, getDialog, getPopover, getTooltip, setColorPickerLocalizations, setComboboxLocalizations, setListboxLocalizations, setTooltipDelay };
@@ -1,3 +1,3 @@
1
1
  //#region src/js/internal/attributable.d.ts
2
- export declare function attributable(attribute: string, add: (element: HTMLElement) => void, remove: (element: HTMLElement) => void): void;
2
+ export declare function attributable(attribute: string, add: (element: Element) => void, remove: (element: Element) => void): void;
3
3
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { filter } from "@oscarpalmer/atoms/array/filter";
1
2
  //#region src/js/internal/attributable.ts
2
3
  function attributable(attribute, add, remove) {
3
4
  new MutationObserver((entries) => {
@@ -23,7 +24,7 @@ function attributable(attribute, add, remove) {
23
24
  });
24
25
  }
25
26
  function handleAdded(attribute, nodes, add) {
26
- const elements = [...nodes].filter((node) => node instanceof Element);
27
+ const elements = filter([...nodes], (node) => node instanceof Element);
27
28
  const { length } = elements;
28
29
  for (let index = 0; index < length; index += 1) {
29
30
  const element = elements[index];
@@ -32,7 +33,7 @@ function handleAdded(attribute, nodes, add) {
32
33
  }
33
34
  }
34
35
  function handleRemoved(nodes, remove) {
35
- const elements = [...nodes].filter((node) => node instanceof Element);
36
+ const elements = filter([...nodes], (node) => node instanceof Element);
36
37
  const { length } = elements;
37
38
  for (let index = 0; index < length; index += 1) {
38
39
  const element = elements[index];
@@ -0,0 +1,2 @@
1
+ import { A as OuiDraggableGlobals, B as OuiDraggableOptionsDrag, C as OuiDragCancel, D as OuiDraggable, E as OuiDragMovePosition, F as OuiDraggableOptionsContainer, G as OuiDraggableStates, H as OuiDraggableOptionsPositionGetOffset, I as OuiDraggableOptionsContainerOnDestroy, J as draggableHorizontals, K as draggableContainers, L as OuiDraggableOptionsContainerOnInitialize, M as OuiDraggableInstances, N as OuiDraggableItem, O as OuiDraggableBound, P as OuiDraggableOptions, Q as draggableVerticals, R as OuiDraggableOptionsDirection, S as OuiDragBegin, T as OuiDragMove, U as OuiDraggableOptionsPositionGetOriginal, V as OuiDraggableOptionsPosition, W as OuiDraggableState, X as draggableStyleToggler, Y as draggableProperties, Z as draggableStyles, _ as DRAGGABLE_SELECTOR, b as DRAGGABLE_SELECTOR_SORTABLE_ITEM, g as DRAGGABLE_KEY_ESCAPE, h as DRAGGABLE_ATTRIBUTE_SORTABLE, j as OuiDraggableGlobalsElement, k as OuiDraggableDirection, m as DRAGGABLE_ATTRIBUTE_MOVABLE, p as CreateOuiDraggableOptions, q as draggableGlobals, v as DRAGGABLE_SELECTOR_MOVABLE_HANDLE, w as OuiDragEnd, x as DRAGGABLE_SYMBOL, y as DRAGGABLE_SELECTOR_SORTABLE_HANDLE, z as OuiDraggableOptionsDirectionOnAfter } from "../../movable.model-D9nnPWKk.mjs";
2
+ export { CreateOuiDraggableOptions, DRAGGABLE_ATTRIBUTE_MOVABLE, DRAGGABLE_ATTRIBUTE_SORTABLE, DRAGGABLE_KEY_ESCAPE, DRAGGABLE_SELECTOR, DRAGGABLE_SELECTOR_MOVABLE_HANDLE, DRAGGABLE_SELECTOR_SORTABLE_HANDLE, DRAGGABLE_SELECTOR_SORTABLE_ITEM, DRAGGABLE_SYMBOL, OuiDragBegin, OuiDragCancel, OuiDragEnd, OuiDragMove, OuiDragMovePosition, OuiDraggable, OuiDraggableBound, OuiDraggableDirection, OuiDraggableGlobals, OuiDraggableGlobalsElement, OuiDraggableInstances, OuiDraggableItem, OuiDraggableOptions, OuiDraggableOptionsContainer, OuiDraggableOptionsContainerOnDestroy, OuiDraggableOptionsContainerOnInitialize, OuiDraggableOptionsDirection, OuiDraggableOptionsDirectionOnAfter, OuiDraggableOptionsDrag, OuiDraggableOptionsPosition, OuiDraggableOptionsPositionGetOffset, OuiDraggableOptionsPositionGetOriginal, OuiDraggableState, OuiDraggableStates, draggableContainers, draggableGlobals, draggableHorizontals, draggableProperties, draggableStyleToggler, draggableStyles, draggableVerticals };
@@ -0,0 +1,37 @@
1
+ import { toggleStyles } from "@oscarpalmer/toretto/style";
2
+ //#region src/js/internal/draggable/draggable.model.ts
3
+ const DRAGGABLE_ATTRIBUTE_MOVABLE = "oui-movable";
4
+ const DRAGGABLE_ATTRIBUTE_SORTABLE = "oui-sortable";
5
+ const DRAGGABLE_KEY_ESCAPE = "Escape";
6
+ const DRAGGABLE_SELECTOR = `[${DRAGGABLE_ATTRIBUTE_MOVABLE}], [${DRAGGABLE_ATTRIBUTE_SORTABLE}]`;
7
+ const DRAGGABLE_SELECTOR_MOVABLE_HANDLE = `[${DRAGGABLE_ATTRIBUTE_MOVABLE}-handle]`;
8
+ const DRAGGABLE_SELECTOR_SORTABLE_HANDLE = `[${DRAGGABLE_ATTRIBUTE_SORTABLE}-handle]`;
9
+ const DRAGGABLE_SELECTOR_SORTABLE_ITEM = `[${DRAGGABLE_ATTRIBUTE_SORTABLE}] > *`;
10
+ const DRAGGABLE_SYMBOL = Symbol(DRAGGABLE_ATTRIBUTE_MOVABLE);
11
+ const draggableContainers = /* @__PURE__ */ new Set([
12
+ "body",
13
+ "document",
14
+ "window"
15
+ ]);
16
+ const draggableHorizontals = /* @__PURE__ */ new Set(["horizontal", "x"]);
17
+ const draggableProperties = {
18
+ movable: "sortable",
19
+ sortable: "movable"
20
+ };
21
+ const draggableGlobals = {
22
+ container: void 0,
23
+ element: void 0,
24
+ instances: /* @__PURE__ */ new WeakMap(),
25
+ offset: void 0,
26
+ original: void 0,
27
+ states: /* @__PURE__ */ new WeakMap()
28
+ };
29
+ const draggableStyles = {
30
+ touchAction: "none",
31
+ userSelect: "none",
32
+ webkitUserSelect: "none"
33
+ };
34
+ const draggableStyleToggler = toggleStyles(document.body, draggableStyles);
35
+ const draggableVerticals = /* @__PURE__ */ new Set(["vertical", "y"]);
36
+ //#endregion
37
+ export { DRAGGABLE_ATTRIBUTE_MOVABLE, DRAGGABLE_ATTRIBUTE_SORTABLE, DRAGGABLE_KEY_ESCAPE, DRAGGABLE_SELECTOR, DRAGGABLE_SELECTOR_MOVABLE_HANDLE, DRAGGABLE_SELECTOR_SORTABLE_HANDLE, DRAGGABLE_SELECTOR_SORTABLE_ITEM, DRAGGABLE_SYMBOL, draggableContainers, draggableGlobals, draggableHorizontals, draggableProperties, draggableStyleToggler, draggableStyles, draggableVerticals };
@@ -0,0 +1,13 @@
1
+ import { D as OuiDraggable, G as OuiDraggableStates, M as OuiDraggableInstances, O as OuiDraggableBound, P as OuiDraggableOptions, W as OuiDraggableState, p as CreateOuiDraggableOptions } from "../../movable.model-D9nnPWKk.mjs";
2
+ import { PlainObject } from "@oscarpalmer/atoms/models";
3
+ //#region src/js/internal/draggable/index.d.ts
4
+ export declare function addDraggable<Property extends keyof OuiDraggableInstances, Instance extends OuiDraggableInstances[Property]>(this: OuiDraggableBound<Property, Instance>, element: Element, options?: CreateOuiDraggableOptions): Instance;
5
+ export declare function destroyDraggable<ExtraState extends PlainObject>(draggable: OuiDraggable<ExtraState>): void;
6
+ export declare function getDraggableStates(element: Element): OuiDraggableStates | undefined;
7
+ export declare function getDraggableElement<ExtraState extends PlainObject>(this: OuiDraggable<ExtraState>): Element;
8
+ export declare function initializeDraggable<ExtraState extends PlainObject>(draggable: OuiDraggable<ExtraState>, name: keyof OuiDraggableStates, event: string, attribute: string, element: Element, options: OuiDraggableOptions<ExtraState>, extras: ExtraState): OuiDraggableState<ExtraState>;
9
+ export declare function removeDraggable<Property extends keyof OuiDraggableInstances, Instance extends OuiDraggableInstances[Property]>(this: {
10
+ constructor: new (element: Element) => Instance;
11
+ property: Property;
12
+ }, element: Element): void;
13
+ //#endregion