@mgdis/mg-components 6.9.0 → 6.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/cjs/events.utils-D5SAtkpQ.js +28 -0
  2. package/dist/cjs/events.utils-D5SAtkpQ.js.map +1 -0
  3. package/dist/cjs/index-CATFkm3O.js +4 -0
  4. package/dist/cjs/{index-CTU2m-sy.js → index-CfIlskRh.js} +20 -6
  5. package/dist/cjs/{index-CTU2m-sy.js.map → index-CfIlskRh.js.map} +1 -1
  6. package/dist/cjs/index.es-BCLy9yYb.js +250 -0
  7. package/dist/cjs/index.es-BCLy9yYb.js.map +1 -0
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/mg-action-more_37.cjs.entry.js +382 -373
  10. package/dist/cjs/mg-action-more_37.cjs.entry.js.map +1 -1
  11. package/dist/cjs/mg-alert.cjs.entry.js +7 -7
  12. package/dist/cjs/mg-components.cjs.js +1 -1
  13. package/dist/cjs/mg-input-combobox.cjs.entry.js +774 -0
  14. package/dist/cjs/mg-input-combobox.cjs.entry.js.map +1 -0
  15. package/dist/cjs/mg-input-combobox.entry.cjs.js.map +1 -0
  16. package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js +16 -14
  17. package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js.map +1 -1
  18. package/dist/cjs/mg-input-rich-text-editor.entry.cjs.js.map +1 -1
  19. package/dist/cjs/mg-loader.cjs.entry.js +5 -5
  20. package/dist/cjs/mg-progress.cjs.entry.js +11 -11
  21. package/dist/collection/collection-manifest.json +1 -0
  22. package/dist/collection/components/atoms/mg-button/mg-button.js +3 -2
  23. package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -1
  24. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +47 -57
  25. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -1
  26. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.js +2 -0
  27. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.js.map +1 -0
  28. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.js +1443 -0
  29. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.js.map +1 -0
  30. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +1 -1
  31. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +2 -2
  32. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -1
  33. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +1 -1
  34. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +1 -1
  35. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/editor/editor.scss +1 -0
  36. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.js +3 -3
  37. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.js.map +1 -1
  38. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +1 -1
  39. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +1 -1
  40. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +1 -1
  41. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +1 -1
  42. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.js +2 -2
  43. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.js.map +1 -1
  44. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.js +3 -3
  45. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.js.map +1 -1
  46. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +2 -2
  47. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -1
  48. package/dist/collection/components/molecules/mg-alert/mg-alert.js +1 -1
  49. package/dist/collection/components/molecules/mg-details/mg-details.js +1 -1
  50. package/dist/collection/components/molecules/mg-form/mg-form.js +1 -1
  51. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +1 -1
  52. package/dist/collection/components/molecules/mg-loader/mg-loader.js +1 -1
  53. package/dist/collection/components/molecules/mg-message/mg-message.js +2 -2
  54. package/dist/collection/components/molecules/mg-modal/mg-modal.js +2 -2
  55. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +3 -3
  56. package/dist/collection/components/molecules/mg-panel/mg-panel.js +1 -1
  57. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +1 -1
  58. package/dist/collection/components/molecules/mg-popover/mg-popover.js +55 -81
  59. package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -1
  60. package/dist/collection/components/molecules/mg-progress/mg-progress.js +1 -1
  61. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +1 -1
  62. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +6 -5
  63. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -1
  64. package/dist/collection/locales/en/messages.json +8 -1
  65. package/dist/collection/locales/fr/messages.json +8 -1
  66. package/dist/collection/utils/behaviors.utils.js +3 -3
  67. package/dist/collection/utils/behaviors.utils.js.map +1 -1
  68. package/dist/collection/utils/events.utils.js +22 -0
  69. package/dist/collection/utils/events.utils.js.map +1 -0
  70. package/dist/collection/utils/floating-ui.utils.js +46 -2
  71. package/dist/collection/utils/floating-ui.utils.js.map +1 -1
  72. package/dist/components/events.utils.js +26 -0
  73. package/dist/components/events.utils.js.map +1 -0
  74. package/dist/components/floating-ui.utils.js +47 -3
  75. package/dist/components/floating-ui.utils.js.map +1 -1
  76. package/dist/components/index.es.js +136 -43
  77. package/dist/components/index.es.js.map +1 -1
  78. package/dist/components/index2.js +18 -4
  79. package/dist/components/index2.js.map +1 -1
  80. package/dist/components/mg-action-more.js +8 -8
  81. package/dist/components/mg-action-more.js.map +1 -1
  82. package/dist/components/mg-alert.js +6 -6
  83. package/dist/components/mg-badge2.js +6 -6
  84. package/dist/components/mg-button2.js +9 -8
  85. package/dist/components/mg-button2.js.map +1 -1
  86. package/dist/components/mg-character-left2.js +4 -4
  87. package/dist/components/mg-details.js +4 -4
  88. package/dist/components/mg-details.js.map +1 -1
  89. package/dist/components/mg-form.js +8 -8
  90. package/dist/components/mg-icon2.js +6 -6
  91. package/dist/components/mg-illustrated-message.js +6 -6
  92. package/dist/components/mg-input-checkbox.js +9 -9
  93. package/dist/components/mg-input-combobox.d.ts +11 -0
  94. package/dist/components/mg-input-combobox.js +897 -0
  95. package/dist/components/mg-input-combobox.js.map +1 -0
  96. package/dist/components/mg-input-date.js +18 -18
  97. package/dist/components/mg-input-date.js.map +1 -1
  98. package/dist/components/mg-input-numeric.js +16 -16
  99. package/dist/components/mg-input-numeric.js.map +1 -1
  100. package/dist/components/mg-input-password.js +5 -5
  101. package/dist/components/mg-input-password.js.map +1 -1
  102. package/dist/components/mg-input-radio.js +8 -8
  103. package/dist/components/mg-input-rich-text-editor.js +15 -13
  104. package/dist/components/mg-input-rich-text-editor.js.map +1 -1
  105. package/dist/components/mg-input-select2.js +9 -9
  106. package/dist/components/mg-input-select2.js.map +1 -1
  107. package/dist/components/mg-input-text2.js +11 -11
  108. package/dist/components/mg-input-text2.js.map +1 -1
  109. package/dist/components/mg-input-textarea.js +9 -9
  110. package/dist/components/mg-input-textarea.js.map +1 -1
  111. package/dist/components/mg-input-title2.js +4 -4
  112. package/dist/components/mg-input-toggle.js +7 -7
  113. package/dist/components/mg-input2.js +8 -8
  114. package/dist/components/mg-item-more2.js +12 -12
  115. package/dist/components/mg-item-more2.js.map +1 -1
  116. package/dist/components/mg-loader.js +1 -70
  117. package/dist/components/mg-loader.js.map +1 -1
  118. package/dist/components/mg-loader2.js +75 -0
  119. package/dist/components/mg-loader2.js.map +1 -0
  120. package/dist/components/mg-menu-item2.js +13 -13
  121. package/dist/components/mg-menu-item2.js.map +1 -1
  122. package/dist/components/mg-message2.js +6 -6
  123. package/dist/components/mg-modal.js +10 -10
  124. package/dist/components/mg-pagination2.js +9 -9
  125. package/dist/components/mg-panel.js +10 -10
  126. package/dist/components/mg-popover-content2.js +5 -5
  127. package/dist/components/mg-popover-content2.js.map +1 -1
  128. package/dist/components/mg-popover2.js +60 -86
  129. package/dist/components/mg-popover2.js.map +1 -1
  130. package/dist/components/mg-progress.js +11 -11
  131. package/dist/components/mg-skip-links.js +3 -3
  132. package/dist/components/mg-table.js +6 -6
  133. package/dist/components/mg-tabs.js +18 -17
  134. package/dist/components/mg-tabs.js.map +1 -1
  135. package/dist/components/mg-tag.js +4 -4
  136. package/dist/components/mg-tooltip-content2.js +1 -1
  137. package/dist/components/mg-tooltip-content2.js.map +1 -1
  138. package/dist/components/mg-tooltip2.js +56 -66
  139. package/dist/components/mg-tooltip2.js.map +1 -1
  140. package/dist/esm/events.utils-yMGqY8YG.js +26 -0
  141. package/dist/esm/events.utils-yMGqY8YG.js.map +1 -0
  142. package/dist/esm/index-CAuxALt5.js +4 -0
  143. package/dist/esm/{index-SQlkEaXW.js → index-DmsGewMC.js} +20 -6
  144. package/dist/esm/{index-SQlkEaXW.js.map → index-DmsGewMC.js.map} +1 -1
  145. package/dist/esm/index.es-rLV3KFPd.js +223 -0
  146. package/dist/esm/index.es-rLV3KFPd.js.map +1 -0
  147. package/dist/esm/loader.js +1 -1
  148. package/dist/esm/mg-action-more_37.entry.js +383 -374
  149. package/dist/esm/mg-action-more_37.entry.js.map +1 -1
  150. package/dist/esm/mg-alert.entry.js +7 -7
  151. package/dist/esm/mg-components.js +1 -1
  152. package/dist/esm/mg-input-combobox.entry.js +772 -0
  153. package/dist/esm/mg-input-combobox.entry.js.map +1 -0
  154. package/dist/esm/mg-input-rich-text-editor.entry.js +17 -15
  155. package/dist/esm/mg-input-rich-text-editor.entry.js.map +1 -1
  156. package/dist/esm/{mg-input.conf-BtkqaBXm.js → mg-input.conf-CNgv8hc5.js} +3 -3
  157. package/dist/esm/{mg-input.conf-BtkqaBXm.js.map → mg-input.conf-CNgv8hc5.js.map} +1 -1
  158. package/dist/esm/mg-loader.entry.js +5 -5
  159. package/dist/esm/mg-progress.entry.js +11 -11
  160. package/dist/mg-components/locales/en/messages.json +8 -1
  161. package/dist/mg-components/locales/fr/messages.json +8 -1
  162. package/dist/mg-components/mg-components.esm.js +1 -1
  163. package/dist/mg-components/mg-input-combobox.entry.esm.js.map +1 -0
  164. package/dist/mg-components/mg-input-rich-text-editor.entry.esm.js.map +1 -1
  165. package/dist/mg-components/p-0f761c6c.entry.js +2 -0
  166. package/dist/mg-components/p-0f761c6c.entry.js.map +1 -0
  167. package/dist/mg-components/{p-650d6986.entry.js → p-73099ed7.entry.js} +3 -3
  168. package/dist/mg-components/p-73099ed7.entry.js.map +1 -0
  169. package/dist/mg-components/p-88f77de2.entry.js +2 -0
  170. package/dist/mg-components/{p-680948e3.entry.js.map → p-88f77de2.entry.js.map} +1 -1
  171. package/dist/mg-components/p-CNgv8hc5.js +2 -0
  172. package/dist/mg-components/{p-BtkqaBXm.js.map → p-CNgv8hc5.js.map} +1 -1
  173. package/dist/mg-components/p-DK9teKTo.js +2 -0
  174. package/dist/mg-components/{p-CqGbLOnN.js.map → p-DK9teKTo.js.map} +1 -1
  175. package/dist/mg-components/{p-583b3769.entry.js → p-ad66e7b3.entry.js} +2 -2
  176. package/dist/mg-components/p-cdbe689e.entry.js +2 -0
  177. package/dist/mg-components/{p-9acc6504.entry.js.map → p-cdbe689e.entry.js.map} +1 -1
  178. package/dist/mg-components/p-d3a868f0.entry.js +2 -0
  179. package/dist/mg-components/p-d3a868f0.entry.js.map +1 -0
  180. package/dist/mg-components/p-rLV3KFPd.js +2 -0
  181. package/dist/mg-components/p-rLV3KFPd.js.map +1 -0
  182. package/dist/mg-components/p-yMGqY8YG.js +2 -0
  183. package/dist/mg-components/p-yMGqY8YG.js.map +1 -0
  184. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +6 -5
  185. package/dist/types/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.d.ts +24 -0
  186. package/dist/types/components/molecules/inputs/mg-input-combobox/mg-input-combobox.d.ts +340 -0
  187. package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +5 -9
  188. package/dist/types/components.d.ts +247 -2
  189. package/dist/types/utils/events.utils.d.ts +4 -0
  190. package/dist/types/utils/floating-ui.utils.d.ts +9 -1
  191. package/ide/intellij/web-types.json +400 -1
  192. package/ide/vscode/html-custom-data.json +332 -0
  193. package/package.json +12 -12
  194. package/dist/cjs/index.es-jXqiN1uw.js +0 -152
  195. package/dist/cjs/index.es-jXqiN1uw.js.map +0 -1
  196. package/dist/esm/index.es-DDBtzymI.js +0 -130
  197. package/dist/esm/index.es-DDBtzymI.js.map +0 -1
  198. package/dist/mg-components/p-650d6986.entry.js.map +0 -1
  199. package/dist/mg-components/p-680948e3.entry.js +0 -2
  200. package/dist/mg-components/p-9acc6504.entry.js +0 -2
  201. package/dist/mg-components/p-BtkqaBXm.js +0 -2
  202. package/dist/mg-components/p-CqGbLOnN.js +0 -2
  203. package/dist/mg-components/p-DDBtzymI.js +0 -2
  204. package/dist/mg-components/p-DDBtzymI.js.map +0 -1
  205. package/dist/mg-components/p-c0fb6f62.entry.js +0 -2
  206. package/dist/mg-components/p-c0fb6f62.entry.js.map +0 -1
  207. /package/dist/mg-components/{p-583b3769.entry.js.map → p-ad66e7b3.entry.js.map} +0 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Keyboard keys
