@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.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 (262) hide show
  1. package/core/constants/autocomplete.const.d.ts +4 -0
  2. package/core/constants/context-selector.const.d.ts +1 -0
  3. package/core/constants/gantt.const.d.ts +7 -0
  4. package/core/constants/hyperlink.const.d.ts +1 -0
  5. package/core/constants/inline-edit.const.d.ts +4 -0
  6. package/core/constants/kanban.const.d.ts +2 -0
  7. package/core/constants/pin-code-field.const.d.ts +5 -0
  8. package/core/constants/rating-scale.const.d.ts +1 -0
  9. package/core/constants/spotlight.const.d.ts +8 -0
  10. package/core/constants/star-rating.const.d.ts +4 -0
  11. package/core/constants/stepper.const.d.ts +1 -0
  12. package/core/constants/tiered-menu.const.d.ts +3 -0
  13. package/core/types/autocomplete.type.d.ts +9 -0
  14. package/core/types/chat.type.d.ts +12 -0
  15. package/core/types/checkbox-list.type.d.ts +12 -0
  16. package/core/types/gantt.type.d.ts +22 -0
  17. package/core/types/grid-menu.type.d.ts +13 -0
  18. package/core/types/hyperlink.type.d.ts +1 -0
  19. package/core/types/image-cropper.type.d.ts +20 -0
  20. package/core/types/inline-edit.type.d.ts +26 -0
  21. package/core/types/kanban.type.d.ts +36 -0
  22. package/core/types/panel.type.d.ts +16 -0
  23. package/core/types/profile-picture-picker.type.d.ts +9 -0
  24. package/core/types/rating-scale.type.d.ts +5 -0
  25. package/core/types/select-button.type.d.ts +1 -0
  26. package/core/types/spotlight.type.d.ts +34 -0
  27. package/core/types/star-rating.type.d.ts +1 -0
  28. package/core/types/stepper.type.d.ts +20 -0
  29. package/core/types/table-column.type.d.ts +3 -1
  30. package/core/types/table-options.type.d.ts +8 -2
  31. package/core/types/table.type.d.ts +1 -1
  32. package/core/types/tiered-menu.type.d.ts +16 -0
  33. package/core/types/tree.type.d.ts +25 -0
  34. package/core/types/workspace-switch.type.d.ts +6 -0
  35. package/core/utils/body-scroll.util.d.ts +2 -0
  36. package/core/utils/roving-focus.util.d.ts +2 -0
  37. package/core/utils/selection.util.d.ts +3 -0
  38. package/core/utils/tree.util.d.ts +4 -0
  39. package/esm2022/core/constants/autocomplete.const.mjs +5 -0
  40. package/esm2022/core/constants/context-selector.const.mjs +2 -0
  41. package/esm2022/core/constants/gantt.const.mjs +7 -0
  42. package/esm2022/core/constants/hyperlink.const.mjs +2 -1
  43. package/esm2022/core/constants/inline-edit.const.mjs +5 -0
  44. package/esm2022/core/constants/kanban.const.mjs +3 -0
  45. package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
  46. package/esm2022/core/constants/rating-scale.const.mjs +2 -0
  47. package/esm2022/core/constants/spotlight.const.mjs +9 -0
  48. package/esm2022/core/constants/star-rating.const.mjs +5 -0
  49. package/esm2022/core/constants/stepper.const.mjs +2 -0
  50. package/esm2022/core/constants/table.const.mjs +2 -2
  51. package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
  52. package/esm2022/core/types/autocomplete.type.mjs +2 -0
  53. package/esm2022/core/types/chat.type.mjs +2 -0
  54. package/esm2022/core/types/checkbox-list.type.mjs +2 -0
  55. package/esm2022/core/types/gantt.type.mjs +2 -0
  56. package/esm2022/core/types/grid-menu.type.mjs +2 -0
  57. package/esm2022/core/types/hyperlink.type.mjs +1 -1
  58. package/esm2022/core/types/image-cropper.type.mjs +2 -0
  59. package/esm2022/core/types/inline-edit.type.mjs +2 -0
  60. package/esm2022/core/types/kanban.type.mjs +2 -0
  61. package/esm2022/core/types/panel.type.mjs +9 -0
  62. package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
  63. package/esm2022/core/types/rating-scale.type.mjs +2 -0
  64. package/esm2022/core/types/select-button.type.mjs +1 -1
  65. package/esm2022/core/types/spotlight.type.mjs +2 -0
  66. package/esm2022/core/types/star-rating.type.mjs +2 -0
  67. package/esm2022/core/types/stepper.type.mjs +7 -0
  68. package/esm2022/core/types/table-column.type.mjs +1 -1
  69. package/esm2022/core/types/table-options.type.mjs +1 -1
  70. package/esm2022/core/types/table.type.mjs +1 -1
  71. package/esm2022/core/types/tiered-menu.type.mjs +2 -0
  72. package/esm2022/core/types/tree.type.mjs +2 -0
  73. package/esm2022/core/types/workspace-switch.type.mjs +2 -0
  74. package/esm2022/core/utils/body-scroll.util.mjs +19 -0
  75. package/esm2022/core/utils/combobox.util.mjs +3 -2
  76. package/esm2022/core/utils/roving-focus.util.mjs +20 -0
  77. package/esm2022/core/utils/selection.util.mjs +13 -0
  78. package/esm2022/core/utils/string.util.mjs +8 -3
  79. package/esm2022/core/utils/tree.util.mjs +23 -0
  80. package/esm2022/features/accordion/accordion.component.mjs +2 -2
  81. package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
  82. package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
  83. package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
  84. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
  85. package/esm2022/features/card-list/card/card.component.mjs +63 -99
  86. package/esm2022/features/chat/chat.component.mjs +126 -0
  87. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
  88. package/esm2022/features/combobox/combobox.component.mjs +20 -8
  89. package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
  90. package/esm2022/features/filters/filters.component.mjs +1 -1
  91. package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
  92. package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
  93. package/esm2022/features/gantt/gantt.component.mjs +89 -0
  94. package/esm2022/features/gantt/gantt.engine.mjs +662 -0
  95. package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
  96. package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
  97. package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
  98. package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
  99. package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
  100. package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
  101. package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
  102. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
  103. package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
  104. package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
  105. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
  106. package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
  107. package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
  108. package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
  109. package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
  110. package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
  111. package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
  112. package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
  113. package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
  114. package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
  115. package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
  116. package/esm2022/features/kanban/kanban.component.mjs +198 -0
  117. package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
  118. package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
  119. package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
  120. package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
  121. package/esm2022/features/paginator/paginator.component.mjs +8 -3
  122. package/esm2022/features/panel/panel.component.mjs +43 -11
  123. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
  124. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
  125. package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
  126. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
  127. package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
  128. package/esm2022/features/select-button/select-button.component.mjs +7 -4
  129. package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
  130. package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
  131. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
  132. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
  133. package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
  134. package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
  135. package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
  136. package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
  137. package/esm2022/features/stepper/stepper.component.mjs +86 -0
  138. package/esm2022/features/switch/switch.component.mjs +12 -8
  139. package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
  140. package/esm2022/features/tab/tab.component.mjs +4 -4
  141. package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
  142. package/esm2022/features/table/table.component.mjs +220 -29
  143. package/esm2022/features/table/utils/table-data.util.mjs +71 -8
  144. package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
  145. package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
  146. package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  147. package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
  148. package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
  149. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
  150. package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
  151. package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
  152. package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
  153. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
  154. package/esm2022/features/tree/tree.component.mjs +211 -0
  155. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
  156. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
  157. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
  158. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
  159. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
  160. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
  161. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
  162. package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
  163. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
  164. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
  165. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
  166. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
  167. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
  168. package/esm2022/locales/en.json +351 -3
  169. package/esm2022/locales/es-CO.json +351 -3
  170. package/esm2022/locales/pt.json +351 -3
  171. package/esm2022/providers/features.provider.mjs +40 -4
  172. package/esm2022/public-api.mjs +56 -3
  173. package/features/accordion/accordion.component.d.ts +1 -1
  174. package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
  175. package/features/autocomplete/autocomplete.component.d.ts +102 -0
  176. package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
  177. package/features/card-list/card/card.component.d.ts +14 -34
  178. package/features/chat/chat.component.d.ts +31 -0
  179. package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
  180. package/features/combobox/combobox.component.d.ts +2 -1
  181. package/features/context-selector/context-selector.component.d.ts +37 -0
  182. package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
  183. package/features/gantt/gantt-date.utils.d.ts +36 -0
  184. package/features/gantt/gantt.component.d.ts +24 -0
  185. package/features/gantt/gantt.engine.d.ts +52 -0
  186. package/features/grid-menu/grid-menu.component.d.ts +29 -0
  187. package/features/hyperlink/hyperlink.component.d.ts +2 -1
  188. package/features/image-cropper/image-cropper.component.d.ts +43 -0
  189. package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
  190. package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
  191. package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
  192. package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
  193. package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
  194. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
  195. package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
  196. package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
  197. package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
  198. package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
  199. package/features/inline-edit/inline-edit.component.d.ts +13 -0
  200. package/features/interactive-content/interactive-content.directive.d.ts +31 -0
  201. package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
  202. package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
  203. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
  204. package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
  205. package/features/kanban/kanban.component.d.ts +32 -0
  206. package/features/kanban/services/kanban-event.service.d.ts +15 -0
  207. package/features/loading-state/loading-state.component.d.ts +0 -2
  208. package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
  209. package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
  210. package/features/panel/panel.component.d.ts +12 -3
  211. package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
  212. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
  213. package/features/rating-scale/rating-scale.component.d.ts +24 -0
  214. package/features/select-button/select-button.component.d.ts +2 -1
  215. package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
  216. package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
  217. package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
  218. package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
  219. package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
  220. package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
  221. package/features/spotlight/spotlight.component.d.ts +59 -0
  222. package/features/star-rating/star-rating.component.d.ts +26 -0
  223. package/features/stepper/stepper.component.d.ts +23 -0
  224. package/features/switch/switch.component.d.ts +2 -1
  225. package/features/tab/tab.component.d.ts +1 -1
  226. package/features/table/components/table-cell-content.component.d.ts +4 -3
  227. package/features/table/table.component.d.ts +40 -5
  228. package/features/table/utils/table-data.util.d.ts +1 -0
  229. package/features/table/utils/table-layout.util.d.ts +1 -0
  230. package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
  231. package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
  232. package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
  233. package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
  234. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
  235. package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
  236. package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
  237. package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
  238. package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
  239. package/features/tree/tree.component.d.ts +37 -0
  240. package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
  241. package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
  242. package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
  243. package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
  244. package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
  245. package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
  246. package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
  247. package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
  248. package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
  249. package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
  250. package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
  251. package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
  252. package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
  253. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
  254. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  255. package/package.json +8 -8
  256. package/public-api.d.ts +72 -2
  257. package/src/locales/en.json +353 -15
  258. package/src/locales/es-CO.json +352 -14
  259. package/src/locales/pt.json +352 -14
  260. package/styles/sdc-global-variables.scss +1 -1
  261. package/styles.css +1 -1
  262. /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
