@sky.ui/core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/LICENSE.md +139 -0
  2. package/README.md +113 -0
  3. package/auto-import-loader.js +60 -0
  4. package/auto-import.js +93 -0
  5. package/dist/custom-elements.json +27051 -0
  6. package/dist/helper/controllers/animation-controller.d.ts +120 -0
  7. package/dist/helper/controllers/animation-controller.js +2 -0
  8. package/dist/helper/controllers/animation-controller.js.map +1 -0
  9. package/dist/helper/controllers/index.d.ts +2 -0
  10. package/dist/helper/controllers/popover-controller.d.ts +162 -0
  11. package/dist/helper/controllers/popover-controller.js +2 -0
  12. package/dist/helper/controllers/popover-controller.js.map +1 -0
  13. package/dist/helper/form-control-base.d.ts +1 -0
  14. package/dist/helper/iconify-offline.d.ts +73 -0
  15. package/dist/helper/iconify-offline.js +2 -0
  16. package/dist/helper/iconify-offline.js.map +1 -0
  17. package/dist/helper/index.d.ts +5 -0
  18. package/dist/helper/internals/form-control-base.d.ts +81 -0
  19. package/dist/helper/internals/form-control-base.js +2 -0
  20. package/dist/helper/internals/form-control-base.js.map +1 -0
  21. package/dist/helper/internals/index.d.ts +1 -0
  22. package/dist/helper/utils/color-resolver.d.ts +139 -0
  23. package/dist/helper/utils/color-resolver.js +2 -0
  24. package/dist/helper/utils/color-resolver.js.map +1 -0
  25. package/dist/helper/utils/index.d.ts +2 -0
  26. package/dist/helper/utils/size-resolver.d.ts +6 -0
  27. package/dist/helper/utils/size-resolver.js +2 -0
  28. package/dist/helper/utils/size-resolver.js.map +1 -0
  29. package/dist/index.d.ts +58 -0
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/sky-accordion/index.d.ts +1 -0
  33. package/dist/sky-accordion/index.js +1 -0
  34. package/dist/sky-accordion/sky-accordion.d.ts +201 -0
  35. package/dist/sky-accordion/sky-accordion.js +85 -0
  36. package/dist/sky-accordion/sky-accordion.js.map +1 -0
  37. package/dist/sky-accordion-item/index.d.ts +1 -0
  38. package/dist/sky-accordion-item/index.js +1 -0
  39. package/dist/sky-accordion-item/sky-accordion-item.d.ts +161 -0
  40. package/dist/sky-accordion-item/sky-accordion-item.js +191 -0
  41. package/dist/sky-accordion-item/sky-accordion-item.js.map +1 -0
  42. package/dist/sky-alert/index.d.ts +1 -0
  43. package/dist/sky-alert/index.js +1 -0
  44. package/dist/sky-alert/sky-alert.d.ts +136 -0
  45. package/dist/sky-alert/sky-alert.js +292 -0
  46. package/dist/sky-alert/sky-alert.js.map +1 -0
  47. package/dist/sky-appbar/index.d.ts +1 -0
  48. package/dist/sky-appbar/index.js +1 -0
  49. package/dist/sky-appbar/sky-appbar.d.ts +84 -0
  50. package/dist/sky-appbar/sky-appbar.js +173 -0
  51. package/dist/sky-appbar/sky-appbar.js.map +1 -0
  52. package/dist/sky-avatar/index.d.ts +1 -0
  53. package/dist/sky-avatar/index.js +1 -0
  54. package/dist/sky-avatar/sky-avatar.d.ts +104 -0
  55. package/dist/sky-avatar/sky-avatar.js +152 -0
  56. package/dist/sky-avatar/sky-avatar.js.map +1 -0
  57. package/dist/sky-badge/index.d.ts +1 -0
  58. package/dist/sky-badge/index.js +1 -0
  59. package/dist/sky-badge/sky-badge.d.ts +154 -0
  60. package/dist/sky-badge/sky-badge.js +148 -0
  61. package/dist/sky-badge/sky-badge.js.map +1 -0
  62. package/dist/sky-breadcrumb/index.d.ts +1 -0
  63. package/dist/sky-breadcrumb/index.js +1 -0
  64. package/dist/sky-breadcrumb/sky-breadcrumb.d.ts +111 -0
  65. package/dist/sky-breadcrumb/sky-breadcrumb.js +230 -0
  66. package/dist/sky-breadcrumb/sky-breadcrumb.js.map +1 -0
  67. package/dist/sky-button/index.d.ts +1 -0
  68. package/dist/sky-button/index.js +1 -0
  69. package/dist/sky-button/sky-button.d.ts +118 -0
  70. package/dist/sky-button/sky-button.js +172 -0
  71. package/dist/sky-button/sky-button.js.map +1 -0
  72. package/dist/sky-button-group/index.d.ts +1 -0
  73. package/dist/sky-button-group/index.js +1 -0
  74. package/dist/sky-button-group/sky-button-group.d.ts +93 -0
  75. package/dist/sky-button-group/sky-button-group.js +281 -0
  76. package/dist/sky-button-group/sky-button-group.js.map +1 -0
  77. package/dist/sky-card/index.d.ts +1 -0
  78. package/dist/sky-card/index.js +1 -0
  79. package/dist/sky-card/sky-card.d.ts +143 -0
  80. package/dist/sky-card/sky-card.js +186 -0
  81. package/dist/sky-card/sky-card.js.map +1 -0
  82. package/dist/sky-carousel/index.d.ts +1 -0
  83. package/dist/sky-carousel/index.js +1 -0
  84. package/dist/sky-carousel/sky-carousel.d.ts +265 -0
  85. package/dist/sky-carousel/sky-carousel.js +211 -0
  86. package/dist/sky-carousel/sky-carousel.js.map +1 -0
  87. package/dist/sky-checkbox/index.d.ts +1 -0
  88. package/dist/sky-checkbox/index.js +1 -0
  89. package/dist/sky-checkbox/sky-checkbox.d.ts +165 -0
  90. package/dist/sky-checkbox/sky-checkbox.js +276 -0
  91. package/dist/sky-checkbox/sky-checkbox.js.map +1 -0
  92. package/dist/sky-chip/index.d.ts +1 -0
  93. package/dist/sky-chip/index.js +1 -0
  94. package/dist/sky-chip/sky-chip.d.ts +95 -0
  95. package/dist/sky-chip/sky-chip.js +210 -0
  96. package/dist/sky-chip/sky-chip.js.map +1 -0
  97. package/dist/sky-col/index.d.ts +1 -0
  98. package/dist/sky-col/index.js +1 -0
  99. package/dist/sky-col/sky-col.d.ts +84 -0
  100. package/dist/sky-col/sky-col.js +46 -0
  101. package/dist/sky-col/sky-col.js.map +1 -0
  102. package/dist/sky-combobox/index.d.ts +1 -0
  103. package/dist/sky-combobox/index.js +1 -0
  104. package/dist/sky-combobox/sky-combobox.d.ts +313 -0
  105. package/dist/sky-combobox/sky-combobox.js +1146 -0
  106. package/dist/sky-combobox/sky-combobox.js.map +1 -0
  107. package/dist/sky-counter/index.d.ts +1 -0
  108. package/dist/sky-counter/index.js +1 -0
  109. package/dist/sky-counter/sky-counter.d.ts +130 -0
  110. package/dist/sky-counter/sky-counter.js +101 -0
  111. package/dist/sky-counter/sky-counter.js.map +1 -0
  112. package/dist/sky-dialog/index.d.ts +1 -0
  113. package/dist/sky-dialog/index.js +1 -0
  114. package/dist/sky-dialog/sky-dialog.d.ts +237 -0
  115. package/dist/sky-dialog/sky-dialog.js +265 -0
  116. package/dist/sky-dialog/sky-dialog.js.map +1 -0
  117. package/dist/sky-divider/index.d.ts +1 -0
  118. package/dist/sky-divider/index.js +1 -0
  119. package/dist/sky-divider/sky-divider.d.ts +120 -0
  120. package/dist/sky-divider/sky-divider.js +42 -0
  121. package/dist/sky-divider/sky-divider.js.map +1 -0
  122. package/dist/sky-drawer/index.d.ts +1 -0
  123. package/dist/sky-drawer/index.js +1 -0
  124. package/dist/sky-drawer/sky-drawer.d.ts +161 -0
  125. package/dist/sky-drawer/sky-drawer.js +177 -0
  126. package/dist/sky-drawer/sky-drawer.js.map +1 -0
  127. package/dist/sky-dropdown/index.d.ts +1 -0
  128. package/dist/sky-dropdown/index.js +1 -0
  129. package/dist/sky-dropdown/sky-dropdown.d.ts +252 -0
  130. package/dist/sky-dropdown/sky-dropdown.js +58 -0
  131. package/dist/sky-dropdown/sky-dropdown.js.map +1 -0
  132. package/dist/sky-dropdown-item/index.d.ts +1 -0
  133. package/dist/sky-dropdown-item/index.js +1 -0
  134. package/dist/sky-dropdown-item/sky-dropdown-item.d.ts +207 -0
  135. package/dist/sky-dropdown-item/sky-dropdown-item.js +341 -0
  136. package/dist/sky-dropdown-item/sky-dropdown-item.js.map +1 -0
  137. package/dist/sky-flexbar/index.d.ts +1 -0
  138. package/dist/sky-flexbar/index.js +1 -0
  139. package/dist/sky-flexbar/sky-flexbar.d.ts +189 -0
  140. package/dist/sky-flexbar/sky-flexbar.js +148 -0
  141. package/dist/sky-flexbar/sky-flexbar.js.map +1 -0
  142. package/dist/sky-flexbox/index.d.ts +1 -0
  143. package/dist/sky-flexbox/index.js +1 -0
  144. package/dist/sky-flexbox/sky-flexbox.d.ts +156 -0
  145. package/dist/sky-flexbox/sky-flexbox.js +40 -0
  146. package/dist/sky-flexbox/sky-flexbox.js.map +1 -0
  147. package/dist/sky-flexcol/index.d.ts +1 -0
  148. package/dist/sky-flexcol/index.js +1 -0
  149. package/dist/sky-flexcol/sky-flexcol.d.ts +154 -0
  150. package/dist/sky-flexcol/sky-flexcol.js +14 -0
  151. package/dist/sky-flexcol/sky-flexcol.js.map +1 -0
  152. package/dist/sky-flexitem/index.d.ts +1 -0
  153. package/dist/sky-flexitem/index.js +1 -0
  154. package/dist/sky-flexitem/sky-flexitem.d.ts +114 -0
  155. package/dist/sky-flexitem/sky-flexitem.js +45 -0
  156. package/dist/sky-flexitem/sky-flexitem.js.map +1 -0
  157. package/dist/sky-form/index.d.ts +1 -0
  158. package/dist/sky-form/index.js +1 -0
  159. package/dist/sky-form/sky-form.d.ts +286 -0
  160. package/dist/sky-form/sky-form.js +66 -0
  161. package/dist/sky-form/sky-form.js.map +1 -0
  162. package/dist/sky-grid/index.d.ts +1 -0
  163. package/dist/sky-grid/index.js +1 -0
  164. package/dist/sky-grid/sky-grid.d.ts +78 -0
  165. package/dist/sky-grid/sky-grid.js +40 -0
  166. package/dist/sky-grid/sky-grid.js.map +1 -0
  167. package/dist/sky-icon/index.d.ts +1 -0
  168. package/dist/sky-icon/index.js +1 -0
  169. package/dist/sky-icon/ion-local.json.js +2 -0
  170. package/dist/sky-icon/ion-local.json.js.map +1 -0
  171. package/dist/sky-icon/sky-icon.d.ts +123 -0
  172. package/dist/sky-icon/sky-icon.js +40 -0
  173. package/dist/sky-icon/sky-icon.js.map +1 -0
  174. package/dist/sky-image/index.d.ts +1 -0
  175. package/dist/sky-image/index.js +1 -0
  176. package/dist/sky-image/sky-image.d.ts +102 -0
  177. package/dist/sky-image/sky-image.js +29 -0
  178. package/dist/sky-image/sky-image.js.map +1 -0
  179. package/dist/sky-input/index.d.ts +1 -0
  180. package/dist/sky-input/index.js +1 -0
  181. package/dist/sky-input/sky-input.d.ts +345 -0
  182. package/dist/sky-input/sky-input.js +820 -0
  183. package/dist/sky-input/sky-input.js.map +1 -0
  184. package/dist/sky-list/index.d.ts +1 -0
  185. package/dist/sky-list/index.js +1 -0
  186. package/dist/sky-list/sky-list.d.ts +85 -0
  187. package/dist/sky-list/sky-list.js +41 -0
  188. package/dist/sky-list/sky-list.js.map +1 -0
  189. package/dist/sky-listitem/index.d.ts +1 -0
  190. package/dist/sky-listitem/index.js +1 -0
  191. package/dist/sky-listitem/sky-listitem.d.ts +76 -0
  192. package/dist/sky-listitem/sky-listitem.js +104 -0
  193. package/dist/sky-listitem/sky-listitem.js.map +1 -0
  194. package/dist/sky-navbar/index.d.ts +1 -0
  195. package/dist/sky-navbar/index.js +1 -0
  196. package/dist/sky-navbar/sky-navbar.d.ts +207 -0
  197. package/dist/sky-navbar/sky-navbar.js +521 -0
  198. package/dist/sky-navbar/sky-navbar.js.map +1 -0
  199. package/dist/sky-navpanel/index.d.ts +1 -0
  200. package/dist/sky-navpanel/index.js +1 -0
  201. package/dist/sky-navpanel/sky-navpanel.d.ts +186 -0
  202. package/dist/sky-navpanel/sky-navpanel.js +404 -0
  203. package/dist/sky-navpanel/sky-navpanel.js.map +1 -0
  204. package/dist/sky-notification/index.d.ts +1 -0
  205. package/dist/sky-notification/index.js +1 -0
  206. package/dist/sky-notification/sky-notification.d.ts +152 -0
  207. package/dist/sky-notification/sky-notification.js +456 -0
  208. package/dist/sky-notification/sky-notification.js.map +1 -0
  209. package/dist/sky-otp/index.d.ts +1 -0
  210. package/dist/sky-otp/index.js +1 -0
  211. package/dist/sky-otp/sky-otp.d.ts +101 -0
  212. package/dist/sky-otp/sky-otp.js +96 -0
  213. package/dist/sky-otp/sky-otp.js.map +1 -0
  214. package/dist/sky-overlay/index.d.ts +1 -0
  215. package/dist/sky-overlay/index.js +1 -0
  216. package/dist/sky-overlay/sky-overlay.d.ts +71 -0
  217. package/dist/sky-overlay/sky-overlay.js +26 -0
  218. package/dist/sky-overlay/sky-overlay.js.map +1 -0
  219. package/dist/sky-pagination/index.d.ts +1 -0
  220. package/dist/sky-pagination/index.js +1 -0
  221. package/dist/sky-pagination/sky-pagination.d.ts +167 -0
  222. package/dist/sky-pagination/sky-pagination.js +453 -0
  223. package/dist/sky-pagination/sky-pagination.js.map +1 -0
  224. package/dist/sky-progress/index.d.ts +1 -0
  225. package/dist/sky-progress/index.js +1 -0
  226. package/dist/sky-progress/sky-progress.d.ts +70 -0
  227. package/dist/sky-progress/sky-progress.js +87 -0
  228. package/dist/sky-progress/sky-progress.js.map +1 -0
  229. package/dist/sky-radio/index.d.ts +1 -0
  230. package/dist/sky-radio/index.js +1 -0
  231. package/dist/sky-radio/sky-radio.d.ts +118 -0
  232. package/dist/sky-radio/sky-radio.js +109 -0
  233. package/dist/sky-radio/sky-radio.js.map +1 -0
  234. package/dist/sky-radio-group/index.d.ts +1 -0
  235. package/dist/sky-radio-group/index.js +1 -0
  236. package/dist/sky-radio-group/sky-radio-group.d.ts +186 -0
  237. package/dist/sky-radio-group/sky-radio-group.js +239 -0
  238. package/dist/sky-radio-group/sky-radio-group.js.map +1 -0
  239. package/dist/sky-range/index.d.ts +1 -0
  240. package/dist/sky-range/index.js +1 -0
  241. package/dist/sky-range/sky-range.d.ts +110 -0
  242. package/dist/sky-range/sky-range.js +196 -0
  243. package/dist/sky-range/sky-range.js.map +1 -0
  244. package/dist/sky-row/index.d.ts +1 -0
  245. package/dist/sky-row/index.js +1 -0
  246. package/dist/sky-row/sky-row.d.ts +57 -0
  247. package/dist/sky-row/sky-row.js +6 -0
  248. package/dist/sky-row/sky-row.js.map +1 -0
  249. package/dist/sky-serial/index.d.ts +1 -0
  250. package/dist/sky-serial/index.js +1 -0
  251. package/dist/sky-serial/sky-serial.d.ts +127 -0
  252. package/dist/sky-serial/sky-serial.js +133 -0
  253. package/dist/sky-serial/sky-serial.js.map +1 -0
  254. package/dist/sky-sheet/index.d.ts +1 -0
  255. package/dist/sky-sheet/index.js +1 -0
  256. package/dist/sky-sheet/sky-sheet.d.ts +70 -0
  257. package/dist/sky-sheet/sky-sheet.js +47 -0
  258. package/dist/sky-sheet/sky-sheet.js.map +1 -0
  259. package/dist/sky-skeleton/index.d.ts +1 -0
  260. package/dist/sky-skeleton/index.js +1 -0
  261. package/dist/sky-skeleton/sky-skeleton.d.ts +80 -0
  262. package/dist/sky-skeleton/sky-skeleton.js +233 -0
  263. package/dist/sky-skeleton/sky-skeleton.js.map +1 -0
  264. package/dist/sky-slider/index.d.ts +1 -0
  265. package/dist/sky-slider/index.js +1 -0
  266. package/dist/sky-slider/sky-slider.d.ts +96 -0
  267. package/dist/sky-slider/sky-slider.js +139 -0
  268. package/dist/sky-slider/sky-slider.js.map +1 -0
  269. package/dist/sky-speeddial/index.d.ts +1 -0
  270. package/dist/sky-speeddial/index.js +1 -0
  271. package/dist/sky-speeddial/sky-speeddial.d.ts +86 -0
  272. package/dist/sky-speeddial/sky-speeddial.js +154 -0
  273. package/dist/sky-speeddial/sky-speeddial.js.map +1 -0
  274. package/dist/sky-spinner/index.d.ts +1 -0
  275. package/dist/sky-spinner/index.js +1 -0
  276. package/dist/sky-spinner/sky-spinner.d.ts +87 -0
  277. package/dist/sky-spinner/sky-spinner.js +334 -0
  278. package/dist/sky-spinner/sky-spinner.js.map +1 -0
  279. package/dist/sky-steps/index.d.ts +1 -0
  280. package/dist/sky-steps/index.js +1 -0
  281. package/dist/sky-steps/sky-steps.d.ts +170 -0
  282. package/dist/sky-steps/sky-steps.js +455 -0
  283. package/dist/sky-steps/sky-steps.js.map +1 -0
  284. package/dist/sky-switch/index.d.ts +1 -0
  285. package/dist/sky-switch/index.js +1 -0
  286. package/dist/sky-switch/sky-switch.d.ts +116 -0
  287. package/dist/sky-switch/sky-switch.js +191 -0
  288. package/dist/sky-switch/sky-switch.js.map +1 -0
  289. package/dist/sky-tab/index.d.ts +1 -0
  290. package/dist/sky-tab/index.js +1 -0
  291. package/dist/sky-tab/sky-tab.d.ts +188 -0
  292. package/dist/sky-tab/sky-tab.js +390 -0
  293. package/dist/sky-tab/sky-tab.js.map +1 -0
  294. package/dist/sky-tab-button/index.d.ts +1 -0
  295. package/dist/sky-tab-button/index.js +1 -0
  296. package/dist/sky-tab-button/sky-tab-button.d.ts +114 -0
  297. package/dist/sky-tab-button/sky-tab-button.js +167 -0
  298. package/dist/sky-tab-button/sky-tab-button.js.map +1 -0
  299. package/dist/sky-theme-provider/index.d.ts +1 -0
  300. package/dist/sky-theme-provider/index.js +1 -0
  301. package/dist/sky-theme-provider/sky-theme-provider.d.ts +169 -0
  302. package/dist/sky-theme-provider/sky-theme-provider.js +12 -0
  303. package/dist/sky-theme-provider/sky-theme-provider.js.map +1 -0
  304. package/dist/sky-theme-switcher/index.d.ts +1 -0
  305. package/dist/sky-theme-switcher/index.js +1 -0
  306. package/dist/sky-theme-switcher/sky-theme-switcher.d.ts +92 -0
  307. package/dist/sky-theme-switcher/sky-theme-switcher.js +43 -0
  308. package/dist/sky-theme-switcher/sky-theme-switcher.js.map +1 -0
  309. package/dist/sky-tooltip/index.d.ts +1 -0
  310. package/dist/sky-tooltip/index.js +1 -0
  311. package/dist/sky-tooltip/sky-tooltip.d.ts +156 -0
  312. package/dist/sky-tooltip/sky-tooltip.js +242 -0
  313. package/dist/sky-tooltip/sky-tooltip.js.map +1 -0
  314. package/package.json +475 -0
  315. package/plugins/rollup-plugin.d.ts +19 -0
  316. package/plugins/rollup-plugin.js +129 -0
  317. package/plugins/vite-plugin.d.ts +22 -0
  318. package/plugins/vite-plugin.js +116 -0
  319. package/plugins/webpack-plugin.d.ts +12 -0
  320. package/plugins/webpack-plugin.js +46 -0