3
+ */
4
+ export const Keys = {
5
+ TAB: 'Tab',
6
+ ENTER: 'Enter',
7
+ DOWN: 'Down',
8
+ UP: 'Up',
9
+ LEFT: 'Left',
10
+ RIGHT: 'Right',
11
+ ARROWDOWN: 'ArrowDown',
12
+ ARROWUP: 'ArrowUp',
13
+ ARROWRIGHT: 'ArrowRight',
14
+ ARROWLEFT: 'ArrowLeft',
15
+ HOME: 'Home',
16
+ END: 'End',
17
+ ESC: 'Esc',
18
+ ESCAPE: 'Escape',
19
+ NUMPADENTER: 'NumpadEnter',
20
+ SPACE: 'Space',
21
+ };
22
+ //# sourceMappingURL=events.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.utils.js","sourceRoot":"","sources":["../../src/utils/events.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAyC;IACxD,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;CACf,CAAC","sourcesContent":["/**\n * Keyboard keys\n */\nexport const Keys: Record<string, KeyboardEvent['key']> = {\n TAB: 'Tab',\n ENTER: 'Enter',\n DOWN: 'Down',\n UP: 'Up',\n LEFT: 'Left',\n RIGHT: 'Right',\n ARROWDOWN: 'ArrowDown',\n ARROWUP: 'ArrowUp',\n ARROWRIGHT: 'ArrowRight',\n ARROWLEFT: 'ArrowLeft',\n HOME: 'Home',\n END: 'End',\n ESC: 'Esc',\n ESCAPE: 'Escape',\n NUMPADENTER: 'NumpadEnter',\n SPACE: 'Space',\n};\n"]}
@@ -19,12 +19,56 @@ export const placements = [
19
19
  'left-start',
20
20
  'left-end',
21
21
  ];
