q2-tecton-elements 1.62.6 → 1.63.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 (306) hide show
  1. package/dist/bundle-report.json +500 -374
  2. package/dist/cjs/{index-BuXzB2ML.js → index-CyqXtdz-.js} +2 -6
  3. package/dist/cjs/{index-BuXzB2ML.js.map → index-CyqXtdz-.js.map} +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/q2-action-group_2.cjs.entry.js +1 -1
  6. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  7. package/dist/cjs/q2-badge.cjs.entry.js +1 -1
  8. package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
  9. package/dist/cjs/q2-btn_2.cjs.entry.js +78 -76
  10. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  11. package/dist/cjs/q2-calendar.cjs.entry.js +13 -13
  12. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
  14. package/dist/cjs/q2-card.cjs.entry.js +20 -40
  15. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
  17. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  22. package/dist/cjs/q2-chart-bar.entry.cjs.js.map +1 -1
  23. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-checkbox.cjs.entry.js +4 -3
  26. package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
  27. package/dist/cjs/q2-checkbox.entry.cjs.js.map +1 -1
  28. package/dist/cjs/q2-context.cjs.entry.js +2 -2
  29. package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
  30. package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
  31. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-detail.entry.cjs.js.map +1 -1
  35. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
  39. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-formatted-text.cjs.entry.js +13 -4
  42. package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -1
  43. package/dist/cjs/q2-formatted-text.entry.cjs.js.map +1 -1
  44. package/dist/cjs/q2-icon.cjs.entry.js +7 -5
  45. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
  47. package/dist/cjs/q2-input.cjs.entry.js +16 -2
  48. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  49. package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
  50. package/dist/cjs/q2-item.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-link_2.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  53. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  54. package/dist/cjs/q2-meter.cjs.entry.js +1 -1
  55. package/dist/cjs/q2-modal.cjs.entry.js +1 -1
  56. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  57. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  58. package/dist/cjs/q2-option-list_2.cjs.entry.js +1 -1
  59. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  60. package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
  61. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  62. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  63. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  64. package/dist/cjs/q2-relative-time.cjs.entry.js +1 -1
  65. package/dist/cjs/q2-section.cjs.entry.js +1 -1
  66. package/dist/cjs/q2-select.cjs.entry.js +2 -2
  67. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  68. package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
  69. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  70. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  71. package/dist/cjs/q2-stepper.cjs.entry.js +6 -6
  72. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  73. package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
  74. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  75. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  76. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  77. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  78. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  79. package/dist/collection/components/q2-btn/q2-btn.js +4 -4
  80. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  81. package/dist/collection/components/q2-calendar/q2-calendar.js +12 -12
  82. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  83. package/dist/collection/components/q2-card/q2-card.css +77 -52
  84. package/dist/collection/components/q2-card/q2-card.js +80 -79
  85. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  86. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  87. package/dist/collection/components/q2-checkbox/q2-checkbox.css +7 -1
  88. package/dist/collection/components/q2-checkbox/q2-checkbox.js +2 -1
  89. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  90. package/dist/collection/components/q2-context/q2-context.css +1 -1
  91. package/dist/collection/components/q2-detail/q2-detail.css +5 -0
  92. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  93. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +34 -3
  94. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  95. package/dist/collection/components/q2-icon/assets/brand.symbol.svg +1 -1
  96. package/dist/collection/components/q2-icon/assets/cards.symbol.svg +2 -1
  97. package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
  98. package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
  99. package/dist/collection/components/q2-icon/q2-icon.js +4 -4
  100. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  101. package/dist/collection/components/q2-input/q2-input.js +19 -1
  102. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  103. package/dist/collection/components/q2-loading/q2-loading.js +95 -93
  104. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  105. package/dist/collection/components/q2-select/q2-select.js +1 -1
  106. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  107. package/dist/collection/components/q2-stepper/q2-stepper.js +6 -6
  108. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  109. package/dist/components/index2.js +1 -4
  110. package/dist/components/index2.js.map +1 -1
  111. package/dist/components/q2-btn2.js +5 -5
  112. package/dist/components/q2-btn2.js.map +1 -1
  113. package/dist/components/q2-calendar.js +12 -12
  114. package/dist/components/q2-calendar.js.map +1 -1
  115. package/dist/components/q2-card.js +22 -44
  116. package/dist/components/q2-card.js.map +1 -1
  117. package/dist/components/q2-chart-bar.js.map +1 -1
  118. package/dist/components/q2-chart-donut.js +1 -1
  119. package/dist/components/q2-checkbox2.js +3 -2
  120. package/dist/components/q2-checkbox2.js.map +1 -1
  121. package/dist/components/q2-context.js +2 -2
  122. package/dist/components/q2-context.js.map +1 -1
  123. package/dist/components/q2-data-table.js +1 -1
  124. package/dist/components/q2-detail.js +2 -2
  125. package/dist/components/q2-detail.js.map +1 -1
  126. package/dist/components/q2-dropdown.js.map +1 -1
  127. package/dist/components/q2-file-picker.js +1 -1
  128. package/dist/components/q2-formatted-text.js +17 -6
  129. package/dist/components/q2-formatted-text.js.map +1 -1
  130. package/dist/components/q2-icon2.js +6 -4
  131. package/dist/components/q2-icon2.js.map +1 -1
  132. package/dist/components/q2-input2.js +18 -2
  133. package/dist/components/q2-input2.js.map +1 -1
  134. package/dist/components/q2-item2.js +1 -1
  135. package/dist/components/q2-list2.js +1 -1
  136. package/dist/components/q2-loading2.js +76 -74
  137. package/dist/components/q2-loading2.js.map +1 -1
  138. package/dist/components/q2-message2.js +1 -1
  139. package/dist/components/q2-modal.js +1 -1
  140. package/dist/components/q2-option-list2.js +1 -1
  141. package/dist/components/q2-option2.js +1 -1
  142. package/dist/components/q2-pill.js +1 -1
  143. package/dist/components/q2-popover2.js +1 -1
  144. package/dist/components/q2-section.js +1 -1
  145. package/dist/components/q2-select2.js +2 -2
  146. package/dist/components/q2-select2.js.map +1 -1
  147. package/dist/components/q2-stepper.js +7 -7
  148. package/dist/components/q2-stepper.js.map +1 -1
  149. package/dist/components/q2-textarea.js +1 -1
  150. package/dist/esm/{index-LNnzUeDP.js → index-YJ5sXwiE.js} +3 -6
  151. package/dist/{q2-tecton-elements/index-LNnzUeDP.js.map → esm/index-YJ5sXwiE.js.map} +1 -1
  152. package/dist/esm/loader.js +1 -1
  153. package/dist/esm/q2-action-group_2.entry.js +1 -1
  154. package/dist/esm/q2-action-sheet.entry.js +1 -1
  155. package/dist/esm/q2-badge.entry.js +1 -1
  156. package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
  157. package/dist/esm/q2-btn_2.entry.js +78 -76
  158. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  159. package/dist/esm/q2-calendar.entry.js +13 -13
  160. package/dist/esm/q2-calendar.entry.js.map +1 -1
  161. package/dist/esm/q2-card.entry.js +20 -40
  162. package/dist/esm/q2-card.entry.js.map +1 -1
  163. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  164. package/dist/esm/q2-carousel.entry.js +1 -1
  165. package/dist/esm/q2-chart-area.entry.js +1 -1
  166. package/dist/esm/q2-chart-bar.entry.js +1 -1
  167. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  168. package/dist/esm/q2-chart-donut.entry.js +1 -1
  169. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  170. package/dist/esm/q2-checkbox.entry.js +4 -3
  171. package/dist/esm/q2-checkbox.entry.js.map +1 -1
  172. package/dist/esm/q2-context.entry.js +2 -2
  173. package/dist/esm/q2-context.entry.js.map +1 -1
  174. package/dist/esm/q2-data-table.entry.js +1 -1
  175. package/dist/esm/q2-detail.entry.js +2 -2
  176. package/dist/esm/q2-detail.entry.js.map +1 -1
  177. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  178. package/dist/esm/q2-dropdown.entry.js +1 -1
  179. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  180. package/dist/esm/q2-editable-field.entry.js +1 -1
  181. package/dist/esm/q2-file-picker.entry.js +1 -1
  182. package/dist/esm/q2-formatted-text.entry.js +13 -4
  183. package/dist/esm/q2-formatted-text.entry.js.map +1 -1
  184. package/dist/esm/q2-icon.entry.js +7 -5
  185. package/dist/esm/q2-icon.entry.js.map +1 -1
  186. package/dist/esm/q2-input.entry.js +16 -2
  187. package/dist/esm/q2-input.entry.js.map +1 -1
  188. package/dist/esm/q2-item.entry.js +1 -1
  189. package/dist/esm/q2-link_2.entry.js +1 -1
  190. package/dist/esm/q2-loc.entry.js +1 -1
  191. package/dist/esm/q2-message.entry.js +1 -1
  192. package/dist/esm/q2-meter.entry.js +1 -1
  193. package/dist/esm/q2-modal.entry.js +1 -1
  194. package/dist/esm/q2-month-picker.entry.js +1 -1
  195. package/dist/esm/q2-optgroup.entry.js +1 -1
  196. package/dist/esm/q2-option-list_2.entry.js +1 -1
  197. package/dist/esm/q2-option.entry.js +1 -1
  198. package/dist/esm/q2-pagination.entry.js +1 -1
  199. package/dist/esm/q2-pill.entry.js +1 -1
  200. package/dist/esm/q2-radio-group.entry.js +1 -1
  201. package/dist/esm/q2-radio.entry.js +1 -1
  202. package/dist/esm/q2-relative-time.entry.js +1 -1
  203. package/dist/esm/q2-section.entry.js +1 -1
  204. package/dist/esm/q2-select.entry.js +2 -2
  205. package/dist/esm/q2-select.entry.js.map +1 -1
  206. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  207. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  208. package/dist/esm/q2-stepper.entry.js +6 -6
  209. package/dist/esm/q2-stepper.entry.js.map +1 -1
  210. package/dist/esm/q2-tab-container.entry.js +1 -1
  211. package/dist/esm/q2-tag.entry.js +1 -1
  212. package/dist/esm/q2-tecton-elements.js +1 -1
  213. package/dist/esm/q2-textarea.entry.js +1 -1
  214. package/dist/esm/q2-tooltip.entry.js +1 -1
  215. package/dist/q2-tecton-elements/assets/brand.symbol.svg +1 -1
  216. package/dist/q2-tecton-elements/assets/cards.symbol.svg +2 -1
  217. package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
  218. package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
  219. package/dist/q2-tecton-elements/{index-LNnzUeDP.js → index-YJ5sXwiE.js} +3 -7
  220. package/dist/{esm/index-LNnzUeDP.js.map → q2-tecton-elements/index-YJ5sXwiE.js.map} +1 -1
  221. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +1 -1
  222. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1 -1
  223. package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
  224. package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
  225. package/dist/q2-tecton-elements/q2-btn_2.entry.js +78 -76
  226. package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
  227. package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
  228. package/dist/q2-tecton-elements/q2-calendar.entry.js +14 -14
  229. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
  230. package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
  231. package/dist/q2-tecton-elements/q2-card.entry.js +57 -78
  232. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
  233. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +1 -1
  234. package/dist/q2-tecton-elements/q2-carousel.entry.js +5 -5
  235. package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
  236. package/dist/q2-tecton-elements/q2-chart-bar.entry.esm.js.map +1 -1
  237. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
  238. package/dist/q2-tecton-elements/q2-chart-bar.entry.js.map +1 -1
  239. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +18 -18
  240. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  241. package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +1 -1
  242. package/dist/q2-tecton-elements/q2-checkbox.entry.js +14 -11
  243. package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +1 -1
  244. package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
  245. package/dist/q2-tecton-elements/q2-context.entry.js +2 -2
  246. package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
  247. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  248. package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
  249. package/dist/q2-tecton-elements/q2-detail.entry.js +5 -5
  250. package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
  251. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +16 -16
  252. package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
  253. package/dist/q2-tecton-elements/q2-dropdown.entry.js +1 -1
  254. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  255. package/dist/q2-tecton-elements/q2-editable-field.entry.js +34 -34
  256. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  257. package/dist/q2-tecton-elements/q2-formatted-text.entry.esm.js.map +1 -1
  258. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +13 -5
  259. package/dist/q2-tecton-elements/q2-formatted-text.entry.js.map +1 -1
  260. package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
  261. package/dist/q2-tecton-elements/q2-icon.entry.js +104 -102
  262. package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
  263. package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
  264. package/dist/q2-tecton-elements/q2-input.entry.js +42 -29
  265. package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
  266. package/dist/q2-tecton-elements/q2-item.entry.js +7 -7
  267. package/dist/q2-tecton-elements/q2-link_2.entry.js +1 -1
  268. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  269. package/dist/q2-tecton-elements/q2-message.entry.js +1 -1
  270. package/dist/q2-tecton-elements/q2-meter.entry.js +1 -1
  271. package/dist/q2-tecton-elements/q2-modal.entry.js +1 -1
  272. package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
  273. package/dist/q2-tecton-elements/q2-optgroup.entry.js +1 -1
  274. package/dist/q2-tecton-elements/q2-option-list_2.entry.js +1 -1
  275. package/dist/q2-tecton-elements/q2-option.entry.js +13 -13
  276. package/dist/q2-tecton-elements/q2-pagination.entry.js +1 -1
  277. package/dist/q2-tecton-elements/q2-pill.entry.js +1 -1
  278. package/dist/q2-tecton-elements/q2-radio-group.entry.js +12 -12
  279. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  280. package/dist/q2-tecton-elements/q2-relative-time.entry.js +1 -1
  281. package/dist/q2-tecton-elements/q2-section.entry.js +1 -1
  282. package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
  283. package/dist/q2-tecton-elements/q2-select.entry.js +7 -6
  284. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  285. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  286. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +1 -1
  287. package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
  288. package/dist/q2-tecton-elements/q2-stepper.entry.js +6 -6
  289. package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
  290. package/dist/q2-tecton-elements/q2-tab-container.entry.js +1 -1
  291. package/dist/q2-tecton-elements/q2-tag.entry.js +1 -1
  292. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  293. package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
  294. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  295. package/dist/types/components/q2-btn/q2-btn.d.ts +1 -1
  296. package/dist/types/components/q2-calendar/q2-calendar.d.ts +3 -3
  297. package/dist/types/components/q2-card/q2-card.d.ts +69 -21
  298. package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +1 -1
  299. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +1 -1
  300. package/dist/types/components/q2-formatted-text/q2-formatted-text.d.ts +6 -0
  301. package/dist/types/components/q2-icon/q2-icon.d.ts +1 -1
  302. package/dist/types/components/q2-input/q2-input.d.ts +1 -0
  303. package/dist/types/components/q2-loading/q2-loading.d.ts +10 -10
  304. package/dist/types/components/q2-stepper/q2-stepper.d.ts +1 -1
  305. package/dist/types/components.d.ts +58 -30
  306. package/package.json +5 -4