@@ -0,0 +1,120 @@
1
+ import type { ReactiveController, ReactiveControllerHost } from "lit";
2
+ /** Fill mode for WAAPI (KeyframeEffectOptions). */
3
+ export type FillMode = "none" | "forwards" | "backwards" | "both";
4
+ /** Playback direction for WAAPI (KeyframeEffectOptions). */
5
+ export type AnimationDirection = "normal" | "reverse" | "alternate" | "alternate-reverse";
6
+ /**
7
+ * Options for a single animation run (Web Animations API).
8
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/KeyframeEffect#options
9
+ */
10
+ export interface AnimationOptions {
11
+ /** Duration in milliseconds. */
12
+ duration?: number;
13
+ /** Delay before start in milliseconds. */
14
+ delay?: number;
15
+ /** Easing function (CSS easing or cubic-bezier). */
16
+ easing?: string;
17
+ /** Fill mode: 'none' | 'forwards' | 'backwards' | 'both'. */
18
+ fill?: FillMode;
19
+ /** Number of iterations (default 1). */
20
+ iterations?: number;
21
+ /** Playback direction. */
22
+ direction?: AnimationDirection;
23
+ /** End delay in milliseconds. */
24
+ endDelay?: number;
25
+ /** Unique id for the animation (useful for canceling by id). */
26
+ id?: string;
27
+ }
28
+ /**
29
+ * Keyframes format accepted by Element.animate().
30
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats
31
+ */
32
+ export type AnimationKeyframes = Keyframe[] | PropertyIndexedKeyframes;
33
+ /**
34
+ * Configuration for the controller defaults (used when not overridden per call).
35
+ */
36
+ export interface AnimationControllerConfig {
37
+ defaultDuration?: number;
38
+ defaultEasing?: string;
39
+ defaultFill?: FillMode;
40
+ }
41
+ /** Direction for slide presets. */
42
+ export type SlideDirection = "up" | "down" | "left" | "right";
43
+ /**
44
+ * AnimationController – consistent animations via the Web Animations API (WAAPI).
45
+ *
46
+ * Use as a Lit ReactiveController so components get:
47
+ * - Shared defaults (duration, easing, fill)
48
+ * - Preset helpers: fadeIn, fadeOut, slideIn, slideOut, scaleIn, scaleOut
49
+ * - Low-level animate() for custom keyframes
50
+ * - Automatic cancellation of running animations when the host disconnects
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * class MyPanel extends LitElement {
55
+ * animation = new AnimationController(this, { defaultDuration: 200, defaultEasing: 'ease-out' });
56
+ *
57
+ * async open() {
58
+ * await this.animation.fadeIn(this.panelEl);
59
+ * }
60
+ *
61
+ * async close() {
62
+ * await this.animation.fadeOut(this.panelEl);
63
+ * }
64
+ * }
65
+ * ```
66
+ */
67
+ export declare class AnimationController implements ReactiveController {
68
+ readonly host: ReactiveControllerHost;
69
+ private readonly config;
70
+ private readonly running;
71
+ constructor(host: ReactiveControllerHost, config?: AnimationControllerConfig);
72
+ hostDisconnected(): void;
73
+ /**
74
+ * Run a WAAPI animation on an element. Returns the Animation for chaining or await .finished.
75
+ * Running animations are tracked and cancelled when the host disconnects.
76
+ */
77
+ animate(element: Element | null | undefined, keyframes: AnimationKeyframes, options?: AnimationOptions): Animation | null;
78
+ /**
79
+ * Fade in: opacity 0 → 1.
80
+ */
81
+ fadeIn(element: Element | null | undefined, options?: AnimationOptions): Animation | null;
82
+ /**
83
+ * Fade out: opacity 1 → 0.
84
+ */
85
+ fadeOut(element: Element | null | undefined, options?: AnimationOptions): Animation | null;
86
+ /**
87
+ * Slide in from the given direction (translate from off-screen to 0).
88
+ */
89
+ slideIn(element: Element | null | undefined, options?: AnimationOptions & {
90
+ direction?: SlideDirection;
91
+ }): Animation | null;
92
+ /**
93
+ * Slide out toward the given direction (translate from 0 to off-screen).
94
+ */
95
+ slideOut(element: Element | null | undefined, options?: AnimationOptions & {
96
+ direction?: SlideDirection;
97
+ }): Animation | null;
98
+ /**
99
+ * Scale in: scale(0) or scale(0.9) → scale(1). Optionally combine with opacity.
100
+ */
101
+ scaleIn(element: Element | null | undefined, options?: AnimationOptions & {
102
+ fromScale?: number;
103
+ opacity?: boolean;
104
+ }): Animation | null;
105
+ /**
106
+ * Scale out: scale(1) → scale(0.95) or custom. Optionally combine with opacity.
107
+ */
108
+ scaleOut(element: Element | null | undefined, options?: AnimationOptions & {
109
+ toScale?: number;
110
+ opacity?: boolean;
111
+ }): Animation | null;
112
+ /**
113
+ * Cancel a specific animation (e.g. one you stored from animate() or a preset).
114
+ */
115
+ cancel(animation: Animation): void;
116
+ /**
117
+ * Cancel all animations currently running for this controller.
118
+ */
119
+ cancelAll(): void;
120
+ }
@@ -0,0 +1,2 @@
1
+ class t{constructor(t,n={}){this.running=new Set,this.host=t,this.config={defaultDuration:n.defaultDuration??200,defaultEasing:n.defaultEasing??"ease-out",defaultFill:n.defaultFill??"forwards"},t.addController(this)}hostDisconnected(){this.running.forEach(t=>{try{t.cancel()}catch{}}),this.running.clear()}animate(t,n,a={}){if(!t)return null;const e=a.duration??this.config.defaultDuration,i=a.easing??this.config.defaultEasing,r=a.fill??this.config.defaultFill,s={duration:e,delay:a.delay??0,easing:i,fill:r,iterations:a.iterations??1,direction:a.direction??"normal",endDelay:a.endDelay??0,id:a.id},c=t.animate(n,s);return this.running.add(c),c.finished.then(()=>this.running.delete(c)).catch(()=>this.running.delete(c)),c}fadeIn(t,n={}){return this.animate(t,[{opacity:0},{opacity:1}],n)}fadeOut(t,n={}){return this.animate(t,[{opacity:1},{opacity:0}],n)}slideIn(t,a={}){const e=a.direction??"down",[i,r]=n(e,!0),s=[{transform:`translate(${i}, ${r})`},{transform:"translate(0, 0)"}];return this.animate(t,s,a)}slideOut(t,a={}){const e=a.direction??"up",[i,r]=n(e,!1),s=[{transform:"translate(0, 0)"},{transform:`translate(${i}, ${r})`}];return this.animate(t,s,a)}scaleIn(t,n={}){const a=n.fromScale??.95,e=!1!==n.opacity?[{transform:`scale(${a})`,opacity:0},{transform:"scale(1)",opacity:1}]:[{transform:`scale(${a})`},{transform:"scale(1)"}];return this.animate(t,e,n)}scaleOut(t,n={}){const a=n.toScale??.95,e=!1!==n.opacity?[{transform:"scale(1)",opacity:1},{transform:`scale(${a})`,opacity:0}]:[{transform:"scale(1)"},{transform:`scale(${a})`}];return this.animate(t,e,n)}cancel(t){t.cancel(),this.running.delete(t)}cancelAll(){this.running.forEach(t=>{try{t.cancel()}catch{}}),this.running.clear()}}function n(t,n){const a="100%";switch(t){case"up":return["0",n?a:`-${a}`];case"down":default:return["0",n?`-${a}`:a];case"left":return[n?a:`-${a}`,"0"];case"right":return[n?`-${a}`:a,"0"]}}export{t as AnimationController};
2
+ //# sourceMappingURL=animation-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-controller.js","sources":["../../../src/helper/controllers/animation-controller.ts"],"sourcesContent":[null],"names":["AnimationController","constructor","host","config","this","running","Set","defaultDuration","defaultEasing","defaultFill","addController","hostDisconnected","forEach","a","cancel","clear","animate","element","keyframes","options","duration","easing","fill","opts","delay","iterations","direction","endDelay","id","animation","add","finished","then","delete","catch","fadeIn","opacity","fadeOut","slideIn","dir","fromX","fromY","slideOffset","transform","slideOut","toX","toY","scaleIn","from","fromScale","scaleOut","to","toScale","cancelAll","isIn","pct"],"mappings":"MA+EaA,EAKX,WAAAC,CACEC,EACAC,EAAoC,IAJrBC,KAAAC,QAAU,IAAIC,IAM7BF,KAAKF,KAAOA,EACZE,KAAKD,OAAS,CACZI,gBAAiBJ,EAAOI,iBAAmB,IAC3CC,cAAeL,EAAOK,eAAiB,WACvCC,YAAaN,EAAOM,aAAe,YAErCP,EAAKQ,cAAcN,KACrB,CAEA,gBAAAO,GACEP,KAAKC,QAAQO,QAASC,IACpB,IACEA,EAAEC,QACJ,CAAE,MAEF,IAEFV,KAAKC,QAAQU,OACf,CAMA,OAAAC,CACEC,EACAC,EACAC,EAA4B,CAAA,GAE5B,IAAKF,EAAS,OAAO,KAErB,MAAMG,EAAWD,EAAQC,UAAYhB,KAAKD,OAAOI,gBAC3Cc,EAASF,EAAQE,QAAUjB,KAAKD,OAAOK,cACvCc,EAAOH,EAAQG,MAAQlB,KAAKD,OAAOM,YAEnCc,EAAiC,CACrCH,WACAI,MAAOL,EAAQK,OAAS,EACxBH,SACAC,OACAG,WAAYN,EAAQM,YAAc,EAClCC,UAAWP,EAAQO,WAAa,SAChCC,SAAUR,EAAQQ,UAAY,EAC9BC,GAAIT,EAAQS,IAGRC,EAAYZ,EAAQD,QAAQE,EAAyBK,GAK3D,OAJAnB,KAAKC,QAAQyB,IAAID,GACjBA,EAAUE,SACPC,KAAK,IAAM5B,KAAKC,QAAQ4B,OAAOJ,IAC/BK,MAAM,IAAM9B,KAAKC,QAAQ4B,OAAOJ,IAC5BA,CACT,CAKA,MAAAM,CACElB,EACAE,EAA4B,IAE5B,OAAOf,KAAKY,QACVC,EACA,CAAC,CAAEmB,QAAS,GAAK,CAAEA,QAAS,IAC5BjB,EAEJ,CAKA,OAAAkB,CACEpB,EACAE,EAA4B,IAE5B,OAAOf,KAAKY,QACVC,EACA,CAAC,CAAEmB,QAAS,GAAK,CAAEA,QAAS,IAC5BjB,EAEJ,CAKA,OAAAmB,CACErB,EACAE,EAA6D,IAE7D,MAAMoB,EAAMpB,EAAQO,WAAa,QAC1Bc,EAAOC,GAASC,EAAYH,GAAK,GAClCrB,EAAwB,CAC5B,CAAEyB,UAAW,aAAaH,MAAUC,MACpC,CAAEE,UAAW,oBAEf,OAAOvC,KAAKY,QAAQC,EAASC,EAAWC,EAC1C,CAKA,QAAAyB,CACE3B,EACAE,EAA6D,IAE7D,MAAMoB,EAAMpB,EAAQO,WAAa,MAC1BmB,EAAKC,GAAOJ,EAAYH,GAAK,GAC9BrB,EAAwB,CAC5B,CAAEyB,UAAW,mBACb,CAAEA,UAAW,aAAaE,MAAQC,OAEpC,OAAO1C,KAAKY,QAAQC,EAASC,EAAWC,EAC1C,CAKA,OAAA4B,CACE9B,EACAE,EAAwE,IAExE,MAAM6B,EAAO7B,EAAQ8B,WAAa,IAE5B/B,GADkC,IAApBC,EAAQiB,QAExB,CACE,CAAEO,UAAW,SAASK,KAASZ,QAAS,GACxC,CAAEO,UAAW,WAAYP,QAAS,IAEpC,CACE,CAAEO,UAAW,SAASK,MACtB,CAAEL,UAAW,aAEnB,OAAOvC,KAAKY,QAAQC,EAASC,EAAWC,EAC1C,CAKA,QAAA+B,CACEjC,EACAE,EAAsE,IAEtE,MAAMgC,EAAKhC,EAAQiC,SAAW,IAExBlC,GADkC,IAApBC,EAAQiB,QAExB,CACE,CAAEO,UAAW,WAAYP,QAAS,GAClC,CAAEO,UAAW,SAASQ,KAAOf,QAAS,IAExC,CACE,CAAEO,UAAW,YACb,CAAEA,UAAW,SAASQ,OAE5B,OAAO/C,KAAKY,QAAQC,EAASC,EAAWC,EAC1C,CAKA,MAAAL,CAAOe,GACLA,EAAUf,SACVV,KAAKC,QAAQ4B,OAAOJ,EACtB,CAKA,SAAAwB,GACEjD,KAAKC,QAAQO,QAASC,IACpB,IACEA,EAAEC,QACJ,CAAE,MAEF,IAEFV,KAAKC,QAAQU,OACf,EAGF,SAAS2B,EACPhB,EACA4B,GAEA,MAAMC,EAAM,OACZ,OAAQ7B,GACN,IAAK,KACH,MAAO,CAAC,IAAK4B,EAAOC,EAAM,IAAIA,KAChC,IAAK,OAML,QACE,MAAO,CAAC,IAAKD,EAAO,IAAIC,IAAQA,GALlC,IAAK,OACH,MAAO,CAACD,EAAOC,EAAM,IAAIA,IAAO,KAClC,IAAK,QACH,MAAO,CAACD,EAAO,IAAIC,IAAQA,EAAK,KAItC"}
@@ -0,0 +1,2 @@
1
+ export * from "./animation-controller";
2
+ export * from "./popover-controller";
@@ -0,0 +1,162 @@
1
+ import type { ReactiveController, ReactiveControllerHost } from "lit";
2
+ export type PopoverSide = "top" | "bottom" | "left" | "right";
3
+ export type PopoverPlacement = PopoverSide | "auto";
4
+ export type PopoverAlign = "start" | "center" | "end";
5
+ export type MaxWidthMode = "cap" | "fill";
6
+ export type CloseReason = "api" | "toggle" | "escape" | "light-dismiss" | "group";
7
+ type ArrowAlign = "center" | "start" | "end";
8
+ type ScrollContainerMode = "auto" | "window";
9
+ /** ✅ Presets: consumer only names it */
10
+ export type PopoverPreset = "none" | "fade" | "scale" | "slide" | "iosMenu" | "iosSheet" | "materialMenu" | "materialSheet" | "floaty" | "soft" | "sharp" | "blurIn" | "blurFade" | "zoomFromAnchor" | "zoomFromCorner" | "flip3d" | "card3d" | "tilt3d" | "depth3d" | "rotate3d" | "springy" | "bouncy" | "glide" | "pop" | "drop" | "grow";
11
+ export type PopoverPresetConfig = {
12
+ enterPx?: number;
13
+ exitPx?: number;
14
+ enterScale?: number;
15
+ exitScale?: number;
16
+ blurInPx?: number;
17
+ blurOutPx?: number;
18
+ perspectivePx?: number;
19
+ rotateDeg?: number;
20
+ tiltDeg?: number;
21
+ origin?: "auto" | "anchor" | "center" | "corner";
22
+ easingOpen?: string;
23
+ easingClose?: string;
24
+ enterDuration?: number;
25
+ exitDuration?: number;
26
+ };
27
+ export interface PopoverControllerOptions {
28
+ getAnchor: () => HTMLElement | null;
29
+ getPopover: () => HTMLElement | null;
30
+ cssVarLeft?: string;
31
+ cssVarTop?: string;
32
+ cssVarWidth?: string;
33
+ getPlacement?: () => PopoverPlacement;
34
+ getAlign?: () => PopoverAlign;
35
+ getGap?: () => number;
36
+ getPadding?: () => number;
37
+ getMatchAnchorWidth?: () => boolean;
38
+ getMaxWidthToViewport?: () => boolean;
39
+ getMaxWidthMode?: () => MaxWidthMode;
40
+ getFlip?: () => boolean;
41
+ getFlipOrder?: () => PopoverSide[];
42
+ getPreset?: () => PopoverPreset;
43
+ getDuration?: () => number;
44
+ getCloseDuration?: () => number;
45
+ getAnimateReposition?: () => boolean;
46
+ getRepositionMs?: () => number;
47
+ getCloseOnEscape?: () => boolean;
48
+ getRestoreFocusOnClose?: () => boolean;
49
+ getCloseOnOutside?: () => boolean;
50
+ getIgnoreOutsideSelector?: () => string;
51
+ getIgnoreOutsideAttr?: () => string;
52
+ placement?: PopoverPlacement;
53
+ align?: PopoverAlign;
54
+ gap?: number;
55
+ padding?: number;
56
+ matchAnchorWidth?: boolean;
57
+ maxWidthToViewport?: boolean;
58
+ maxWidthMode?: MaxWidthMode;
59
+ flip?: boolean;
60
+ flipOrder?: PopoverSide[];
61
+ preset?: PopoverPreset;
62
+ duration?: number;
63
+ closeDuration?: number;
64
+ animateReposition?: boolean;
65
+ repositionMs?: number;
66
+ closeOnEscape?: boolean;
67
+ restoreFocusOnClose?: boolean;
68
+ closeOnOutside?: boolean;
69
+ ignoreOutsideSelector?: string;
70
+ ignoreOutsideAttr?: string;
71
+ focusOnOpen?: () => void;
72
+ scrollContainer?: ScrollContainerMode | HTMLElement;
73
+ groupEventName?: string;
74
+ groupId?: unknown;
75
+ onOpenChange?: (open: boolean, meta: {
76
+ reason: CloseReason;
77
+ }) => void;
78
+ /** Focus target on close; defaults to {@link getAnchor} when omitted. */
79
+ getFocusTarget?: () => HTMLElement | null;
80
+ sideAttr?: string;
81
+ respectReducedMotion?: boolean;
82
+ }
83
+ /**
84
+ * PopoverController with Reactive Getter Bindings
85
+ * - Automatically reads latest values from host component via getter functions
86
+ * - No manual updates needed when host properties change
87
+ * - WAAPI preset animations with side-aware enter/exit
88
+ * - Smooth reposition animation on flip/move
89
+ */
90
+ export declare class PopoverController implements ReactiveController {
91
+ private host;
92
+ private _open;
93
+ private raf;
94
+ private anchorRO?;
95
+ private popoverRO?;
96
+ private boundScrollParents;
97
+ private visualViewport?;
98
+ /** When true, global listeners and observers are attached (deferred until first open for perf with many instances). */
99
+ private _listenersAttached;
100
+ private lastCloseReason;
101
+ private lastFocusedEl;
102
+ private hasEverOpened;
103
+ private _skipNextReposition;
104
+ private lastMeta;
105
+ private _phase;
106
+ private presetAnim?;
107
+ private moveAnim?;
108
+ private static createGetter;
109
+ private opts;
110
+ constructor(host: ReactiveControllerHost, options: PopoverControllerOptions);
111
+ get open(): boolean;
112
+ get meta(): {
113
+ place: PopoverSide;
114
+ arrowAlign: ArrowAlign;
115
+ };
116
+ hostConnected(): void;
117
+ hostDisconnected(): void;
118
+ /** Attach window/document listeners and observers. Called on first open. */
119
+ private attachGlobalListeners;
120
+ /** Remove window/document listeners and observers. Called on close and on hostDisconnected. */
121
+ private detachGlobalListenersIfAttached;
122
+ refreshTargets(): void;
123
+ /** Wire to popover element: @toggle=${controller.onToggle} */
124
+ onToggle: (e: Event) => void;
125
+ toggle(): void;
126
+ openPopover(): void;
127
+ private onDocumentPointerDown;
128
+ closePopover(reason?: CloseReason): Promise<void>;
129
+ private normalizeFlipOrder;
130
+ private defaultOrderFromPlacement;
131
+ position(): void;
132
+ private vec;
133
+ private prefersReducedMotion;
134
+ /** sets transformOrigin according to preset + side */
135
+ private computeOrigin;
136
+ private kf;
137
+ private presetRegistry;
138
+ private getPresetKeyframes;
139
+ private getBaseDefaults;
140
+ private playPreset;
141
+ private checkForConflictingCSS;
142
+ private animateMove;
143
+ private is3dPreset;
144
+ private setSideAttr;
145
+ private setupObserversAndScrollParents;
146
+ private bindScroll;
147
+ private teardownScrollParents;
148
+ private getScrollParents;
149
+ private onViewportMove;
150
+ private onKeydown;
151
+ private onGroupOpen;
152
+ private captureFocusBeforeOpen;
153
+ private elementIsTriggerRelated;
154
+ private restoreFocus;
155
+ private ensurePopoverMarginZero;
156
+ /**
157
+ * Utility method to manually update a specific option
158
+ * (Useful for edge cases where you need direct control)
159
+ */
160
+ updateOption<T extends keyof typeof this.opts>(key: T, value: typeof this.opts[T]): void;
161
+ }
162
+ export {};
@@ -0,0 +1,2 @@
1
+ class e{static createGetter(e,t,i){return e||(()=>t??i)}constructor(t,i){this._open=!1,this.raf=0,this.boundScrollParents=[],this._listenersAttached=!1,this.lastCloseReason="toggle",this.lastFocusedEl=null,this.hasEverOpened=!1,this._skipNextReposition=!1,this.lastMeta={place:"bottom",arrowAlign:"center"},this._phase="idle",this.onToggle=e=>{if("light-dismiss"===this.lastCloseReason)return void(this.lastCloseReason="toggle");const t=this.opts.getPopover(),i=e;let s=null;if("string"==typeof i?.newState&&(s="open"===i.newState),null===s&&t&&(s=t.matches?.(":popover-open")??!1),null!==s){if(!s)return this._open=!1,this.detachGlobalListenersIfAttached(),this.opts.onOpenChange?.(!1,{reason:this.lastCloseReason}),void(this.opts.getRestoreFocusOnClose()&&this.restoreFocus());this._open=!0,this.attachGlobalListeners(),this.opts.onOpenChange?.(!0,{reason:"toggle"}),this.position(),this.raf=requestAnimationFrame(()=>this.opts.focusOnOpen?.())}},this.onDocumentPointerDown=e=>{if(!this._open)return;if(!this.opts.getCloseOnOutside())return;const t=this.opts.getPopover(),i=this.opts.getAnchor();if(!t||!i)return;if("number"==typeof e.button&&0!==e.button)return;const s=e.composedPath?.()??[],r=s.includes(t),n=s.includes(i);if(r||n)return;const o=e.clientX,a=e.clientY;if(o>=window.innerWidth||a>=window.innerHeight)return;const c=this.opts.getIgnoreOutsideAttr(),l=(this.opts.getIgnoreOutsideSelector()||"").trim();for(const e of s)if(e instanceof HTMLElement){if(c&&e.hasAttribute(c))return;if(l){if(e.matches(l))return;if(e.closest(l))return}}this.closePopover("light-dismiss")},this.onViewportMove=()=>{this._open&&this.position()},this.onKeydown=e=>{if(!this._open)return;if("Escape"!==e.key)return;if(!this.opts.getCloseOnEscape())return;const t=this.opts.getPopover(),i=this.opts.getAnchor(),s=document.activeElement,r=!!(t&&s&&t.contains(s)),n=!!(i&&s&&i.contains(s));(r||n)&&(e.preventDefault(),e.stopPropagation(),this.closePopover("escape"))},this.onGroupOpen=e=>{const t=e.detail?.id;t!==(this.opts.groupId??this.host)&&this._open&&this.closePopover("group")},this.host=t,t.addController(this);const s=i.duration??220,r=i.closeDuration??Math.min(180,s);this.opts={getAnchor:i.getAnchor,getPopover:i.getPopover,getPlacement:e.createGetter(i.getPlacement,i.placement,"auto"),getAlign:e.createGetter(i.getAlign,i.align,"start"),getGap:e.createGetter(i.getGap,i.gap,6),getPadding:e.createGetter(i.getPadding,i.padding,8),getMatchAnchorWidth:e.createGetter(i.getMatchAnchorWidth,i.matchAnchorWidth,!0),getMaxWidthToViewport:e.createGetter(i.getMaxWidthToViewport,i.maxWidthToViewport,!0),getMaxWidthMode:e.createGetter(i.getMaxWidthMode,i.maxWidthMode,"cap"),getFlip:e.createGetter(i.getFlip,i.flip,!0),getFlipOrder:e.createGetter(i.getFlipOrder,i.flipOrder,[]),getPreset:e.createGetter(i.getPreset,i.preset,"slide"),getDuration:e.createGetter(i.getDuration,i.duration,s),getCloseDuration:e.createGetter(i.getCloseDuration,i.closeDuration,r),getAnimateReposition:e.createGetter(i.getAnimateReposition,i.animateReposition,!0),getRepositionMs:e.createGetter(i.getRepositionMs,i.repositionMs,160),getCloseOnEscape:e.createGetter(i.getCloseOnEscape,i.closeOnEscape,!0),getCloseOnOutside:e.createGetter(i.getCloseOnOutside,i.closeOnOutside,!1),getIgnoreOutsideSelector:e.createGetter(i.getIgnoreOutsideSelector,i.ignoreOutsideSelector,""),getIgnoreOutsideAttr:e.createGetter(i.getIgnoreOutsideAttr,i.ignoreOutsideAttr,"data-popover-ignore-outside"),getRestoreFocusOnClose:e.createGetter(i.getRestoreFocusOnClose,i.restoreFocusOnClose,!0),cssVarLeft:i.cssVarLeft??"--sky-pop-left",cssVarTop:i.cssVarTop??"--sky-pop-top",cssVarWidth:i.cssVarWidth??"--sky-pop-width",focusOnOpen:i.focusOnOpen,scrollContainer:i.scrollContainer??"auto",groupEventName:i.groupEventName,groupId:i.groupId,onOpenChange:i.onOpenChange,getFocusTarget:i.getFocusTarget,sideAttr:i.sideAttr??"data-side",respectReducedMotion:i.respectReducedMotion??!0}}get open(){return this._open}get meta(){return this.lastMeta}hostConnected(){"undefined"!=typeof window&&(this.visualViewport=window.visualViewport??void 0)}hostDisconnected(){this.detachGlobalListenersIfAttached(),this.raf&&cancelAnimationFrame(this.raf)}attachGlobalListeners(){"undefined"==typeof window||this._listenersAttached||(this._listenersAttached=!0,this.visualViewport&&(this.visualViewport.addEventListener("resize",this.onViewportMove,{passive:!0}),this.visualViewport.addEventListener("scroll",this.onViewportMove,{passive:!0})),window.addEventListener("resize",this.onViewportMove,{passive:!0}),window.addEventListener("scroll",this.onViewportMove,{passive:!0,capture:!0}),this.opts.groupEventName&&window.addEventListener(this.opts.groupEventName,this.onGroupOpen),this.opts.getCloseOnEscape()&&window.addEventListener("keydown",this.onKeydown,!0),document.addEventListener("pointerdown",this.onDocumentPointerDown,!0),this.setupObserversAndScrollParents())}detachGlobalListenersIfAttached(){this._listenersAttached&&(this._listenersAttached=!1,"undefined"!=typeof window&&(window.removeEventListener("resize",this.onViewportMove),window.removeEventListener("scroll",this.onViewportMove,!0),this.visualViewport&&(this.visualViewport.removeEventListener("resize",this.onViewportMove),this.visualViewport.removeEventListener("scroll",this.onViewportMove)),this.opts.groupEventName&&window.removeEventListener(this.opts.groupEventName,this.onGroupOpen),window.removeEventListener("keydown",this.onKeydown,!0)),document.removeEventListener("pointerdown",this.onDocumentPointerDown,!0),this.teardownScrollParents(),this.anchorRO?.disconnect(),this.anchorRO=void 0,this.popoverRO?.disconnect(),this.popoverRO=void 0)}refreshTargets(){this._listenersAttached&&this.setupObserversAndScrollParents(),this._open&&this.position()}toggle(){this._open?this.closePopover("api"):this.openPopover()}openPopover(){this.raf&&cancelAnimationFrame(this.raf),this.raf=0;const e=this.opts.getPopover();if(!e)return;"undefined"!=typeof window&&this.opts.groupEventName&&window.dispatchEvent(new CustomEvent(this.opts.groupEventName,{detail:{id:this.opts.groupId??this.host}})),this.captureFocusBeforeOpen(),this.ensurePopoverMarginZero(),this._open=!0,this.attachGlobalListeners(),this.opts.onOpenChange?.(!0,{reason:"api"});const t=e.style.visibility;e.style.visibility="hidden",e.showPopover?.();const i=this.hasEverOpened;this.hasEverOpened=!0,this._skipNextReposition=!i,this.position(),e.getBoundingClientRect();const s=this.lastMeta.place;this.setSideAttr(s),this.raf=requestAnimationFrame(()=>{e.style.visibility=t||"visible",this.playPreset(e,s,"open").then(()=>this.opts.focusOnOpen?.())})}async closePopover(e="api"){const t=this.opts.getPopover();if(!t)return;if(this.lastCloseReason=e,!this._open)return void t.hidePopover?.();this._open=!1,this.opts.getRestoreFocusOnClose()&&this.restoreFocus(),this.detachGlobalListenersIfAttached(),this.opts.onOpenChange?.(!1,{reason:e});const i=this.lastMeta.place;this.setSideAttr(i),this.raf&&cancelAnimationFrame(this.raf),this.raf=0,this.moveAnim?.cancel(),await this.playPreset(t,i,"close"),t.hidePopover?.()}normalizeFlipOrder(e){const t=["bottom","top","right","left"];if(!e||!e.length)return t;const i=new Set(["top","bottom","left","right"]),s=[];for(const t of e)i.has(t)&&!s.includes(t)&&s.push(t);for(const e of t)s.includes(e)||s.push(e);return s}defaultOrderFromPlacement(e){switch(e){case"top":return["top","bottom","right","left"];case"bottom":default:return["bottom","top","right","left"];case"left":return["left","right","bottom","top"];case"right":return["right","left","bottom","top"]}}position(){if("undefined"==typeof window)return;const e=this.opts.getAnchor(),t=this.opts.getPopover();if(!e||!t)return;this.ensurePopoverMarginZero();const i=t.matches?.(":popover-open")&&null!==t.offsetParent,s=this._open&&i?t.getBoundingClientRect():null,r=this.opts.getPadding(),n=this.opts.getGap(),o=e.getBoundingClientRect(),a=window.visualViewport??null,c=a?.width??window.innerWidth,l=a?.height??window.innerHeight,p=a?.offsetLeft??0,h=a?.offsetTop??0;if(this.opts.getMaxWidthToViewport()){const e=Math.max(0,c-2*r);t.style.maxWidth=`${e}px`,t.style.boxSizing="border-box"}const x=t.getBoundingClientRect(),u=x.width||220,d=x.height||50,g={top:o.top-n-h,bottom:l-(o.bottom-h)-n,left:o.left-n-p,right:c-(o.right-p)-n},f=e=>"top"===e?g.top>=d:"bottom"===e?g.bottom>=d:"left"===e?g.left>=u:g.right>=u,P=this.opts.getPlacement(),b=this.opts.getFlip(),v=this.opts.getFlipOrder()?.length?this.normalizeFlipOrder(this.opts.getFlipOrder()):this.normalizeFlipOrder(this.defaultOrderFromPlacement(P));let m;if("auto"===P){m=v.find(f)??v.map(e=>[e,g[e]]).sort((e,t)=>t[1]-e[1])[0][0]}else if(b){const e=P,t=v.includes(e)?[e,...v.filter(t=>t!==e)]:[e,...v];m=t.find(f)??t.map(e=>[e,g[e]]).sort((e,t)=>t[1]-e[1])[0][0]}else m=P;let $=0,y=0,O="center";const D="rtl"===getComputedStyle(e).direction;let S=this.opts.getAlign();D&&("start"===S?S="end":"end"===S&&(S="start"));const k=o.left-p,w=o.right-p,C=o.top-h,A=o.bottom-h,z=o.width,M=o.height;if("top"===m||"bottom"===m){y="start"===S?k:"end"===S?w-u:k+z/2-u/2,$="top"===m?C-d-n:A+n;const e=Math.max(r,Math.min(c-u-r,y));e!==y&&(O=e<=r+.5?"start":"end"),y=e,$=Math.max(r,Math.min(l-d-r,$))}else{y="left"===m?k-u-n:w+n,$=C+M/2-d/2;const e=Math.max(r,Math.min(l-d-r,$));e!==$&&(O=e<=r+.5?"start":"end"),$=e,y=Math.max(r,Math.min(c-u-r,y))}y+=p,$+=h;const I=this.host;if(this.opts.getMatchAnchorWidth()){const e=Math.max(0,c-2*r),t=Math.min(o.width,e);I.style.setProperty(this.opts.cssVarWidth,`${t}px`)}else I.style.removeProperty(this.opts.cssVarWidth);I.style.setProperty(this.opts.cssVarLeft,`${y}px`),I.style.setProperty(this.opts.cssVarTop,`${$}px`),this.lastMeta.place,this.lastMeta={place:m,arrowAlign:O},this.setSideAttr(m);this._open&&this.opts.getAnimateReposition()&&s&&!this._skipNextReposition&&t.matches?.(":popover-open")&&i&&"open"===this._phase&&!this.presetAnim&&(this.raf&&cancelAnimationFrame(this.raf),this.raf=requestAnimationFrame(()=>{const e=t.getBoundingClientRect();this.animateMove(t,s,e)})),this._skipNextReposition=!1}vec(e,t){return"top"===e?{x:0,y:+t}:"bottom"===e?{x:0,y:-t}:"left"===e?{x:+t,y:0}:{x:-t,y:0}}prefersReducedMotion(){return!!this.opts.respectReducedMotion&&("undefined"!=typeof window&&window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches)}computeOrigin(e,t){return"center"===t?"50% 50%":"top"===e?"50% 100%":"bottom"===e?"50% 0%":"left"===e?"100% 50%":"0% 50%"}kf(e,t,i){const s={opacity:e,transform:t};return i&&(s.filter=i),s}presetRegistry(){return{none:{name:"none",defaults:{enterPx:0,exitPx:0,enterScale:1,exitScale:1,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"auto",easingOpen:"cubic-bezier(0.16, 1, 0.3, 1)",easingClose:"cubic-bezier(0.2, 0, 0, 1)",enterDuration:220,exitDuration:180},getKeyframes:()=>[{opacity:1}]},fade:{name:"fade",defaults:{enterPx:0,exitPx:0,enterScale:1,exitScale:1,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.4, 0, 0.2, 1)",easingClose:"cubic-bezier(0.4, 0, 0.2, 1)",enterDuration:180,exitDuration:150},getKeyframes:({phase:e})=>"open"===e?[{opacity:0},{opacity:1}]:[{opacity:1},{opacity:0}]},scale:{name:"scale",defaults:{enterPx:0,exitPx:0,enterScale:.9,exitScale:.95,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"corner",easingOpen:"cubic-bezier(0.34, 1.56, 0.64, 1)",easingClose:"cubic-bezier(0.36, 0, 0.66, -0.56)",enterDuration:200,exitDuration:180},getKeyframes:({phase:e,cfg:t})=>"open"===e?[this.kf(0,`scale(${t.enterScale})`),this.kf(1,"scale(1)")]:[this.kf(1,"scale(1)"),this.kf(0,`scale(${t.exitScale})`)]},slide:{name:"slide",defaults:{enterPx:12,exitPx:8,enterScale:1,exitScale:1,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"auto",easingOpen:"cubic-bezier(0.23, 1, 0.32, 1)",easingClose:"cubic-bezier(0.5, 0, 0.75, 0)",enterDuration:250,exitDuration:220},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px, 0)`),this.kf(1,"translate3d(0,0,0)")]:[this.kf(1,"translate3d(0,0,0)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px, 0)`)]}},iosMenu:{name:"iosMenu",defaults:{enterPx:12,exitPx:8,enterScale:.98,exitScale:.99,blurInPx:6,blurOutPx:3,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"auto",easingOpen:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",easingClose:"cubic-bezier(0.55, 0.085, 0.68, 0.53)",enterDuration:250,exitDuration:220},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px, 0) scale(${i.enterScale})`,`blur(${i.blurInPx}px)`),this.kf(1,"translate3d(0,0,0) scale(1)","blur(0px)")]:[this.kf(1,"translate3d(0,0,0) scale(1)","blur(0px)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px, 0) scale(${i.exitScale})`,`blur(${i.blurOutPx}px)`)]}},iosSheet:{name:"iosSheet",defaults:{enterPx:16,exitPx:12,enterScale:1,exitScale:1,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"auto",easingOpen:"cubic-bezier(0.36, 0, 0.66, -0.56)",easingClose:"cubic-bezier(0.34, 1.56, 0.64, 1)",enterDuration:200,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0)`),this.kf(1,"translate3d(0,0,0)")]:[this.kf(1,"translate3d(0,0,0)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0)`)]}},materialMenu:{name:"materialMenu",defaults:{enterPx:10,exitPx:6,enterScale:.96,exitScale:.98,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"corner",easingOpen:"cubic-bezier(0.2, 0, 0, 1)",easingClose:"cubic-bezier(0.4, 0, 1, 1)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`),this.kf(1,"translate3d(0,0,0) scale(1)")]:[this.kf(1,"translate3d(0,0,0) scale(1)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`)]}},materialSheet:{name:"materialSheet",defaults:{enterPx:18,exitPx:14,enterScale:1,exitScale:1,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"auto",easingOpen:"cubic-bezier(0.05, 0.7, 0.1, 1)",easingClose:"cubic-bezier(0.3, 0, 1, 1)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0)`),this.kf(1,"translate3d(0,0,0)")]:[this.kf(1,"translate3d(0,0,0)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0)`)]}},floaty:{name:"floaty",defaults:{enterPx:14,exitPx:10,enterScale:.985,exitScale:.99,blurInPx:10,blurOutPx:6,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.22, 0.61, 0.36, 1)",easingClose:"cubic-bezier(0.55, 0.06, 0.68, 0.19)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`,`blur(${i.blurInPx}px)`),this.kf(1,"translate3d(0,0,0) scale(1)","blur(0px)")]:[this.kf(1,"translate3d(0,0,0) scale(1)","blur(0px)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`,`blur(${i.blurOutPx}px)`)]}},soft:{name:"soft",defaults:{enterPx:10,exitPx:8,enterScale:.97,exitScale:.98,blurInPx:4,blurOutPx:2,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.33, 1, 0.68, 1)",easingClose:"cubic-bezier(0.32, 0, 0.67, 0)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`,`blur(${i.blurInPx}px)`),this.kf(1,"translate3d(0,0,0) scale(1)","blur(0px)")]:[this.kf(1,"translate3d(0,0,0) scale(1)","blur(0px)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`,`blur(${i.blurOutPx}px)`)]}},sharp:{name:"sharp",defaults:{enterPx:8,exitPx:6,enterScale:.98,exitScale:.99,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"corner",easingOpen:"cubic-bezier(0.12, 0.9, 0.2, 1)",easingClose:"cubic-bezier(0.4, 0, 1, 1)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`),this.kf(1,"translate3d(0,0,0) scale(1)")]:[this.kf(1,"translate3d(0,0,0) scale(1)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`)]}},blurIn:{name:"blurIn",defaults:{enterPx:0,exitPx:0,enterScale:1,exitScale:1,blurInPx:12,blurOutPx:8,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.5, 0, 0.75, 0)",easingClose:"cubic-bezier(0.33, 0, 0.67, 0)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,cfg:t})=>"open"===e?[this.kf(0,"translate3d(0,0,0)",`blur(${t.blurInPx}px)`),this.kf(1,"translate3d(0,0,0)","blur(0px)")]:[this.kf(1,"translate3d(0,0,0)","blur(0px)"),this.kf(0,"translate3d(0,0,0)",`blur(${t.blurOutPx}px)`)]},blurFade:{name:"blurFade",defaults:{enterPx:10,exitPx:8,enterScale:.99,exitScale:.99,blurInPx:10,blurOutPx:6,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.45, 0, 0.55, 1)",easingClose:"cubic-bezier(0.3, 0, 0.7, 1)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0)`,`blur(${i.blurInPx}px)`),this.kf(1,"translate3d(0,0,0)","blur(0px)")]:[this.kf(1,"translate3d(0,0,0)","blur(0px)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0)`,`blur(${i.blurOutPx}px)`)]}},zoomFromAnchor:{name:"zoomFromAnchor",defaults:{enterPx:6,exitPx:4,enterScale:.92,exitScale:.96,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"anchor",easingOpen:"cubic-bezier(0.34, 1.56, 0.64, 1)",easingClose:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`),this.kf(1,"translate3d(0,0,0) scale(1)")]:[this.kf(1,"translate3d(0,0,0) scale(1)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`)]}},zoomFromCorner:{name:"zoomFromCorner",defaults:{enterPx:0,exitPx:0,enterScale:.88,exitScale:.94,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"corner",easingOpen:"cubic-bezier(0.18, 0.89, 0.32, 1.28)",easingClose:"cubic-bezier(0.6, -0.28, 0.74, 0.05)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,cfg:t})=>"open"===e?[this.kf(0,`scale(${t.enterScale})`),this.kf(1,"scale(1)")]:[this.kf(1,"scale(1)"),this.kf(0,`scale(${t.exitScale})`)]},flip3d:{name:"flip3d",defaults:{enterPx:8,exitPx:6,enterScale:.98,exitScale:.99,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:14,tiltDeg:8,origin:"anchor",easingOpen:"cubic-bezier(0.5, 0, 0.75, 0)",easingClose:"cubic-bezier(0.33, 0, 0.67, 0)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i,origin:s})=>{const r=this.vec(t,i.enterPx),n="left"===t||"right"===t?"Y":"X",o="top"===t||"left"===t?1:-1,a=i.rotateDeg*o;if("open"===e)return[this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${r.x}px, ${r.y}px, 0) rotate${n}(${a}deg) scale(${i.enterScale})`),this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotate${n}(0deg) scale(1)`)];const c=this.vec(t,i.exitPx);return[this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotate${n}(0deg) scale(1)`),this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${c.x}px, ${c.y}px, 0) rotate${n}(${.7*a}deg) scale(${i.exitScale})`)]}},card3d:{name:"card3d",defaults:{enterPx:10,exitPx:8,enterScale:.96,exitScale:.98,blurInPx:6,blurOutPx:3,perspectivePx:1e3,rotateDeg:10,tiltDeg:10,origin:"anchor",easingOpen:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",easingClose:"cubic-bezier(0.55, 0.085, 0.68, 0.53)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r="left"===t||"right"===t?"Y":"X",n="top"===t||"left"===t?1:-1,o=i.tiltDeg*n;return"open"===e?[this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${s.x}px, ${s.y}px, 0) rotate${r}(${o}deg) scale(${i.enterScale})`,`blur(${i.blurInPx}px)`),this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotate${r}(0deg) scale(1)`,"blur(0px)")]:[this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotate${r}(0deg) scale(1)`,"blur(0px)"),this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${this.vec(t,i.exitPx).x}px, ${this.vec(t,i.exitPx).y}px, 0) rotate${r}(${.7*o}deg) scale(${i.exitScale})`,`blur(${i.blurOutPx}px)`)]}},tilt3d:{name:"tilt3d",defaults:{enterPx:8,exitPx:6,enterScale:.98,exitScale:.99,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:12,origin:"corner",easingOpen:"cubic-bezier(0.23, 1, 0.32, 1)",easingClose:"cubic-bezier(0.5, 0, 0.75, 0)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r="top"===t?i.tiltDeg:"bottom"===t?-i.tiltDeg:0,n="left"===t?i.tiltDeg:"right"===t?-i.tiltDeg:0;return"open"===e?[this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${s.x}px, ${s.y}px, 0) rotateX(${r}deg) rotateY(${n}deg) scale(${i.enterScale})`),this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotateX(0deg) rotateY(0deg) scale(1)`)]:[this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotateX(0deg) rotateY(0deg) scale(1)`),this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${this.vec(t,i.exitPx).x}px, ${this.vec(t,i.exitPx).y}px, 0) rotateX(${.6*r}deg) rotateY(${.6*n}deg) scale(${i.exitScale})`)]}},depth3d:{name:"depth3d",defaults:{enterPx:0,exitPx:0,enterScale:.9,exitScale:.94,blurInPx:8,blurOutPx:5,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.22, 0.61, 0.36, 1)",easingClose:"cubic-bezier(0.55, 0.06, 0.68, 0.19)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,cfg:t})=>"open"===e?[this.kf(0,`perspective(${t.perspectivePx}px) translate3d(0,0,-40px) scale(${t.enterScale})`,`blur(${t.blurInPx}px)`),this.kf(1,`perspective(${t.perspectivePx}px) translate3d(0,0,0) scale(1)`,"blur(0px)")]:[this.kf(1,`perspective(${t.perspectivePx}px) translate3d(0,0,0) scale(1)`,"blur(0px)"),this.kf(0,`perspective(${t.perspectivePx}px) translate3d(0,0,-30px) scale(${t.exitScale})`,`blur(${t.blurOutPx}px)`)]},rotate3d:{name:"rotate3d",defaults:{enterPx:8,exitPx:6,enterScale:.98,exitScale:.99,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:12,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.36, 0, 0.66, -0.56)",easingClose:"cubic-bezier(0.34, 1.56, 0.64, 1)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r="top"===t||"left"===t?1:-1,n=i.rotateDeg*r;return"open"===e?[this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${s.x}px, ${s.y}px, 0) rotateZ(${n}deg) scale(${i.enterScale})`),this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotateZ(0deg) scale(1)`)]:[this.kf(1,`perspective(${i.perspectivePx}px) translate3d(0,0,0) rotateZ(0deg) scale(1)`),this.kf(0,`perspective(${i.perspectivePx}px) translate3d(${this.vec(t,i.exitPx).x}px, ${this.vec(t,i.exitPx).y}px, 0) rotateZ(${.7*n}deg) scale(${i.exitScale})`)]}},springy:{name:"springy",defaults:{enterPx:12,exitPx:8,enterScale:.94,exitScale:.98,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"anchor",easingOpen:"cubic-bezier(0.12, 0.9, 0.18, 1.15)",easingClose:"cubic-bezier(0.5, 0, 0.75, 0)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx);if("open"===e)return[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`),this.kf(1,"translate3d(0,0,0) scale(1.02)"),this.kf(1,"translate3d(0,0,0) scale(1)")];const r=this.vec(t,i.exitPx);return[this.kf(1,"translate3d(0,0,0) scale(1)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`)]}},bouncy:{name:"bouncy",defaults:{enterPx:14,exitPx:10,enterScale:.9,exitScale:.96,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"anchor",easingOpen:"cubic-bezier(0.12, 0.9, 0.18, 1.15)",easingClose:"cubic-bezier(0.6, -0.28, 0.74, 0.05)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx);if("open"===e)return[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`),this.kf(1,"translate3d(0,0,0) scale(1.03)"),this.kf(1,"translate3d(0,0,0) scale(1)")];const r=this.vec(t,i.exitPx);return[this.kf(1,"translate3d(0,0,0) scale(1)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`)]}},glide:{name:"glide",defaults:{enterPx:18,exitPx:12,enterScale:1,exitScale:1,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.08, 0.82, 0.17, 1)",easingClose:"cubic-bezier(0.3, 0, 1, 1)",enterDuration:220,exitDuration:200},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0)`),this.kf(1,"translate3d(0,0,0)")]:[this.kf(1,"translate3d(0,0,0)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0)`)]}},pop:{name:"pop",defaults:{enterPx:0,exitPx:0,enterScale:.85,exitScale:.95,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.18, 0.89, 0.32, 1.28)",easingClose:"cubic-bezier(0.6, -0.28, 0.74, 0.05)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,cfg:t})=>"open"===e?[this.kf(0,`scale(${t.enterScale})`),this.kf(1,"scale(1.03)"),this.kf(1,"scale(1)")]:[this.kf(1,"scale(1)"),this.kf(0,`scale(${t.exitScale})`)]},drop:{name:"drop",defaults:{enterPx:22,exitPx:14,enterScale:1,exitScale:1,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"center",easingOpen:"cubic-bezier(0.12, 0.9, 0.18, 1)",easingClose:"cubic-bezier(0.45, 0, 0.55, 1)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0)`),this.kf(1,"translate3d(0,0,0)")]:[this.kf(1,"translate3d(0,0,0)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0)`)]}},grow:{name:"grow",defaults:{enterPx:6,exitPx:4,enterScale:.95,exitScale:.98,blurInPx:0,blurOutPx:0,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"anchor",easingOpen:"cubic-bezier(0.34, 1.56, 0.64, 1)",easingClose:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",enterDuration:220,exitDuration:180},getKeyframes:({phase:e,side:t,cfg:i})=>{const s=this.vec(t,i.enterPx),r=this.vec(t,i.exitPx);return"open"===e?[this.kf(0,`translate3d(${s.x}px, ${s.y}px,0) scale(${i.enterScale})`),this.kf(1,"translate3d(0,0,0) scale(1)")]:[this.kf(1,"translate3d(0,0,0) scale(1)"),this.kf(0,`translate3d(${r.x}px, ${r.y}px,0) scale(${i.exitScale})`)]}}}}getPresetKeyframes(e,t,i,s){const r=this.presetRegistry(),n=r[e]??r.iosMenu;this.getBaseDefaults();const o={...n.defaults,...s??{}},a=this.computeOrigin(t,o.origin);return{keyframes:n.getKeyframes({side:t,phase:i,cfg:o,origin:a}),cfg:o,origin:a}}getBaseDefaults(){return{enterPx:12,exitPx:8,enterScale:.98,exitScale:.99,blurInPx:6,blurOutPx:3,perspectivePx:900,rotateDeg:10,tiltDeg:8,origin:"auto",easingOpen:"cubic-bezier(0.16, 1, 0.3, 1)",easingClose:"cubic-bezier(0.2, 0, 0, 1)",enterDuration:220,exitDuration:180}}async playPreset(e,t,i){if(this.checkForConflictingCSS(e),this.prefersReducedMotion())return;const s=this.opts.getPreset();if("none"===s)return;this.moveAnim?.cancel(),this.presetAnim?.cancel(),this._phase="open"===i?"opening":"closing",e.style.transition="none";const{keyframes:r,cfg:n,origin:o}=this.getPresetKeyframes(s,t,i),a="open"===i?n.enterDuration:n.exitDuration,c=this.is3dPreset(s);c?(e.style.transformStyle="preserve-3d",e.style.backfaceVisibility="hidden"):(e.style.transformStyle="",e.style.backfaceVisibility=""),e.style.transformOrigin=o;const l="open"===i?n.easingOpen:n.easingClose,p=e.animate(r,{duration:a,easing:l,fill:"both"});this.presetAnim=p;try{await p.finished}catch{}finally{this.presetAnim===p&&(this.presetAnim=void 0),e.style.transition="",c&&(e.style.transformStyle="",e.style.backfaceVisibility=""),this._phase="open"===i?"open":"idle"}}checkForConflictingCSS(e){const t=e.style.transition||"";t.includes("transform")&&t.includes("opacity")&&console.warn("Warning: Using 3D animation (WAAPI) alongside CSS transitions on 'transform' or 'opacity' can cause conflicts. Consider removing CSS transitions on these properties."),(t.includes("margin")||t.includes("padding"))&&console.warn("Warning: Animating 'margin' or 'padding' alongside 3D animation (WAAPI) may cause visual glitches. Please avoid transitioning these properties during WAAPI animations.")}animateMove(e,t,i){if("open"!==this._phase)return;const s=t.left-i.left,r=t.top-i.top;if(Math.abs(s)<.5&&Math.abs(r)<.5)return;this.moveAnim?.cancel();const n=this.opts.getRepositionMs(),o=e.animate([{transform:`translate3d(${s}px, ${r}px, 0)`},{transform:"translate3d(0, 0, 0)"}],{duration:n,easing:"cubic-bezier(0.16, 1, 0.3, 1)",fill:"both"});this.moveAnim=o,o.finished.finally(()=>{this.moveAnim===o&&(this.moveAnim=void 0)})}is3dPreset(e){return"flip3d"===e||"card3d"===e||"tilt3d"===e||"depth3d"===e||"rotate3d"===e}setSideAttr(e){const t=this.opts.getPopover();t&&t.setAttribute(this.opts.sideAttr,e)}setupObserversAndScrollParents(){if("undefined"==typeof window)return;const e=this.opts.getAnchor(),t=this.opts.getPopover();e&&"ResizeObserver"in window&&(this.anchorRO?.disconnect(),this.anchorRO=new ResizeObserver(()=>{this._open&&this.position()}),this.anchorRO.observe(e)),t&&"ResizeObserver"in window&&(this.popoverRO?.disconnect(),this.popoverRO=new ResizeObserver(()=>{this._open&&this.position()}),this.popoverRO.observe(t)),this.teardownScrollParents();const i=this.opts.scrollContainer;if("window"!==i)if(i instanceof HTMLElement)this.bindScroll(i);else if(e)for(const t of this.getScrollParents(e))this.bindScroll(t)}bindScroll(e){const t=this.onViewportMove;e.addEventListener("scroll",t,{passive:!0}),this.boundScrollParents.push({el:e,fn:t})}teardownScrollParents(){for(const{el:e,fn:t}of this.boundScrollParents)e.removeEventListener?.("scroll",t);this.boundScrollParents=[]}getScrollParents(e){const t=[];let i=e.parentElement;for(;i&&i!==document.body;){const e=getComputedStyle(i),s=e.overflowY,r=e.overflowX,n=("auto"===s||"scroll"===s||"overlay"===s)&&i.scrollHeight>i.clientHeight,o=("auto"===r||"scroll"===r||"overlay"===r)&&i.scrollWidth>i.clientWidth;(n||o)&&t.push(i),i=i.parentElement}return t}captureFocusBeforeOpen(){this.lastFocusedEl=document.activeElement}elementIsTriggerRelated(e){if(!(e instanceof HTMLElement))return!1;const t=this.opts.getAnchor(),i=this.opts.getFocusTarget?.()??null;return!(!i||e!==i&&!i.contains(e))||!!t&&(!(e!==t&&!t.contains(e))||!!t.shadowRoot?.contains(e))}restoreFocus(){if(!this.opts.getRestoreFocusOnClose())return;const e=this.opts.getAnchor();if(!e)return;const t=this.opts.getFocusTarget?.()??e,i=document.activeElement,s=this.lastFocusedEl,r=this.opts.getPopover(),n=!!(r&&s&&r.contains(s)),o=this.elementIsTriggerRelated(s);(!!(r&&i&&r.contains(i))||n||o)&&t.focus?.({preventScroll:!0})}ensurePopoverMarginZero(){const e=this.opts.getPopover();e&&(e.style.margin||(e.style.margin="0"))}updateOption(e,t){this.opts[e]="function"==typeof t?t:()=>t,this._open&&e.startsWith("get")&&this.position()}}export{e as PopoverController};
2
+ //# sourceMappingURL=popover-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-controller.js","sources":["../../../src/helper/controllers/popover-controller.ts"],"sourcesContent":[null],"names":["PopoverController","createGetter","getter","staticValue","defaultValue","constructor","host","options","this","_open","raf","boundScrollParents","_listenersAttached","lastCloseReason","lastFocusedEl","hasEverOpened","_skipNextReposition","lastMeta","place","arrowAlign","_phase","onToggle","e","pop","opts","getPopover","ev","isOpen","newState","matches","detachGlobalListenersIfAttached","onOpenChange","reason","getRestoreFocusOnClose","restoreFocus","attachGlobalListeners","position","requestAnimationFrame","focusOnOpen","onDocumentPointerDown","getCloseOnOutside","anchor","getAnchor","button","path","composedPath","insidePopover","includes","insideAnchor","x","clientX","y","clientY","window","innerWidth","innerHeight","ignoreAttr","getIgnoreOutsideAttr","ignoreSel","getIgnoreOutsideSelector","trim","node","HTMLElement","hasAttribute","closest","closePopover","onViewportMove","onKeydown","key","getCloseOnEscape","active","document","activeElement","withinPopover","contains","onAnchor","preventDefault","stopPropagation","onGroupOpen","other","detail","id","groupId","addController","dur","duration","closeDur","closeDuration","Math","min","getPlacement","placement","getAlign","align","getGap","gap","getPadding","padding","getMatchAnchorWidth","matchAnchorWidth","getMaxWidthToViewport","maxWidthToViewport","getMaxWidthMode","maxWidthMode","getFlip","flip","getFlipOrder","flipOrder","getPreset","preset","getDuration","getCloseDuration","getAnimateReposition","animateReposition","getRepositionMs","repositionMs","closeOnEscape","closeOnOutside","ignoreOutsideSelector","ignoreOutsideAttr","restoreFocusOnClose","cssVarLeft","cssVarTop","cssVarWidth","scrollContainer","groupEventName","getFocusTarget","sideAttr","respectReducedMotion","open","meta","hostConnected","visualViewport","undefined","hostDisconnected","cancelAnimationFrame","addEventListener","passive","capture","setupObserversAndScrollParents","removeEventListener","teardownScrollParents","anchorRO","disconnect","popoverRO","refreshTargets","toggle","openPopover","dispatchEvent","CustomEvent","captureFocusBeforeOpen","ensurePopoverMarginZero","prevVisibility","style","visibility","showPopover","wasEverOpen","getBoundingClientRect","side","setSideAttr","playPreset","then","hidePopover","moveAnim","cancel","normalizeFlipOrder","order","base","length","valid","Set","out","s","has","push","defaultOrderFromPlacement","p","isActuallyVisible","offsetParent","before","pad","a","vv","vw","width","vh","height","offsetX","offsetLeft","offsetY","offsetTop","maxW","max","maxWidth","boxSizing","pr","popW","popH","space","top","bottom","left","right","fits","requested","flipEnabled","baseOrder","find","map","sort","req","prioritized","filter","isRTL","getComputedStyle","direction","ax1","ax2","ay1","ay2","aw","ah","clampedLeft","clampedTop","hostEl","setProperty","removeProperty","presetAnim","after","animateMove","vec","v","prefersReducedMotion","matchMedia","computeOrigin","mode","kf","opacity","transform","presetRegistry","none","name","defaults","enterPx","exitPx","enterScale","exitScale","blurInPx","blurOutPx","perspectivePx","rotateDeg","tiltDeg","origin","easingOpen","easingClose","enterDuration","exitDuration","getKeyframes","fade","phase","scale","cfg","slide","b","iosMenu","iosSheet","materialMenu","materialSheet","floaty","soft","sharp","blurIn","blurFade","zoomFromAnchor","zoomFromCorner","flip3d","axis","sign","r","v2","card3d","t","tilt3d","rx","ry","depth3d","rotate3d","springy","bouncy","glide","drop","grow","getPresetKeyframes","overrides","reg","def","getBaseDefaults","keyframes","checkForConflictingCSS","transition","is3d","is3dPreset","transformStyle","backfaceVisibility","transformOrigin","easing","anim","animate","fill","finished","transitions","console","warn","from","to","dx","dy","abs","finally","setAttribute","ResizeObserver","observe","bindScroll","getScrollParents","el","fn","parents","parentElement","body","overflowY","overflowX","canScrollY","scrollHeight","clientHeight","canScrollX","scrollWidth","clientWidth","elementIsTriggerRelated","focusTarget","shadowRoot","last","lastWasInsidePopover","lastWasInsideTrigger","focus","preventScroll","margin","updateOption","value","startsWith"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./internals/form-control-base";
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Iconify/sky-icon helpers: extract icon names from code and fetch icon data for offline use.
3
+ *
4
+ * Usage (browser or Node):
5
+ * import { extractIconNames, fetchIconsForOffline, registerOfflineIcons } from '~/components/helper/iconify-offline';
6
+ * import { SkyIcon } from '~/components/sky-icon/sky-icon';
7
+ *
8
+ * // Extract icon names from a code page string
9
+ * const names = extractIconNames('<sky-icon icon="ion:home"></sky-icon>'); // ['ion:home']
10
+ *
11
+ * // Fetch and then register in SkyIcon (directly pass generated JSON)
12
+ * const combined = await fetchIconsForOffline(['ion:home', 'mdi:bell']);
13
+ * registerOfflineIcons(combined, (prefix, data) => SkyIcon.registerLocalSet(prefix, data));
14
+ *
15
+ * // Or from saved JSON string:
16
+ * const combined = JSON.parse(savedJson);
17
+ * registerOfflineIcons(combined, (prefix, data) => SkyIcon.registerLocalSet(prefix, data));
18
+ */
19
+ export interface IconifyIconData {
20
+ body?: string;
21
+ left?: number;
22
+ top?: number;
23
+ width?: number;
24
+ height?: number;
25
+ viewBox?: string;
26
+ hidden?: boolean;
27
+ }
28
+ export interface IconifySetData {
29
+ prefix?: string;
30
+ icons: Record<string, IconifyIconData>;
31
+ width?: number;
32
+ height?: number;
33
+ left?: number;
34
+ top?: number;
35
+ /** Icon names requested but not in API response; add manually if needed. Omit when registering with SkyIcon. */
36
+ _notFound?: string[];
37
+ }
38
+ /** Combined offline data: prefix -> Iconify set data (ready for SkyIcon.registerLocalSet). Skip keys starting with _ when registering. */
39
+ export type CombinedOfflineIcons = Record<string, IconifySetData>;
40
+ export interface FetchIconsForOfflineOptions {
41
+ /** Iconify API base URL (default: https://api.iconify.design) */
42
+ baseUrl?: string;
43
+ }
44
+ /**
45
+ * Extracts all icon names in "prefix:icon-name" format from a code page string.
46
+ * Looks for icon names inside single, double, or backtick quotes (e.g. in attributes
47
+ * like icon="ion:home", iconL='mdi:bell', or :icon="`ion:person`").
48
+ *
49
+ * @param codePageString - Source code string (HTML, Vue, TS, JS, etc.)
50
+ * @returns Array of unique icon names (e.g. ["ion:home", "mdi:bell"])
51
+ */
52
+ export declare function extractIconNames(codePageString: string): string[];
53
+ /**
54
+ * Fetches icon data from the Iconify API for the given icon names, groups by prefix,
55
+ * and returns a combined JSON object keyed by prefix for offline use.
56
+ *
57
+ * @param iconNames - List of icon names in "prefix:icon-name" format (e.g. ["ion:home", "mdi:bell"])
58
+ * @param options - Optional baseUrl for the Iconify API
59
+ * @returns Combined object: { "ion": { prefix, icons, width, height }, "mdi": { ... }, ... }
60
+ * Use with SkyIcon.registerLocalSet(prefix, combined[prefix]) for each prefix.
61
+ */
62
+ export declare function fetchIconsForOffline(iconNames: string[], options?: FetchIconsForOfflineOptions): Promise<CombinedOfflineIcons>;
63
+ /** Set data without _notFound / _comment (suitable for SkyIcon.registerLocalSet). */
64
+ type SetDataForRegister = Omit<IconifySetData, '_notFound'>;
65
+ /**
66
+ * Registers the generated offline JSON with SkyIcon. Pass the object returned by fetchIconsForOffline
67
+ * (or parsed from saved JSON). Skips top-level keys starting with "_" and strips _notFound from each set.
68
+ *
69
+ * @param combined - The combined object (from fetchIconsForOffline or JSON.parse of saved output)
70
+ * @param register - Callback to register each set, e.g. (prefix, data) => SkyIcon.registerLocalSet(prefix, data)
71
+ */
72
+ export declare function registerOfflineIcons(combined: CombinedOfflineIcons & Record<string, unknown>, register: (prefix: string, data: SetDataForRegister) => void): void;
73
+ export {};
@@ -0,0 +1,2 @@
1
+ const n=/(["'`])([a-z][a-z0-9-]*:[a-zA-Z0-9_.-]+)\1/g;function t(t){if(!t||"string"!=typeof t)return[];const o=new Set,e=[];let s;for(n.lastIndex=0;null!==(s=n.exec(t));){const n=s[2];n&&n.includes(":")&&!o.has(n)&&(o.add(n),e.push(n))}return e}async function o(n,t={}){const o=(t.baseUrl||"https://api.iconify.design").replace(/\/$/,""),e=new Map;for(const t of n){const n=t.trim();if(!n||!n.includes(":"))continue;const[o,s]=n.split(":"),i=s?.trim();if(!o||!i)continue;if(!/^[a-z]/.test(o))continue;e.has(o)||e.set(o,[]);const c=e.get(o);c.includes(i)||c.push(i)}const s={};await Promise.all(Array.from(e.entries()).map(async([n,t])=>{const e=t.join(","),i=`${o}/${n}.json?icons=${encodeURIComponent(e)}`,c=await fetch(i);if(!c.ok)throw new Error(`Iconify API error for ${n}: ${c.status} ${c.statusText}`);const r=await c.json(),a=r.icons||{},f=t.filter(n=>!a[n]),u={prefix:n,icons:a,width:r.width,height:r.height,left:r.left,top:r.top};f.length>0&&(u._notFound=f),s[n]=u}));return Object.values(s).some(n=>n._notFound&&n._notFound.length>0)&&(s._comment_notFound="Icons listed in _notFound (per set) were not in the API response; add manually if needed."),s}function e(n,t){for(const[o,e]of Object.entries(n)){if(o.startsWith("_"))continue;if(!e||"object"!=typeof e||!("icons"in e))continue;const{_notFound:n,...s}=e;t(o,s)}}export{t as extractIconNames,o as fetchIconsForOffline,e as registerOfflineIcons};
2
+ //# sourceMappingURL=iconify-offline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iconify-offline.js","sources":["../../src/helper/iconify-offline.ts"],"sourcesContent":[null],"names":["QUOTED_ICON_PATTERN","extractIconNames","codePageString","seen","Set","result","match","lastIndex","exec","full","includes","has","add","push","async","fetchIconsForOffline","iconNames","options","baseUrl","replace","byPrefix","Map","trimmed","trim","prefix","name","split","iconName","test","set","list","get","combined","Promise","all","Array","from","entries","map","names","iconsParam","join","url","encodeURIComponent","res","fetch","ok","Error","status","statusText","json","returnedIcons","icons","notFound","filter","setData","width","height","left","top","length","_notFound","Object","values","some","registerOfflineIcons","register","key","startsWith","_unused","data"],"mappings":"AAmBA,MAGMA,EAAsB,8CAuCtB,SAAUC,EAAiBC,GAC/B,IAAKA,GAA4C,iBAAnBA,EAC5B,MAAO,GAET,MAAMC,EAAO,IAAIC,IACXC,EAAmB,GACzB,IAAIC,EAEJ,IADAN,EAAoBO,UAAY,EAC8B,QAAtDD,EAAQN,EAAoBQ,KAAKN,KAA2B,CAClE,MAAMO,EAAOH,EAAM,GACfG,GAAQA,EAAKC,SAAS,OAASP,EAAKQ,IAAIF,KAC1CN,EAAKS,IAAIH,GACTJ,EAAOQ,KAAKJ,GAEhB,CACA,OAAOJ,CACT,CAWOS,eAAeC,EACpBC,EACAC,EAAuC,IAEvC,MAAMC,GAAWD,EAAQC,SAzEF,8BAyE+BC,QAAQ,MAAO,IAC/DC,EAAW,IAAIC,IAErB,IAAK,MAAMZ,KAAQO,EAAW,CAC5B,MAAMM,EAAUb,EAAKc,OACrB,IAAKD,IAAYA,EAAQZ,SAAS,KAAM,SACxC,MAAOc,EAAQC,GAAQH,EAAQI,MAAM,KAC/BC,EAAWF,GAAMF,OACvB,IAAKC,IAAWG,EAAU,SAE1B,IAAK,SAASC,KAAKJ,GAAS,SACvBJ,EAAST,IAAIa,IAChBJ,EAASS,IAAIL,EAAQ,IAEvB,MAAMM,EAAOV,EAASW,IAAIP,GACrBM,EAAKpB,SAASiB,IACjBG,EAAKjB,KAAKc,EAEd,CAEA,MAAMK,EAAiC,CAAA,QAEjCC,QAAQC,IACZC,MAAMC,KAAKhB,EAASiB,WAAWC,IAAIxB,OAAQU,EAAQe,MACjD,MAAMC,EAAaD,EAAME,KAAK,KACxBC,EAAM,GAAGxB,KAAWM,gBAAqBmB,mBAAmBH,KAC5DI,QAAYC,MAAMH,GACxB,IAAKE,EAAIE,GACP,MAAM,IAAIC,MAAM,yBAAyBvB,MAAWoB,EAAII,UAAUJ,EAAIK,cAExE,MAAMC,QAAcN,EAAIM,OAClBC,EAAgBD,EAAKE,OAAS,CAAA,EAC9BC,EAAWd,EAAMe,OAAQ7B,IAAU0B,EAAc1B,IACjD8B,EAA0B,CAC9B/B,SACA4B,MAAOD,EACPK,MAAON,EAAKM,MACZC,OAAQP,EAAKO,OACbC,KAAMR,EAAKQ,KACXC,IAAKT,EAAKS,KAERN,EAASO,OAAS,IACpBL,EAAQM,UAAYR,GAEtBrB,EAASR,GAAU+B,KAUvB,OANuBO,OAAOC,OAAO/B,GAAUgC,KAAMnC,GAAQA,EAAIgC,WAAahC,EAAIgC,UAAUD,OAAS,KAElG5B,EAAwD,kBACvD,6FAGGA,CACT,CAYM,SAAUiC,EACdjC,EACAkC,GAEA,IAAK,MAAOC,EAAKtC,KAAQiC,OAAOzB,QAAQL,GAAW,CACjD,GAAImC,EAAIC,WAAW,KAAM,SACzB,IAAKvC,GAAsB,iBAARA,KAAsB,UAAWA,GAAM,SAC1D,MAAQgC,UAAWQ,KAAYC,GAASzC,EACxCqC,EAASC,EAAKG,EAChB,CACF"}
@@ -0,0 +1,5 @@
1
+ export * from "./form-control-base";
2
+ export * from "./internals";
3
+ export * from "./utils";
4
+ export * from "./controllers";
5
+ export * from "./iconify-offline";