22
+ // Alignments constants
23
+ export const alignments = ['start', null, 'end'];
22
24
  /**
23
25
  * FloatingUI Placement type guard
24
26
  * @param placement - value to check
25
27
  * @returns truthy if placement is valid
26
28
  */
27
29
  export const isFloatingUIPlacement = (placement) => placements.filter(p => !p.includes('auto')).includes(placement);
28
- // Alignments constants
29
- export const alignments = ['start', null, 'end'];
30
+ /**
31
+ * Round value by device pixel ratio
32
+ * @param value - value to round
33
+ * @returns rounded value
34
+ */
35
+ const roundByDPR = (value) => {
36
+ const dpr = window.devicePixelRatio || 1;
37
+ return Math.round(value * dpr) / dpr;
38
+ };
39
+ /**
40
+ * Get translation for tooltip
41
+ * @param x - x-axis value
42
+ * @param y - y-axis value
43
+ * @returns translation string
44
+ */
45
+ export const getTransformation = (x, y) => {
46
+ const tooltipX = isNaN(x) ? 0 : roundByDPR(x);
47
+ const tooltipY = isNaN(y) ? 0 : roundByDPR(y);
48
+ // No translation needed
49
+ if (tooltipX === 0 && tooltipY === 0)
50
+ return '';
51
+ // Only one axis needs translation
52
+ if (tooltipX === 0)
53
+ return `translateY(${tooltipY}px)`;
54
+ if (tooltipY === 0)
55
+ return `translateX(${tooltipX}px)`;
56
+ // Both axes need translation
57
+ return `translate(${tooltipX}px,${tooltipY}px)`;
58
+ };
59
+ // https://floating-ui.com/docs/arrow
60
+ // Unlike the floating element, which has both coordinates defined at all times, the arrow only has one defined.
61
+ // Due to this, either x or y will be undefined, depending on the side of placement.
62
+ // The above code uses `isNaN` to check for null and undefined simultaneously.
63
+ // Don't remove `isNaN`, because either value can be falsy (0), causing a bug!
64
+ export const numberToPx = (number) => {
65
+ if (number !== null && !isNaN(number)) {
66
+ if (number === 0)
67
+ return '0';
68
+ else
69
+ return `${number}px`;
70
+ }
71
+ else
72
+ return '';
73
+ };
30
74
  //# sourceMappingURL=floating-ui.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"floating-ui.utils.js","sourceRoot":"","sources":["../../src/utils/floating-ui.utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,KAAK;IACR,MAAM;IACN,YAAY;IACZ,UAAU;IACV,WAAW;IACX,SAAS;IACT,cAAc;IACd,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,UAAU;CACF,CAAC;AAOX;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAA0B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAE5I,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC","sourcesContent":["import { type Placement } from '@floating-ui/dom';\n\n/**\n * List of all possibles sides\n */\nexport const sides = ['top', 'right', 'bottom', 'left'] as const;\n\n/**\n * List of all possibles placements\n */\nexport const placements = [\n ...sides,\n 'auto',\n 'auto-start',\n 'auto-end',\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n 'right-start',\n 'right-end',\n 'left-start',\n 'left-end',\n] as const;\n\n/**\n * Define placement type\n */\nexport type ExtendedPlacement = Placement | (typeof placements)[number];\n\n/**\n * FloatingUI Placement type guard\n * @param placement - value to check\n * @returns truthy if placement is valid\n */\nexport const isFloatingUIPlacement = (placement): placement is Placement => placements.filter(p => !p.includes('auto')).includes(placement);\n\n// Alignments constants\nexport const alignments = ['start', null, 'end'] as const;\n"]}
