yuyeon 0.0.13 → 0.0.15

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 (205) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +15 -0
  3. package/dist/style.css +1 -1
  4. package/dist/yuyeon.mjs +3134 -2276
  5. package/dist/yuyeon.umd.js +29 -1
  6. package/lib/abstract/items.mjs +20 -0
  7. package/lib/abstract/items.mjs.map +1 -0
  8. package/lib/components/button/YButton.mjs +2 -2
  9. package/lib/components/button/YButton.mjs.map +1 -1
  10. package/lib/components/button/YButton.scss +1 -1
  11. package/lib/components/card/YCard.mjs.map +1 -1
  12. package/lib/components/card/YCard.scss +3 -2
  13. package/lib/components/checkbox/YInputCheckbox.scss +1 -1
  14. package/lib/components/chip/YChip.mjs +2 -2
  15. package/lib/components/chip/YChip.mjs.map +1 -1
  16. package/lib/components/dialog/YDialog.mjs +2 -2
  17. package/lib/components/dialog/YDialog.mjs.map +1 -1
  18. package/lib/components/dropdown/YDropdown.mjs +83 -2
  19. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  20. package/lib/components/dropdown/YDropdown.scss +33 -0
  21. package/lib/components/field-input/YFieldInput.mjs +55 -47
  22. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  23. package/lib/components/icons/YIconCheckbox.scss +1 -1
  24. package/lib/components/icons/YIconDropdown.mjs +16 -0
  25. package/lib/components/icons/YIconDropdown.mjs.map +1 -0
  26. package/lib/components/index.mjs +2 -0
  27. package/lib/components/index.mjs.map +1 -1
  28. package/lib/components/input/YInput.mjs +83 -49
  29. package/lib/components/input/YInput.mjs.map +1 -1
  30. package/lib/components/input/YInput.scss +8 -8
  31. package/lib/components/layer/YLayer.mjs +21 -9
  32. package/lib/components/layer/YLayer.mjs.map +1 -1
  33. package/lib/components/layer/YLayer.scss +1 -0
  34. package/lib/components/layer/scroll-strategies.mjs +1 -1
  35. package/lib/components/layer/scroll-strategies.mjs.map +1 -1
  36. package/lib/components/list/YList.mjs +40 -2
  37. package/lib/components/list/YList.mjs.map +1 -1
  38. package/lib/components/list/YListItem.mjs +31 -11
  39. package/lib/components/list/YListItem.mjs.map +1 -1
  40. package/lib/components/list/YListItem.scss +5 -2
  41. package/lib/components/menu/YMenu.mjs +35 -19
  42. package/lib/components/menu/YMenu.mjs.map +1 -1
  43. package/lib/components/menu/YMenu.scss +20 -7
  44. package/lib/components/pagination/YPagination.mjs +8 -8
  45. package/lib/components/pagination/YPagination.mjs.map +1 -1
  46. package/lib/components/panel/YDividePanel.scss +4 -4
  47. package/lib/components/progress-bar/YProgressBar.mjs +20 -3
  48. package/lib/components/progress-bar/YProgressBar.mjs.map +1 -1
  49. package/lib/components/progress-bar/YProgressBar.scss +109 -40
  50. package/lib/components/select/YSelect.mjs +185 -0
  51. package/lib/components/select/YSelect.mjs.map +1 -0
  52. package/lib/components/select/YSelect.scss +43 -0
  53. package/lib/components/select/index.mjs +2 -0
  54. package/lib/components/select/index.mjs.map +1 -0
  55. package/lib/components/switch/YSwitch.scss +1 -1
  56. package/lib/components/table/YTable.scss +2 -2
  57. package/lib/components/tree-view/YTreeView.mjs +76 -18
  58. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  59. package/lib/components/tree-view/YTreeViewNode.mjs +21 -18
  60. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  61. package/lib/components/tree-view/types.mjs.map +1 -1
  62. package/lib/components/tree-view/util.mjs +24 -0
  63. package/lib/components/tree-view/util.mjs.map +1 -1
  64. package/lib/composables/coordinate/arrangement.mjs.map +1 -1
  65. package/lib/composables/coordinate/index.mjs.map +1 -1
  66. package/lib/composables/coordinate/levitation.mjs +1 -1
  67. package/lib/composables/coordinate/levitation.mjs.map +1 -1
  68. package/lib/composables/coordinate/utils/point.mjs.map +1 -1
  69. package/lib/composables/dimension.mjs +26 -0
  70. package/lib/composables/dimension.mjs.map +1 -0
  71. package/lib/composables/focus.mjs +29 -0
  72. package/lib/composables/focus.mjs.map +1 -0
  73. package/lib/composables/list-items.mjs +58 -0
  74. package/lib/composables/list-items.mjs.map +1 -0
  75. package/lib/composables/theme/factory.mjs +45 -0
  76. package/lib/composables/theme/factory.mjs.map +1 -0
  77. package/lib/composables/theme/helper.mjs +14 -0
  78. package/lib/composables/theme/helper.mjs.map +1 -0
  79. package/lib/composables/theme/index.mjs +144 -10
  80. package/lib/composables/theme/index.mjs.map +1 -1
  81. package/lib/composables/theme/setting.mjs +46 -9
  82. package/lib/composables/theme/setting.mjs.map +1 -1
  83. package/lib/composables/theme/types.mjs +2 -0
  84. package/lib/composables/theme/types.mjs.map +1 -0
  85. package/lib/directives/complement-click/index.mjs.map +1 -1
  86. package/lib/directives/theme-class.mjs +4 -4
  87. package/lib/directives/theme-class.mjs.map +1 -1
  88. package/lib/index.mjs +7 -5
  89. package/lib/index.mjs.map +1 -1
  90. package/lib/mixins/di.mjs +0 -3
  91. package/lib/mixins/di.mjs.map +1 -1
  92. package/lib/styles/_elevation.scss +15 -0
  93. package/lib/styles/base.scss +11 -5
  94. package/lib/styles/settings/_elevation.scss +20 -0
  95. package/lib/styles/theme/light.scss +1 -1
  96. package/lib/styles/util/_helper.scss +12 -0
  97. package/lib/styles/util/_var.scss +18 -0
  98. package/lib/util/color/apca.mjs +201 -0
  99. package/lib/util/color/apca.mjs.map +1 -0
  100. package/lib/util/color/const.mjs +6 -0
  101. package/lib/util/color/const.mjs.map +1 -0
  102. package/lib/util/color/contrast/contrast.mjs +149 -0
  103. package/lib/util/color/contrast/contrast.mjs.map +1 -0
  104. package/lib/util/color/conversion.mjs +310 -0
  105. package/lib/util/color/conversion.mjs.map +1 -0
  106. package/lib/util/color/hct/cam16.mjs +349 -0
  107. package/lib/util/color/hct/cam16.mjs.map +1 -0
  108. package/lib/util/color/hct/hct-solver.mjs +389 -0
  109. package/lib/util/color/hct/hct-solver.mjs.map +1 -0
  110. package/lib/util/color/hct/hct.mjs +153 -0
  111. package/lib/util/color/hct/hct.mjs.map +1 -0
  112. package/lib/util/color/hct/viewing-conditions.mjs +110 -0
  113. package/lib/util/color/hct/viewing-conditions.mjs.map +1 -0
  114. package/lib/util/color/index.mjs +24 -0
  115. package/lib/util/color/index.mjs.map +1 -0
  116. package/lib/util/color/palettes/core-palette.mjs +99 -0
  117. package/lib/util/color/palettes/core-palette.mjs.map +1 -0
  118. package/lib/util/color/palettes/tonal-palette.mjs +112 -0
  119. package/lib/util/color/palettes/tonal-palette.mjs.map +1 -0
  120. package/lib/util/color/types.mjs +2 -0
  121. package/lib/util/color/types.mjs.map +1 -0
  122. package/lib/util/color/utils/math-utils.mjs +139 -0
  123. package/lib/util/color/utils/math-utils.mjs.map +1 -0
  124. package/lib/util/common.mjs +11 -6
  125. package/lib/util/common.mjs.map +1 -1
  126. package/lib/util/debounce.mjs +114 -0
  127. package/lib/util/debounce.mjs.map +1 -0
  128. package/lib/util/{FrameScheduler.mjs → frame-scheduler.mjs} +1 -1
  129. package/lib/util/frame-scheduler.mjs.map +1 -0
  130. package/lib/util/{Rect.mjs → rect.mjs} +1 -1
  131. package/lib/util/{Rect.mjs.map → rect.mjs.map} +1 -1
  132. package/lib/util/string.mjs +6 -0
  133. package/lib/util/string.mjs.map +1 -1
  134. package/lib/util/ui.mjs +11 -36
  135. package/lib/util/ui.mjs.map +1 -1
  136. package/package.json +12 -1
  137. package/types/abstract/items.d.ts +48 -0
  138. package/types/components/card/YCard.d.ts +1 -1
  139. package/types/components/checkbox/YInputCheckbox.d.ts +2 -2
  140. package/types/components/dialog/YDialog.d.ts +23 -8
  141. package/types/components/dropdown/YDropdown.d.ts +219 -0
  142. package/types/components/dropdown/index.d.ts +1 -0
  143. package/types/components/field-input/YFieldInput.d.ts +238 -25
  144. package/types/components/icons/YIconCheckbox.d.ts +1 -1
  145. package/types/components/icons/YIconDropdown.d.ts +1 -0
  146. package/types/components/index.d.ts +2 -0
  147. package/types/components/input/YInput.d.ts +156 -42
  148. package/types/components/layer/YLayer.d.ts +67 -17
  149. package/types/components/list/YList.d.ts +22 -1
  150. package/types/components/list/YListItem.d.ts +28 -2
  151. package/types/components/menu/YMenu.d.ts +132 -16
  152. package/types/components/pagination/YPagination.d.ts +10 -10
  153. package/types/components/progress-bar/YProgressBar.d.ts +18 -1
  154. package/types/components/select/YSelect.d.ts +701 -0
  155. package/types/components/select/index.d.ts +1 -0
  156. package/types/components/table/YDataTable.d.ts +1 -1
  157. package/types/components/table/YDataTableServer.d.ts +1 -1
  158. package/types/components/text-highlighter/YTextHighlighter.d.ts +40 -0
  159. package/types/components/tooltip/YTooltip.d.ts +20 -5
  160. package/types/components/tree-view/YTreeView.d.ts +47 -22
  161. package/types/components/tree-view/YTreeViewNode.d.ts +72 -26
  162. package/types/components/tree-view/types.d.ts +1 -0
  163. package/types/components/tree-view/util.d.ts +4 -1
  164. package/types/composables/coordinate/arrangement.d.ts +1 -1
  165. package/types/composables/coordinate/index.d.ts +3 -3
  166. package/types/composables/coordinate/levitation.d.ts +1 -1
  167. package/types/composables/coordinate/utils/point.d.ts +1 -1
  168. package/types/composables/dimension.d.ts +53 -0
  169. package/types/composables/focus.d.ts +27 -0
  170. package/types/composables/list-items.d.ts +117 -0
  171. package/types/composables/theme/factory.d.ts +3 -0
  172. package/types/composables/theme/helper.d.ts +3 -0
  173. package/types/composables/theme/index.d.ts +45 -5
  174. package/types/composables/theme/setting.d.ts +3 -6
  175. package/types/composables/theme/types.d.ts +28 -0
  176. package/types/directives/complement-click/index.d.ts +1 -1
  177. package/types/directives/theme-class.d.ts +1 -1
  178. package/types/index.d.ts +2 -0
  179. package/types/shims.d.ts +4 -0
  180. package/types/util/color/apca.d.ts +29 -0
  181. package/types/util/color/const.d.ts +5 -0
  182. package/types/util/color/conversion.d.ts +130 -0
  183. package/types/util/color/hct/cam16.d.ts +131 -0
  184. package/types/util/color/hct/hct.d.ts +86 -0
  185. package/types/util/color/hct/hct_solver.d.ts +146 -0
  186. package/types/util/color/hct/viewing_conditions.d.ts +74 -0
  187. package/types/util/color/index.d.ts +4 -0
  188. package/types/util/color/palettes/tonal_palette.d.ts +55 -0
  189. package/types/util/color/types.d.ts +14 -0
  190. package/types/util/color/utils/math-utils.d.ts +82 -0
  191. package/types/util/color/utils/math_utils.d.ts +82 -0
  192. package/types/util/common.d.ts +2 -1
  193. package/types/util/debounce.d.ts +11 -0
  194. package/types/util/string.d.ts +1 -0
  195. package/types/util/ui.d.ts +1 -6
  196. package/lib/components/input/index.scss +0 -2
  197. package/lib/components/table/pagination.mjs +0 -80
  198. package/lib/components/table/pagination.mjs.map +0 -1
  199. package/lib/composables/collections.mjs +0 -2
  200. package/lib/composables/collections.mjs.map +0 -1
  201. package/lib/composables/levitation.mjs +0 -135
  202. package/lib/composables/levitation.mjs.map +0 -1
  203. package/lib/styles/util/helper.scss +0 -6
  204. package/lib/util/FrameScheduler.mjs.map +0 -1
  205. /package/lib/styles/settings/{provided.scss → _provided.scss} +0 -0