@@ -1,14 +1,14 @@
1
- import { r as t, c as e, h as i, g as s } from "./index-CGkHOjh1.js";
1
+ import { r as t, c as i, h as e, g as s } from "./index-CGkHOjh1.js";
2
2
 
3
- import { e as a, o as r, a as n, w as d, l } from "./index-LNnzUeDP.js";
3
+ import { d as a, o as r, i as n, w as d, l } from "./index-YJ5sXwiE.js";
4
4
 
5
5
  const h = "*{box-sizing:border-box}*:active{outline:none}*:focus-visible{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:inline-block;max-width:100%}.q2-editable-field-wrapper .begin-edit,.q2-editable-field-wrapper .save-edit,.q2-editable-field-wrapper .cancel-edit{flex:0 0 44px;--tct-btn-icon-hover-background:var(--tct-editable-field-btn-hover-background, var(--app-gray-l3, #f2f2f2));--tct-icon-stroke-primary:var(--tct-editable-field-btn-icon-stroke-primary, var(--app-gray, #747474));--tct-icon-stroke-secondary:var(--tct-editable-field-btn-icon-stroke-secondary, var(--app-gray, #747474))}.q2-editable-field-wrapper:not([hidden]){display:flex}.q2-editable-field-wrapper.editing{align-items:flex-end}:host([block]){display:block;width:100%}:host([block]) .q2-editable-field-wrapper:not([hidden]){display:grid;grid-template-columns:1fr auto auto}q2-input,.text-wrapper{margin:0 var(--tct-scale-2, var(--app-scale-2x, 10px)) 0 0}q2-input{flex:1 1 auto;min-width:170px}.text-wrapper{flex:0 auto;align-self:center;display:inline-block}:host([truncated]) .text-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}dl{margin:var(--tct-scale-0, var(--app-scale-0x, 0))}dt{font-weight:600}dd{margin-left:var(--tct-scale-0, var(--app-scale-0x, 0));display:flex;align-items:center}";
6
6
 