@@ -1,5 +1,28 @@
1
1
  import { TABLE_DEFAULT_ROW_ID_PREVIEW_LENGTH, TABLE_INDEX_ZERO } from '../../../core/constants/table.const';
2
2
  import { formatNumericValue } from '../../../core/utils/numeric.util';
3
+ function stringifyUnknown(value) {
4
+ if (value == null) {
5
+ return '';
6
+ }
7
+ if (typeof value === 'string') {
8
+ return value;
9
+ }
10
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
11
+ return String(value);
12
+ }
13
+ if (Array.isArray(value)) {
14
+ return value.map((entry) => stringifyUnknown(entry)).join(' ');
15
+ }
16
+ if (typeof value === 'object') {
17
+ try {
18
+ return JSON.stringify(value);
19
+ }
20
+ catch {
21
+ return '';
22
+ }
23
+ }
24
+ return '';
25
+ }
3
26
  export function getObjectValue(source, key) {
4
27
  if (!source || typeof source !== 'object') {
5
28
  return undefined;
@@ -46,23 +69,63 @@ export function formatTableCurrency(value, currency = 'BRL') {
46
69
  });
47
70
  }
48
71
  export function toTableTextValue(value) {
49
- return typeof value === 'string' ? value : String(value ?? '');
72
+ return stringifyUnknown(value);
50
73
  }