@@ -11,4 +11,28 @@ export function getKeys(items, itemKey, childrenKey) {
11
11
  }
12
12
  return keys;
13
13
  }
14
+ export function filterTreeItem(item, search, textKey) {
15
+ const text = getObjectValueByPath(item, textKey);
16
+ return text.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;
17
+ }
18
+ export function filterTreeItems(filter, item, search, idKey, textKey, childrenKey, excluded) {
19
+ const children = getObjectValueByPath(item, childrenKey);
20
+ if (children) {
21
+ let match = false;
22
+ for (let i = 0; i < children.length; i++) {
23
+ if (filterTreeItems(filter, children[i], search, idKey, textKey, childrenKey, excluded)) {
24
+ match = true;
25
+ }
26
+ }
27
+ if (match) {
28
+ return true;
29
+ } else if (filter(item, search, textKey)) {
30
+ return true;
31
+ }
32
+ } else if (filter(item, search, textKey)) {
33
+ return true;
34
+ }
35
+ excluded.add(getObjectValueByPath(item, idKey));
36
+ return false;
37
+ }
14
38
  //# sourceMappingURL=util.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.mjs","names":["getObjectValueByPath","getKeys","items","itemKey","childrenKey","keys","item","key","push","children","Array","isArray"],"sources":["../../../src/components/tree-view/util.ts"],"sourcesContent":["import { getObjectValueByPath } from '../../util/common';\nimport { CandidateKey } from \"../../types\";\n\nexport function getKeys(items: any[], itemKey: string, childrenKey: string) {\n const keys: CandidateKey[] = [];\n for (const item of items) {\n const key = getObjectValueByPath(item, itemKey);\n keys.push(key);\n const children = getObjectValueByPath(item, childrenKey);\n if (Array.isArray(children)) {\n keys.push(...getKeys(children, itemKey, childrenKey));\n }\n }\n return keys;\n}\n"],"mappings":"SAASA,oBAAoB;AAG7B,OAAO,SAASC,OAAOA,CAACC,KAAY,EAAEC,OAAe,EAAEC,WAAmB,EAAE;EAC1E,MAAMC,IAAoB,GAAG,EAAE;EAC/B,KAAK,MAAMC,IAAI,IAAIJ,KAAK,EAAE;IACxB,MAAMK,GAAG,GAAGP,oBAAoB,CAACM,IAAI,EAAEH,OAAO,CAAC;IAC/CE,IAAI,CAACG,IAAI,CAACD,GAAG,CAAC;IACd,MAAME,QAAQ,GAAGT,oBAAoB,CAACM,IAAI,EAAEF,WAAW,CAAC;IACxD,IAAIM,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAE;MAC3BJ,IAAI,CAACG,IAAI,CAAC,GAAGP,OAAO,CAACQ,QAAQ,EAAEN,OAAO,EAAEC,WAAW,CAAC,CAAC;IACvD;EACF;EACA,OAAOC,IAAI;AACb"}