7
7
  const o = class {
8
- constructor(i) {
9
- t(this, i);
10
- this.change = e(this, "change", 7);
11
- this.input = e(this, "input", 7);
8
+ constructor(e) {
9
+ t(this, e);
10
+ this.change = i(this, "change", 7);
11
+ this.input = i(this, "input", 7);
12
12
  this.scheduledAfterRender = [];
13
13
  /** Controls the edit state of the element. */ this.editing = false;
14
14
  /**
@@ -58,13 +58,13 @@ const o = class {
58
58
  };
59
59
  this.saveClick = t => {
60
60
  t && t.stopPropagation();
61
- const e = this.hostElement.shadowRoot.querySelector("q2-input").value;
62
- this.defaultValue = e;
61
+ const i = this.hostElement.shadowRoot.querySelector("q2-input").value;
62
+ this.defaultValue = i;
63
63
  this.change.emit({
64
64
  editing: false,
65
65
  name: "save",
66
- value: this.innerValue || e,
67
- formattedValue: this.formattedValue || e
66
+ value: this.innerValue || i,
67
+ formattedValue: this.formattedValue || i
68
68
  });
69
69
  };
70
70
  }
@@ -151,13 +151,13 @@ const o = class {
151
151
  * `change` event will be emitted.
152
152
  *
153
153
  * @testOnly
154
- */ async setValue(t, e = {
154
+ */ async setValue(t, i = {
155
155
  clickSave: true
156
156
  }) {
157
157
  await this.clickEdit();
158
158
  await d();
159
159
  await this.inputElement.setValue(t);
160
- if (e.clickSave) {
160
+ if (i.clickSave) {
161
161
  await this.clickSave();
162
162
  await d();
163
163
  }
@@ -167,15 +167,15 @@ const o = class {
167
167
  ariaLabelObserver() {
168
168
  a(this);
169
169
  }
170
- observesEditing(t, e) {
171
- if (t === e) return;
170
+ observesEditing(t, i) {
171
+ if (t === i) return;
172
172
  this.scheduledAfterRender.push(this.hostElement.focus);
173
173
  }
174
174
  errorsObserver() {
175
- const {editing: t, hasErrors: e} = this;
176
- const i = this.hostElement.shadowRoot.activeElement;
177
- const s = (i === null || i === void 0 ? void 0 : i.tagName) === "Q2-INPUT";
178
- if (s || !i || !t || !e) return;
175
+ const {editing: t, hasErrors: i} = this;
176
+ const e = this.hostElement.shadowRoot.activeElement;
177
+ const s = (e === null || e === void 0 ? void 0 : e.tagName) === "Q2-INPUT";
178
+ if (s || !e || !t || !i) return;
179
179
  this.inputElement.focus();
180
180
  }
181
181
  // #endregion
@@ -193,10 +193,10 @@ const o = class {
193
193
  return `q2-editable-field-wrapper ${this.editing ? "editing" : ""}`;
194
194
  }
195
195
  generateEditStateDOM() {
196
- return i("div", {
196
+ return e("div", {
197
197
  class: this.wrapperClass,
198
198
  hidden: !this.editing
199
- }, i("q2-input", {
199
+ }, e("q2-input", {
200
200
  ref: t => this.inputElement = t,
201
201
  label: this.locLabel,
202
202
  hideLabel: this.hideLabel,
@@ -212,36 +212,36 @@ const o = class {
212
212
  onChange: this.inputChange,
213
213
  onKeyDown: this.inputKeyDown,
214
214
  onClick: this.inputClick
215
- }), i("q2-btn", {
215
+ }), e("q2-btn", {
216
216
  ref: t => this.cancelBtnElement = t,
217
217
  class: "cancel-edit",
218
218
  label: `${l("tecton.element.editableField.cancel")} ${this.locLabel}`,
219
219
  "hide-label": true,
220
220
  "test-id": "cancelButton",
221
221
  onClick: this.cancelClick
222
- }, i("q2-icon", {
222
+ }, e("q2-icon", {
223
223
  type: "close"
224
- })), i("q2-btn", {
224
+ })), e("q2-btn", {
225
225
  ref: t => this.saveBtnElement = t,
226
226
  class: "save-edit",
227
227
  label: `${l("tecton.element.editableField.save")} ${this.locLabel}`,
228
228
  "hide-label": true,
229
229
  "test-id": "saveButton",
230
230
  onClick: this.saveClick
231
- }, i("q2-icon", {
231
+ }, e("q2-icon", {
232
232
  type: "checkmark"
233
233
  })));
234
234
  }
235
235
  generateReadStateDOM() {
236
236
  if (this.persistentLabel && this.locLabel) {
237
- return i("div", {
237
+ return e("div", {
238
238
  class: this.wrapperClass,
239
239
  hidden: this.editing
240
- }, i("dl", null, i("dt", {
240
+ }, e("dl", null, e("dt", {
241
241
  class: "read-state-label"
242
- }, this.locLabel), i("dd", null, i("span", {
242
+ }, this.locLabel), e("dd", null, e("span", {
243
243
  class: "text-wrapper"
244
- }, this.formattedValue || this.value), i("q2-btn", {
244
+ }, this.formattedValue || this.value), e("q2-btn", {
245
245
  ref: t => this.editBtnElement = t,
246
246
  class: "begin-edit",
247
247
  label: `${l("tecton.element.editableField.edit")} ${this.locLabel}`,
@@ -249,16 +249,16 @@ const o = class {
249
249
  disabled: this.disabled,
250
250
  "test-id": "editButton",
251
251
  onClick: this.editClick
252
- }, i("q2-icon", {
252
+ }, e("q2-icon", {
253
253
  type: "edit"
254
254
  })))));
255
255
  }
256
- return i("div", {
256
+ return e("div", {
257
257
  class: this.wrapperClass,
258
258
  hidden: this.editing
259
- }, i("div", {
259
+ }, e("div", {
260
260
  class: "text-wrapper"
261
- }, this.formattedValue || this.value), i("q2-btn", {
261
+ }, this.formattedValue || this.value), e("q2-btn", {
262
262
  ref: t => this.editBtnElement = t,
263
263
  class: "begin-edit",
264
264
  label: `${l("tecton.element.editableField.edit")} ${this.locLabel}`,
@@ -266,14 +266,14 @@ const o = class {
266
266
  disabled: this.disabled,
267
267
  "test-id": "editButton",
268
268
  onClick: this.editClick
269
- }, i("q2-icon", {
269
+ }, e("q2-icon", {
270
270
  type: "edit"
271
271
  })));
272
272
  }
273
273
  // #endregion
274
274
  // #region Render Methods
275
275
  render() {
276
- return i("div", {
276
+ return e("div", {
277
277
  key: "cd976a515db2bc31d2fb16cae89358d5363dad9a"
278
278
  }, this.generateEditStateDOM(), this.generateReadStateDOM());
279
279
  }
@@ -1,6 +1,6 @@
1
1
  import { r as t, c as e, h as i, F as r, g as o } from "./index-CGkHOjh1.js";
2
2
 
3
- import { l as a, h as s } from "./index-LNnzUeDP.js";
3
+ import { l as a, h as s } from "./index-YJ5sXwiE.js";
4
4
 
5
5
  const n = "*{box-sizing:border-box}*:active{outline:none}*:focus-visible{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}*{box-sizing:border-box}*:active{outline:none}*:focus-visible{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}@keyframes growFromCenterFadeIn{from{transform:scaleX(0.75) scaleY(0.75);opacity:0}to{transform:scaleX(1) scaleY(1);opacity:1}}@keyframes shrinkToCenterFadeOut{from{transform:scaleX(1) scaleY(1);opacity:1}to{transform:scaleX(0.75) scaleY(0.75);opacity:0}}:host{--comp-default-file-picker-margin:var(--tct-file-picker-margin-top, var(--t-file-picker-margin-top, var(--app-scale-5x, 25px))) 0 var(--tct-file-picker-margin-bottom, var(--t-file-picker-margin-bottom, var(--app-scale-5x, 25px)));display:block;margin:var(--tct-file-picker-margin, var(--comp-default-file-picker-margin))}.browse{text-align:left}.drop-zone-text{color:var(--tct-file-picker-drop-zone-text-color, var(--t-gray-6, #4d4d4d));font-size:var(--tct-file-picker-drop-zone-font-size, var(--app-font-size-small, 12px));font-weight:var(--tct-file-picker-browse-link-font-weight, 700);margin-bottom:0;margin-top:var(--tct-file-picker-drop-zone-text-margin-top, var(--app-scale-2x, 10px))}.description{color:var(--tct-file-picker-description-text-color, var(--t-gray-1, #0d0d0d));font-size:var(--tct-file-picker-description-font-size, var(--app-font-size-small, 12px));font-weight:var(--tct-file-picker-description-font-weight, 400);text-align:var(--tct-file-picker-description-text-align, left)}.drop-zone{align-items:center;background-color:var(--tct-file-picker-drop-zone-background, var(--t-tertiary, #e8f5fc));border-color:var(--tct-file-picker-drop-zone-border-color, var(--t-gray-8, #808080));border-radius:var(--tct-file-picker-drop-zone-border-radius, var(--app-border-radius-2, 6px));border-style:var(--tct-file-picker-drop-zone-border-style, dashed);border-width:var(--tct-file-picker-drop-zone-border-width, 2px);color:var(--tct-file-picker-drop-zone-color, #747474);display:flex;flex-direction:column;font-size:var(--tct-file-picker-drop-zone-font-size, var(--app-font-size, 14px));font-weight:var(--tct-file-picker-drop-zone-font-weight, 400);height:var(--tct-file-picker-drop-zone-height, 150px);justify-content:center;max-width:var(--tct-file-picker-drop-zone-max-width, 640px);min-width:var(--tct-file-picker-drop-zone-min-width, 320px);padding:var(--tct-file-picker-drop-zone-padding, 20px);text-align:center;width:var(--tct-file-picker-drop-zone-width, 100%)}.drop-zone-highlighted{background-color:var(--tct-file-picker-drop-zone-highlighted-background, var(--tertiary-d-1, #bee1f6));border-color:var(--tct-file-picker-drop-zone-highlighted-border, var(--t-gray-8, #808080))}.drop-zone-disabled{opacity:var(--tct-file-picker-drop-zone-disabled-opacity, var(--app-disabled-opacity, 0.4));cursor:not-allowed}.fade-in{animation-fill-mode:both;animation-play-state:running;animation:growFromCenterFadeIn 0.2s ease-in}.fade-out{animation:shrinkToCenterFadeOut 0.1s ease-out;animation-play-state:running;animation-fill-mode:both}.file-item{--tct-btn-icon-border-radius:4px;--tct-btn-neutral-text-active-font-color:var(--tct-file-picker-item-close-btn-active-color, var(--t-gray-1, #0d0d0d));--tct-btn-neutral-text-focus-visible-outer-ring-color:var(--tct-file-picker-item-close-btn-color, var(--t-gray-1, #0d0d0d));--tct-btn-neutral-text-font-color:var(--tct-file-picker-item-close-btn-color, var(--t-gray-1, #0d0d0d));--tct-btn-neutral-text-hover-outer-ring-color:var(--tct-file-picker-item-close-btn-hover-focus-ring-color, var(--t-gray-1, #0d0d0d));--tct-btn-icon-padding:0;--tct-icon-stroke-primary:var(--tct-file-picker-item-close-btn-color, var(--t-gray-1, #0d0d0d));--tct-item-body-font-size:var(--tct-file-picker-item-font-size, var(--app-font-size-small, 12px));--tct-item-body-font-weight:var(--tct-file-picker-item-font-weight, 400);--tct-item-border-radius:var(--tct-file-picker-item-border-radius, var(--app-border-radius-3, 12px));--tct-item-border:var(--tct-file-picker-item-border-width, 1px) solid var(--tct-file-picker-item-border-color, var(--t-gray-8, #808080));--tct-item-header-color:var(--tct-file-picker-item-name-color, var(--t-gray-1, #0d0d0d));--tct-item-header-font-size:var(--tct-file-picker-item-name-font-size, var(--app-font-size-small, 12px));--tct-item-header-font-weight:var(--tct-file-picker-item-name-font-weight, 400);--tct-item-padding:var(--tct-file-picker-item-padding, var(--app-scale-1x, 5px) var(--app-scale-2x, 10px));text-align:left}.file-item-info{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.file-item-loading{font-size:var(--tct-file-picker-file-item-loading-size, var(--app-scale-6x, 30px));margin-bottom:calc(var(--tct-file-picker-file-item-loading-margin-bottom, var(--app-scale-6x, 30px)) / 8.57);margin-left:calc(var(--tct-file-picker-file-item-loading-margin-bottom, var(--app-scale-1x, 5px)) / 2)}.file-list{--tct-list-item-gap:var(--tct-file-picker-section-gap, var(--app-scale-3x, 15px))}.file-list-container{max-height:var(--tct-file-picker-list-max-height, 190px);max-width:var(--tct-file-picker-drop-zone-max-width, 640px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--tct-file-picker-scrollbar-color, var(--t-a11y-gray-color, #949494)) transparent}.file-picker{display:flex;flex-direction:column;gap:var(--tct-file-picker-file-item-gap, var(--app-scale-3x, 15px))}.heading{display:flex;flex-direction:column;gap:var(--tct-file-picker-heading-gap, var(--app-scale-1x, 5px));justify-content:space-between}.icon-success,.icon-error{--tct-icon-size:var(--tct-file-picker-file-item-icon-size, var(--app-scale-6x, 30px));--tct-icon-stroke-width:2px}.label{color:var(--tct-file-picker-label-color, var(--t-gray-1, #0d0d0d));display:inline-block;font-size:var(--tct-file-picker-label-font-size, var(--app-font-size, 14px));font-weight:var(--tct-file-picker-label-font-weight, 600);text-align:var(--tct-file-picker-label-text-align, left)}.loading{font-size:var(--tct-file-picker-loading-size, var(--app-scale-6x, 25px))}.loading-file{color:var(--tct-file-picker-loading-file-color, var(--t-gray-1, #0d0d0d));font-size:var(--tct-file-picker-loading-file-font-size, var(--app-font-size-small, 12px));font-weight:var(--tct-file-picker-loading-file-font-weight, 400);margin:0}.loading-message{color:var(--tct-file-picker-loading-message-color, var(--t-gray-1, #0d0d0d));font-size:var(--tct-file-picker-loading-message-font-size, var(--app-font-size-small, 12px));font-weight:var(--tct-file-picker-loading-message-font-weight, 700);margin-bottom:var(--tct-file-picker-loading-message-margin-bottom, var(--app-scale-2x, 10px));margin-top:var(--tct-file-picker-loading-message-margin-top, var(--app-scale-2x, 10px))}.dismiss-button{height:30px;width:30px}.dismiss-button:hover{--tct-icon-stroke-primary:var(--tct-file-picker-item-close-btn-hover-color, var(--t-gray-1, #0d0d0d))}[slot=action]{display:flex;align-items:center}";
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"q2-formatted-text.entry.esm.js","sources":["src/components/q2-formatted-text/q2-formatted-text.scss?tag=q2-formatted-text&encapsulation=shadow","src/components/q2-formatted-text/q2-formatted-text.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n}\n\n.formatted-text {\n color: var-list(--tct-formatted-text-color, inherit);\n font-size: var-list(--tct-formatted-text-font-size, inherit);\n font-weight: var-list(--tct-formatted-text-font-weight, inherit);\n}\n\n.formatted-text-small {\n color: var-list(--tct-formatted-text-small-color, inherit);\n font-size: var-list(--tct-formatted-text-small-font-size, 24px);\n font-weight: var-list(--tct-formatted-text-small-font-weight, 600);\n}\n\n.formatted-text-medium {\n color: var-list(--tct-formatted-text-medium-color, inherit);\n font-size: var-list(--tct-formatted-text-medium-font-size, 42px);\n font-weight: var-list(--tct-formatted-text-medium-font-weight, 600);\n}\n\n.formatted-text-large {\n color: var-list(--tct-formatted-text-large-color, inherit);\n font-size: var-list(--tct-formatted-text-large-font-size, 70px);\n font-weight: var-list(--tct-formatted-text-large-font-weight, 700);\n}\n","import { IDict } from '@/util';\nimport { Component, Prop, Watch, h, ComponentInterface } from '@stencil/core';\n@Component({ tag: 'q2-formatted-text', shadow: true, styleUrl: 'q2-formatted-text.scss' })\nexport class Q2FormattedText implements ComponentInterface {\n // #region Own Properties\n\n /** @private The formatted text to display */\n formattedValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** Formats to the language provided. Accepts multiple locales in an array as sequential fallbacks. */\n @Prop({ reflect: true })\n locale: string | string[] = document.documentElement.lang || 'en-US';\n\n /** The maximum number of fraction digits to use. */\n @Prop({ reflect: false })\n maximumFractionDigits: number = 2;\n\n /** The minimum number of fraction digits to use. */\n @Prop({ reflect: false })\n minimumFractionDigits: number = 2;\n\n /** The minimum number of integer digits to use. */\n @Prop({ reflect: false })\n minimumIntegerDigits: number = 1;\n\n /**\n * Determine how the positive or negative sign should display.\n *\n * Behavior:\n * - `always`: Always display the sign.\n * - `auto`: Sign displays for negative numbers only, including negative zero.\n * - `exceptZero`: Sign displays for positive and negative numbers, but not zero.\n * - `never`: Never display the sign.\n */\n @Prop({ reflect: true })\n signDisplay: 'never' | 'auto' | 'always' | 'exceptZero' = 'auto';\n\n /** Applies styling based on the size provided. If no size is provided, it will display as inline text. */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' | undefined;\n\n /** @private Inherited from q2-detail when slotted to match styling of q2-detail and q2-formatted-text texts. */\n @Prop({ reflect: true })\n slotSize: string;\n\n /** The value you want formatted. */\n @Prop({ reflect: true })\n value: number;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad(): void | Promise<void> {\n this.formatValue();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('value')\n @Watch('locale')\n @Watch('size')\n @Watch('slotSize')\n @Watch('signDisplay')\n propsUpdated() {\n this.formatValue();\n }\n\n // #endregion\n // #region Local Methods\n\n get formattedTextClasses(): string {\n const classes = ['formatted-text'];\n const sizeClass = this.size ? this.size : this.slotSize;\n if (!!sizeClass) classes.push(`formatted-text-${sizeClass}`);\n return classes.join(' ');\n }\n\n formatValue() {\n const options: IDict<any> = {\n style: 'decimal',\n signDisplay: this.signDisplay,\n };\n if (!isNaN(this.minimumIntegerDigits)) options.minimumIntegerDigits = this.minimumIntegerDigits;\n if (!isNaN(this.minimumFractionDigits)) options.minimumFractionDigits = this.minimumFractionDigits;\n if (!isNaN(this.maximumFractionDigits)) options.maximumFractionDigits = this.maximumFractionDigits;\n\n this.formattedValue = new Intl.NumberFormat(this.locale, options).format(this.value).trim();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { formattedTextClasses } = this;\n\n return (\n <div\n class={formattedTextClasses}\n aria-label={this.formattedValue}\n >\n <span>{this.formattedValue}</span>\n </div>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":";;AAAA,MAAM,kBAAkB,GAAG,u7CAAu7C;;MCGr8C,eAAe,GAAA,MAAA;AAD5B,IAAA,WAAA,CAAA,OAAA,EAAA;;;;;QAYI,IAAM,CAAA,MAAA,GAAsB,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO;;AAIpE,QAAA,IAAqB,CAAA,qBAAA,GAAW,CAAC;;AAIjC,QAAA,IAAqB,CAAA,qBAAA,GAAW,CAAC;;AAIjC,QAAA,IAAoB,CAAA,oBAAA,GAAW,CAAC;AAEhC;;;;;;;;AAQG;AAEH,QAAA,IAAW,CAAA,WAAA,GAA+C,MAAM;AAwEnE;;;IAvDG,iBAAiB,GAAA;QACb,IAAI,CAAC,WAAW,EAAE;;;;IAWtB,YAAY,GAAA;QACR,IAAI,CAAC,WAAW,EAAE;;;;AAMtB,IAAA,IAAI,oBAAoB,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC;AAClC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ;QACvD,IAAI,CAAC,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,CAAA,CAAE,CAAC;AAC5D,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG5B,WAAW,GAAA;AACP,QAAA,MAAM,OAAO,GAAe;AACxB,YAAA,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAAE,YAAA,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AAC/F,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAAE,YAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;AAClG,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAAE,YAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;QAElG,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;;;;IAM/F,MAAM,GAAA;AACF,QAAA,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI;AAErC,QAAA,QACI,4DACI,KAAK,EAAE,oBAAoB,EACf,YAAA,EAAA,IAAI,CAAC,cAAc,EAAA,EAE/B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAO,IAAI,CAAC,cAAc,CAAQ,CAChC;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"q2-formatted-text.entry.esm.js","sources":["src/components/q2-formatted-text/q2-formatted-text.scss?tag=q2-formatted-text&encapsulation=shadow","src/components/q2-formatted-text/q2-formatted-text.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n}\n\n.formatted-text {\n color: var-list(--tct-formatted-text-color, inherit);\n font-size: var-list(--tct-formatted-text-font-size, inherit);\n font-weight: var-list(--tct-formatted-text-font-weight, inherit);\n}\n\n.formatted-text-small {\n color: var-list(--tct-formatted-text-small-color, inherit);\n font-size: var-list(--tct-formatted-text-small-font-size, 24px);\n font-weight: var-list(--tct-formatted-text-small-font-weight, 600);\n}\n\n.formatted-text-medium {\n color: var-list(--tct-formatted-text-medium-color, inherit);\n font-size: var-list(--tct-formatted-text-medium-font-size, 42px);\n font-weight: var-list(--tct-formatted-text-medium-font-weight, 600);\n}\n\n.formatted-text-large {\n color: var-list(--tct-formatted-text-large-color, inherit);\n font-size: var-list(--tct-formatted-text-large-font-size, 70px);\n font-weight: var-list(--tct-formatted-text-large-font-weight, 700);\n}\n","import { IDict } from '@/util';\nimport { Component, Prop, Watch, h, ComponentInterface } from '@stencil/core';\n@Component({ tag: 'q2-formatted-text', shadow: true, styleUrl: 'q2-formatted-text.scss' })\nexport class Q2FormattedText implements ComponentInterface {\n // #region Own Properties\n\n /** @private The formatted text to display */\n formattedValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** Formats to the language provided. Accepts multiple locales in an array as sequential fallbacks. */\n @Prop({ reflect: true })\n locale: string | string[] = document.documentElement.lang || 'en-US';\n\n /** The maximum number of fraction digits to use. */\n @Prop({ reflect: false })\n maximumFractionDigits: number = 2;\n\n /** The minimum number of fraction digits to use. */\n @Prop({ reflect: false })\n minimumFractionDigits: number = 2;\n\n /** The minimum number of integer digits to use. */\n @Prop({ reflect: false })\n minimumIntegerDigits: number = 1;\n\n /**\n * Determine how the positive or negative sign should display.\n *\n * Behavior:\n * - `always`: Always display the sign.\n * - `auto`: Sign displays for negative numbers only, including negative zero.\n * - `exceptZero`: Sign displays for positive and negative numbers, but not zero.\n * - `never`: Never display the sign.\n */\n @Prop({ reflect: true })\n signDisplay: 'never' | 'auto' | 'always' | 'exceptZero' = 'auto';\n\n /** Applies styling based on the size provided. If no size is provided, it will display as inline text. */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' | undefined;\n\n /** @private Inherited from q2-detail when slotted to match styling of q2-detail and q2-formatted-text texts. */\n @Prop({ reflect: true })\n slotSize: string;\n\n /** The value you want formatted. */\n @Prop({ reflect: true })\n value: number;\n\n /**\n * The format style for the number.\n * - `decimal`: Standard number formatting, locale-aware (default).\n * - `percent`: Percentage formatting, locale-aware.\n */\n @Prop({ reflect: true })\n format: 'decimal' | 'percent' = 'decimal';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad(): void | Promise<void> {\n this.formatValue();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('value')\n @Watch('locale')\n @Watch('size')\n @Watch('slotSize')\n @Watch('signDisplay')\n @Watch('format')\n propsUpdated() {\n this.formatValue();\n }\n\n // #endregion\n // #region Local Methods\n\n get formattedTextClasses(): string {\n const classes = ['formatted-text'];\n const sizeClass = this.size ? this.size : this.slotSize;\n if (!!sizeClass) classes.push(`formatted-text-${sizeClass}`);\n return classes.join(' ');\n }\n\n formatValue() {\n const options: IDict<any> = {\n style: this.format,\n signDisplay: this.signDisplay,\n };\n if (!isNaN(this.minimumIntegerDigits)) options.minimumIntegerDigits = this.minimumIntegerDigits;\n if (!isNaN(this.minimumFractionDigits)) options.minimumFractionDigits = this.minimumFractionDigits;\n if (!isNaN(this.maximumFractionDigits)) options.maximumFractionDigits = this.maximumFractionDigits;\n\n // For percent format, divide by 100 so users can pass intuitive values (e.g., 25 → 25%, 0.5 → 0.5%, 100 → 100%)\n const valueToFormat = this.format === 'percent' ? this.value / 100 : this.value;\n this.formattedValue = new Intl.NumberFormat(this.locale, options).format(valueToFormat).trim();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { formattedTextClasses } = this;\n\n return (\n <div\n class={formattedTextClasses}\n aria-label={this.formattedValue}\n >\n <span>{this.formattedValue}</span>\n </div>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":";;AAAA,MAAM,kBAAkB,GAAG,u7CAAu7C;;MCGr8C,eAAe,GAAA,MAAA;AAD5B,IAAA,WAAA,CAAA,OAAA,EAAA;;;;;QAYI,IAAM,CAAA,MAAA,GAAsB,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO;;AAIpE,QAAA,IAAqB,CAAA,qBAAA,GAAW,CAAC;;AAIjC,QAAA,IAAqB,CAAA,qBAAA,GAAW,CAAC;;AAIjC,QAAA,IAAoB,CAAA,oBAAA,GAAW,CAAC;AAEhC;;;;;;;;AAQG;AAEH,QAAA,IAAW,CAAA,WAAA,GAA+C,MAAM;AAchE;;;;AAIG;AAEH,QAAA,IAAM,CAAA,MAAA,GAA0B,SAAS;AA+D5C;;;IA1DG,iBAAiB,GAAA;QACb,IAAI,CAAC,WAAW,EAAE;;;;IAYtB,YAAY,GAAA;QACR,IAAI,CAAC,WAAW,EAAE;;;;AAMtB,IAAA,IAAI,oBAAoB,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC;AAClC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ;QACvD,IAAI,CAAC,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,CAAA,CAAE,CAAC;AAC5D,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG5B,WAAW,GAAA;AACP,QAAA,MAAM,OAAO,GAAe;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAAE,YAAA,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AAC/F,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAAE,YAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;AAClG,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAAE,YAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;;QAGlG,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK;QAC/E,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;;;;IAMlG,MAAM,GAAA;AACF,QAAA,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI;AAErC,QAAA,QACI,4DACI,KAAK,EAAE,oBAAoB,EACf,YAAA,EAAA,IAAI,CAAC,cAAc,EAAA,EAE/B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAO,IAAI,CAAC,cAAc,CAAQ,CAChC;;;;;;;;;;;;;;;"}
@@ -20,6 +20,11 @@ const o = class {
20
20
  * - `exceptZero`: Sign displays for positive and negative numbers, but not zero.
21
21
  * - `never`: Never display the sign.
22
22
  */ this.signDisplay = "auto";
23
+ /**
24
+ * The format style for the number.
25
+ * - `decimal`: Standard number formatting, locale-aware (default).
26
+ * - `percent`: Percentage formatting, locale-aware.
27
+ */ this.format = "decimal";
23
28
  }
24
29
  // #endregion
25
30
  // #region Component Lifecycle Events
@@ -41,24 +46,26 @@ const o = class {
41
46
  }
42
47
  formatValue() {
43
48
  const t = {
44
- style: "decimal",
49
+ style: this.format,
45
50
  signDisplay: this.signDisplay
46
51
  };
47
52
  if (!isNaN(this.minimumIntegerDigits)) t.minimumIntegerDigits = this.minimumIntegerDigits;
48
53
  if (!isNaN(this.minimumFractionDigits)) t.minimumFractionDigits = this.minimumFractionDigits;
49
54
  if (!isNaN(this.maximumFractionDigits)) t.maximumFractionDigits = this.maximumFractionDigits;
50
- this.formattedValue = new Intl.NumberFormat(this.locale, t).format(this.value).trim();
55
+ // For percent format, divide by 100 so users can pass intuitive values (e.g., 25 → 25%, 0.5 → 0.5%, 100 → 100%)
56
+ const e = this.format === "percent" ? this.value / 100 : this.value;
57
+ this.formattedValue = new Intl.NumberFormat(this.locale, t).format(e).trim();
51
58
  }
52
59
  // #endregion
53
60
  // #region Render Methods
54
61
  render() {
55
62
  const {formattedTextClasses: t} = this;
56
63
  return e("div", {
57
- key: "08fe8c32d469d77afdb886addcced59c6a6edbcc",
64
+ key: "1274a8a0dd15b93bb1748ea17b12a3dbe148a0ca",
58
65
  class: t,
59
66
  "aria-label": this.formattedValue
60
67
  }, e("span", {
61
- key: "6f5031262bf199f7887eb0b1f9ef1d8f920a29fc"
68
+ key: "6fe7e20ecf26a5b1e24966360646aeb6f6526f1e"
62
69
  }, this.formattedValue));
63
70
  }
64
71
  static get watchers() {
@@ -67,7 +74,8 @@ const o = class {
67
74
  locale: [ "propsUpdated" ],
68
75
  size: [ "propsUpdated" ],
69
76
  slotSize: [ "propsUpdated" ],
70
- signDisplay: [ "propsUpdated" ]
77
+ signDisplay: [ "propsUpdated" ],
78
+ format: [ "propsUpdated" ]
71
79
  };
72
80
  }
73
81
  };
@@ -1 +1 @@
1
- {"version":3,"names":["q2FormattedTextCss","Q2FormattedText","constructor","hostRef","this","locale","document","documentElement","lang","maximumFractionDigits","minimumFractionDigits","minimumIntegerDigits","signDisplay","componentWillLoad","formatValue","propsUpdated","formattedTextClasses","classes","sizeClass","size","slotSize","push","join","options","style","isNaN","formattedValue","Intl","NumberFormat","format","value","trim","render","h","key","class"],"sources":["src/components/q2-formatted-text/q2-formatted-text.scss?tag=q2-formatted-text&encapsulation=shadow","src/components/q2-formatted-text/q2-formatted-text.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n}\n\n.formatted-text {\n color: var-list(--tct-formatted-text-color, inherit);\n font-size: var-list(--tct-formatted-text-font-size, inherit);\n font-weight: var-list(--tct-formatted-text-font-weight, inherit);\n}\n\n.formatted-text-small {\n color: var-list(--tct-formatted-text-small-color, inherit);\n font-size: var-list(--tct-formatted-text-small-font-size, 24px);\n font-weight: var-list(--tct-formatted-text-small-font-weight, 600);\n}\n\n.formatted-text-medium {\n color: var-list(--tct-formatted-text-medium-color, inherit);\n font-size: var-list(--tct-formatted-text-medium-font-size, 42px);\n font-weight: var-list(--tct-formatted-text-medium-font-weight, 600);\n}\n\n.formatted-text-large {\n color: var-list(--tct-formatted-text-large-color, inherit);\n font-size: var-list(--tct-formatted-text-large-font-size, 70px);\n font-weight: var-list(--tct-formatted-text-large-font-weight, 700);\n}\n","import { IDict } from '@/util';\nimport { Component, Prop, Watch, h, ComponentInterface } from '@stencil/core';\n@Component({ tag: 'q2-formatted-text', shadow: true, styleUrl: 'q2-formatted-text.scss' })\nexport class Q2FormattedText implements ComponentInterface {\n // #region Own Properties\n\n /** @private The formatted text to display */\n formattedValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** Formats to the language provided. Accepts multiple locales in an array as sequential fallbacks. */\n @Prop({ reflect: true })\n locale: string | string[] = document.documentElement.lang || 'en-US';\n\n /** The maximum number of fraction digits to use. */\n @Prop({ reflect: false })\n maximumFractionDigits: number = 2;\n\n /** The minimum number of fraction digits to use. */\n @Prop({ reflect: false })\n minimumFractionDigits: number = 2;\n\n /** The minimum number of integer digits to use. */\n @Prop({ reflect: false })\n minimumIntegerDigits: number = 1;\n\n /**\n * Determine how the positive or negative sign should display.\n *\n * Behavior:\n * - `always`: Always display the sign.\n * - `auto`: Sign displays for negative numbers only, including negative zero.\n * - `exceptZero`: Sign displays for positive and negative numbers, but not zero.\n * - `never`: Never display the sign.\n */\n @Prop({ reflect: true })\n signDisplay: 'never' | 'auto' | 'always' | 'exceptZero' = 'auto';\n\n /** Applies styling based on the size provided. If no size is provided, it will display as inline text. */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' | undefined;\n\n /** @private Inherited from q2-detail when slotted to match styling of q2-detail and q2-formatted-text texts. */\n @Prop({ reflect: true })\n slotSize: string;\n\n /** The value you want formatted. */\n @Prop({ reflect: true })\n value: number;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad(): void | Promise<void> {\n this.formatValue();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('value')\n @Watch('locale')\n @Watch('size')\n @Watch('slotSize')\n @Watch('signDisplay')\n propsUpdated() {\n this.formatValue();\n }\n\n // #endregion\n // #region Local Methods\n\n get formattedTextClasses(): string {\n const classes = ['formatted-text'];\n const sizeClass = this.size ? this.size : this.slotSize;\n if (!!sizeClass) classes.push(`formatted-text-${sizeClass}`);\n return classes.join(' ');\n }\n\n formatValue() {\n const options: IDict<any> = {\n style: 'decimal',\n signDisplay: this.signDisplay,\n };\n if (!isNaN(this.minimumIntegerDigits)) options.minimumIntegerDigits = this.minimumIntegerDigits;\n if (!isNaN(this.minimumFractionDigits)) options.minimumFractionDigits = this.minimumFractionDigits;\n if (!isNaN(this.maximumFractionDigits)) options.maximumFractionDigits = this.maximumFractionDigits;\n\n this.formattedValue = new Intl.NumberFormat(this.locale, options).format(this.value).trim();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { formattedTextClasses } = this;\n\n return (\n <div\n class={formattedTextClasses}\n aria-label={this.formattedValue}\n >\n <span>{this.formattedValue}</span>\n </div>\n );\n }\n\n // #endregion\n}\n"],"mappings":";;AAAA,MAAMA,IAAqB;;MCGdC,IAAe;EAD5B,WAAAC,CAAAC;;;;8GAYIC,KAAMC,SAAsBC,SAASC,gBAAgBC,QAAQ;6DAI7DJ,KAAqBK,wBAAW;6DAIhCL,KAAqBM,wBAAW;4DAIhCN,KAAoBO,uBAAW;;;;;;;;;eAY/BP,KAAWQ,cAA+C;AAwE7D;;;EAvDG,iBAAAC;IACIT,KAAKU;;;;EAWT,YAAAC;IACIX,KAAKU;;;;EAMT,wBAAIE;IACA,MAAMC,IAAU,EAAC;IACjB,MAAMC,IAAYd,KAAKe,OAAOf,KAAKe,OAAOf,KAAKgB;IAC/C,MAAMF,GAAWD,EAAQI,KAAK,kBAAkBH;IAChD,OAAOD,EAAQK,KAAK;;EAGxB,WAAAR;IACI,MAAMS,IAAsB;MACxBC,OAAO;MACPZ,aAAaR,KAAKQ;;IAEtB,KAAKa,MAAMrB,KAAKO,uBAAuBY,EAAQZ,uBAAuBP,KAAKO;IAC3E,KAAKc,MAAMrB,KAAKM,wBAAwBa,EAAQb,wBAAwBN,KAAKM;IAC7E,KAAKe,MAAMrB,KAAKK,wBAAwBc,EAAQd,wBAAwBL,KAAKK;IAE7EL,KAAKsB,iBAAiB,IAAIC,KAAKC,aAAaxB,KAAKC,QAAQkB,GAASM,OAAOzB,KAAK0B,OAAOC;;;;EAMzF,MAAAC;IACI,OAAMhB,sBAAEA,KAAyBZ;IAEjC,OACI6B,EAAA;MAAAC,KAAA;MACIC,OAAOnB;MACK,cAAAZ,KAAKsB;OAEjBO,EAAA;MAAAC,KAAA;OAAO9B,KAAKsB","ignoreList":[]}
1
+ {"version":3,"names":["q2FormattedTextCss","Q2FormattedText","constructor","hostRef","this","locale","document","documentElement","lang","maximumFractionDigits","minimumFractionDigits","minimumIntegerDigits","signDisplay","format","componentWillLoad","formatValue","propsUpdated","formattedTextClasses","classes","sizeClass","size","slotSize","push","join","options","style","isNaN","valueToFormat","value","formattedValue","Intl","NumberFormat","trim","render","h","key","class"],"sources":["src/components/q2-formatted-text/q2-formatted-text.scss?tag=q2-formatted-text&encapsulation=shadow","src/components/q2-formatted-text/q2-formatted-text.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n}\n\n.formatted-text {\n color: var-list(--tct-formatted-text-color, inherit);\n font-size: var-list(--tct-formatted-text-font-size, inherit);\n font-weight: var-list(--tct-formatted-text-font-weight, inherit);\n}\n\n.formatted-text-small {\n color: var-list(--tct-formatted-text-small-color, inherit);\n font-size: var-list(--tct-formatted-text-small-font-size, 24px);\n font-weight: var-list(--tct-formatted-text-small-font-weight, 600);\n}\n\n.formatted-text-medium {\n color: var-list(--tct-formatted-text-medium-color, inherit);\n font-size: var-list(--tct-formatted-text-medium-font-size, 42px);\n font-weight: var-list(--tct-formatted-text-medium-font-weight, 600);\n}\n\n.formatted-text-large {\n color: var-list(--tct-formatted-text-large-color, inherit);\n font-size: var-list(--tct-formatted-text-large-font-size, 70px);\n font-weight: var-list(--tct-formatted-text-large-font-weight, 700);\n}\n","import { IDict } from '@/util';\nimport { Component, Prop, Watch, h, ComponentInterface } from '@stencil/core';\n@Component({ tag: 'q2-formatted-text', shadow: true, styleUrl: 'q2-formatted-text.scss' })\nexport class Q2FormattedText implements ComponentInterface {\n // #region Own Properties\n\n /** @private The formatted text to display */\n formattedValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** Formats to the language provided. Accepts multiple locales in an array as sequential fallbacks. */\n @Prop({ reflect: true })\n locale: string | string[] = document.documentElement.lang || 'en-US';\n\n /** The maximum number of fraction digits to use. */\n @Prop({ reflect: false })\n maximumFractionDigits: number = 2;\n\n /** The minimum number of fraction digits to use. */\n @Prop({ reflect: false })\n minimumFractionDigits: number = 2;\n\n /** The minimum number of integer digits to use. */\n @Prop({ reflect: false })\n minimumIntegerDigits: number = 1;\n\n /**\n * Determine how the positive or negative sign should display.\n *\n * Behavior:\n * - `always`: Always display the sign.\n * - `auto`: Sign displays for negative numbers only, including negative zero.\n * - `exceptZero`: Sign displays for positive and negative numbers, but not zero.\n * - `never`: Never display the sign.\n */\n @Prop({ reflect: true })\n signDisplay: 'never' | 'auto' | 'always' | 'exceptZero' = 'auto';\n\n /** Applies styling based on the size provided. If no size is provided, it will display as inline text. */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' | undefined;\n\n /** @private Inherited from q2-detail when slotted to match styling of q2-detail and q2-formatted-text texts. */\n @Prop({ reflect: true })\n slotSize: string;\n\n /** The value you want formatted. */\n @Prop({ reflect: true })\n value: number;\n\n /**\n * The format style for the number.\n * - `decimal`: Standard number formatting, locale-aware (default).\n * - `percent`: Percentage formatting, locale-aware.\n */\n @Prop({ reflect: true })\n format: 'decimal' | 'percent' = 'decimal';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad(): void | Promise<void> {\n this.formatValue();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('value')\n @Watch('locale')\n @Watch('size')\n @Watch('slotSize')\n @Watch('signDisplay')\n @Watch('format')\n propsUpdated() {\n this.formatValue();\n }\n\n // #endregion\n // #region Local Methods\n\n get formattedTextClasses(): string {\n const classes = ['formatted-text'];\n const sizeClass = this.size ? this.size : this.slotSize;\n if (!!sizeClass) classes.push(`formatted-text-${sizeClass}`);\n return classes.join(' ');\n }\n\n formatValue() {\n const options: IDict<any> = {\n style: this.format,\n signDisplay: this.signDisplay,\n };\n if (!isNaN(this.minimumIntegerDigits)) options.minimumIntegerDigits = this.minimumIntegerDigits;\n if (!isNaN(this.minimumFractionDigits)) options.minimumFractionDigits = this.minimumFractionDigits;\n if (!isNaN(this.maximumFractionDigits)) options.maximumFractionDigits = this.maximumFractionDigits;\n\n // For percent format, divide by 100 so users can pass intuitive values (e.g., 25 → 25%, 0.5 → 0.5%, 100 → 100%)\n const valueToFormat = this.format === 'percent' ? this.value / 100 : this.value;\n this.formattedValue = new Intl.NumberFormat(this.locale, options).format(valueToFormat).trim();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { formattedTextClasses } = this;\n\n return (\n <div\n class={formattedTextClasses}\n aria-label={this.formattedValue}\n >\n <span>{this.formattedValue}</span>\n </div>\n );\n }\n\n // #endregion\n}\n"],"mappings":";;AAAA,MAAMA,IAAqB;;MCGdC,IAAe;EAD5B,WAAAC,CAAAC;;;;8GAYIC,KAAMC,SAAsBC,SAASC,gBAAgBC,QAAQ;6DAI7DJ,KAAqBK,wBAAW;6DAIhCL,KAAqBM,wBAAW;4DAIhCN,KAAoBO,uBAAW;;;;;;;;;eAY/BP,KAAWQ,cAA+C;;;;;eAoB1DR,KAAMS,SAA0B;AA+DnC;;;EA1DG,iBAAAC;IACIV,KAAKW;;;;EAYT,YAAAC;IACIZ,KAAKW;;;;EAMT,wBAAIE;IACA,MAAMC,IAAU,EAAC;IACjB,MAAMC,IAAYf,KAAKgB,OAAOhB,KAAKgB,OAAOhB,KAAKiB;IAC/C,MAAMF,GAAWD,EAAQI,KAAK,kBAAkBH;IAChD,OAAOD,EAAQK,KAAK;;EAGxB,WAAAR;IACI,MAAMS,IAAsB;MACxBC,OAAOrB,KAAKS;MACZD,aAAaR,KAAKQ;;IAEtB,KAAKc,MAAMtB,KAAKO,uBAAuBa,EAAQb,uBAAuBP,KAAKO;IAC3E,KAAKe,MAAMtB,KAAKM,wBAAwBc,EAAQd,wBAAwBN,KAAKM;IAC7E,KAAKgB,MAAMtB,KAAKK,wBAAwBe,EAAQf,wBAAwBL,KAAKK;;QAG7E,MAAMkB,IAAgBvB,KAAKS,WAAW,YAAYT,KAAKwB,QAAQ,MAAMxB,KAAKwB;IAC1ExB,KAAKyB,iBAAiB,IAAIC,KAAKC,aAAa3B,KAAKC,QAAQmB,GAASX,OAAOc,GAAeK;;;;EAM5F,MAAAC;IACI,OAAMhB,sBAAEA,KAAyBb;IAEjC,OACI8B,EAAA;MAAAC,KAAA;MACIC,OAAOnB;MACK,cAAAb,KAAKyB;OAEjBK,EAAA;MAAAC,KAAA;OAAO/B,KAAKyB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"q2-icon.entry.esm.js","sources":["src/components/q2-icon/q2-icon.scss?tag=q2-icon&encapsulation=shadow","src/components/q2-icon/q2-icon.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n height: var(--tct-icon-size, 24px);\n width: var(--tct-icon-size, 24px);\n position: relative;\n fill: none;\n}\n\n:host([inline]) {\n height: 1em;\n width: 1em;\n}\n\nsvg {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n stroke-width: var-list(--tct-icon-stroke-width, --t-icon-stroke-width, --tct-icon-group-stroke-width, 2);\n stroke-linecap: var-list(--tct-icon-cap, --t-icon-cap, round);\n stroke-linejoin: var-list(--tct-icon-cap, --t-icon-cap, round);\n transition: var(--tct-icon-transition, none);\n\n &.brand {\n stroke-width: var-list(--tct-icon-group-brand-stroke-width, 1);\n }\n\n &.browsersos {\n stroke-width: var-list(--tct-icon-group-browsersos-stroke-width, 1);\n }\n}\n\n.stroke-primary {\n stroke: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n.stroke-secondary {\n stroke: var-list(--tct-icon-stroke-secondary, --t-icon-stroke-secondary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-secondary-transition, none);\n}\n\n.fill-primary {\n fill: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n.fill-secondary {\n fill: var-list(--tct-icon-stroke-secondary, --t-icon-stroke-secondary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-secondary-transition, none);\n}\n\n.filled {\n fill: var-list(--tct-icon-fill, --comp-icon-fill, --t-icon-fill, none);\n transition: var(--tct-icon-fill-transition, none);\n}\n\n.brand-filled {\n fill: var-list(--tct-brand-icon-fill, --tct-icon-fill, currentColor);\n transition: var(--tct-icon-fill-transition, none);\n}\n\n.uniform {\n fill: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n:host([type='info']),\n:host([type='info-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-info, --const-stoplight-info, #0079c1)};\n}\n\n:host([type='success']),\n:host([type='success-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-success, --const-stoplight-success, #0e8a00)};\n}\n\n:host([type='warning']),\n:host([type='warning-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-warning, --const-stoplight-warning, #c35500)};\n}\n\n:host([type='error']),\n:host([type='error-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-alert, --const-stoplight-alert, #d20a0a)};\n}\n","import { Component, ComponentInterface, Prop, h, Element, Watch, getAssetPath, State } from '@stencil/core';\nimport { createGuid } from 'src/utils';\nimport { getOrCreateSpriteContainer } from '@/utils/sprites';\nimport iconMap from './assets/icon-map.json';\n\n@Component({ tag: 'q2-icon', shadow: true, styleUrl: 'q2-icon.scss', assetsDirs: ['assets'] })\nexport class Q2Icon implements ComponentInterface {\n // #region Own Properties\n\n spriteGroup: SVGElement;\n spritePrefix: string = 'tecton-sprite-';\n spriteUse: SVGElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n iconClone: SVGSymbolElement;\n\n // #endregion\n // #region Public Property API\n\n /** Styles the component to have a `height` and `width` of `1em`, making it easy to place alongside text. */\n @Prop({ reflect: true })\n inline: boolean;\n\n /** The text that is presented by screen-readers when they encounter the icon. */\n @Prop({ reflect: true })\n label: string;\n\n /** The name of the icon to be displayed. */\n @Prop({ reflect: true })\n type: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.handleIcon();\n }\n\n componentDidRender(): void {\n if (!this.iconClone) return;\n this.spriteGroup?.firstElementChild?.remove();\n const appendedClone = this.spriteGroup?.appendChild(this.iconClone);\n\n // We have to set the `href` attribute after the symbol is appended to the DOM to avoid a bug in Safari\n this.spriteUse?.setAttribute('href', `#${appendedClone.id}`);\n }\n\n disconnectedCallback(): void {\n this.spriteGroup = null;\n this.spriteUse = null;\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('type')\n handleIcon() {\n if (this.isCustom) {\n this.setCustomSVGAttrs();\n } else if (this.type) {\n this.fetchSprite();\n } else {\n this.iconClone = null;\n this.spriteGroup?.firstElementChild?.remove();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get iconCloneViewBox() {\n return this.iconClone?.getAttribute('viewBox') ?? '0 0 24 24';\n }\n\n get isCustom() {\n return this.type === 'custom';\n }\n\n get spriteElement() {\n const { spriteId } = this;\n if (!spriteId) return;\n return document.querySelector<HTMLElement>(`#${spriteId}`);\n }\n\n get spriteEventName() {\n const { spriteFileName } = this;\n if (!spriteFileName) return;\n return `tct-loaded-${spriteFileName}`;\n }\n\n get spriteFileName() {\n if (this.isCustom) return;\n return iconMap[this.type];\n }\n\n get spriteId() {\n const { spriteFileName } = this;\n if (!spriteFileName) return;\n return `${this.spritePrefix}${spriteFileName}`;\n }\n\n checkForSprite() {\n const { spriteId, spriteEventName } = this;\n const spriteContainer = getOrCreateSpriteContainer();\n let spriteElement: HTMLElement = document.getElementById(spriteId);\n\n // If the sprite element exists and has the `data-loaded` attribute, we know we have everything we need\n if (spriteElement?.hasAttribute('data-loaded') ?? false) {\n this.cloneSpriteNode();\n return true;\n }\n\n // If the sprite element exists but does not have the `data-loaded` attribute, we know it's being loaded\n // We'll listen for the event that will be dispatched when the sprite is loaded\n spriteContainer.addEventListener(\n spriteEventName,\n () => {\n this.cloneSpriteNode();\n },\n { once: true }\n );\n\n // If the sprite element exists, we know it's being loaded and will be handled by the event listener\n if (spriteElement) return true;\n\n // If sprite element does not exist, create a placeholder\n // This will let other icons know the sprite is being loaded\n spriteElement = document.createElement('div');\n spriteElement.id = spriteId;\n spriteContainer.appendChild(spriteElement);\n return false;\n }\n\n cloneSpriteNode() {\n const spriteNode = document.getElementById(`tct-${this.type}`);\n this.iconClone = spriteNode ? (spriteNode.cloneNode(true) as SVGSymbolElement) : undefined;\n }\n\n async fetchSprite() {\n const { spriteFileName, spriteId, spriteEventName } = this;\n\n const spriteExists = this.checkForSprite();\n if (spriteExists) return;\n\n if (!spriteFileName) return;\n const spritePath = getAssetPath(`assets/${spriteFileName}.symbol.svg`);\n const response = await fetch(spritePath);\n const data = await response.text();\n const wrappingDiv = document.createElement('div');\n wrappingDiv.innerHTML = data;\n const svg = wrappingDiv.querySelector('svg');\n\n svg.id = spriteId;\n svg.setAttribute('data-loaded', '');\n\n let { spriteElement } = this;\n if (spriteElement?.tagName === 'SVG') return;\n\n if (typeof spriteElement.replaceWith === 'function') {\n spriteElement.replaceWith(svg);\n } else {\n spriteElement.parentNode.replaceChild(svg, spriteElement);\n }\n\n spriteElement = document.getElementById(spriteId);\n spriteElement.dispatchEvent(new CustomEvent(spriteEventName, { bubbles: true }));\n }\n\n setCustomSVGAttrs() {\n const innerSVG = this.hostElement.querySelector('svg');\n\n if (!innerSVG) return;\n\n innerSVG.setAttribute('role', 'img');\n innerSVG.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n const { label } = this;\n if (label) {\n const title = document.createElement('title');\n const labelId = `label-${createGuid()}`;\n title.id = labelId;\n title.textContent = label;\n innerSVG.appendChild(title);\n innerSVG.setAttribute('aria-labelledby', labelId);\n } else {\n innerSVG.setAttribute('aria-hidden', 'true');\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { label, type } = this;\n return this.isCustom ? (\n <slot />\n ) : (\n <svg\n aria-hidden={!!label ? undefined : 'true'}\n role={!!label ? 'img' : undefined}\n aria-labelledby={!!label ? 'label' : undefined}\n viewBox={this.iconCloneViewBox}\n xmlns=\"http://www.w3.org/2000/svg\"\n class={this.spriteFileName}\n >\n {!!label && <title id=\"label\">{label}</title>}\n {!!type && <use ref={el => (this.spriteUse = el)} />}\n <g ref={el => (this.spriteGroup = el)}></g>\n </svg>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"q2-icon.entry.esm.js","sources":["src/components/q2-icon/q2-icon.scss?tag=q2-icon&encapsulation=shadow","src/components/q2-icon/q2-icon.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n height: var(--tct-icon-size, 24px);\n width: var(--tct-icon-size, 24px);\n position: relative;\n fill: none;\n}\n\n:host([inline]) {\n height: 1em;\n width: 1em;\n}\n\nsvg {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n stroke-width: var-list(--tct-icon-stroke-width, --t-icon-stroke-width, --tct-icon-group-stroke-width, 2);\n stroke-linecap: var-list(--tct-icon-cap, --t-icon-cap, round);\n stroke-linejoin: var-list(--tct-icon-cap, --t-icon-cap, round);\n transition: var(--tct-icon-transition, none);\n\n &.brand {\n stroke-width: var-list(--tct-icon-group-brand-stroke-width, 1);\n }\n\n &.browsersos {\n stroke-width: var-list(--tct-icon-group-browsersos-stroke-width, 1);\n }\n}\n\n.stroke-primary {\n stroke: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n.stroke-secondary {\n stroke: var-list(--tct-icon-stroke-secondary, --t-icon-stroke-secondary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-secondary-transition, none);\n}\n\n.fill-primary {\n fill: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n.fill-secondary {\n fill: var-list(--tct-icon-stroke-secondary, --t-icon-stroke-secondary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-secondary-transition, none);\n}\n\n.filled {\n fill: var-list(--tct-icon-fill, --comp-icon-fill, --t-icon-fill, none);\n transition: var(--tct-icon-fill-transition, none);\n}\n\n.brand-filled {\n fill: var-list(--tct-brand-icon-fill, --tct-icon-fill, currentColor);\n transition: var(--tct-icon-fill-transition, none);\n}\n\n.uniform {\n fill: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n:host([type='info']),\n:host([type='info-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-info, --const-stoplight-info, #0079c1)};\n}\n\n:host([type='success']),\n:host([type='success-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-success, --const-stoplight-success, #0e8a00)};\n}\n\n:host([type='warning']),\n:host([type='warning-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-warning, --const-stoplight-warning, #c35500)};\n}\n\n:host([type='error']),\n:host([type='error-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-alert, --const-stoplight-alert, #d20a0a)};\n}\n","import { Component, ComponentInterface, Prop, h, Element, Watch, getAssetPath, State } from '@stencil/core';\nimport { createGuid } from 'src/utils';\nimport { getOrCreateSpriteContainer } from '@/utils/sprites';\nimport iconMap from './assets/icon-map.json';\n\n@Component({ tag: 'q2-icon', shadow: true, styleUrl: 'q2-icon.scss', assetsDirs: ['assets'] })\nexport class Q2Icon implements ComponentInterface {\n // #region Own Properties\n\n spriteGroup: SVGElement;\n spritePrefix: string = 'tecton-sprite-';\n spriteUse: SVGElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n iconClone: SVGSymbolElement;\n\n // #endregion\n // #region Public Property API\n\n /** Styles the component to have a `height` and `width` of `1em`, making it easy to place alongside text. */\n @Prop({ reflect: true })\n inline: boolean;\n\n /** The text that is presented by screen-readers when they encounter the icon. */\n @Prop({ reflect: true })\n label: string;\n\n /** The name of the icon to be displayed. */\n @Prop({ reflect: true })\n type: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n this.spriteGroup = null;\n this.spriteUse = null;\n }\n\n componentWillLoad() {\n this.handleIcon();\n }\n\n componentDidRender(): void {\n if (!this.iconClone) return;\n this.spriteGroup?.firstElementChild?.remove();\n const appendedClone = this.spriteGroup?.appendChild(this.iconClone);\n\n // We have to set the `href` attribute after the symbol is appended to the DOM to avoid a bug in Safari\n this.spriteUse?.setAttribute('href', `#${appendedClone.id}`);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('type')\n handleIcon() {\n if (this.isCustom) {\n this.setCustomSVGAttrs();\n } else if (this.type) {\n this.fetchSprite();\n } else {\n this.iconClone = null;\n this.spriteGroup?.firstElementChild?.remove();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get iconCloneViewBox() {\n return this.iconClone?.getAttribute('viewBox') ?? '0 0 24 24';\n }\n\n get isCustom() {\n return this.type === 'custom';\n }\n\n get spriteElement() {\n const { spriteId } = this;\n if (!spriteId) return;\n return document.querySelector<HTMLElement>(`#${spriteId}`);\n }\n\n get spriteEventName() {\n const { spriteFileName } = this;\n if (!spriteFileName) return;\n return `tct-loaded-${spriteFileName}`;\n }\n\n get spriteFileName() {\n if (this.isCustom) return;\n return iconMap[this.type];\n }\n\n get spriteId() {\n const { spriteFileName } = this;\n if (!spriteFileName) return;\n return `${this.spritePrefix}${spriteFileName}`;\n }\n\n checkForSprite() {\n const { spriteId, spriteEventName } = this;\n const spriteContainer = getOrCreateSpriteContainer();\n let spriteElement: HTMLElement = document.getElementById(spriteId);\n\n // If the sprite element exists and has the `data-loaded` attribute, we know we have everything we need\n if (spriteElement?.hasAttribute('data-loaded') ?? false) {\n this.cloneSpriteNode();\n return true;\n }\n\n // If the sprite element exists but does not have the `data-loaded` attribute, we know it's being loaded\n // We'll listen for the event that will be dispatched when the sprite is loaded\n spriteContainer.addEventListener(\n spriteEventName,\n () => {\n this.cloneSpriteNode();\n },\n { once: true }\n );\n\n // If the sprite element exists, we know it's being loaded and will be handled by the event listener\n if (spriteElement) return true;\n\n // If sprite element does not exist, create a placeholder\n // This will let other icons know the sprite is being loaded\n spriteElement = document.createElement('div');\n spriteElement.id = spriteId;\n spriteContainer.appendChild(spriteElement);\n return false;\n }\n\n cloneSpriteNode() {\n const spriteNode = document.getElementById(`tct-${this.type}`);\n this.iconClone = spriteNode ? (spriteNode.cloneNode(true) as SVGSymbolElement) : undefined;\n }\n\n async fetchSprite() {\n const { spriteFileName, spriteId, spriteEventName } = this;\n\n const spriteExists = this.checkForSprite();\n if (spriteExists) return;\n\n if (!spriteFileName) return;\n const spritePath = getAssetPath(`assets/${spriteFileName}.symbol.svg`);\n const response = await fetch(spritePath);\n const data = await response.text();\n const wrappingDiv = document.createElement('div');\n wrappingDiv.innerHTML = data;\n const svg = wrappingDiv.querySelector('svg');\n\n svg.id = spriteId;\n svg.setAttribute('data-loaded', '');\n\n let { spriteElement } = this;\n if (spriteElement?.tagName === 'SVG') return;\n\n if (typeof spriteElement.replaceWith === 'function') {\n spriteElement.replaceWith(svg);\n } else {\n spriteElement.parentNode.replaceChild(svg, spriteElement);\n }\n\n spriteElement = document.getElementById(spriteId);\n spriteElement.dispatchEvent(new CustomEvent(spriteEventName, { bubbles: true }));\n }\n\n setCustomSVGAttrs() {\n const innerSVG = this.hostElement.querySelector('svg');\n\n if (!innerSVG) return;\n\n innerSVG.setAttribute('role', 'img');\n innerSVG.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n const { label } = this;\n if (label) {\n const title = document.createElement('title');\n const labelId = `label-${createGuid()}`;\n title.id = labelId;\n title.textContent = label;\n innerSVG.appendChild(title);\n innerSVG.setAttribute('aria-labelledby', labelId);\n } else {\n innerSVG.setAttribute('aria-hidden', 'true');\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { label, type } = this;\n return this.isCustom ? (\n <slot />\n ) : (\n <svg\n aria-hidden={!!label ? undefined : 'true'}\n role={!!label ? 'img' : undefined}\n aria-labelledby={!!label ? 'label' : undefined}\n viewBox={this.iconCloneViewBox}\n xmlns=\"http://www.w3.org/2000/svg\"\n class={this.spriteFileName}\n >\n {!!label && <title id=\"label\">{label}</title>}\n {!!type && <use ref={el => (this.spriteUse = el)} />}\n <g ref={el => (this.spriteGroup = el)}></g>\n </svg>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}