51
74
  export function resolveRowIdentityLabel(rowIdentity) {
52
75
  if (rowIdentity.name) {
53
- return String(rowIdentity.name);
76
+ return stringifyUnknown(rowIdentity.name);
54
77
  }
55
78
  if (rowIdentity.title) {
56
- return String(rowIdentity.title);
79
+ return stringifyUnknown(rowIdentity.title);
57
80
  }
58
81
  if (rowIdentity.label) {
59
- return String(rowIdentity.label);
82
+ return stringifyUnknown(rowIdentity.label);
60
83
  }
61
84
  if (rowIdentity.id) {
62
- return String(rowIdentity.id);
85
+ return stringifyUnknown(rowIdentity.id);
63
86
  }
64
87
  return 'item';
65
88
  }
89
+ export function resolveRowSelectionKey(row) {
90
+ if (!row || typeof row !== 'object') {
91
+ return `primitive:${String(row)}`;
92
+ }
93
+ const rowIdentity = row;
94
+ // Try standard identity fields
95
+ const idKey = tryResolveIdField(rowIdentity, 'id');
96
+ if (idKey) {
97
+ return idKey;
98
+ }
99
+ const nameKey = tryResolveIdField(rowIdentity, 'name');
100
+ if (nameKey) {
101
+ return nameKey;
102
+ }
103
+ const titleKey = tryResolveIdField(rowIdentity, 'title');
104
+ if (titleKey) {
105
+ return titleKey;
106
+ }
107
+ const labelKey = tryResolveIdField(rowIdentity, 'label');
108
+ if (labelKey) {
109
+ return labelKey;
110
+ }
111
+ // Fallback: serialize or string representation
112
+ return serializeRowFallback(row);
113
+ }
114
+ function tryResolveIdField(obj, field) {
115
+ const value = obj[field];
116
+ if (value !== undefined && value !== null && value !== '') {
117
+ return `${field}:${stringifyUnknown(value)}`;
118
+ }
119
+ return null;
120
+ }
121
+ function serializeRowFallback(row) {
122
+ try {
123
+ return `json:${JSON.stringify(row)}`;
124
+ }
125
+ catch {
126
+ return `fallback:${String(row)}`;
127
+ }
128
+ }
66
129
  export function buildRowCheckboxId(row) {
67
130
  if (!row || typeof row !== 'object') {
68
131
  return `checkbox-row-${String(row)}`;
@@ -71,7 +134,7 @@ export function buildRowCheckboxId(row) {
71
134
  const rowId = rowIdentity.id ??
72
135
  rowIdentity.name ??
73
136
  JSON.stringify(row).substring(TABLE_INDEX_ZERO, TABLE_DEFAULT_ROW_ID_PREVIEW_LENGTH);
74
- return `checkbox-row-${String(rowId).replace(/[^a-zA-Z0-9]/g, '-')}`;
137
+ return `checkbox-row-${stringifyUnknown(rowId).replace(/[^a-zA-Z0-9]/g, '-')}`;
75
138
  }
76
139
  export function filterTableRows(data, cols, query, resolveValue) {
77
140
  const normalizedQuery = query.trim().toLowerCase();
@@ -90,7 +153,7 @@ export function filterTableRows(data, cols, query, resolveValue) {
90
153
  if (Array.isArray(value)) {
91
154
  return value.join(' ').toLowerCase().includes(normalizedQuery);
92
155
  }
93
- return String(value ?? '').toLowerCase().includes(normalizedQuery);
156
+ return stringifyUnknown(value).toLowerCase().includes(normalizedQuery);
94
157
  }));
95
158
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWJsZS91dGlscy90YWJsZS1kYXRhLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxnQkFBZ0IsRUFDakIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RSxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWUsRUFBRSxHQUFXO0lBQ3pELElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQVEsTUFBa0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZLEVBQUUsS0FBNEI7SUFDckUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsR0FBTSxFQUNOLElBQXdCLEVBQ3hCLEtBQTRCO0lBRTVCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFD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V19JRF9QUkVWSUVXX0xFTkdUSCxcbiAgVEFCTEVfSU5ERVhfWkVST1xufSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbnN0YW50cy90YWJsZS5jb25zdCc7XG5pbXBvcnQgdHlwZSB7IFJvd0Jhc2UsIFRhYmxlQ29sdW1uLCBUYWJsZVJvd0lkZW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcy90YWJsZS50eXBlJztcbmltcG9ydCB7IGZvcm1hdE51bWVyaWNWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvbnVtZXJpYy51dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdFZhbHVlKHNvdXJjZTogdW5rbm93biwga2V5OiBzdHJpbmcpOiB1bmtub3duIHtcbiAgaWYgKCFzb3VyY2UgfHwgdHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIChzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoUGFydHMocGF0aDogc3RyaW5nLCBjYWNoZTogTWFwPHN0cmluZywgc3RyaW5nW10+KTogc3RyaW5nW10ge1xuICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQocGF0aCk7XG5cbiAgaWYgKGNhY2hlZCkge1xuICAgIHJldHVybiBjYWNoZWQ7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgY2FjaGUuc2V0KHBhdGgsIHBhcnRzKTtcbiAgcmV0dXJuIHBhcnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkVmFsdWU8VCBleHRlbmRzIFJvd0Jhc2UgPSBSb3dCYXNlPihcbiAgb2JqOiBULFxuICBwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGNhY2hlOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT5cbik6IHVua25vd24ge1xuICBpZiAoIXBhdGgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcGFydHMgPSBnZXRQYXRoUGFydHMocGF0aCwgY2FjaGUpO1xuICBsZXQgYWNjdW11bGF0b3I6IHVua25vd24gPSBvYmo7XG5cbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgbmV4dCA9IGdldE9iamVjdFZhbHVlKGFjY3VtdWxhdG9yLCBwYXJ0KTtcblxuICAgIGlmICh0eXBlb2YgbmV4dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgYWNjdW11bGF0b3IgPSBuZXh0O1xuICB9XG5cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGFibGVEYXRlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodW5kZWZpbmVkKS5mb3JtYXQobmV3IERhdGUodmFsdWUgYXMgc3RyaW5nKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB0b1RhYmxlVGV4dFZhbHVlKHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGFibGVDdXJyZW5jeSh2YWx1ZTogdW5rbm93biwgY3VycmVuY3kgPSAnQlJMJyk6IHN0cmluZyB7XG4gIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogbnVsbDtcblxuICByZXR1cm4gZm9ybWF0TnVtZXJpY1ZhbHVlKG51bWVyaWNWYWx1ZSwge1xuICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgIGN1cnJlbmN5XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9UYWJsZVRleHRWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiBTdHJpbmcodmFsdWUgPz8gJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJvd0lkZW50aXR5TGFiZWwocm93SWRlbnRpdHk6IFRhYmxlUm93SWRlbnRpdHkpOiBzdHJpbmcge1xuICBpZiAocm93SWRlbnRpdHkubmFtZSkge1xuICAgIHJldHVybiBTdHJpbmcocm93SWRlbnRpdHkubmFtZSk7XG4gIH1cblxuICBpZiAocm93SWRlbnRpdHkudGl0bGUpIHtcbiAgICByZXR1cm4gU3RyaW5nKHJvd0lkZW50aXR5LnRpdGxlKTtcbiAgfVxuXG4gIGlmIChyb3dJZGVudGl0eS5sYWJlbCkge1xuICAgIHJldHVybiBTdHJpbmcocm93SWRlbnRpdHkubGFiZWwpO1xuICB9XG5cbiAgaWYgKHJvd0lkZW50aXR5LmlkKSB7XG4gICAgcmV0dXJuIFN0cmluZyhyb3dJZGVudGl0eS5pZCk7XG4gIH1cblxuICByZXR1cm4gJ2l0ZW0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSb3dDaGVja2JveElkPFQgZXh0ZW5kcyBSb3dCYXNlID0gUm93QmFzZT4ocm93OiBUKTogc3RyaW5nIHtcbiAgaWYgKCFyb3cgfHwgdHlwZW9mIHJvdyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gYGNoZWNrYm94LXJvdy0ke1N0cmluZyhyb3cpfWA7XG4gIH1cblxuICBjb25zdCByb3dJZGVudGl0eSA9IHJvdyBhcyBUYWJsZVJvd0lkZW50aXR5O1xuICBjb25zdCByb3dJZCA9XG4gICAgcm93SWRlbnRpdHkuaWQgPz9cbiAgICByb3dJZGVudGl0eS5uYW1lID8/XG4gICAgSlNPTi5zdHJpbmdpZnkocm93KS5zdWJzdHJpbmcoVEFCTEVfSU5ERVhfWkVSTywgVEFCTEVfREVGQVVMVF9ST1dfSURfUFJFVklFV19MRU5HVEgpO1xuXG4gIHJldHVybiBgY2hlY2tib3gtcm93LSR7U3RyaW5nKHJvd0lkKS5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJy0nKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyVGFibGVSb3dzPFQgZXh0ZW5kcyBSb3dCYXNlID0gUm93QmFzZT4oXG4gIGRhdGE6IFRbXSxcbiAgY29sczogVGFibGVDb2x1bW48VD5bXSxcbiAgcXVlcnk6IHN0cmluZyxcbiAgcmVzb2x2ZVZhbHVlOiAocm93OiBULCBmaWVsZD86IHN0cmluZykgPT4gdW5rbm93blxuKTogVFtdIHtcbiAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gcXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKCFub3JtYWxpemVkUXVlcnkpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGNvbnN0IGZpZWxkcyA9IGNvbHNcbiAgICAuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5zZWFyY2hhYmxlID8/IHRydWUpXG4gICAgLmZpbHRlcigoY29sdW1uKTogY29sdW1uIGlzIHR5cGVvZiBjb2x1bW4gJiB7IGZpZWxkOiBzdHJpbmcgfSA9PiAhIWNvbHVtbi5maWVsZClcbiAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5maWVsZCk7XG5cbiAgaWYgKGZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHJldHVybiBkYXRhLmZpbHRlcigocm93KSA9PlxuICAgIGZpZWxkcy5zb21lKChmaWVsZCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlVmFsdWUocm93LCBmaWVsZCk7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUuam9pbignICcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSA/PyAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhub3JtYWxpemVkUXVlcnkpO1xuICAgIH0pXG4gICk7XG59XG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWJsZS91dGlscy90YWJsZS1kYXRhLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxnQkFBZ0IsRUFDakIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RSxTQUFTLGdCQUFnQixDQUFDLEtBQWM7SUFDdEMsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekYsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFD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LENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFbkQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUk7U0FDaEIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztTQUM3QyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQStDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMvRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUQUJMRV9ERUZBVUxUX1JPV19JRF9QUkVWSUVXX0xFTkdUSCxcbiAgVEFCTEVfSU5ERVhfWkVST1xufSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbnN0YW50cy90YWJsZS5jb25zdCc7XG5pbXBvcnQgdHlwZSB7IFJvd0Jhc2UsIFRhYmxlQ29sdW1uLCBUYWJsZVJvd0lkZW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcy90YWJsZS50eXBlJztcbmltcG9ydCB7IGZvcm1hdE51bWVyaWNWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvbnVtZXJpYy51dGlsJztcblxuZnVuY3Rpb24gc3RyaW5naWZ5VW5rbm93bih2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKSB7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKChlbnRyeSkgPT4gc3RyaW5naWZ5VW5rbm93bihlbnRyeSkpLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0VmFsdWUoc291cmNlOiB1bmtub3duLCBrZXk6IHN0cmluZyk6IHVua25vd24ge1xuICBpZiAoIXNvdXJjZSB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gKHNvdXJjZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGhQYXJ0cyhwYXRoOiBzdHJpbmcsIGNhY2hlOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChwYXRoKTtcblxuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICBjYWNoZS5zZXQocGF0aCwgcGFydHMpO1xuICByZXR1cm4gcGFydHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXN0ZWRWYWx1ZTxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+KFxuICBvYmo6IFQsXG4gIHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgY2FjaGU6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPlxuKTogdW5rbm93biB7XG4gIGlmICghcGF0aCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IGdldFBhdGhQYXJ0cyhwYXRoLCBjYWNoZSk7XG4gIGxldCBhY2N1bXVsYXRvcjogdW5rbm93biA9IG9iajtcblxuICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBjb25zdCBuZXh0ID0gZ2V0T2JqZWN0VmFsdWUoYWNjdW11bGF0b3IsIHBhcnQpO1xuXG4gICAgaWYgKHR5cGVvZiBuZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBhY2N1bXVsYXRvciA9IG5leHQ7XG4gIH1cblxuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUYWJsZURhdGUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh1bmRlZmluZWQpLmZvcm1hdChuZXcgRGF0ZSh2YWx1ZSBhcyBzdHJpbmcpKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHRvVGFibGVUZXh0VmFsdWUodmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUYWJsZUN1cnJlbmN5KHZhbHVlOiB1bmtub3duLCBjdXJyZW5jeSA9ICdCUkwnKTogc3RyaW5nIHtcbiAgY29uc3QgbnVtZXJpY1ZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiBudWxsO1xuXG4gIHJldHVybiBmb3JtYXROdW1lcmljVmFsdWUobnVtZXJpY1ZhbHVlLCB7XG4gICAgc3R5bGU6ICdjdXJyZW5jeScsXG4gICAgY3VycmVuY3lcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1RhYmxlVGV4dFZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0cmluZ2lmeVVua25vd24odmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJvd0lkZW50aXR5TGFiZWwocm93SWRlbnRpdHk6IFRhYmxlUm93SWRlbnRpdHkpOiBzdHJpbmcge1xuICBpZiAocm93SWRlbnRpdHkubmFtZSkge1xuICAgIHJldHVybiBzdHJpbmdpZnlVbmtub3duKHJvd0lkZW50aXR5Lm5hbWUpO1xuICB9XG5cbiAgaWYgKHJvd0lkZW50aXR5LnRpdGxlKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeVVua25vd24ocm93SWRlbnRpdHkudGl0bGUpO1xuICB9XG5cbiAgaWYgKHJvd0lkZW50aXR5LmxhYmVsKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeVVua25vd24ocm93SWRlbnRpdHkubGFiZWwpO1xuICB9XG5cbiAgaWYgKHJvd0lkZW50aXR5LmlkKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeVVua25vd24ocm93SWRlbnRpdHkuaWQpO1xuICB9XG5cbiAgcmV0dXJuICdpdGVtJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSb3dTZWxlY3Rpb25LZXk8VCBleHRlbmRzIFJvd0Jhc2UgPSBSb3dCYXNlPihyb3c6IFQpOiBzdHJpbmcge1xuICBpZiAoIXJvdyB8fCB0eXBlb2Ygcm93ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBgcHJpbWl0aXZlOiR7U3RyaW5nKHJvdyl9YDtcbiAgfVxuXG4gIGNvbnN0IHJvd0lkZW50aXR5ID0gcm93IGFzIFRhYmxlUm93SWRlbnRpdHk7XG5cbiAgLy8gVHJ5IHN0YW5kYXJkIGlkZW50aXR5IGZpZWxkc1xuICBjb25zdCBpZEtleSA9IHRyeVJlc29sdmVJZEZpZWxkKHJvd0lkZW50aXR5LCAnaWQnKTtcbiAgaWYgKGlkS2V5KSB7XG4gICAgcmV0dXJuIGlkS2V5O1xuICB9XG5cbiAgY29uc3QgbmFtZUtleSA9IHRyeVJlc29sdmVJZEZpZWxkKHJvd0lkZW50aXR5LCAnbmFtZScpO1xuICBpZiAobmFtZUtleSkge1xuICAgIHJldHVybiBuYW1lS2V5O1xuICB9XG5cbiAgY29uc3QgdGl0bGVLZXkgPSB0cnlSZXNvbHZlSWRGaWVsZChyb3dJZGVudGl0eSwgJ3RpdGxlJyk7XG4gIGlmICh0aXRsZUtleSkge1xuICAgIHJldHVybiB0aXRsZUtleTtcbiAgfVxuXG4gIGNvbnN0IGxhYmVsS2V5ID0gdHJ5UmVzb2x2ZUlkRmllbGQocm93SWRlbnRpdHksICdsYWJlbCcpO1xuICBpZiAobGFiZWxLZXkpIHtcbiAgICByZXR1cm4gbGFiZWxLZXk7XG4gIH1cblxuICAvLyBGYWxsYmFjazogc2VyaWFsaXplIG9yIHN0cmluZyByZXByZXNlbnRhdGlvblxuICByZXR1cm4gc2VyaWFsaXplUm93RmFsbGJhY2socm93KTtcbn1cblxuZnVuY3Rpb24gdHJ5UmVzb2x2ZUlkRmllbGQob2JqOiBUYWJsZVJvd0lkZW50aXR5LCBmaWVsZDoga2V5b2YgVGFibGVSb3dJZGVudGl0eSk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB2YWx1ZSA9IG9ialtmaWVsZF07XG4gIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xuICAgIHJldHVybiBgJHtmaWVsZH06JHtzdHJpbmdpZnlVbmtub3duKHZhbHVlKX1gO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVSb3dGYWxsYmFjazxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+KHJvdzogVCk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGBqc29uOiR7SlNPTi5zdHJpbmdpZnkocm93KX1gO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gYGZhbGxiYWNrOiR7U3RyaW5nKHJvdyl9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSb3dDaGVja2JveElkPFQgZXh0ZW5kcyBSb3dCYXNlID0gUm93QmFzZT4ocm93OiBUKTogc3RyaW5nIHtcbiAgaWYgKCFyb3cgfHwgdHlwZW9mIHJvdyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gYGNoZWNrYm94LXJvdy0ke1N0cmluZyhyb3cpfWA7XG4gIH1cblxuICBjb25zdCByb3dJZGVudGl0eSA9IHJvdyBhcyBUYWJsZVJvd0lkZW50aXR5O1xuICBjb25zdCByb3dJZCA9XG4gICAgcm93SWRlbnRpdHkuaWQgPz9cbiAgICByb3dJZGVudGl0eS5uYW1lID8/XG4gICAgSlNPTi5zdHJpbmdpZnkocm93KS5zdWJzdHJpbmcoVEFCTEVfSU5ERVhfWkVSTywgVEFCTEVfREVGQVVMVF9ST1dfSURfUFJFVklFV19MRU5HVEgpO1xuXG4gIHJldHVybiBgY2hlY2tib3gtcm93LSR7c3RyaW5naWZ5VW5rbm93bihyb3dJZCkucmVwbGFjZSgvW15hLXpBLVowLTldL2csICctJyl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclRhYmxlUm93czxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+KFxuICBkYXRhOiBUW10sXG4gIGNvbHM6IFRhYmxlQ29sdW1uPFQ+W10sXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHJlc29sdmVWYWx1ZTogKHJvdzogVCwgZmllbGQ/OiBzdHJpbmcpID0+IHVua25vd25cbik6IFRbXSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHF1ZXJ5LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICghbm9ybWFsaXplZFF1ZXJ5KSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBjb25zdCBmaWVsZHMgPSBjb2xzXG4gICAgLmZpbHRlcigoY29sdW1uKSA9PiBjb2x1bW4uc2VhcmNoYWJsZSA/PyB0cnVlKVxuICAgIC5maWx0ZXIoKGNvbHVtbik6IGNvbHVtbiBpcyB0eXBlb2YgY29sdW1uICYgeyBmaWVsZDogc3RyaW5nIH0gPT4gISFjb2x1bW4uZmllbGQpXG4gICAgLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4uZmllbGQpO1xuXG4gIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICByZXR1cm4gZGF0YS5maWx0ZXIoKHJvdykgPT5cbiAgICBmaWVsZHMuc29tZSgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVZhbHVlKHJvdywgZmllbGQpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdHJpbmdpZnlVbmtub3duKHZhbHVlKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSk7XG4gICAgfSlcbiAgKTtcbn1cbiJdfQ==
@@ -12,9 +12,29 @@ const COLUMN_MIN_WIDTH_MAP = {
12
12
  strong: TABLE_DEFAULT_STRONG_COLUMN_MIN_WIDTH_PX,
13
13
  tag: TABLE_DEFAULT_TAG_COLUMN_MIN_WIDTH_PX,
14
14
  };
15
+ const DEFAULT_ALIGNMENT_BY_TYPE = {
16
+ 'checkbox-selection': 'center',
17
+ actions: 'center',
18
+ button: 'center',
19
+ currency: 'right',
20
+ date: 'center',
21
+ icon: 'center',
22
+ number: 'right'
23
+ };
15
24
  export function normalizeTableColumnAlignment(value) {
16
25
  return value === 'left' || value === 'center' || value === 'right' ? value : null;
17
26
  }
27
+ export function resolveTableColumnAlignment(column, target = 'cell') {
28
+ const targetAlignment = target === 'header'
29
+ ? normalizeTableColumnAlignment(column?.headerAlign)
30
+ : normalizeTableColumnAlignment(column?.cellAlign);
31
+ const sharedAlignment = normalizeTableColumnAlignment(column?.align);
32
+ const typeAlignment = column?.type ? DEFAULT_ALIGNMENT_BY_TYPE[column.type] : undefined;
33
+ return targetAlignment
34
+ ?? sharedAlignment
35
+ ?? typeAlignment
36
+ ?? 'left';
37
+ }
18
38
  export function getTableColumnMinWidthPx(column) {
19
39
  const width = column.type ? COLUMN_MIN_WIDTH_MAP[column.type] : undefined;
20
40
  return width ?? TABLE_DEFAULT_TEXT_COLUMN_MIN_WIDTH_PX;
@@ -22,4 +42,4 @@ export function getTableColumnMinWidthPx(column) {
22
42
  export function getTableMinWidthPx(columns) {
23
43
  return columns.reduce((total, column) => total + getTableColumnMinWidthPx(column), 0);
24
44
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbGF5b3V0LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RhYmxlL3V0aWxzL3RhYmxlLWxheW91dC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx5Q0FBeUMsRUFDekMsd0NBQXdDLEVBQ3hDLDBDQUEwQyxFQUMxQyxzQ0FBc0MsRUFDdEMsMENBQTBDLEVBQzFDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNENBQTRDLEVBQzVDLHdDQUF3QyxFQUN4Qyx3Q0FBd0MsRUFDeEMscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN2QyxNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE1BQU0sb0JBQW9CLEdBQTZDO0lBQ3JFLG9CQUFvQixFQUFFLDBDQUEwQztJQUNoRSxRQUFRLEVBQUUsMENBQTBDO0lBQ3BELE1BQU0sRUFBRSx3Q0FBd0M7SUFDaEQsT0FBTyxFQUFFLHlDQUF5QztJQUNsRCxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLFlBQVksRUFBRSw0Q0FBNEM7SUFDMUQsSUFBSSxFQUFFLHNDQUFzQztJQUM1QyxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLE1BQU0sRUFBRSx3Q0FBd0M7SUFDaEQsTUFBTSxFQUFFLHdDQUF3QztJQUNoRCxHQUFHLEVBQUUscUNBQXFDO0NBQzNDLENBQUM7QUFFRixNQUFNLFVBQVUsNkJBQTZCLENBQUMsS0FBYztJQUMxRCxPQUFPLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNwRixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUE4QixNQUFzQjtJQUMxRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMxRSxPQUFPLEtBQUssSUFBSSxzQ0FBc0MsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUE4QixPQUF5QjtJQUN2RixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRBQkxFX0RFRkFVTFRfQUNUSU9OU19DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0JVVFRPTl9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0NIRUNLQk9YX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfQ09ERV9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0NVUlJFTkNZX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfREFURV9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0lDT05fQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgVEFCTEVfREVGQVVMVF9JQ09OX1RJVExFX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfTlVNQkVSX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfU1RST05HX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfVEFHX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfVEVYVF9DT0xVTU5fTUlOX1dJRFRIX1BYXG59IGZyb20gJy4uLy4uLy4uL2NvcmUvY29uc3RhbnRzL3RhYmxlLmNvbnN0JztcbmltcG9ydCB0eXBlIHsgUm93QmFzZSwgVGFibGVDb2x1bW4sIFRhYmxlQ29sdW1uQWxpZ25tZW50LCBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL3RhYmxlLnR5cGUnO1xuXG5jb25zdCBDT0xVTU5fTUlOX1dJRFRIX01BUDogUGFydGlhbDxSZWNvcmQ8VGFibGVDb2x1bW5UeXBlLCBudW1iZXI+PiA9IHtcbiAgJ2NoZWNrYm94LXNlbGVjdGlvbic6IFRBQkxFX0RFRkFVTFRfQ0hFQ0tCT1hfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgY3VycmVuY3k6IFRBQkxFX0RFRkFVTFRfQ1VSUkVOQ1lfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgYnV0dG9uOiBUQUJMRV9ERUZBVUxUX0JVVFRPTl9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBhY3Rpb25zOiBUQUJMRV9ERUZBVUxUX0FDVElPTlNfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgaWNvbjogVEFCTEVfREVGQVVMVF9JQ09OX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gICdpY29uLXRpdGxlJzogVEFCTEVfREVGQVVMVF9JQ09OX1RJVExFX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIGRhdGU6IFRBQkxFX0RFRkFVTFRfREFURV9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBjb2RlOiBUQUJMRV9ERUZBVUxUX0NPREVfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgbnVtYmVyOiBUQUJMRV9ERUZBVUxUX05VTUJFUl9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBzdHJvbmc6IFRBQkxFX0RFRkFVTFRfU1RST05HX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIHRhZzogVEFCTEVfREVGQVVMVF9UQUdfQ09MVU1OX01JTl9XSURUSF9QWCxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUYWJsZUNvbHVtbkFsaWdubWVudCh2YWx1ZTogdW5rbm93bik6IFRhYmxlQ29sdW1uQWxpZ25tZW50IHwgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gJ2xlZnQnIHx8IHZhbHVlID09PSAnY2VudGVyJyB8fCB2YWx1ZSA9PT0gJ3JpZ2h0JyA/IHZhbHVlIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlQ29sdW1uTWluV2lkdGhQeDxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+KGNvbHVtbjogVGFibGVDb2x1bW48VD4pOiBudW1iZXIge1xuICBjb25zdCB3aWR0aCA9IGNvbHVtbi50eXBlID8gQ09MVU1OX01JTl9XSURUSF9NQVBbY29sdW1uLnR5cGVdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gd2lkdGggPz8gVEFCTEVfREVGQVVMVF9URVhUX0NPTFVNTl9NSU5fV0lEVEhfUFg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZU1pbldpZHRoUHg8VCBleHRlbmRzIFJvd0Jhc2UgPSBSb3dCYXNlPihjb2x1bW5zOiBUYWJsZUNvbHVtbjxUPltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIGNvbHVtbnMucmVkdWNlKCh0b3RhbCwgY29sdW1uKSA9PiB0b3RhbCArIGdldFRhYmxlQ29sdW1uTWluV2lkdGhQeChjb2x1bW4pLCAwKTtcbn1cbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbGF5b3V0LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RhYmxlL3V0aWxzL3RhYmxlLWxheW91dC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx5Q0FBeUMsRUFDekMsd0NBQXdDLEVBQ3hDLDBDQUEwQyxFQUMxQyxzQ0FBc0MsRUFDdEMsMENBQTBDLEVBQzFDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNENBQTRDLEVBQzVDLHdDQUF3QyxFQUN4Qyx3Q0FBd0MsRUFDeEMscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN2QyxNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE1BQU0sb0JBQW9CLEdBQTZDO0lBQ3JFLG9CQUFvQixFQUFFLDBDQUEwQztJQUNoRSxRQUFRLEVBQUUsMENBQTBDO0lBQ3BELE1BQU0sRUFBRSx3Q0FBd0M7SUFDaEQsT0FBTyxFQUFFLHlDQUF5QztJQUNsRCxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLFlBQVksRUFBRSw0Q0FBNEM7SUFDMUQsSUFBSSxFQUFFLHNDQUFzQztJQUM1QyxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLE1BQU0sRUFBRSx3Q0FBd0M7SUFDaEQsTUFBTSxFQUFFLHdDQUF3QztJQUNoRCxHQUFHLEVBQUUscUNBQXFDO0NBQzNDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUEyRDtJQUN4RixvQkFBb0IsRUFBRSxRQUFRO0lBQzlCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLFFBQVE7SUFDZCxNQUFNLEVBQUUsT0FBTztDQUNoQixDQUFDO0FBRUYsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQWM7SUFDMUQsT0FBTyxLQUFLLEtBQUssTUFBTSxJQUFJLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEYsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsTUFBeUMsRUFDekMsU0FBNEIsTUFBTTtJQUVsQyxNQUFNLGVBQWUsR0FBRyxNQUFNLEtBQUssUUFBUTtRQUN6QyxDQUFDLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztRQUNwRCxDQUFDLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sZUFBZSxHQUFHLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV4RixPQUFPLGVBQWU7V0FDakIsZUFBZTtXQUNmLGFBQWE7V0FDYixNQUFNLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUE4QixNQUFzQjtJQUMxRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMxRSxPQUFPLEtBQUssSUFBSSxzQ0FBc0MsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUE4QixPQUF5QjtJQUN2RixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRBQkxFX0RFRkFVTFRfQUNUSU9OU19DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0JVVFRPTl9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0NIRUNLQk9YX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfQ09ERV9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0NVUlJFTkNZX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfREFURV9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBUQUJMRV9ERUZBVUxUX0lDT05fQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgVEFCTEVfREVGQVVMVF9JQ09OX1RJVExFX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfTlVNQkVSX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfU1RST05HX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfVEFHX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIFRBQkxFX0RFRkFVTFRfVEVYVF9DT0xVTU5fTUlOX1dJRFRIX1BYXG59IGZyb20gJy4uLy4uLy4uL2NvcmUvY29uc3RhbnRzL3RhYmxlLmNvbnN0JztcbmltcG9ydCB0eXBlIHsgUm93QmFzZSwgVGFibGVDb2x1bW4sIFRhYmxlQ29sdW1uQWxpZ25tZW50LCBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL3RhYmxlLnR5cGUnO1xuXG5jb25zdCBDT0xVTU5fTUlOX1dJRFRIX01BUDogUGFydGlhbDxSZWNvcmQ8VGFibGVDb2x1bW5UeXBlLCBudW1iZXI+PiA9IHtcbiAgJ2NoZWNrYm94LXNlbGVjdGlvbic6IFRBQkxFX0RFRkFVTFRfQ0hFQ0tCT1hfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgY3VycmVuY3k6IFRBQkxFX0RFRkFVTFRfQ1VSUkVOQ1lfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgYnV0dG9uOiBUQUJMRV9ERUZBVUxUX0JVVFRPTl9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBhY3Rpb25zOiBUQUJMRV9ERUZBVUxUX0FDVElPTlNfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgaWNvbjogVEFCTEVfREVGQVVMVF9JQ09OX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gICdpY29uLXRpdGxlJzogVEFCTEVfREVGQVVMVF9JQ09OX1RJVExFX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIGRhdGU6IFRBQkxFX0RFRkFVTFRfREFURV9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBjb2RlOiBUQUJMRV9ERUZBVUxUX0NPREVfQ09MVU1OX01JTl9XSURUSF9QWCxcbiAgbnVtYmVyOiBUQUJMRV9ERUZBVUxUX05VTUJFUl9DT0xVTU5fTUlOX1dJRFRIX1BYLFxuICBzdHJvbmc6IFRBQkxFX0RFRkFVTFRfU1RST05HX0NPTFVNTl9NSU5fV0lEVEhfUFgsXG4gIHRhZzogVEFCTEVfREVGQVVMVF9UQUdfQ09MVU1OX01JTl9XSURUSF9QWCxcbn07XG5cbmNvbnN0IERFRkFVTFRfQUxJR05NRU5UX0JZX1RZUEU6IFBhcnRpYWw8UmVjb3JkPFRhYmxlQ29sdW1uVHlwZSwgVGFibGVDb2x1bW5BbGlnbm1lbnQ+PiA9IHtcbiAgJ2NoZWNrYm94LXNlbGVjdGlvbic6ICdjZW50ZXInLFxuICBhY3Rpb25zOiAnY2VudGVyJyxcbiAgYnV0dG9uOiAnY2VudGVyJyxcbiAgY3VycmVuY3k6ICdyaWdodCcsXG4gIGRhdGU6ICdjZW50ZXInLFxuICBpY29uOiAnY2VudGVyJyxcbiAgbnVtYmVyOiAncmlnaHQnXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGFibGVDb2x1bW5BbGlnbm1lbnQodmFsdWU6IHVua25vd24pOiBUYWJsZUNvbHVtbkFsaWdubWVudCB8IG51bGwge1xuICByZXR1cm4gdmFsdWUgPT09ICdsZWZ0JyB8fCB2YWx1ZSA9PT0gJ2NlbnRlcicgfHwgdmFsdWUgPT09ICdyaWdodCcgPyB2YWx1ZSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGFibGVDb2x1bW5BbGlnbm1lbnQ8VCBleHRlbmRzIFJvd0Jhc2UgPSBSb3dCYXNlPihcbiAgY29sdW1uOiBUYWJsZUNvbHVtbjxUPiB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHRhcmdldDogJ2NlbGwnIHwgJ2hlYWRlcicgPSAnY2VsbCdcbik6IFRhYmxlQ29sdW1uQWxpZ25tZW50IHtcbiAgY29uc3QgdGFyZ2V0QWxpZ25tZW50ID0gdGFyZ2V0ID09PSAnaGVhZGVyJ1xuICAgID8gbm9ybWFsaXplVGFibGVDb2x1bW5BbGlnbm1lbnQoY29sdW1uPy5oZWFkZXJBbGlnbilcbiAgICA6IG5vcm1hbGl6ZVRhYmxlQ29sdW1uQWxpZ25tZW50KGNvbHVtbj8uY2VsbEFsaWduKTtcbiAgY29uc3Qgc2hhcmVkQWxpZ25tZW50ID0gbm9ybWFsaXplVGFibGVDb2x1bW5BbGlnbm1lbnQoY29sdW1uPy5hbGlnbik7XG4gIGNvbnN0IHR5cGVBbGlnbm1lbnQgPSBjb2x1bW4/LnR5cGUgPyBERUZBVUxUX0FMSUdOTUVOVF9CWV9UWVBFW2NvbHVtbi50eXBlXSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gdGFyZ2V0QWxpZ25tZW50XG4gICAgPz8gc2hhcmVkQWxpZ25tZW50XG4gICAgPz8gdHlwZUFsaWdubWVudFxuICAgID8/ICdsZWZ0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlQ29sdW1uTWluV2lkdGhQeDxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+KGNvbHVtbjogVGFibGVDb2x1bW48VD4pOiBudW1iZXIge1xuICBjb25zdCB3aWR0aCA9IGNvbHVtbi50eXBlID8gQ09MVU1OX01JTl9XSURUSF9NQVBbY29sdW1uLnR5cGVdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gd2lkdGggPz8gVEFCTEVfREVGQVVMVF9URVhUX0NPTFVNTl9NSU5fV0lEVEhfUFg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZU1pbldpZHRoUHg8VCBleHRlbmRzIFJvd0Jhc2UgPSBSb3dCYXNlPihjb2x1bW5zOiBUYWJsZUNvbHVtbjxUPltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIGNvbHVtbnMucmVkdWNlKCh0b3RhbCwgY29sdW1uKSA9PiB0b3RhbCArIGdldFRhYmxlQ29sdW1uTWluV2lkdGhQeChjb2x1bW4pLCAwKTtcbn1cbiJdfQ==