1
+ {"version":3,"file":"util.mjs","names":["getObjectValueByPath","getKeys","items","itemKey","childrenKey","keys","item","key","push","children","Array","isArray","filterTreeItem","search","textKey","text","toLocaleLowerCase","indexOf","filterTreeItems","filter","idKey","excluded","match","i","length","add"],"sources":["../../../src/components/tree-view/util.ts"],"sourcesContent":["import { getObjectValueByPath } from '../../util/common';\n\nimport { CandidateKey } from '../../types';\nimport { TreeviewFilterFn } from './types';\n\nexport function getKeys(items: any[], itemKey: string, childrenKey: string) {\n const keys: CandidateKey[] = [];\n for (const item of items) {\n const key = getObjectValueByPath(item, itemKey);\n keys.push(key);\n const children = getObjectValueByPath(item, childrenKey);\n if (Array.isArray(children)) {\n keys.push(...getKeys(children, itemKey, childrenKey));\n }\n }\n return keys;\n}\n\nexport function filterTreeItem(\n item: object,\n search: string,\n textKey: string,\n): boolean {\n const text = getObjectValueByPath(item, textKey);\n\n return text.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n}\n\nexport function filterTreeItems(\n filter: TreeviewFilterFn,\n item: any,\n search: string,\n idKey: string,\n textKey: string,\n childrenKey: string,\n excluded: Set<CandidateKey>,\n): boolean {\n const children = getObjectValueByPath(item, childrenKey);\n\n if (children) {\n let match = false;\n for (let i = 0; i < children.length; i++) {\n if (\n filterTreeItems(\n filter,\n children[i],\n search,\n idKey,\n textKey,\n childrenKey,\n excluded,\n )\n ) {\n match = true;\n }\n }\n\n if (match) {\n return true;\n } else if (filter(item, search, textKey)) {\n return true;\n }\n } else if (filter(item, search, textKey)) {\n return true;\n }\n\n excluded.add(getObjectValueByPath(item, idKey));\n\n return false;\n}\n"],"mappings":"SAASA,oBAAoB;AAK7B,OAAO,SAASC,OAAOA,CAACC,KAAY,EAAEC,OAAe,EAAEC,WAAmB,EAAE;EAC1E,MAAMC,IAAoB,GAAG,EAAE;EAC/B,KAAK,MAAMC,IAAI,IAAIJ,KAAK,EAAE;IACxB,MAAMK,GAAG,GAAGP,oBAAoB,CAACM,IAAI,EAAEH,OAAO,CAAC;IAC/CE,IAAI,CAACG,IAAI,CAACD,GAAG,CAAC;IACd,MAAME,QAAQ,GAAGT,oBAAoB,CAACM,IAAI,EAAEF,WAAW,CAAC;IACxD,IAAIM,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAE;MAC3BJ,IAAI,CAACG,IAAI,CAAC,GAAGP,OAAO,CAACQ,QAAQ,EAAEN,OAAO,EAAEC,WAAW,CAAC,CAAC;IACvD;EACF;EACA,OAAOC,IAAI;AACb;AAEA,OAAO,SAASO,cAAcA,CAC5BN,IAAY,EACZO,MAAc,EACdC,OAAe,EACN;EACT,MAAMC,IAAI,GAAGf,oBAAoB,CAACM,IAAI,EAAEQ,OAAO,CAAC;EAEhD,OAAOC,IAAI,CAACC,iBAAiB,CAAC,CAAC,CAACC,OAAO,CAACJ,MAAM,CAACG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1E;AAEA,OAAO,SAASE,eAAeA,CAC7BC,MAAwB,EACxBb,IAAS,EACTO,MAAc,EACdO,KAAa,EACbN,OAAe,EACfV,WAAmB,EACnBiB,QAA2B,EAClB;EACT,MAAMZ,QAAQ,GAAGT,oBAAoB,CAACM,IAAI,EAAEF,WAAW,CAAC;EAExD,IAAIK,QAAQ,EAAE;IACZ,IAAIa,KAAK,GAAG,KAAK;IACjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,QAAQ,CAACe,MAAM,EAAED,CAAC,EAAE,EAAE;MACxC,IACEL,eAAe,CACbC,MAAM,EACNV,QAAQ,CAACc,CAAC,CAAC,EACXV,MAAM,EACNO,KAAK,EACLN,OAAO,EACPV,WAAW,EACXiB,QACF,CAAC,EACD;QACAC,KAAK,GAAG,IAAI;MACd;IACF;IAEA,IAAIA,KAAK,EAAE;MACT,OAAO,IAAI;IACb,CAAC,MAAM,IAAIH,MAAM,CAACb,IAAI,EAAEO,MAAM,EAAEC,OAAO,CAAC,EAAE;MACxC,OAAO,IAAI;IACb;EACF,CAAC,MAAM,IAAIK,MAAM,CAACb,IAAI,EAAEO,MAAM,EAAEC,OAAO,CAAC,EAAE;IACxC,OAAO,IAAI;EACb;EAEAO,QAAQ,CAACI,GAAG,CAACzB,oBAAoB,CAACM,IAAI,EAAEc,KAAK,CAAC,CAAC;EAE/C,OAAO,KAAK;AACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"arrangement.mjs","names":["applyArrangement","props","state","coordinate","coordinateStyles","contentEl","baseEl","active","updateCoordinate"],"sources":["../../../src/composables/coordinate/arrangement.ts"],"sourcesContent":["import type { CSSProperties, Ref } from 'vue';\n\nimport { Rect } from '../../util/Rect';\n\nimport { CoordinateState } from './types';\n\nexport function applyArrangement(\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) {\n const { contentEl, baseEl, active } = state;\n\n function updateCoordinate(): any {\n //\n }\n\n return {\n updateCoordinate,\n };\n}\n"],"mappings":"AAMA,OAAO,SAASA,gBAAgBA,CAC9BC,KAAU,EACVC,KAAsB,EACtBC,UAAiC,EACjCC,gBAAoC,EACpC;EACA,MAAM;IAAEC,SAAS;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGL,KAAK;EAE3C,SAASM,gBAAgBA,CAAA,EAAQ;IAC/B;EAAA;EAGF,OAAO;IACLA;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"arrangement.mjs","names":["applyArrangement","props","state","coordinate","coordinateStyles","contentEl","baseEl","active","updateCoordinate"],"sources":["../../../src/composables/coordinate/arrangement.ts"],"sourcesContent":["import type { CSSProperties, Ref } from 'vue';\n\nimport { Rect } from '../../util/rect';\n\nimport { CoordinateState } from './types';\n\nexport function applyArrangement(\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) {\n const { contentEl, baseEl, active } = state;\n\n function updateCoordinate(): any {\n //\n }\n\n return {\n updateCoordinate,\n };\n}\n"],"mappings":"AAMA,OAAO,SAASA,gBAAgBA,CAC9BC,KAAU,EACVC,KAAsB,EACtBC,UAAiC,EACjCC,gBAAoC,EACpC;EACA,MAAM;IAAEC,SAAS;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGL,KAAK;EAE3C,SAASM,gBAAgBA,CAAA,EAAQ;IAC/B;EAAA;EAGF,OAAO;IACLA;EACF,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["onScopeDispose","ref","watch","propsFactory","useToggleScope","applyArrangement","applyLevitation","coordinateStrategies","levitation","arrangement","pressCoordinateProps","coordinateStrategy","type","String","Function","default","position","align","origin","offset","Number","Array","viewportMargin","useCoordinate","props","state","updateCoordinate","coordinate","coordinateStyles","active","value","reset","undefined","strategy","window","addEventListener","onResize","passive","removeEventListener","e"],"sources":["../../../src/composables/coordinate/index.ts"],"sourcesContent":["import type { CSSProperties, PropType, Ref } from 'vue';\nimport { onScopeDispose, ref, watch } from 'vue';\n\nimport { Rect } from '../../util/Rect';\nimport { propsFactory } from '../../util/vue-component';\nimport { useToggleScope } from '../scope';\nimport { applyArrangement } from './arrangement';\nimport { applyLevitation } from './levitation';\n\nimport { CoordinateState } from './types';\n\nconst coordinateStrategies = {\n levitation: applyLevitation,\n arrangement: applyArrangement,\n};\n\nexport type CoordinateStrategyFn = (\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) => undefined | { updateCoordinate: (e: Event) => void };\n\nexport const pressCoordinateProps = propsFactory(\n {\n coordinateStrategy: {\n type: [String, Function] as PropType<keyof typeof coordinateStrategies | CoordinateStrategyFn>,\n default: 'arrangement',\n },\n position: {\n type: String as PropType<\n 'default' | 'top' | 'end' | 'right' | 'bottom' | 'left' | 'start'\n >,\n default: 'default',\n },\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: {\n type: [Number, String, Array],\n },\n viewportMargin: {\n type: Number,\n default: 16,\n }\n },\n 'Coordinate',\n);\n\nexport function useCoordinate(props: any, state: CoordinateState) {\n const updateCoordinate = ref<(e: Event) => void>();\n const coordinate = ref<Rect | undefined>();\n const coordinateStyles = ref<CSSProperties>({});\n\n useToggleScope(\n () => !!(state.active.value && props.coordinateStrategy),\n (reset) => {\n watch(() => props.coordinateStrategy, reset);\n onScopeDispose(() => {\n updateCoordinate.value = undefined;\n });\n\n if (typeof props.coordinateStrategy === 'function') {\n updateCoordinate.value = props.coordinateStrategy(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n } else {\n const strategy =\n coordinateStrategies[\n props.coordinateStrategy as keyof typeof coordinateStrategies\n ];\n updateCoordinate.value = strategy?.(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n }\n },\n );\n\n window.addEventListener('resize', onResize, { passive: true });\n\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n updateCoordinate.value = undefined;\n });\n\n function onResize(e: Event) {\n updateCoordinate.value?.(e);\n }\n\n return {\n coordinate,\n coordinateStyles,\n updateCoordinate,\n };\n}\n"],"mappings":"AACA,SAASA,cAAc,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAGxCC,YAAY;AAAA,SACZC,cAAc;AAAA,SACdC,gBAAgB;AAAA,SAChBC,eAAe;AAIxB,MAAMC,oBAAoB,GAAG;EAC3BC,UAAU,EAAEF,eAAe;EAC3BG,WAAW,EAAEJ;AACf,CAAC;AASD,OAAO,MAAMK,oBAAoB,GAAGP,YAAY,CAC9C;EACEQ,kBAAkB,EAAE;IAClBC,IAAI,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAAuE;IAC9FC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRJ,IAAI,EAAEC,MAEL;IACDE,OAAO,EAAE;EACX,CAAC;EACDE,KAAK,EAAE;IACLL,IAAI,EAAEC,MAA8C;IACpDE,OAAO,EAAE;EACX,CAAC;EACDG,MAAM,EAAE;IACNN,IAAI,EAAEC,MAAM;IACZE,OAAO,EAAE;EACX,CAAC;EACDI,MAAM,EAAE;IACNP,IAAI,EAAE,CAACQ,MAAM,EAAEP,MAAM,EAAEQ,KAAK;EAC9B,CAAC;EACDC,cAAc,EAAE;IACdV,IAAI,EAAEQ,MAAM;IACZL,OAAO,EAAE;EACX;AACF,CAAC,EACD,YACF,CAAC;AAED,OAAO,SAASQ,aAAaA,CAACC,KAAU,EAAEC,KAAsB,EAAE;EAChE,MAAMC,gBAAgB,GAAGzB,GAAG,CAAqB,CAAC;EAClD,MAAM0B,UAAU,GAAG1B,GAAG,CAAmB,CAAC;EAC1C,MAAM2B,gBAAgB,GAAG3B,GAAG,CAAgB,CAAC,CAAC,CAAC;EAE/CG,cAAc,CACZ,MAAM,CAAC,EAAEqB,KAAK,CAACI,MAAM,CAACC,KAAK,IAAIN,KAAK,CAACb,kBAAkB,CAAC,EACvDoB,KAAK,IAAK;IACT7B,KAAK,CAAC,MAAMsB,KAAK,CAACb,kBAAkB,EAAEoB,KAAK,CAAC;IAC5C/B,cAAc,CAAC,MAAM;MACnB0B,gBAAgB,CAACI,KAAK,GAAGE,SAAS;IACpC,CAAC,CAAC;IAEF,IAAI,OAAOR,KAAK,CAACb,kBAAkB,KAAK,UAAU,EAAE;MAClDe,gBAAgB,CAACI,KAAK,GAAGN,KAAK,CAACb,kBAAkB,CAC/Ca,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB,CAAC,MAAM;MACL,MAAMO,QAAQ,GACZ1B,oBAAoB,CAClBiB,KAAK,CAACb,kBAAkB,CACzB;MACHe,gBAAgB,CAACI,KAAK,GAAGG,QAAQ,GAC/BT,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB;EACF,CACF,CAAC;EAEDQ,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEC,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC;EAE9DrC,cAAc,CAAC,MAAM;IACnBkC,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;IAC9CV,gBAAgB,CAACI,KAAK,GAAGE,SAAS;EACpC,CAAC,CAAC;EAEF,SAASI,QAAQA,CAACG,CAAQ,EAAE;IAC1Bb,gBAAgB,CAACI,KAAK,GAAGS,CAAC,CAAC;EAC7B;EAEA,OAAO;IACLZ,UAAU;IACVC,gBAAgB;IAChBF;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"index.mjs","names":["onScopeDispose","ref","watch","propsFactory","useToggleScope","applyArrangement","applyLevitation","coordinateStrategies","levitation","arrangement","pressCoordinateProps","coordinateStrategy","type","String","Function","default","position","align","origin","offset","Number","Array","viewportMargin","useCoordinate","props","state","updateCoordinate","coordinate","coordinateStyles","active","value","reset","undefined","strategy","window","addEventListener","onResize","passive","removeEventListener","e"],"sources":["../../../src/composables/coordinate/index.ts"],"sourcesContent":["import type { CSSProperties, PropType, Ref } from 'vue';\nimport { onScopeDispose, ref, watch } from 'vue';\n\nimport { Rect } from '../../util/rect';\nimport { propsFactory } from '../../util/vue-component';\nimport { useToggleScope } from '../scope';\nimport { applyArrangement } from './arrangement';\nimport { applyLevitation } from './levitation';\n\nimport { CoordinateState } from './types';\n\nconst coordinateStrategies = {\n levitation: applyLevitation,\n arrangement: applyArrangement,\n};\n\nexport type CoordinateStrategyFn = (\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) => undefined | { updateCoordinate: (e: Event) => void };\n\nexport const pressCoordinateProps = propsFactory(\n {\n coordinateStrategy: {\n type: [String, Function] as PropType<keyof typeof coordinateStrategies | CoordinateStrategyFn>,\n default: 'arrangement',\n },\n position: {\n type: String as PropType<\n 'default' | 'top' | 'end' | 'right' | 'bottom' | 'left' | 'start'\n >,\n default: 'default',\n },\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: {\n type: [Number, String, Array],\n },\n viewportMargin: {\n type: Number,\n default: 16,\n }\n },\n 'Coordinate',\n);\n\nexport function useCoordinate(props: any, state: CoordinateState) {\n const updateCoordinate = ref<(e: Event) => void>();\n const coordinate = ref<Rect | undefined>();\n const coordinateStyles = ref<CSSProperties>({});\n\n useToggleScope(\n () => !!(state.active.value && props.coordinateStrategy),\n (reset) => {\n watch(() => props.coordinateStrategy, reset);\n onScopeDispose(() => {\n updateCoordinate.value = undefined;\n });\n\n if (typeof props.coordinateStrategy === 'function') {\n updateCoordinate.value = props.coordinateStrategy(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n } else {\n const strategy =\n coordinateStrategies[\n props.coordinateStrategy as keyof typeof coordinateStrategies\n ];\n updateCoordinate.value = strategy?.(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n }\n },\n );\n\n window.addEventListener('resize', onResize, { passive: true });\n\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n updateCoordinate.value = undefined;\n });\n\n function onResize(e: Event) {\n updateCoordinate.value?.(e);\n }\n\n return {\n coordinate,\n coordinateStyles,\n updateCoordinate,\n };\n}\n"],"mappings":"AACA,SAASA,cAAc,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAGxCC,YAAY;AAAA,SACZC,cAAc;AAAA,SACdC,gBAAgB;AAAA,SAChBC,eAAe;AAIxB,MAAMC,oBAAoB,GAAG;EAC3BC,UAAU,EAAEF,eAAe;EAC3BG,WAAW,EAAEJ;AACf,CAAC;AASD,OAAO,MAAMK,oBAAoB,GAAGP,YAAY,CAC9C;EACEQ,kBAAkB,EAAE;IAClBC,IAAI,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAAuE;IAC9FC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRJ,IAAI,EAAEC,MAEL;IACDE,OAAO,EAAE;EACX,CAAC;EACDE,KAAK,EAAE;IACLL,IAAI,EAAEC,MAA8C;IACpDE,OAAO,EAAE;EACX,CAAC;EACDG,MAAM,EAAE;IACNN,IAAI,EAAEC,MAAM;IACZE,OAAO,EAAE;EACX,CAAC;EACDI,MAAM,EAAE;IACNP,IAAI,EAAE,CAACQ,MAAM,EAAEP,MAAM,EAAEQ,KAAK;EAC9B,CAAC;EACDC,cAAc,EAAE;IACdV,IAAI,EAAEQ,MAAM;IACZL,OAAO,EAAE;EACX;AACF,CAAC,EACD,YACF,CAAC;AAED,OAAO,SAASQ,aAAaA,CAACC,KAAU,EAAEC,KAAsB,EAAE;EAChE,MAAMC,gBAAgB,GAAGzB,GAAG,CAAqB,CAAC;EAClD,MAAM0B,UAAU,GAAG1B,GAAG,CAAmB,CAAC;EAC1C,MAAM2B,gBAAgB,GAAG3B,GAAG,CAAgB,CAAC,CAAC,CAAC;EAE/CG,cAAc,CACZ,MAAM,CAAC,EAAEqB,KAAK,CAACI,MAAM,CAACC,KAAK,IAAIN,KAAK,CAACb,kBAAkB,CAAC,EACvDoB,KAAK,IAAK;IACT7B,KAAK,CAAC,MAAMsB,KAAK,CAACb,kBAAkB,EAAEoB,KAAK,CAAC;IAC5C/B,cAAc,CAAC,MAAM;MACnB0B,gBAAgB,CAACI,KAAK,GAAGE,SAAS;IACpC,CAAC,CAAC;IAEF,IAAI,OAAOR,KAAK,CAACb,kBAAkB,KAAK,UAAU,EAAE;MAClDe,gBAAgB,CAACI,KAAK,GAAGN,KAAK,CAACb,kBAAkB,CAC/Ca,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB,CAAC,MAAM;MACL,MAAMO,QAAQ,GACZ1B,oBAAoB,CAClBiB,KAAK,CAACb,kBAAkB,CACzB;MACHe,gBAAgB,CAACI,KAAK,GAAGG,QAAQ,GAC/BT,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB;EACF,CACF,CAAC;EAEDQ,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEC,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC;EAE9DrC,cAAc,CAAC,MAAM;IACnBkC,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;IAC9CV,gBAAgB,CAACI,KAAK,GAAGE,SAAS;EACpC,CAAC,CAAC;EAEF,SAASI,QAAQA,CAACG,CAAQ,EAAE;IAC1Bb,gBAAgB,CAACI,KAAK,GAAGS,CAAC,CAAC;EAC7B;EAEA,OAAO;IACLZ,UAAU;IACVC,gBAAgB;IAChBF;EACF,CAAC;AACH"}
@@ -1,5 +1,5 @@
1
1
  import { computed, nextTick, onScopeDispose, ref, watch } from "vue";
2
- import { MutableRect, getOverflow } from "../../util/Rect.mjs";
2
+ import { MutableRect, getOverflow } from "../../util/rect.mjs";
3
3
  import { $computed } from "../../util/reactivity.mjs";
4
4
  import { getScrollParents } from "../../util/scroll.mjs";
5
5
  import { getBoundingPureRect, pixelCeil, pixelRound, toStyleSizeValue } from "../../util/ui.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"levitation.mjs","names":["computed","nextTick","onScopeDispose","ref","watch","MutableRect","getOverflow","$computed","getScrollParents","getBoundingPureRect","pixelCeil","pixelRound","toStyleSizeValue","anchorToPoint","getOffset","flipAlign","flipCorner","flipSide","getAxis","parseAnchor","clamp","applyLevitation","props","state","coordinate","coordinateStyles","contentEl","baseEl","active","isRtl","minWidth","minHeight","maxWidth","maxHeight","map","key","val","parseFloat","isNaN","Infinity","offset","Array","isArray","split","length","push","observe","resizeObserver","ResizeObserver","updateCoordinate","_ref","_ref2","neoBaseEl","neoContentEl","oldBaseEl","oldContentEl","unobserve","immediate","disconnect","getIgnoreInsetRect","el","rect","x","style","left","y","top","$base","value","$content","requestAnimationFrame","viewportMargin","baseRect","getBoundingClientRect","contentRect","scrollParents","document","documentElement","viewport","reduce","box","scrollBox","width","clientWidth","height","clientHeight","Math","max","min","right","bottom","undefined","preferredAnchor","preferredOrigin","location","position","align","parsedAnchor","parsedOrigin","origin","side","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","reset","forEach","newPlacement","flip","newOverflows","Object","assign","transformOrigin","result"],"sources":["../../../src/composables/coordinate/levitation.ts"],"sourcesContent":["import type { CSSProperties, Ref } from 'vue';\nimport { computed, nextTick, onScopeDispose, ref, watch } from \"vue\";\n\nimport { MutableRect, Rect, getOverflow } from '../../util/Rect';\nimport { $computed } from '../../util/reactivity';\nimport { getScrollParents } from '../../util/scroll';\nimport { getBoundingPureRect, pixelCeil, pixelRound, toStyleSizeValue } from \"../../util/ui\";\nimport {\n anchorToPoint,\n getOffset,\n} from './utils/point';\n\nimport { CoordinateState } from './types';\nimport { Anchor, flipAlign, flipCorner, flipSide, getAxis, parseAnchor } from \"../../util/anchor\";\nimport { clamp } from \"../../util/common\";\n\nexport function applyLevitation(\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) {\n const { contentEl, baseEl, active } = state;\n\n const isRtl = ref(false);\n\n /* Content Limitations */\n const [minWidth, minHeight, maxWidth, maxHeight] = (\n ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const\n ).map((key) => {\n return computed(() => {\n const val = parseFloat(props[key]!);\n return isNaN(val) ? Infinity : val;\n });\n });\n\n /* Offset */\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];\n });\n\n /* Observing Update */\n let observe = false;\n const resizeObserver = new ResizeObserver(() => {\n if (observe) updateCoordinate();\n });\n watch(\n [state.baseEl, state.contentEl],\n ([neoBaseEl, neoContentEl], [oldBaseEl, oldContentEl]) => {\n if (oldBaseEl) resizeObserver.unobserve(oldBaseEl);\n if (neoBaseEl) resizeObserver.observe(neoBaseEl);\n\n if (oldContentEl) resizeObserver.unobserve(oldContentEl);\n if (neoContentEl) resizeObserver.observe(neoContentEl);\n },\n { immediate: true },\n );\n onScopeDispose(() => {\n resizeObserver.disconnect();\n });\n\n function getIgnoreInsetRect(el: HTMLElement) {\n const rect = getBoundingPureRect(el);\n rect.x -= parseFloat(el.style.left || '0');\n rect.y -= parseFloat(el.style.top || '0');\n return rect;\n }\n\n function updateCoordinate(): any {\n observe = false;\n const $base = baseEl.value;\n const $content = contentEl.value;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => (observe = true));\n });\n\n if (!$base || !$content) return;\n\n const { viewportMargin } = props;\n\n const baseRect = $base.getBoundingClientRect();\n const contentRect = getIgnoreInsetRect($content);\n const scrollParents = getScrollParents($content);\n\n if (scrollParents.length < 1) {\n scrollParents.push(document.documentElement);\n }\n\n /**\n * Viewport area\n */\n const viewport = scrollParents.reduce<MutableRect>(\n (box: MutableRect | undefined, el) => {\n const rect = el.getBoundingClientRect();\n const scrollBox = new MutableRect({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n });\n\n if (box) {\n return new MutableRect({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width:\n Math.min(box.right, scrollBox.right) -\n Math.max(box.left, scrollBox.left),\n height:\n Math.min(box.bottom, scrollBox.bottom) -\n Math.max(box.top, scrollBox.top),\n });\n }\n return scrollBox;\n },\n undefined!,\n );\n viewport.x += viewportMargin;\n viewport.y += viewportMargin;\n viewport.width -= viewportMargin * 2;\n viewport.height -= viewportMargin * 2;\n\n const { preferredAnchor, preferredOrigin } = $computed(() => {\n const location = `${props.position} ${props.align}` as Anchor;\n const parsedAnchor = parseAnchor(location, false);\n const parsedOrigin =\n props.origin === 'overlap'\n ? parsedAnchor\n : props.origin === 'auto'\n ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, false);\n\n // Some combinations of props may produce an invalid origin\n if (\n parsedAnchor.side === parsedOrigin.side &&\n parsedAnchor.align === flipAlign(parsedOrigin).align\n ) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n };\n }\n });\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n };\n\n function checkOverflow(_placement: typeof placement) {\n const box = new MutableRect(contentRect);\n const targetPoint = anchorToPoint(_placement.anchor, baseRect);\n const contentPoint = anchorToPoint(_placement.origin, box);\n\n let { x, y } = getOffset(targetPoint, contentPoint);\n\n switch (_placement.anchor.side) {\n case 'top':\n y -= offset.value[0];\n break;\n case 'bottom':\n y += offset.value[0];\n break;\n case 'left':\n x -= offset.value[0];\n break;\n case 'right':\n x += offset.value[0];\n break;\n }\n\n switch (_placement.anchor.align) {\n case 'top':\n y -= offset.value[1];\n break;\n case 'bottom':\n y += offset.value[1];\n break;\n case 'left':\n x -= offset.value[1];\n break;\n case 'right':\n x += offset.value[1];\n break;\n }\n\n box.x += x;\n box.y += y;\n\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n\n const overflows = getOverflow(box, viewport);\n\n return { overflows, x, y };\n }\n\n let x = 0;\n let y = 0;\n const available = { x: 0, y: 0 };\n const flipped = { x: false, y: false };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n break;\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement);\n\n x += _x;\n y += _y;\n\n contentRect.x += _x;\n contentRect.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n\n let reset = false;\n ['x', 'y'].forEach((key) => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = {\n anchor: { ...placement.anchor },\n origin: { ...placement.origin },\n };\n const flip =\n key === 'x'\n ? axis === 'y'\n ? flipAlign\n : flipSide\n : axis === 'y'\n ? flipSide\n : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const { overflows: newOverflows } = checkOverflow(newPlacement);\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2\n ) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentRect.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentRect.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentRect.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentRect.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentRect, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n\n x += overflows.x.before;\n contentRect.x += overflows.x.before;\n y += overflows.y.before;\n contentRect.y += overflows.y.before;\n }\n\n break;\n }\n\n const axis = getAxis(placement.anchor);\n\n Object.assign(coordinateStyles.value, {\n '--y-levitation-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n top: toStyleSizeValue(pixelRound(y)),\n left: isRtl.value ? undefined : toStyleSizeValue(pixelRound(x)),\n right: isRtl.value ? toStyleSizeValue(pixelRound(-x)) : undefined,\n minWidth: toStyleSizeValue(\n axis === 'y'\n ? Math.min(minWidth.value, baseRect.width)\n : minWidth.value,\n ),\n maxWidth: toStyleSizeValue(\n pixelCeil(\n clamp(\n available.x,\n minWidth.value === Infinity ? 0 : minWidth.value,\n maxWidth.value,\n ),\n ),\n ),\n maxHeight: toStyleSizeValue(\n pixelCeil(\n clamp(\n available.y,\n minHeight.value === Infinity ? 0 : minHeight.value,\n maxHeight.value,\n ),\n ),\n ),\n });\n\n return {\n available,\n contentRect,\n };\n }\n\n watch(\n () => [\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateCoordinate(),\n );\n\n nextTick(() => {\n const result = updateCoordinate();\n if (!result) return;\n const { available, contentRect } = result;\n if (contentRect.height > available.y) {\n requestAnimationFrame(() => {\n updateCoordinate();\n requestAnimationFrame(() => {\n updateCoordinate();\n });\n });\n }\n });\n\n return {\n updateCoordinate,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"levitation.mjs","names":["computed","nextTick","onScopeDispose","ref","watch","MutableRect","getOverflow","$computed","getScrollParents","getBoundingPureRect","pixelCeil","pixelRound","toStyleSizeValue","anchorToPoint","getOffset","flipAlign","flipCorner","flipSide","getAxis","parseAnchor","clamp","applyLevitation","props","state","coordinate","coordinateStyles","contentEl","baseEl","active","isRtl","minWidth","minHeight","maxWidth","maxHeight","map","key","val","parseFloat","isNaN","Infinity","offset","Array","isArray","split","length","push","observe","resizeObserver","ResizeObserver","updateCoordinate","_ref","_ref2","neoBaseEl","neoContentEl","oldBaseEl","oldContentEl","unobserve","immediate","disconnect","getIgnoreInsetRect","el","rect","x","style","left","y","top","$base","value","$content","requestAnimationFrame","viewportMargin","baseRect","getBoundingClientRect","contentRect","scrollParents","document","documentElement","viewport","reduce","box","scrollBox","width","clientWidth","height","clientHeight","Math","max","min","right","bottom","undefined","preferredAnchor","preferredOrigin","location","position","align","parsedAnchor","parsedOrigin","origin","side","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","reset","forEach","newPlacement","flip","newOverflows","Object","assign","transformOrigin","result"],"sources":["../../../src/composables/coordinate/levitation.ts"],"sourcesContent":["import type { CSSProperties, Ref } from 'vue';\nimport { computed, nextTick, onScopeDispose, ref, watch } from \"vue\";\n\nimport { MutableRect, Rect, getOverflow } from '../../util/rect';\nimport { $computed } from '../../util/reactivity';\nimport { getScrollParents } from '../../util/scroll';\nimport { getBoundingPureRect, pixelCeil, pixelRound, toStyleSizeValue } from \"../../util/ui\";\nimport {\n anchorToPoint,\n getOffset,\n} from './utils/point';\n\nimport { CoordinateState } from './types';\nimport { Anchor, flipAlign, flipCorner, flipSide, getAxis, parseAnchor } from \"../../util/anchor\";\nimport { clamp } from \"../../util/common\";\n\nexport function applyLevitation(\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) {\n const { contentEl, baseEl, active } = state;\n\n const isRtl = ref(false);\n\n /* Content Limitations */\n const [minWidth, minHeight, maxWidth, maxHeight] = (\n ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const\n ).map((key) => {\n return computed(() => {\n const val = parseFloat(props[key]!);\n return isNaN(val) ? Infinity : val;\n });\n });\n\n /* Offset */\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];\n });\n\n /* Observing Update */\n let observe = false;\n const resizeObserver = new ResizeObserver(() => {\n if (observe) updateCoordinate();\n });\n watch(\n [state.baseEl, state.contentEl],\n ([neoBaseEl, neoContentEl], [oldBaseEl, oldContentEl]) => {\n if (oldBaseEl) resizeObserver.unobserve(oldBaseEl);\n if (neoBaseEl) resizeObserver.observe(neoBaseEl);\n\n if (oldContentEl) resizeObserver.unobserve(oldContentEl);\n if (neoContentEl) resizeObserver.observe(neoContentEl);\n },\n { immediate: true },\n );\n onScopeDispose(() => {\n resizeObserver.disconnect();\n });\n\n function getIgnoreInsetRect(el: HTMLElement) {\n const rect = getBoundingPureRect(el);\n rect.x -= parseFloat(el.style.left || '0');\n rect.y -= parseFloat(el.style.top || '0');\n return rect;\n }\n\n function updateCoordinate(): any {\n observe = false;\n const $base = baseEl.value;\n const $content = contentEl.value;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => (observe = true));\n });\n\n if (!$base || !$content) return;\n\n const { viewportMargin } = props;\n\n const baseRect = $base.getBoundingClientRect();\n const contentRect = getIgnoreInsetRect($content);\n const scrollParents = getScrollParents($content);\n\n if (scrollParents.length < 1) {\n scrollParents.push(document.documentElement);\n }\n\n /**\n * Viewport area\n */\n const viewport = scrollParents.reduce<MutableRect>(\n (box: MutableRect | undefined, el) => {\n const rect = el.getBoundingClientRect();\n const scrollBox = new MutableRect({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n });\n\n if (box) {\n return new MutableRect({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width:\n Math.min(box.right, scrollBox.right) -\n Math.max(box.left, scrollBox.left),\n height:\n Math.min(box.bottom, scrollBox.bottom) -\n Math.max(box.top, scrollBox.top),\n });\n }\n return scrollBox;\n },\n undefined!,\n );\n viewport.x += viewportMargin;\n viewport.y += viewportMargin;\n viewport.width -= viewportMargin * 2;\n viewport.height -= viewportMargin * 2;\n\n const { preferredAnchor, preferredOrigin } = $computed(() => {\n const location = `${props.position} ${props.align}` as Anchor;\n const parsedAnchor = parseAnchor(location, false);\n const parsedOrigin =\n props.origin === 'overlap'\n ? parsedAnchor\n : props.origin === 'auto'\n ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, false);\n\n // Some combinations of props may produce an invalid origin\n if (\n parsedAnchor.side === parsedOrigin.side &&\n parsedAnchor.align === flipAlign(parsedOrigin).align\n ) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n };\n }\n });\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n };\n\n function checkOverflow(_placement: typeof placement) {\n const box = new MutableRect(contentRect);\n const targetPoint = anchorToPoint(_placement.anchor, baseRect);\n const contentPoint = anchorToPoint(_placement.origin, box);\n\n let { x, y } = getOffset(targetPoint, contentPoint);\n\n switch (_placement.anchor.side) {\n case 'top':\n y -= offset.value[0];\n break;\n case 'bottom':\n y += offset.value[0];\n break;\n case 'left':\n x -= offset.value[0];\n break;\n case 'right':\n x += offset.value[0];\n break;\n }\n\n switch (_placement.anchor.align) {\n case 'top':\n y -= offset.value[1];\n break;\n case 'bottom':\n y += offset.value[1];\n break;\n case 'left':\n x -= offset.value[1];\n break;\n case 'right':\n x += offset.value[1];\n break;\n }\n\n box.x += x;\n box.y += y;\n\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n\n const overflows = getOverflow(box, viewport);\n\n return { overflows, x, y };\n }\n\n let x = 0;\n let y = 0;\n const available = { x: 0, y: 0 };\n const flipped = { x: false, y: false };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n break;\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement);\n\n x += _x;\n y += _y;\n\n contentRect.x += _x;\n contentRect.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n\n let reset = false;\n ['x', 'y'].forEach((key) => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = {\n anchor: { ...placement.anchor },\n origin: { ...placement.origin },\n };\n const flip =\n key === 'x'\n ? axis === 'y'\n ? flipAlign\n : flipSide\n : axis === 'y'\n ? flipSide\n : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const { overflows: newOverflows } = checkOverflow(newPlacement);\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2\n ) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentRect.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentRect.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentRect.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentRect.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentRect, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n\n x += overflows.x.before;\n contentRect.x += overflows.x.before;\n y += overflows.y.before;\n contentRect.y += overflows.y.before;\n }\n\n break;\n }\n\n const axis = getAxis(placement.anchor);\n\n Object.assign(coordinateStyles.value, {\n '--y-levitation-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n top: toStyleSizeValue(pixelRound(y)),\n left: isRtl.value ? undefined : toStyleSizeValue(pixelRound(x)),\n right: isRtl.value ? toStyleSizeValue(pixelRound(-x)) : undefined,\n minWidth: toStyleSizeValue(\n axis === 'y'\n ? Math.min(minWidth.value, baseRect.width)\n : minWidth.value,\n ),\n maxWidth: toStyleSizeValue(\n pixelCeil(\n clamp(\n available.x,\n minWidth.value === Infinity ? 0 : minWidth.value,\n maxWidth.value,\n ),\n ),\n ),\n maxHeight: toStyleSizeValue(\n pixelCeil(\n clamp(\n available.y,\n minHeight.value === Infinity ? 0 : minHeight.value,\n maxHeight.value,\n ),\n ),\n ),\n });\n\n return {\n available,\n contentRect,\n };\n }\n\n watch(\n () => [\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateCoordinate(),\n );\n\n nextTick(() => {\n const result = updateCoordinate();\n if (!result) return;\n const { available, contentRect } = result;\n if (contentRect.height > available.y) {\n requestAnimationFrame(() => {\n updateCoordinate();\n requestAnimationFrame(() => {\n updateCoordinate();\n });\n });\n }\n });\n\n return {\n updateCoordinate,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"point.mjs","names":["elementToViewport","point","offset","x","y","viewportToElement","getOffset","a","b","anchorToPoint","anchor","box","side","align","width","height"],"sources":["../../../../src/composables/coordinate/utils/point.ts"],"sourcesContent":["import { MutableRect } from '../../../util/Rect';\nimport { ParsedAnchor } from '../../../util/anchor';\n\ntype Point = { x: number; y: number };\ndeclare class As<T extends string> {\n private as: T;\n}\ntype ElementPoint = Point & As<'element'>;\ntype ViewportPoint = Point & As<'viewport'>;\ntype Offset = Point & As<'offset'>;\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport(\n point: ElementPoint,\n offset: Offset | MutableRect,\n) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y,\n } as ViewportPoint;\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement(\n point: ViewportPoint,\n offset: Offset | MutableRect,\n) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y,\n } as ElementPoint;\n}\n\n/** Get the difference between two points */\nexport function getOffset<T extends Point>(a: T, b: T) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n } as Offset;\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint(\n anchor: ParsedAnchor,\n box: MutableRect,\n): ViewportPoint {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const { side, align } = anchor;\n\n const x: number =\n align === 'left'\n ? 0\n : align === 'center'\n ? box.width / 2\n : align === 'right'\n ? box.width\n : align;\n const y: number =\n side === 'top' ? 0 : side === 'bottom' ? box.height : side;\n\n return elementToViewport({ x, y } as ElementPoint, box);\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const { side, align } = anchor;\n\n const x: number = side === 'left' ? 0 : side === 'right' ? box.width : side;\n const y: number =\n align === 'top'\n ? 0\n : align === 'center'\n ? box.height / 2\n : align === 'bottom'\n ? box.height\n : align;\n\n return elementToViewport({ x, y } as ElementPoint, box);\n }\n\n return elementToViewport(\n {\n x: box.width / 2,\n y: box.height / 2,\n } as ElementPoint,\n box,\n );\n}\n"],"mappings":"AAWA;AACA,OAAO,SAASA,iBAAiBA,CAC/BC,KAAmB,EACnBC,MAA4B,EAC5B;EACA,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASC,iBAAiBA,CAC/BJ,KAAoB,EACpBC,MAA4B,EAC5B;EACA,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,SAASA,CAAkBC,CAAI,EAAEC,CAAI,EAAE;EACrD,OAAO;IACLL,CAAC,EAAEI,CAAC,CAACJ,CAAC,GAAGK,CAAC,CAACL,CAAC;IACZC,CAAC,EAAEG,CAAC,CAACH,CAAC,GAAGI,CAAC,CAACJ;EACb,CAAC;AACH;;AAEA;AACA,OAAO,SAASK,aAAaA,CAC3BC,MAAoB,EACpBC,GAAgB,EACD;EACf,IAAID,MAAM,CAACE,IAAI,KAAK,KAAK,IAAIF,MAAM,CAACE,IAAI,KAAK,QAAQ,EAAE;IACrD,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GACbU,KAAK,KAAK,MAAM,GACZ,CAAC,GACDA,KAAK,KAAK,QAAQ,GAClBF,GAAG,CAACG,KAAK,GAAG,CAAC,GACbD,KAAK,KAAK,OAAO,GACjBF,GAAG,CAACG,KAAK,GACTD,KAAK;IACX,MAAMT,CAAS,GACbQ,IAAI,KAAK,KAAK,GAAG,CAAC,GAAGA,IAAI,KAAK,QAAQ,GAAGD,GAAG,CAACI,MAAM,GAAGH,IAAI;IAE5D,OAAOZ,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD,CAAC,MAAM,IAAID,MAAM,CAACE,IAAI,KAAK,MAAM,IAAIF,MAAM,CAACE,IAAI,KAAK,OAAO,EAAE;IAC5D,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GAAGS,IAAI,KAAK,MAAM,GAAG,CAAC,GAAGA,IAAI,KAAK,OAAO,GAAGD,GAAG,CAACG,KAAK,GAAGF,IAAI;IAC3E,MAAMR,CAAS,GACbS,KAAK,KAAK,KAAK,GACX,CAAC,GACDA,KAAK,KAAK,QAAQ,GAClBF,GAAG,CAACI,MAAM,GAAG,CAAC,GACdF,KAAK,KAAK,QAAQ,GAClBF,GAAG,CAACI,MAAM,GACVF,KAAK;IAEX,OAAOb,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD;EAEA,OAAOX,iBAAiB,CACtB;IACEG,CAAC,EAAEQ,GAAG,CAACG,KAAK,GAAG,CAAC;IAChBV,CAAC,EAAEO,GAAG,CAACI,MAAM,GAAG;EAClB,CAAC,EACDJ,GACF,CAAC;AACH"}