1
+ {"version":3,"file":"floating-ui.utils.js","sourceRoot":"","sources":["../../src/utils/floating-ui.utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,KAAK;IACR,MAAM;IACN,YAAY;IACZ,UAAU;IACV,WAAW;IACX,SAAS;IACT,cAAc;IACd,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,UAAU;CACF,CAAC;AAOX,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAA0B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAE5I;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAE9C,wBAAwB;IACxB,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhD,kCAAkC;IAClC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,cAAc,QAAQ,KAAK,CAAC;IACvD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,cAAc,QAAQ,KAAK,CAAC;IAEvD,6BAA6B;IAC7B,OAAO,aAAa,QAAQ,MAAM,QAAQ,KAAK,CAAC;AAClD,CAAC,CAAC;AAEF,qCAAqC;AACrC,gHAAgH;AAChH,oFAAoF;AACpF,8EAA8E;AAC9E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAU,EAAE;IACnD,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;;YACxB,OAAO,GAAG,MAAM,IAAI,CAAC;IAC5B,CAAC;;QAAM,OAAO,EAAE,CAAC;AACnB,CAAC,CAAC","sourcesContent":["import { type Placement } from '@floating-ui/dom';\n\n/**\n * List of all possibles sides\n */\nexport const sides = ['top', 'right', 'bottom', 'left'] as const;\n\n/**\n * List of all possibles placements\n */\nexport const placements = [\n ...sides,\n 'auto',\n 'auto-start',\n 'auto-end',\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n 'right-start',\n 'right-end',\n 'left-start',\n 'left-end',\n] as const;\n\n/**\n * Define placement type\n */\nexport type ExtendedPlacement = Placement | (typeof placements)[number];\n\n// Alignments constants\nexport const alignments = ['start', null, 'end'] as const;\n\n/**\n * FloatingUI Placement type guard\n * @param placement - value to check\n * @returns truthy if placement is valid\n */\nexport const isFloatingUIPlacement = (placement): placement is Placement => placements.filter(p => !p.includes('auto')).includes(placement);\n\n/**\n * Round value by device pixel ratio\n * @param value - value to round\n * @returns rounded value\n */\nconst roundByDPR = (value: number) => {\n const dpr = window.devicePixelRatio || 1;\n return Math.round(value * dpr) / dpr;\n};\n\n/**\n * Get translation for tooltip\n * @param x - x-axis value\n * @param y - y-axis value\n * @returns translation string\n */\nexport const getTransformation = (x: number, y: number): string => {\n const tooltipX = isNaN(x) ? 0 : roundByDPR(x);\n const tooltipY = isNaN(y) ? 0 : roundByDPR(y);\n\n // No translation needed\n if (tooltipX === 0 && tooltipY === 0) return '';\n\n // Only one axis needs translation\n if (tooltipX === 0) return `translateY(${tooltipY}px)`;\n if (tooltipY === 0) return `translateX(${tooltipX}px)`;\n\n // Both axes need translation\n return `translate(${tooltipX}px,${tooltipY}px)`;\n};\n\n// https://floating-ui.com/docs/arrow\n// Unlike the floating element, which has both coordinates defined at all times, the arrow only has one defined.\n// Due to this, either x or y will be undefined, depending on the side of placement.\n// The above code uses `isNaN` to check for null and undefined simultaneously.\n// Don't remove `isNaN`, because either value can be falsy (0), causing a bug!\nexport const numberToPx = (number: number): string => {\n if (number !== null && !isNaN(number)) {\n if (number === 0) return '0';\n else return `${number}px`;\n } else return '';\n};\n"]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Keyboard keys
3
+ */
4
+ const Keys = {
5
+ TAB: 'Tab',
6
+ ENTER: 'Enter',
7
+ DOWN: 'Down',
8
+ UP: 'Up',
9
+ LEFT: 'Left',
10
+ RIGHT: 'Right',
11
+ ARROWDOWN: 'ArrowDown',
12
+ ARROWUP: 'ArrowUp',
13
+ ARROWRIGHT: 'ArrowRight',
14
+ ARROWLEFT: 'ArrowLeft',
15
+ HOME: 'Home',
16
+ END: 'End',
17
+ ESC: 'Esc',
18
+ ESCAPE: 'Escape',
19
+ NUMPADENTER: 'NumpadEnter',
20
+ SPACE: 'Space',
21
+ };
22
+
23
+ export { Keys as K };
24
+ //# sourceMappingURL=events.utils.js.map
25
+
26
+ //# sourceMappingURL=events.utils.js.map
@@ -0,0 +1 @@
1
+ {"file":"events.utils.js","mappings":"AAAA;;AAEG;AACU,MAAA,IAAI,GAAyC;AACxD,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,KAAK,EAAE,OAAO;;;;;","names":[],"sources":["src/utils/events.utils.ts"],"sourcesContent":["/**\n * Keyboard keys\n */\nexport const Keys: Record<string, KeyboardEvent['key']> = {\n TAB: 'Tab',\n ENTER: 'Enter',\n DOWN: 'Down',\n UP: 'Up',\n LEFT: 'Left',\n RIGHT: 'Right',\n ARROWDOWN: 'ArrowDown',\n ARROWUP: 'ArrowUp',\n ARROWRIGHT: 'ArrowRight',\n ARROWLEFT: 'ArrowLeft',\n HOME: 'Home',\n END: 'End',\n ESC: 'Esc',\n ESCAPE: 'Escape',\n NUMPADENTER: 'NumpadEnter',\n SPACE: 'Space',\n};\n"],"version":3}
@@ -1662,16 +1662,60 @@ const placements = [
1662
1662
  'left-start',
1663
1663
  'left-end',
1664
1664
  ];
1665
+ // Alignments constants
1666
+ const alignments = ['start', null, 'end'];
1665
1667
  /**
1666
1668
  * FloatingUI Placement type guard
1667
1669
  * @param placement - value to check
1668
1670
  * @returns truthy if placement is valid
1669
1671
  */
1670
1672
  const isFloatingUIPlacement = (placement) => placements.filter(p => !p.includes('auto')).includes(placement);
1671
- // Alignments constants
1672
- const alignments = ['start', null, 'end'];
1673
+ /**
1674
+ * Round value by device pixel ratio
1675
+ * @param value - value to round
1676
+ * @returns rounded value
1677
+ */
1678
+ const roundByDPR = (value) => {
1679
+ const dpr = window.devicePixelRatio || 1;
1680
+ return Math.round(value * dpr) / dpr;
1681
+ };
1682
+ /**
1683
+ * Get translation for tooltip
1684
+ * @param x - x-axis value
1685
+ * @param y - y-axis value
1686
+ * @returns translation string
1687
+ */
1688
+ const getTransformation = (x, y) => {
1689
+ const tooltipX = isNaN(x) ? 0 : roundByDPR(x);
1690
+ const tooltipY = isNaN(y) ? 0 : roundByDPR(y);
1691
+ // No translation needed
1692
+ if (tooltipX === 0 && tooltipY === 0)
1693
+ return '';
1694
+ // Only one axis needs translation
1695
+ if (tooltipX === 0)
1696
+ return `translateY(${tooltipY}px)`;
1697
+ if (tooltipY === 0)
1698
+ return `translateX(${tooltipX}px)`;
1699
+ // Both axes need translation
1700
+ return `translate(${tooltipX}px,${tooltipY}px)`;
1701
+ };
1702
+ // https://floating-ui.com/docs/arrow
1703
+ // Unlike the floating element, which has both coordinates defined at all times, the arrow only has one defined.
1704
+ // Due to this, either x or y will be undefined, depending on the side of placement.
1705
+ // The above code uses `isNaN` to check for null and undefined simultaneously.
1706
+ // Don't remove `isNaN`, because either value can be falsy (0), causing a bug!
1707
+ const numberToPx = (number) => {
1708
+ if (number !== null && !isNaN(number)) {
1709
+ if (number === 0)
1710
+ return '0';
1711
+ else
1712
+ return `${number}px`;
1713
+ }
1714
+ else
1715
+ return '';
1716
+ };
1673
1717
 
1674
- export { alignments as a, autoUpdate as b, computePosition as c, shift as d, arrow as e, flip as f, isFloatingUIPlacement as i, limitShift as l, offset as o, sides as s };
1718
+ export { alignments as a, autoUpdate as b, computePosition as c, shift as d, arrow as e, flip as f, getTransformation as g, isFloatingUIPlacement as i, limitShift as l, numberToPx as n, offset as o, sides as s };
1675
1719
  //# sourceMappingURL=floating-ui.utils.js.map
1676
1720
 
1677
1721
  //# sourceMappingURL=floating-ui.utils.js.map