1
+ {"version":3,"file":"point.mjs","names":["elementToViewport","point","offset","x","y","viewportToElement","getOffset","a","b","anchorToPoint","anchor","box","side","align","width","height"],"sources":["../../../../src/composables/coordinate/utils/point.ts"],"sourcesContent":["import { MutableRect } from '../../../util/rect';\nimport { ParsedAnchor } from '../../../util/anchor';\n\ntype Point = { x: number; y: number };\ndeclare class As<T extends string> {\n private as: T;\n}\ntype ElementPoint = Point & As<'element'>;\ntype ViewportPoint = Point & As<'viewport'>;\ntype Offset = Point & As<'offset'>;\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport(\n point: ElementPoint,\n offset: Offset | MutableRect,\n) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y,\n } as ViewportPoint;\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement(\n point: ViewportPoint,\n offset: Offset | MutableRect,\n) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y,\n } as ElementPoint;\n}\n\n/** Get the difference between two points */\nexport function getOffset<T extends Point>(a: T, b: T) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n } as Offset;\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint(\n anchor: ParsedAnchor,\n box: MutableRect,\n): ViewportPoint {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const { side, align } = anchor;\n\n const x: number =\n align === 'left'\n ? 0\n : align === 'center'\n ? box.width / 2\n : align === 'right'\n ? box.width\n : align;\n const y: number =\n side === 'top' ? 0 : side === 'bottom' ? box.height : side;\n\n return elementToViewport({ x, y } as ElementPoint, box);\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const { side, align } = anchor;\n\n const x: number = side === 'left' ? 0 : side === 'right' ? box.width : side;\n const y: number =\n align === 'top'\n ? 0\n : align === 'center'\n ? box.height / 2\n : align === 'bottom'\n ? box.height\n : align;\n\n return elementToViewport({ x, y } as ElementPoint, box);\n }\n\n return elementToViewport(\n {\n x: box.width / 2,\n y: box.height / 2,\n } as ElementPoint,\n box,\n );\n}\n"],"mappings":"AAWA;AACA,OAAO,SAASA,iBAAiBA,CAC/BC,KAAmB,EACnBC,MAA4B,EAC5B;EACA,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASC,iBAAiBA,CAC/BJ,KAAoB,EACpBC,MAA4B,EAC5B;EACA,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,SAASA,CAAkBC,CAAI,EAAEC,CAAI,EAAE;EACrD,OAAO;IACLL,CAAC,EAAEI,CAAC,CAACJ,CAAC,GAAGK,CAAC,CAACL,CAAC;IACZC,CAAC,EAAEG,CAAC,CAACH,CAAC,GAAGI,CAAC,CAACJ;EACb,CAAC;AACH;;AAEA;AACA,OAAO,SAASK,aAAaA,CAC3BC,MAAoB,EACpBC,GAAgB,EACD;EACf,IAAID,MAAM,CAACE,IAAI,KAAK,KAAK,IAAIF,MAAM,CAACE,IAAI,KAAK,QAAQ,EAAE;IACrD,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GACbU,KAAK,KAAK,MAAM,GACZ,CAAC,GACDA,KAAK,KAAK,QAAQ,GAClBF,GAAG,CAACG,KAAK,GAAG,CAAC,GACbD,KAAK,KAAK,OAAO,GACjBF,GAAG,CAACG,KAAK,GACTD,KAAK;IACX,MAAMT,CAAS,GACbQ,IAAI,KAAK,KAAK,GAAG,CAAC,GAAGA,IAAI,KAAK,QAAQ,GAAGD,GAAG,CAACI,MAAM,GAAGH,IAAI;IAE5D,OAAOZ,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD,CAAC,MAAM,IAAID,MAAM,CAACE,IAAI,KAAK,MAAM,IAAIF,MAAM,CAACE,IAAI,KAAK,OAAO,EAAE;IAC5D,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GAAGS,IAAI,KAAK,MAAM,GAAG,CAAC,GAAGA,IAAI,KAAK,OAAO,GAAGD,GAAG,CAACG,KAAK,GAAGF,IAAI;IAC3E,MAAMR,CAAS,GACbS,KAAK,KAAK,KAAK,GACX,CAAC,GACDA,KAAK,KAAK,QAAQ,GAClBF,GAAG,CAACI,MAAM,GAAG,CAAC,GACdF,KAAK,KAAK,QAAQ,GAClBF,GAAG,CAACI,MAAM,GACVF,KAAK;IAEX,OAAOb,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD;EAEA,OAAOX,iBAAiB,CACtB;IACEG,CAAC,EAAEQ,GAAG,CAACG,KAAK,GAAG,CAAC;IAChBV,CAAC,EAAEO,GAAG,CAACI,MAAM,GAAG;EAClB,CAAC,EACDJ,GACF,CAAC;AACH"}
@@ -0,0 +1,26 @@
1
+ import { computed } from 'vue';
2
+ import { toStyleSizeValue } from "../util/ui.mjs";
3
+ import { propsFactory } from "../util/vue-component.mjs";
4
+ const dimensionPropsOptions = {
5
+ minWidth: [Number, String],
6
+ width: [Number, String],
7
+ maxWidth: [Number, String],
8
+ minHeight: [Number, String],
9
+ height: [Number, String],
10
+ maxHeight: [Number, String]
11
+ };
12
+ export const pressDimensionPropsOptions = propsFactory(dimensionPropsOptions, 'dimension');
13
+ export function useDimension(props) {
14
+ const dimensionStyles = computed(() => ({
15
+ minWidth: toStyleSizeValue(props.minWidth),
16
+ width: toStyleSizeValue(props.width),
17
+ maxWidth: toStyleSizeValue(props.maxWidth),
18
+ minHeight: toStyleSizeValue(props.minHeight),
19
+ height: toStyleSizeValue(props.height),
20
+ maxHeight: toStyleSizeValue(props.maxHeight)
21
+ }));
22
+ return {
23
+ dimensionStyles
24
+ };
25
+ }
26
+ //# sourceMappingURL=dimension.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension.mjs","names":["computed","toStyleSizeValue","propsFactory","dimensionPropsOptions","minWidth","Number","String","width","maxWidth","minHeight","height","maxHeight","pressDimensionPropsOptions","useDimension","props","dimensionStyles"],"sources":["../../src/composables/dimension.ts"],"sourcesContent":["import { ExtractPropTypes, PropType, computed } from 'vue';\n\nimport { toStyleSizeValue } from '../util/ui';\nimport { propsFactory } from '../util/vue-component';\n\nconst dimensionPropsOptions = {\n minWidth: [Number, String] as PropType<number | string>,\n width: [Number, String] as PropType<number | string>,\n maxWidth: [Number, String] as PropType<number | string>,\n minHeight: [Number, String] as PropType<number | string>,\n height: [Number, String] as PropType<number | string>,\n maxHeight: [Number, String] as PropType<number | string>,\n};\n\nexport const pressDimensionPropsOptions = propsFactory(\n dimensionPropsOptions,\n 'dimension',\n);\n\nexport function useDimension(\n props: ExtractPropTypes<typeof dimensionPropsOptions>,\n) {\n const dimensionStyles = computed(() => ({\n minWidth: toStyleSizeValue(props.minWidth),\n width: toStyleSizeValue(props.width),\n maxWidth: toStyleSizeValue(props.maxWidth),\n minHeight: toStyleSizeValue(props.minHeight),\n height: toStyleSizeValue(props.height),\n maxHeight: toStyleSizeValue(props.maxHeight),\n }));\n\n return {\n dimensionStyles,\n };\n}\n"],"mappings":"AAAA,SAAqCA,QAAQ,QAAQ,KAAK;AAAC,SAElDC,gBAAgB;AAAA,SAChBC,YAAY;AAErB,MAAMC,qBAAqB,GAAG;EAC5BC,QAAQ,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;EACvDC,KAAK,EAAE,CAACF,MAAM,EAAEC,MAAM,CAA8B;EACpDE,QAAQ,EAAE,CAACH,MAAM,EAAEC,MAAM,CAA8B;EACvDG,SAAS,EAAE,CAACJ,MAAM,EAAEC,MAAM,CAA8B;EACxDI,MAAM,EAAE,CAACL,MAAM,EAAEC,MAAM,CAA8B;EACrDK,SAAS,EAAE,CAACN,MAAM,EAAEC,MAAM;AAC5B,CAAC;AAED,OAAO,MAAMM,0BAA0B,GAAGV,YAAY,CACpDC,qBAAqB,EACrB,WACF,CAAC;AAED,OAAO,SAASU,YAAYA,CAC1BC,KAAqD,EACrD;EACA,MAAMC,eAAe,GAAGf,QAAQ,CAAC,OAAO;IACtCI,QAAQ,EAAEH,gBAAgB,CAACa,KAAK,CAACV,QAAQ,CAAC;IAC1CG,KAAK,EAAEN,gBAAgB,CAACa,KAAK,CAACP,KAAK,CAAC;IACpCC,QAAQ,EAAEP,gBAAgB,CAACa,KAAK,CAACN,QAAQ,CAAC;IAC1CC,SAAS,EAAER,gBAAgB,CAACa,KAAK,CAACL,SAAS,CAAC;IAC5CC,MAAM,EAAET,gBAAgB,CAACa,KAAK,CAACJ,MAAM,CAAC;IACtCC,SAAS,EAAEV,gBAAgB,CAACa,KAAK,CAACH,SAAS;EAC7C,CAAC,CAAC,CAAC;EAEH,OAAO;IACLI;EACF,CAAC;AACH"}
@@ -0,0 +1,29 @@
1
+ import { propsFactory } from "../util/vue-component.mjs";
2
+ import { computed } from "vue";
3
+ import { useModelDuplex } from "./communication.mjs";
4
+ const focusPropsOptions = {
5
+ focused: Boolean,
6
+ 'onUpdate:focused': Function
7
+ };
8
+ export const pressFocusPropsOptions = propsFactory(focusPropsOptions, 'focus');
9
+ export function useFocus(props, className) {
10
+ const focused = useModelDuplex(props, 'focused');
11
+ function whenFocus() {
12
+ focused.value = true;
13
+ }
14
+ function whenBlur() {
15
+ focused.value = false;
16
+ }
17
+ const focusedClasses = computed(() => {
18
+ return {
19
+ [`${className}--focused`]: focused.value
20
+ };
21
+ });
22
+ return {
23
+ focused,
24
+ whenFocus,
25
+ whenBlur,
26
+ focusedClasses
27
+ };
28
+ }
29
+ //# sourceMappingURL=focus.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.mjs","names":["propsFactory","computed","useModelDuplex","focusPropsOptions","focused","Boolean","Function","pressFocusPropsOptions","useFocus","props","className","whenFocus","value","whenBlur","focusedClasses"],"sources":["../../src/composables/focus.ts"],"sourcesContent":["import { propsFactory } from \"../util/vue-component\";\r\nimport { computed, ExtractPropTypes, PropType } from \"vue\";\r\nimport { useModelDuplex } from \"./communication\";\r\n\r\nconst focusPropsOptions = {\r\n focused: Boolean,\r\n 'onUpdate:focused': Function as PropType<(v: boolean) => void>,\r\n};\r\n\r\nexport const pressFocusPropsOptions = propsFactory(focusPropsOptions, 'focus');\r\n\r\nexport function useFocus(props: ExtractPropTypes<typeof focusPropsOptions>, className: string) {\r\n const focused = useModelDuplex(props, 'focused');\r\n\r\n function whenFocus() {\r\n focused.value = true;\r\n }\r\n\r\n function whenBlur() {\r\n focused.value = false;\r\n }\r\n\r\n const focusedClasses = computed(() => {\r\n return {\r\n [`${className}--focused`]: focused.value,\r\n }\r\n })\r\n\r\n return {\r\n focused,\r\n whenFocus,\r\n whenBlur,\r\n focusedClasses,\r\n }\r\n}\r\n"],"mappings":"SAASA,YAAY;AACrB,SAASC,QAAQ,QAAoC,KAAK;AAAC,SAClDC,cAAc;AAEvB,MAAMC,iBAAiB,GAAG;EACxBC,OAAO,EAAEC,OAAO;EAChB,kBAAkB,EAAEC;AACtB,CAAC;AAED,OAAO,MAAMC,sBAAsB,GAAGP,YAAY,CAACG,iBAAiB,EAAE,OAAO,CAAC;AAE9E,OAAO,SAASK,QAAQA,CAACC,KAAiD,EAAEC,SAAiB,EAAE;EAC7F,MAAMN,OAAO,GAAGF,cAAc,CAACO,KAAK,EAAE,SAAS,CAAC;EAEhD,SAASE,SAASA,CAAA,EAAG;IACnBP,OAAO,CAACQ,KAAK,GAAG,IAAI;EACtB;EAEA,SAASC,QAAQA,CAAA,EAAG;IAClBT,OAAO,CAACQ,KAAK,GAAG,KAAK;EACvB;EAEA,MAAME,cAAc,GAAGb,QAAQ,CAAC,MAAM;IACpC,OAAO;MACL,CAAE,GAAES,SAAU,WAAU,GAAGN,OAAO,CAACQ;IACrC,CAAC;EACH,CAAC,CAAC;EAEF,OAAO;IACLR,OAAO;IACPO,SAAS;IACTE,QAAQ;IACRC;EACF,CAAC;AACH"}
@@ -0,0 +1,58 @@
1
+ import { computed } from 'vue';
2
+ import { pressItemsPropsOptions } from "../abstract/items.mjs";
3
+ import { deepEqual, getPropertyFromItem } from "../util/common.mjs";
4
+ import { propsFactory } from "../util/vue-component.mjs";
5
+ const listItemsPropsOptions = {
6
+ ...pressItemsPropsOptions({
7
+ itemKey: 'value',
8
+ itemChildren: false
9
+ }),
10
+ returnItem: Boolean
11
+ };
12
+ export const pressListItemsPropsOptions = propsFactory(listItemsPropsOptions, 'list-items');
13
+ export function refineListItems(props, items) {
14
+ return items.map(item => {
15
+ return refineListItem(props, item);
16
+ });
17
+ }
18
+ export function refineListItem(props, item) {
19
+ const text = getPropertyFromItem(item, props.itemText, item);
20
+ const value = props.returnItem ? item : getPropertyFromItem(item, props.itemKey, text);
21
+ const children = getPropertyFromItem(item, props.itemChildren);
22
+ return {
23
+ value,
24
+ text,
25
+ props: {
26
+ value,
27
+ text
28
+ },
29
+ children: Array.isArray(children) ? refineListItems(props, children) : undefined,
30
+ raw: item
31
+ };
32
+ }
33
+ export function useItems(props) {
34
+ const items = computed(() => refineListItems(props, props.items));
35
+ return useRefineListItems(items, v => refineListItem(props, v));
36
+ }
37
+ export function useRefineListItems(items, refine) {
38
+ function toRefineItems(values) {
39
+ return values.filter(v => v !== null || items.value.some(item => item.value === null)).map(v => {
40
+ const found = items.value.find(item => deepEqual(v, item.value));
41
+ return found ?? refine(v);
42
+ });
43
+ }
44
+ function toEmitItems(items) {
45
+ return items.map(_ref => {
46
+ let {
47
+ value
48
+ } = _ref;
49
+ return value;
50
+ });
51
+ }
52
+ return {
53
+ items,
54
+ toEmitItems,
55
+ toRefineItems
56
+ };
57
+ }
58
+ //# sourceMappingURL=list-items.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-items.mjs","names":["computed","pressItemsPropsOptions","deepEqual","getPropertyFromItem","propsFactory","listItemsPropsOptions","itemKey","itemChildren","returnItem","Boolean","pressListItemsPropsOptions","refineListItems","props","items","map","item","refineListItem","text","itemText","value","children","Array","isArray","undefined","raw","useItems","useRefineListItems","v","refine","toRefineItems","values","filter","some","found","find","toEmitItems","_ref"],"sources":["../../src/composables/list-items.ts"],"sourcesContent":["import type { ExtractPropTypes, Ref } from 'vue';\nimport { computed } from 'vue';\n\nimport { pressItemsPropsOptions } from '../abstract/items';\nimport { deepEqual, getPropertyFromItem } from '../util/common';\nimport { propsFactory } from '../util/vue-component';\n\nexport interface ListItem<T = any> {\n value: any;\n text: string;\n props: {\n [key: string]: any;\n value: any;\n text: string;\n };\n children?: ListItem<T>[];\n raw: T;\n}\n\nconst listItemsPropsOptions = {\n ...pressItemsPropsOptions({\n itemKey: 'value',\n itemChildren: false,\n }),\n returnItem: Boolean,\n};\n\ntype ListItemProps = ExtractPropTypes<typeof listItemsPropsOptions>;\n\nexport const pressListItemsPropsOptions = propsFactory(\n listItemsPropsOptions,\n 'list-items',\n);\n\nexport function refineListItems(\n props: Omit<ListItemProps, 'items'>,\n items: any[],\n) {\n return items.map((item) => {\n return refineListItem(props, item);\n });\n}\n\nexport function refineListItem(\n props: Omit<ListItemProps, 'items'>,\n item: any,\n): ListItem {\n const text = getPropertyFromItem(item, props.itemText, item);\n const value = props.returnItem\n ? item\n : getPropertyFromItem(item, props.itemKey, text);\n const children = getPropertyFromItem(item, props.itemChildren);\n\n return {\n value,\n text,\n props: {\n value,\n text,\n },\n children: Array.isArray(children)\n ? refineListItems(props, children)\n : undefined,\n raw: item,\n };\n}\n\nexport function useItems(props: ListItemProps) {\n const items = computed(() => refineListItems(props, props.items));\n return useRefineListItems(items, (v) => refineListItem(props, v));\n}\n\nexport function useRefineListItems<T extends { value: unknown }>(\n items: Ref<T[]>,\n refine: (value: unknown) => T,\n) {\n function toRefineItems(values: any[]): T[] {\n return values\n .filter(\n (v) => v !== null || items.value.some((item) => item.value === null),\n )\n .map((v) => {\n const found = items.value.find((item) => deepEqual(v, item.value));\n return found ?? refine(v);\n });\n }\n\n function toEmitItems(items: T[]) {\n return items.map(({ value }) => value);\n }\n\n return {\n items,\n toEmitItems,\n toRefineItems,\n };\n}\n"],"mappings":"AACA,SAASA,QAAQ,QAAQ,KAAK;AAAC,SAEtBC,sBAAsB;AAAA,SACtBC,SAAS,EAAEC,mBAAmB;AAAA,SAC9BC,YAAY;AAcrB,MAAMC,qBAAqB,GAAG;EAC5B,GAAGJ,sBAAsB,CAAC;IACxBK,OAAO,EAAE,OAAO;IAChBC,YAAY,EAAE;EAChB,CAAC,CAAC;EACFC,UAAU,EAAEC;AACd,CAAC;AAID,OAAO,MAAMC,0BAA0B,GAAGN,YAAY,CACpDC,qBAAqB,EACrB,YACF,CAAC;AAED,OAAO,SAASM,eAAeA,CAC7BC,KAAmC,EACnCC,KAAY,EACZ;EACA,OAAOA,KAAK,CAACC,GAAG,CAAEC,IAAI,IAAK;IACzB,OAAOC,cAAc,CAACJ,KAAK,EAAEG,IAAI,CAAC;EACpC,CAAC,CAAC;AACJ;AAEA,OAAO,SAASC,cAAcA,CAC5BJ,KAAmC,EACnCG,IAAS,EACC;EACV,MAAME,IAAI,GAAGd,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACM,QAAQ,EAAEH,IAAI,CAAC;EAC5D,MAAMI,KAAK,GAAGP,KAAK,CAACJ,UAAU,GAC1BO,IAAI,GACJZ,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACN,OAAO,EAAEW,IAAI,CAAC;EAClD,MAAMG,QAAQ,GAAGjB,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACL,YAAY,CAAC;EAE9D,OAAO;IACLY,KAAK;IACLF,IAAI;IACJL,KAAK,EAAE;MACLO,KAAK;MACLF;IACF,CAAC;IACDG,QAAQ,EAAEC,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,GAC7BT,eAAe,CAACC,KAAK,EAAEQ,QAAQ,CAAC,GAChCG,SAAS;IACbC,GAAG,EAAET;EACP,CAAC;AACH;AAEA,OAAO,SAASU,QAAQA,CAACb,KAAoB,EAAE;EAC7C,MAAMC,KAAK,GAAGb,QAAQ,CAAC,MAAMW,eAAe,CAACC,KAAK,EAAEA,KAAK,CAACC,KAAK,CAAC,CAAC;EACjE,OAAOa,kBAAkB,CAACb,KAAK,EAAGc,CAAC,IAAKX,cAAc,CAACJ,KAAK,EAAEe,CAAC,CAAC,CAAC;AACnE;AAEA,OAAO,SAASD,kBAAkBA,CAChCb,KAAe,EACfe,MAA6B,EAC7B;EACA,SAASC,aAAaA,CAACC,MAAa,EAAO;IACzC,OAAOA,MAAM,CACVC,MAAM,CACJJ,CAAC,IAAKA,CAAC,KAAK,IAAI,IAAId,KAAK,CAACM,KAAK,CAACa,IAAI,CAAEjB,IAAI,IAAKA,IAAI,CAACI,KAAK,KAAK,IAAI,CACrE,CAAC,CACAL,GAAG,CAAEa,CAAC,IAAK;MACV,MAAMM,KAAK,GAAGpB,KAAK,CAACM,KAAK,CAACe,IAAI,CAAEnB,IAAI,IAAKb,SAAS,CAACyB,CAAC,EAAEZ,IAAI,CAACI,KAAK,CAAC,CAAC;MAClE,OAAOc,KAAK,IAAIL,MAAM,CAACD,CAAC,CAAC;IAC3B,CAAC,CAAC;EACN;EAEA,SAASQ,WAAWA,CAACtB,KAAU,EAAE;IAC/B,OAAOA,KAAK,CAACC,GAAG,CAACsB,IAAA;MAAA,IAAC;QAAEjB;MAAM,CAAC,GAAAiB,IAAA;MAAA,OAAKjB,KAAK;IAAA,EAAC;EACxC;EAEA,OAAO;IACLN,KAAK;IACLsB,WAAW;IACXN;EACF,CAAC;AACH"}
@@ -0,0 +1,45 @@
1
+ import { APCAcontrast, sRGBtoY } from "../../util/color/apca.mjs";
2
+ import { rgbFromHex } from "../../util/color/conversion.mjs";
3
+ export function createThemes(options) {
4
+ const acc = {};
5
+ for (const [themeKey, themeOptions] of Object.entries(options)) {
6
+ const theme = acc[themeKey] = {
7
+ ...themeOptions,
8
+ colors: {
9
+ ...themeOptions.colors
10
+ },
11
+ variables: {
12
+ ...themeOptions.variables
13
+ }
14
+ };
15
+ for (const colorName of Object.keys(theme.colors)) {
16
+ if (/^on-[a-z]/.test(colorName) || theme.colors[`on-${colorName}`]) continue;
17
+ const onColor = `on-${colorName}`;
18
+ const color = theme.colors[colorName];
19
+ const colorY = sRGBtoY(rgbFromHex(color) ?? [0, 0, 0]);
20
+ const blackContrast = Math.abs(APCAcontrast(sRGBtoY([0, 0, 0]), colorY));
21
+ const whiteContrast = Math.abs(APCAcontrast(sRGBtoY([255, 255, 255]), colorY));
22
+ if (/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})/i.test(color)) {
23
+ theme.colors[colorName] = rgbFromHex(color)?.join(', ');
24
+ }
25
+
26
+ // Prefer white text if both have an acceptable contrast ratio
27
+ theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '255, 255, 255' : '0, 0, 0';
28
+ }
29
+ }
30
+ return acc;
31
+ }
32
+ export function createPalette(options) {
33
+ const acc = {};
34
+ const {
35
+ scaleMethod,
36
+ colors
37
+ } = options;
38
+ for (const [colorName, value] of Object.entries(colors)) {
39
+ if (typeof value === 'string') {
40
+ acc[colorName] = value;
41
+ }
42
+ }
43
+ return acc;
44
+ }
45
+ //# sourceMappingURL=factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.mjs","names":["APCAcontrast","sRGBtoY","rgbFromHex","createThemes","options","acc","themeKey","themeOptions","Object","entries","theme","colors","variables","colorName","keys","test","onColor","color","colorY","blackContrast","Math","abs","whiteContrast","join","min","createPalette","scaleMethod","value"],"sources":["../../../src/composables/theme/factory.ts"],"sourcesContent":["import { APCAcontrast, sRGBtoY } from '../../util/color/apca';\nimport { rgbFromHex } from '../../util/color/conversion';\nimport { ThemeDefinition } from './types';\n\nexport function createThemes(options: Record<string, any>) {\n const acc: Record<'light' | 'dark' | string, ThemeDefinition> = {};\n\n for (const [themeKey, themeOptions] of Object.entries(options)) {\n const theme = (acc[themeKey] = {\n ...themeOptions,\n colors: {\n ...themeOptions.colors,\n },\n variables: {\n ...themeOptions.variables,\n },\n });\n\n for (const colorName of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(colorName) || theme.colors[`on-${colorName}`])\n continue;\n\n const onColor = `on-${colorName}`;\n const color = theme.colors[colorName];\n const colorY = sRGBtoY(rgbFromHex(color!) ?? [0, 0, 0]);\n\n const blackContrast = Math.abs(\n APCAcontrast(sRGBtoY([0, 0, 0]), colorY) as number,\n );\n const whiteContrast = Math.abs(\n APCAcontrast(sRGBtoY([255, 255, 255]), colorY) as number,\n );\n\n if (/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})/i.test(color)) {\n theme.colors[colorName] = rgbFromHex(color)?.join(', ');\n }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] =\n whiteContrast > Math.min(blackContrast, 50)\n ? '255, 255, 255'\n : '0, 0, 0';\n }\n }\n\n return acc;\n}\n\nexport function createPalette(options: Record<string, string | any>) {\n const acc: Record<string, string> = {};\n const { scaleMethod, colors } = options;\n for (const [colorName, value] of Object.entries(colors)) {\n if (typeof value === 'string') {\n acc[colorName] = value;\n }\n }\n return acc;\n}\n"],"mappings":"SAASA,YAAY,EAAEC,OAAO;AAAA,SACrBC,UAAU;AAGnB,OAAO,SAASC,YAAYA,CAACC,OAA4B,EAAE;EACzD,MAAMC,GAAuD,GAAG,CAAC,CAAC;EAElE,KAAK,MAAM,CAACC,QAAQ,EAAEC,YAAY,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,OAAO,CAAC,EAAE;IAC9D,MAAMM,KAAK,GAAIL,GAAG,CAACC,QAAQ,CAAC,GAAG;MAC7B,GAAGC,YAAY;MACfI,MAAM,EAAE;QACN,GAAGJ,YAAY,CAACI;MAClB,CAAC;MACDC,SAAS,EAAE;QACT,GAAGL,YAAY,CAACK;MAClB;IACF,CAAE;IAEF,KAAK,MAAMC,SAAS,IAAIL,MAAM,CAACM,IAAI,CAACJ,KAAK,CAACC,MAAM,CAAC,EAAE;MACjD,IAAI,WAAW,CAACI,IAAI,CAACF,SAAS,CAAC,IAAIH,KAAK,CAACC,MAAM,CAAE,MAAKE,SAAU,EAAC,CAAC,EAChE;MAEF,MAAMG,OAAO,GAAI,MAAKH,SAAU,EAAC;MACjC,MAAMI,KAAK,GAAGP,KAAK,CAACC,MAAM,CAACE,SAAS,CAAC;MACrC,MAAMK,MAAM,GAAGjB,OAAO,CAACC,UAAU,CAACe,KAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAEvD,MAAME,aAAa,GAAGC,IAAI,CAACC,GAAG,CAC5BrB,YAAY,CAACC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEiB,MAAM,CACzC,CAAC;MACD,MAAMI,aAAa,GAAGF,IAAI,CAACC,GAAG,CAC5BrB,YAAY,CAACC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAEiB,MAAM,CAC/C,CAAC;MAED,IAAI,0CAA0C,CAACH,IAAI,CAACE,KAAK,CAAC,EAAE;QAC1DP,KAAK,CAACC,MAAM,CAACE,SAAS,CAAC,GAAGX,UAAU,CAACe,KAAK,CAAC,EAAEM,IAAI,CAAC,IAAI,CAAC;MACzD;;MAEA;MACAb,KAAK,CAACC,MAAM,CAACK,OAAO,CAAC,GACnBM,aAAa,GAAGF,IAAI,CAACI,GAAG,CAACL,aAAa,EAAE,EAAE,CAAC,GACvC,eAAe,GACf,SAAS;IACjB;EACF;EAEA,OAAOd,GAAG;AACZ;AAEA,OAAO,SAASoB,aAAaA,CAACrB,OAAqC,EAAE;EACnE,MAAMC,GAA2B,GAAG,CAAC,CAAC;EACtC,MAAM;IAAEqB,WAAW;IAAEf;EAAO,CAAC,GAAGP,OAAO;EACvC,KAAK,MAAM,CAACS,SAAS,EAAEc,KAAK,CAAC,IAAInB,MAAM,CAACC,OAAO,CAACE,MAAM,CAAC,EAAE;IACvD,IAAI,OAAOgB,KAAK,KAAK,QAAQ,EAAE;MAC7BtB,GAAG,CAACQ,SAAS,CAAC,GAAGc,KAAK;IACxB;EACF;EACA,OAAOtB,GAAG;AACZ"}
@@ -0,0 +1,14 @@
1
+ export function cssClass(selector, content) {
2
+ return [`${selector} {\n`, ...content.map(c => ` ${c}\n`), `}\n`];
3
+ }
4
+ export function cssVariables(variables) {
5
+ let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
6
+ return Object.entries(variables).map(_ref => {
7
+ let [property, value] = _ref;
8
+ return cssVariable(`${prefix}-${property}`, value);
9
+ });
10
+ }
11
+ export function cssVariable(property, value) {
12
+ return `--y-${property}: ${value};`;
13
+ }
14
+ //# sourceMappingURL=helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.mjs","names":["cssClass","selector","content","map","c","cssVariables","variables","prefix","arguments","length","undefined","Object","entries","_ref","property","value","cssVariable"],"sources":["../../../src/composables/theme/helper.ts"],"sourcesContent":["export function cssClass(selector: string, content: string[]) {\n return [`${selector} {\\n`, ...content.map((c) => ` ${c}\\n`), `}\\n`];\n}\n\nexport function cssVariables(\n variables: Record<string, string>,\n prefix: string = '',\n) {\n return Object.entries(variables).map(([property, value]) => {\n return cssVariable(`${prefix}-${property}`, value);\n });\n}\n\nexport function cssVariable(property: string, value: string) {\n return `--y-${property}: ${value};`;\n}\n"],"mappings":"AAAA,OAAO,SAASA,QAAQA,CAACC,QAAgB,EAAEC,OAAiB,EAAE;EAC5D,OAAO,CAAE,GAAED,QAAS,MAAK,EAAE,GAAGC,OAAO,CAACC,GAAG,CAAEC,CAAC,IAAM,KAAIA,CAAE,IAAG,CAAC,EAAG,KAAI,CAAC;AACtE;AAEA,OAAO,SAASC,YAAYA,CAC1BC,SAAiC,EAEjC;EAAA,IADAC,MAAc,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEnB,OAAOG,MAAM,CAACC,OAAO,CAACN,SAAS,CAAC,CAACH,GAAG,CAACU,IAAA,IAAuB;IAAA,IAAtB,CAACC,QAAQ,EAAEC,KAAK,CAAC,GAAAF,IAAA;IACrD,OAAOG,WAAW,CAAE,GAAET,MAAO,IAAGO,QAAS,EAAC,EAAEC,KAAK,CAAC;EACpD,CAAC,CAAC;AACJ;AAEA,OAAO,SAASC,WAAWA,CAACF,QAAgB,EAAEC,KAAa,EAAE;EAC3D,OAAQ,OAAMD,QAAS,KAAIC,KAAM,GAAE;AACrC"}