@mantine-vue/table 2.2.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 (211) hide show
  1. package/README.md +340 -0
  2. package/cjs/index.cjs +5345 -0
  3. package/cjs/index.cjs.map +1 -0
  4. package/esm/index.mjs +5214 -0
  5. package/esm/index.mjs.map +1 -0
  6. package/lib/components/MVT_TableSlots.d.ts +103 -0
  7. package/lib/components/MantineVueTable.d.ts +18 -0
  8. package/lib/components/body/MVT_TableBody.d.ts +64 -0
  9. package/lib/components/body/MVT_TableBodyCell.d.ts +136 -0
  10. package/lib/components/body/MVT_TableBodyCellValue.d.ts +40 -0
  11. package/lib/components/body/MVT_TableBodyEmptyRow.d.ts +42 -0
  12. package/lib/components/body/MVT_TableBodyRow.d.ts +170 -0
  13. package/lib/components/body/MVT_TableBodyRowGrabHandle.d.ts +31 -0
  14. package/lib/components/body/MVT_TableBodyRowPinButton.d.ts +23 -0
  15. package/lib/components/body/MVT_TableDetailPanel.d.ts +68 -0
  16. package/lib/components/buttons/MVT_ColumnPinningButtons.d.ts +23 -0
  17. package/lib/components/buttons/MVT_CopyButton.d.ts +23 -0
  18. package/lib/components/buttons/MVT_EditActionButtons.d.ts +33 -0
  19. package/lib/components/buttons/MVT_ExpandAllButton.d.ts +15 -0
  20. package/lib/components/buttons/MVT_ExpandButton.d.ts +23 -0
  21. package/lib/components/buttons/MVT_GrabHandleButton.d.ts +41 -0
  22. package/lib/components/buttons/MVT_RowPinButton.d.ts +31 -0
  23. package/lib/components/buttons/MVT_ShowHideColumnsButton.d.ts +15 -0
  24. package/lib/components/buttons/MVT_ToggleDensePaddingButton.d.ts +15 -0
  25. package/lib/components/buttons/MVT_ToggleFiltersButton.d.ts +15 -0
  26. package/lib/components/buttons/MVT_ToggleFullScreenButton.d.ts +15 -0
  27. package/lib/components/buttons/MVT_ToggleGlobalFilterButton.d.ts +15 -0
  28. package/lib/components/buttons/MVT_ToggleRowActionMenuButton.d.ts +31 -0
  29. package/lib/components/footer/MVT_TableFooter.d.ts +25 -0
  30. package/lib/components/footer/MVT_TableFooterCell.d.ts +33 -0
  31. package/lib/components/footer/MVT_TableFooterRow.d.ts +33 -0
  32. package/lib/components/head/MVT_TableHead.d.ts +25 -0
  33. package/lib/components/head/MVT_TableHeadCell.d.ts +42 -0
  34. package/lib/components/head/MVT_TableHeadCellFilterContainer.d.ts +23 -0
  35. package/lib/components/head/MVT_TableHeadCellFilterLabel.d.ts +23 -0
  36. package/lib/components/head/MVT_TableHeadCellGrabHandle.d.ts +31 -0
  37. package/lib/components/head/MVT_TableHeadCellResizeHandle.d.ts +23 -0
  38. package/lib/components/head/MVT_TableHeadCellSortLabel.d.ts +23 -0
  39. package/lib/components/head/MVT_TableHeadRow.d.ts +33 -0
  40. package/lib/components/inputs/MVT_EditCellTextInput.d.ts +23 -0
  41. package/lib/components/inputs/MVT_FilterCheckbox.d.ts +23 -0
  42. package/lib/components/inputs/MVT_FilterRangeFields.d.ts +23 -0
  43. package/lib/components/inputs/MVT_FilterRangeSlider.d.ts +23 -0
  44. package/lib/components/inputs/MVT_FilterTextInput.d.ts +33 -0
  45. package/lib/components/inputs/MVT_GlobalFilterTextInput.d.ts +15 -0
  46. package/lib/components/inputs/MVT_SelectCheckbox.d.ts +34 -0
  47. package/lib/components/menus/MVT_ColumnActionMenu.d.ts +42 -0
  48. package/lib/components/menus/MVT_FilterOptionMenu.d.ts +35 -0
  49. package/lib/components/menus/MVT_RowActionMenu.d.ts +31 -0
  50. package/lib/components/menus/MVT_ShowHideColumnsMenu.d.ts +15 -0
  51. package/lib/components/menus/MVT_ShowHideColumnsMenuItems.d.ts +54 -0
  52. package/lib/components/modals/MVT_EditRowModal.d.ts +29 -0
  53. package/lib/components/table/MVT_Table.d.ts +15 -0
  54. package/lib/components/table/MVT_TableContainer.d.ts +15 -0
  55. package/lib/components/table/MVT_TablePaper.d.ts +15 -0
  56. package/lib/components/toolbar/MVT_BottomToolbar.d.ts +15 -0
  57. package/lib/components/toolbar/MVT_ProgressBar.d.ts +23 -0
  58. package/lib/components/toolbar/MVT_TablePagination.d.ts +25 -0
  59. package/lib/components/toolbar/MVT_ToolbarAlertBanner.d.ts +25 -0
  60. package/lib/components/toolbar/MVT_ToolbarDropZone.d.ts +15 -0
  61. package/lib/components/toolbar/MVT_ToolbarInternalButtons.d.ts +15 -0
  62. package/lib/components/toolbar/MVT_TopToolbar.d.ts +15 -0
  63. package/lib/fns/aggregationFns.d.ts +11 -0
  64. package/lib/fns/filterFns.d.ts +70 -0
  65. package/lib/fns/sortingFns.d.ts +12 -0
  66. package/lib/hooks/display-columns/getMVT_RowActionsColumnDef.d.ts +2 -0
  67. package/lib/hooks/display-columns/getMVT_RowDragColumnDef.d.ts +2 -0
  68. package/lib/hooks/display-columns/getMVT_RowExpandColumnDef.d.ts +2 -0
  69. package/lib/hooks/display-columns/getMVT_RowNumbersColumnDef.d.ts +2 -0
  70. package/lib/hooks/display-columns/getMVT_RowPinningColumnDef.d.ts +2 -0
  71. package/lib/hooks/display-columns/getMVT_RowSelectColumnDef.d.ts +2 -0
  72. package/lib/hooks/display-columns/getMVT_RowSpacerColumnDef.d.ts +2 -0
  73. package/lib/hooks/useMVT_ColumnVirtualizer.d.ts +3 -0
  74. package/lib/hooks/useMVT_Effects.d.ts +5 -0
  75. package/lib/hooks/useMVT_RowVirtualizer.d.ts +3 -0
  76. package/lib/hooks/useMVT_Rows.d.ts +6 -0
  77. package/lib/hooks/useMVT_TableInstance.d.ts +10 -0
  78. package/lib/hooks/useMVT_TableOptions.d.ts +25 -0
  79. package/lib/hooks/useMantineVueTable.d.ts +2 -0
  80. package/lib/icons.d.ts +36 -0
  81. package/lib/index.d.mts +75 -0
  82. package/lib/index.d.ts +75 -0
  83. package/lib/locales/ar.d.ts +2 -0
  84. package/lib/locales/az.d.ts +2 -0
  85. package/lib/locales/bg.d.ts +2 -0
  86. package/lib/locales/cs.d.ts +2 -0
  87. package/lib/locales/da.d.ts +2 -0
  88. package/lib/locales/de.d.ts +2 -0
  89. package/lib/locales/el.d.ts +2 -0
  90. package/lib/locales/en.d.ts +2 -0
  91. package/lib/locales/es.d.ts +2 -0
  92. package/lib/locales/et.d.ts +2 -0
  93. package/lib/locales/fa.d.ts +2 -0
  94. package/lib/locales/fi.d.ts +2 -0
  95. package/lib/locales/fr.d.ts +2 -0
  96. package/lib/locales/he.d.ts +2 -0
  97. package/lib/locales/hr.d.ts +2 -0
  98. package/lib/locales/hu.d.ts +2 -0
  99. package/lib/locales/hy.d.ts +2 -0
  100. package/lib/locales/id.d.ts +2 -0
  101. package/lib/locales/it.d.ts +2 -0
  102. package/lib/locales/ja.d.ts +2 -0
  103. package/lib/locales/ko.d.ts +2 -0
  104. package/lib/locales/nl.d.ts +2 -0
  105. package/lib/locales/no.d.ts +2 -0
  106. package/lib/locales/np.d.ts +2 -0
  107. package/lib/locales/pl.d.ts +2 -0
  108. package/lib/locales/pt-BR.d.ts +2 -0
  109. package/lib/locales/pt.d.ts +2 -0
  110. package/lib/locales/ro.d.ts +2 -0
  111. package/lib/locales/ru.d.ts +2 -0
  112. package/lib/locales/sk.d.ts +2 -0
  113. package/lib/locales/sr-Cyrl-RS.d.ts +2 -0
  114. package/lib/locales/sr-Latn-RS.d.ts +2 -0
  115. package/lib/locales/sv.d.ts +2 -0
  116. package/lib/locales/th.d.ts +2 -0
  117. package/lib/locales/tr.d.ts +2 -0
  118. package/lib/locales/uk.d.ts +2 -0
  119. package/lib/locales/vi.d.ts +2 -0
  120. package/lib/locales/zh-Hans.d.ts +2 -0
  121. package/lib/locales/zh-Hant.d.ts +2 -0
  122. package/lib/mantine.types.d.ts +32 -0
  123. package/lib/types.d.ts +887 -0
  124. package/lib/utils/column.utils.d.ts +9 -0
  125. package/lib/utils/displayColumn.utils.d.ts +17 -0
  126. package/lib/utils/row.utils.d.ts +16 -0
  127. package/lib/utils/style.utils.d.ts +8 -0
  128. package/lib/utils/tanstack.helpers.d.ts +14 -0
  129. package/lib/utils/utils.d.ts +1 -0
  130. package/lib/utils/virtualization.utils.d.ts +2 -0
  131. package/locales/ar.cjs +97 -0
  132. package/locales/ar.mjs +96 -0
  133. package/locales/az.cjs +97 -0
  134. package/locales/az.mjs +96 -0
  135. package/locales/bg.cjs +97 -0
  136. package/locales/bg.mjs +96 -0
  137. package/locales/cs.cjs +97 -0
  138. package/locales/cs.mjs +96 -0
  139. package/locales/da.cjs +97 -0
  140. package/locales/da.mjs +96 -0
  141. package/locales/de.cjs +97 -0
  142. package/locales/de.mjs +96 -0
  143. package/locales/el.cjs +97 -0
  144. package/locales/el.mjs +96 -0
  145. package/locales/en.cjs +97 -0
  146. package/locales/en.mjs +96 -0
  147. package/locales/es.cjs +97 -0
  148. package/locales/es.mjs +96 -0
  149. package/locales/et.cjs +97 -0
  150. package/locales/et.mjs +96 -0
  151. package/locales/fa.cjs +97 -0
  152. package/locales/fa.mjs +96 -0
  153. package/locales/fi.cjs +97 -0
  154. package/locales/fi.mjs +96 -0
  155. package/locales/fr.cjs +97 -0
  156. package/locales/fr.mjs +96 -0
  157. package/locales/he.cjs +97 -0
  158. package/locales/he.mjs +96 -0
  159. package/locales/hr.cjs +97 -0
  160. package/locales/hr.mjs +96 -0
  161. package/locales/hu.cjs +97 -0
  162. package/locales/hu.mjs +96 -0
  163. package/locales/hy.cjs +97 -0
  164. package/locales/hy.mjs +96 -0
  165. package/locales/id.cjs +97 -0
  166. package/locales/id.mjs +96 -0
  167. package/locales/it.cjs +97 -0
  168. package/locales/it.mjs +96 -0
  169. package/locales/ja.cjs +97 -0
  170. package/locales/ja.mjs +96 -0
  171. package/locales/ko.cjs +97 -0
  172. package/locales/ko.mjs +96 -0
  173. package/locales/nl.cjs +97 -0
  174. package/locales/nl.mjs +96 -0
  175. package/locales/no.cjs +97 -0
  176. package/locales/no.mjs +96 -0
  177. package/locales/np.cjs +97 -0
  178. package/locales/np.mjs +96 -0
  179. package/locales/pl.cjs +97 -0
  180. package/locales/pl.mjs +96 -0
  181. package/locales/pt-BR.cjs +97 -0
  182. package/locales/pt-BR.mjs +96 -0
  183. package/locales/pt.cjs +97 -0
  184. package/locales/pt.mjs +96 -0
  185. package/locales/ro.cjs +97 -0
  186. package/locales/ro.mjs +96 -0
  187. package/locales/ru.cjs +97 -0
  188. package/locales/ru.mjs +96 -0
  189. package/locales/sk.cjs +97 -0
  190. package/locales/sk.mjs +96 -0
  191. package/locales/sr-Cyrl-RS.cjs +97 -0
  192. package/locales/sr-Cyrl-RS.mjs +96 -0
  193. package/locales/sr-Latn-RS.cjs +97 -0
  194. package/locales/sr-Latn-RS.mjs +96 -0
  195. package/locales/sv.cjs +97 -0
  196. package/locales/sv.mjs +96 -0
  197. package/locales/th.cjs +97 -0
  198. package/locales/th.mjs +96 -0
  199. package/locales/tr.cjs +97 -0
  200. package/locales/tr.mjs +96 -0
  201. package/locales/uk.cjs +97 -0
  202. package/locales/uk.mjs +96 -0
  203. package/locales/vi.cjs +97 -0
  204. package/locales/vi.mjs +96 -0
  205. package/locales/zh-Hans.cjs +97 -0
  206. package/locales/zh-Hans.mjs +96 -0
  207. package/locales/zh-Hant.cjs +97 -0
  208. package/locales/zh-Hant.mjs +96 -0
  209. package/package.json +79 -0
  210. package/styles.css +1118 -0
  211. package/styles.layer.css +1120 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/utils/column.utils.ts","../src/utils/displayColumn.utils.ts","../src/utils/tanstack.helpers.ts","../src/utils/utils.ts","../src/components/MVT_TableSlots.ts","../src/components/menus/MVT_RowActionMenu.ts","../src/components/buttons/MVT_EditActionButtons.module.css","../src/components/buttons/MVT_EditActionButtons.ts","../src/components/buttons/MVT_ToggleRowActionMenuButton.ts","../src/hooks/display-columns/getMVT_RowActionsColumnDef.ts","../src/components/buttons/MVT_GrabHandleButton.module.css","../src/components/buttons/MVT_GrabHandleButton.ts","../src/components/body/MVT_TableBodyRowGrabHandle.ts","../src/hooks/display-columns/getMVT_RowDragColumnDef.ts","../src/components/buttons/MVT_ExpandAllButton.module.css","../src/components/buttons/MVT_ExpandAllButton.ts","../src/components/inputs/MVT_EditCellTextInput.ts","../src/components/buttons/MVT_ExpandButton.module.css","../src/components/buttons/MVT_ExpandButton.ts","../src/hooks/display-columns/getMVT_RowExpandColumnDef.ts","../src/hooks/display-columns/getMVT_RowNumbersColumnDef.ts","../src/components/buttons/MVT_RowPinButton.ts","../src/components/body/MVT_TableBodyRowPinButton.ts","../src/hooks/display-columns/getMVT_RowPinningColumnDef.ts","../src/fns/sortingFns.ts","../src/utils/row.utils.ts","../src/components/inputs/MVT_SelectCheckbox.ts","../src/hooks/display-columns/getMVT_RowSelectColumnDef.ts","../src/fns/aggregationFns.ts","../src/fns/filterFns.ts","../src/icons.ts","../src/locales/en.ts","../src/hooks/useMVT_TableOptions.ts","../src/hooks/display-columns/getMVT_RowSpacerColumnDef.ts","../src/hooks/useMVT_Effects.ts","../src/hooks/useMVT_TableInstance.ts","../src/hooks/useMantineVueTable.ts","../src/components/toolbar/MVT_ProgressBar.module.css","../src/components/toolbar/MVT_ProgressBar.ts","../src/components/toolbar/MVT_TablePagination.module.css","../src/components/toolbar/MVT_TablePagination.ts","../src/components/toolbar/MVT_ToolbarAlertBanner.module.css","../src/components/toolbar/MVT_ToolbarAlertBanner.ts","../src/components/toolbar/MVT_ToolbarDropZone.module.css","../src/components/toolbar/MVT_ToolbarDropZone.ts","../src/components/toolbar/common.styles.module.css","../src/components/toolbar/MVT_BottomToolbar.module.css","../src/components/toolbar/MVT_BottomToolbar.ts","../src/components/menus/MVT_FilterOptionMenu.module.css","../src/components/menus/MVT_FilterOptionMenu.ts","../src/components/inputs/MVT_GlobalFilterTextInput.module.css","../src/components/inputs/MVT_GlobalFilterTextInput.ts","../src/components/buttons/MVT_ColumnPinningButtons.module.css","../src/components/buttons/MVT_ColumnPinningButtons.ts","../src/components/menus/MVT_ShowHideColumnsMenuItems.module.css","../src/components/menus/MVT_ShowHideColumnsMenuItems.ts","../src/components/menus/MVT_ShowHideColumnsMenu.module.css","../src/components/menus/MVT_ShowHideColumnsMenu.ts","../src/components/buttons/MVT_ShowHideColumnsButton.ts","../src/components/buttons/MVT_ToggleDensePaddingButton.ts","../src/components/buttons/MVT_ToggleFiltersButton.ts","../src/components/buttons/MVT_ToggleFullScreenButton.ts","../src/components/buttons/MVT_ToggleGlobalFilterButton.ts","../src/components/toolbar/MVT_ToolbarInternalButtons.module.css","../src/components/toolbar/MVT_ToolbarInternalButtons.ts","../src/components/toolbar/MVT_TopToolbar.module.css","../src/components/toolbar/MVT_TopToolbar.ts","../src/components/modals/MVT_EditRowModal.ts","../src/utils/virtualization.utils.ts","../src/hooks/useMVT_ColumnVirtualizer.ts","../src/utils/style.utils.ts","../src/hooks/useMVT_Rows.ts","../src/hooks/useMVT_RowVirtualizer.ts","../src/components/buttons/MVT_CopyButton.module.css","../src/components/buttons/MVT_CopyButton.ts","../src/components/body/MVT_TableBodyCellValue.ts","../src/components/body/MVT_TableBodyCell.module.css","../src/components/body/MVT_TableBodyCell.ts","../src/components/body/MVT_TableDetailPanel.module.css","../src/components/body/MVT_TableDetailPanel.ts","../src/components/body/MVT_TableBodyRow.module.css","../src/components/body/MVT_TableBodyRow.ts","../src/components/body/MVT_TableBody.module.css","../src/components/body/MVT_TableBodyEmptyRow.ts","../src/components/body/MVT_TableBody.ts","../src/components/footer/MVT_TableFooterCell.module.css","../src/components/footer/MVT_TableFooterCell.ts","../src/components/footer/MVT_TableFooterRow.module.css","../src/components/footer/MVT_TableFooterRow.ts","../src/components/footer/MVT_TableFooter.module.css","../src/components/footer/MVT_TableFooter.ts","../src/components/menus/MVT_ColumnActionMenu.module.css","../src/components/menus/MVT_ColumnActionMenu.ts","../src/components/inputs/MVT_FilterCheckBox.module.css","../src/components/inputs/MVT_FilterCheckbox.ts","../src/components/inputs/MVT_FilterTextInput.module.css","../src/components/inputs/MVT_FilterTextInput.ts","../src/components/inputs/MVT_FilterRangeFields.module.css","../src/components/inputs/MVT_FilterRangeFields.ts","../src/components/inputs/MVT_FilterRangeSlider.module.css","../src/components/inputs/MVT_FilterRangeSlider.ts","../src/components/head/MVT_TableHeadCellFilterContainer.module.css","../src/components/head/MVT_TableHeadCellFilterContainer.ts","../src/components/head/MVT_TableHeadCellFilterLabel.module.css","../src/components/head/MVT_TableHeadCellFilterLabel.ts","../src/components/head/MVT_TableHeadCellGrabHandle.ts","../src/components/head/MVT_TableHeadCellResizeHandle.module.css","../src/components/head/MVT_TableHeadCellResizeHandle.ts","../src/components/head/MVT_TableHeadCellSortLabel.module.css","../src/components/head/MVT_TableHeadCellSortLabel.ts","../src/components/head/MVT_TableHeadCell.module.css","../src/components/head/MVT_TableHeadCell.ts","../src/components/head/MVT_TableHeadRow.module.css","../src/components/head/MVT_TableHeadRow.ts","../src/components/head/MVT_TableHead.module.css","../src/components/head/MVT_TableHead.ts","../src/components/table/MVT_Table.module.css","../src/components/table/MVT_Table.ts","../src/components/table/MVT_TableContainer.module.css","../src/components/table/MVT_TableContainer.ts","../src/components/table/MVT_TablePaper.module.css","../src/components/table/MVT_TablePaper.ts","../src/components/MantineVueTable.ts"],"sourcesContent":["import { type Row } from '@tanstack/vue-table'\n\nimport {\n type MVT_Column,\n type MVT_ColumnDef,\n type MVT_ColumnOrderState,\n type MVT_DefinedColumnDef,\n type MVT_DefinedTableOptions,\n type MVT_FilterOption,\n type MVT_RowData,\n} from '../types'\n\nexport const getColumnId = <TData extends MVT_RowData>(columnDef: MVT_ColumnDef<TData>): string =>\n columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header\n\nexport const getAllLeafColumnDefs = <TData extends MVT_RowData>(\n columns: MVT_ColumnDef<TData>[],\n): MVT_ColumnDef<TData>[] => {\n const allLeafColumnDefs: MVT_ColumnDef<TData>[] = []\n const getLeafColumns = (cols: MVT_ColumnDef<TData>[]) => {\n cols.forEach((col) => {\n if (col.columns) {\n getLeafColumns(col.columns)\n } else {\n allLeafColumnDefs.push(col)\n }\n })\n }\n getLeafColumns(columns)\n return allLeafColumnDefs\n}\n\nexport const prepareColumns = <TData extends MVT_RowData>({\n columnDefs,\n tableOptions,\n}: {\n columnDefs: MVT_ColumnDef<TData>[]\n tableOptions: MVT_DefinedTableOptions<TData>\n}): MVT_DefinedColumnDef<TData>[] => {\n const {\n aggregationFns = {},\n defaultDisplayColumn,\n filterFns = {},\n sortingFns = {},\n state: { columnFilterFns = {} } = {},\n } = tableOptions\n return columnDefs.map((col) => {\n // Local alias so the display-column branch can reassign without mutating the\n // map callback parameter (eslint no-param-reassign).\n let columnDef = col\n //assign columnId\n if (!columnDef.id) columnDef.id = getColumnId(columnDef)\n //assign columnDefType\n if (!columnDef.columnDefType) columnDef.columnDefType = 'data'\n if (columnDef.columns?.length) {\n columnDef.columnDefType = 'group'\n //recursively prepare columns if this is a group column\n columnDef.columns = prepareColumns({\n columnDefs: columnDef.columns,\n tableOptions,\n })\n } else if (columnDef.columnDefType === 'data') {\n //assign aggregationFns if multiple aggregationFns are provided\n if (Array.isArray(columnDef.aggregationFn)) {\n const aggFns = columnDef.aggregationFn as string[]\n columnDef.aggregationFn = (\n columnId: string,\n leafRows: Row<TData>[],\n childRows: Row<TData>[],\n ) => aggFns.map((fn) => aggregationFns[fn]?.(columnId, leafRows, childRows))\n }\n\n //assign filterFns\n if (Object.keys(filterFns).includes(columnFilterFns[columnDef.id])) {\n columnDef.filterFn = filterFns[columnFilterFns[columnDef.id]] ?? filterFns.fuzzy\n ;(columnDef as MVT_DefinedColumnDef<TData>)._filterFn = columnFilterFns[columnDef.id]\n }\n\n //assign sortingFns\n if (Object.keys(sortingFns).includes(columnDef.sortingFn as string)) {\n // @ts-expect-error bla bla bla\n columnDef.sortingFn = sortingFns[columnDef.sortingFn]\n }\n } else if (columnDef.columnDefType === 'display') {\n columnDef = {\n ...(defaultDisplayColumn as MVT_ColumnDef<TData>),\n ...columnDef,\n }\n }\n return columnDef\n }) as MVT_DefinedColumnDef<TData>[]\n}\n\nexport const reorderColumn = <TData extends MVT_RowData>(\n draggedColumn: MVT_Column<TData>,\n targetColumn: MVT_Column<TData>,\n columnOrder: MVT_ColumnOrderState,\n): MVT_ColumnOrderState => {\n if (draggedColumn.getCanPin()) {\n draggedColumn.pin(targetColumn.getIsPinned())\n }\n const newColumnOrder = [...columnOrder]\n newColumnOrder.splice(\n newColumnOrder.indexOf(targetColumn.id),\n 0,\n newColumnOrder.splice(newColumnOrder.indexOf(draggedColumn.id), 1)[0],\n )\n return newColumnOrder\n}\n\nexport const getDefaultColumnFilterFn = <TData extends MVT_RowData>(\n columnDef: MVT_ColumnDef<TData>,\n): MVT_FilterOption => {\n const { filterVariant } = columnDef\n if (filterVariant === 'multi-select') return 'arrIncludesSome'\n if (filterVariant?.includes('range')) return 'betweenInclusive'\n if (['checkbox', 'date', 'select'].includes(filterVariant || '')) return 'equals'\n return 'fuzzy'\n}\n","import {\n type MVT_ColumnDef,\n type MVT_DefinedTableOptions,\n type MVT_DisplayColumnIds,\n type MVT_Localization,\n type MVT_RowData,\n type MVT_StatefulTableOptions,\n} from '../types'\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils'\n\nexport function defaultDisplayColumnProps<TData extends MVT_RowData>({\n header,\n id,\n size,\n tableOptions,\n}: {\n header?: keyof MVT_Localization\n id: MVT_DisplayColumnIds\n size: number\n tableOptions: MVT_DefinedTableOptions<TData>\n}): MVT_ColumnDef<TData> {\n const { defaultDisplayColumn, displayColumnDefOptions, localization } = tableOptions\n return {\n ...defaultDisplayColumn,\n header: header ? localization[header]! : '',\n size,\n ...displayColumnDefOptions?.[id],\n id,\n }\n}\n\nexport const showRowPinningColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowPinning, rowPinningDisplayMode } = tableOptions\n return !!(enableRowPinning && !rowPinningDisplayMode?.startsWith('select'))\n}\n\nexport const showRowDragColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowDragging, enableRowOrdering } = tableOptions\n return !!(enableRowDragging || enableRowOrdering)\n}\n\nexport const showRowExpandColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n enableExpanding,\n enableGrouping,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions\n\n const hasDetailPanelSlot = !!(tableOptions as any)._mvtSlots?.value?.detailPanel\n return !!(\n enableExpanding ||\n (enableGrouping && grouping?.length) ||\n renderDetailPanel ||\n hasDetailPanelSlot\n )\n}\n\nexport const showRowActionsColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n createDisplayMode,\n editDisplayMode,\n enableEditing,\n enableRowActions,\n state: { creatingRow },\n } = tableOptions\n return !!(\n enableRowActions ||\n (creatingRow && createDisplayMode === 'row') ||\n (enableEditing && ['modal', 'row'].includes(editDisplayMode ?? ''))\n )\n}\n\nexport const showRowSelectionColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowSelection\n\nexport const showRowNumbersColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowNumbers\n\nexport const showRowSpacerColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => tableOptions.layoutMode === 'grid-no-grow'\n\nexport const getLeadingDisplayColumnIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n) =>\n [\n showRowPinningColumn(tableOptions) && 'mvt-row-pin',\n showRowDragColumn(tableOptions) && 'mvt-row-drag',\n tableOptions.positionActionsColumn === 'first' &&\n showRowActionsColumn(tableOptions) &&\n 'mvt-row-actions',\n tableOptions.positionExpandColumn === 'first' &&\n showRowExpandColumn(tableOptions) &&\n 'mvt-row-expand',\n showRowSelectionColumn(tableOptions) && 'mvt-row-select',\n showRowNumbersColumn(tableOptions) && 'mvt-row-numbers',\n ].filter(Boolean) as MVT_DisplayColumnIds[]\n\nexport const getTrailingDisplayColumnIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n) =>\n [\n tableOptions.positionActionsColumn === 'last' &&\n showRowActionsColumn(tableOptions) &&\n 'mvt-row-actions',\n tableOptions.positionExpandColumn === 'last' &&\n showRowExpandColumn(tableOptions) &&\n 'mvt-row-expand',\n showRowSpacerColumn(tableOptions) && 'mvt-row-spacer',\n ].filter(Boolean) as MVT_DisplayColumnIds[]\n\nexport const getDefaultColumnOrderIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n reset = false,\n) => {\n const {\n state: { columnOrder: currentColumnOrderIds = [] },\n } = tableOptions\n\n const leadingDisplayColIds: string[] = getLeadingDisplayColumnIds(tableOptions)\n const trailingDisplayColIds: string[] = getTrailingDisplayColumnIds(tableOptions)\n\n const defaultColumnDefIds = getAllLeafColumnDefs(tableOptions.columns).map((columnDef) =>\n getColumnId(columnDef),\n )\n\n let allLeafColumnDefIds = reset\n ? defaultColumnDefIds\n : Array.from(new Set([...currentColumnOrderIds, ...defaultColumnDefIds]))\n\n allLeafColumnDefIds = allLeafColumnDefIds.filter(\n (colId) => !leadingDisplayColIds.includes(colId) && !trailingDisplayColIds.includes(colId),\n )\n\n return [...leadingDisplayColIds, ...allLeafColumnDefIds, ...trailingDisplayColIds]\n}\n","import { type Component, h, type VNodeChild } from 'vue'\n\nimport { createRow as _createRow } from '@tanstack/vue-table'\n\nimport {\n type MVT_ColumnHelper,\n type MVT_DisplayColumnDef,\n type MVT_GroupColumnDef,\n type MVT_Node,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../types'\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils'\n\n/**\n * A renderable passed to {@link flexRender}.\n */\nexport type Renderable<TProps> = ((props: TProps) => VNodeChild) | Component | VNodeChild\n\n/**\n * Vue equivalent of `@tanstack/react-table`'s `flexRender`.\n *\n * `@tanstack/vue-table` only ships a `FlexRender` component\n */\nexport const flexRender = <TProps extends object>(\n Comp: Renderable<TProps>,\n props: TProps,\n): MVT_Node => {\n if (Comp === null || Comp === undefined || Comp === false) {\n return null\n }\n if (typeof Comp === 'function') {\n return (Comp as (props: TProps) => VNodeChild)(props)\n }\n if (typeof Comp === 'object') {\n return h(Comp as Component, props as Record<string, any>)\n }\n return Comp\n}\n\nexport function createMVTColumnHelper<TData extends MVT_RowData>(): MVT_ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: (column) => column as MVT_DisplayColumnDef<TData>,\n group: (column) => column as MVT_GroupColumnDef<TData>,\n }\n}\n\nexport const createRow = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n originalRow?: TData,\n rowIndex = -1,\n depth = 0,\n subRows?: MVT_Row<TData>[],\n parentId?: string,\n): MVT_Row<TData> =>\n _createRow(\n table as any,\n 'mvt-row-create',\n originalRow ??\n Object.assign(\n {},\n ...getAllLeafColumnDefs(table.options.columns).map((col) => ({\n [getColumnId(col)]: '',\n })),\n ),\n rowIndex,\n depth,\n subRows as any,\n parentId,\n ) as MVT_Row<TData>\n","export const parseFromValuesOrFunc = <T, U>(\n fn: ((arg: U) => T) | T | undefined,\n arg: U,\n): T | undefined => (fn instanceof Function ? fn(arg) : fn)\n","import { inject, type InjectionKey, provide, type Slots, type VNodeChild } from 'vue'\n\nimport {\n type MVT_Cell,\n type MVT_Column,\n type MVT_InternalFilterOption,\n type MVT_Node,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\n\n/**\n * Scoped named slots supported on `<MantineVueTable>`.\n *\n * Each slot mirrors the equivalent `renderX` table option and receives the same\n * scoped argument object. A provided named slot takes precedence over the option\n * (see {@link renderMVT_Renderable})\n *\n * ```vue\n * <MantineVueTable :table=\"table\">\n * <template #detailPanel=\"{ row }\">Age: {{ row.original.age }}</template>\n * <template #rowActionMenuItems=\"{ row }\">\n * <MenuItem @click=\"() => edit(row)\">Edit</MenuItem>\n * </template>\n * </MantineVueTable>\n * ```\n */\nexport interface MVT_TableSlots<TData extends MVT_RowData = MVT_RowData> {\n bottomToolbar?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n bottomToolbarCustomActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n columnActionsMenuItems?: (arg: {\n column: MVT_Column<TData>\n internalColumnMenuItems: MVT_Node\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n columnFilterModeMenuItems?: (arg: {\n column: MVT_Column<TData>\n internalFilterOptions: MVT_InternalFilterOption[]\n onSelectFilterMode: (filterMode: string) => void\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n createRowModalContent?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n detailPanel?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n editRowModalContent?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n emptyRowsFallback?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n globalFilterModeMenuItems?: (arg: {\n internalFilterOptions: MVT_InternalFilterOption[]\n onSelectFilterMode: (filterMode: string) => void\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n rowActionMenuItems?: (arg: {\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n rowActions?: (arg: {\n cell: MVT_Cell<TData>\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n toolbarAlertBannerContent?: (arg: {\n groupedAlert: MVT_Node | null\n selectedAlert: MVT_Node | null\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n toolbarInternalActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n topToolbar?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n topToolbarCustomActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n}\n\n/** Union of the named-slot keys `<MantineVueTable>` understands. */\nexport type MVT_TableSlotName = keyof MVT_TableSlots\n\nconst MVT_SLOTS_KEY: InjectionKey<Slots> = Symbol('MVT_Slots')\n\n/**\n * Provide the top-level `<MantineVueTable>` slots to every descendant section.\n * Called once, from the root component's `setup`.\n */\nexport const provideMVT_Slots = (slots: Slots): void => {\n provide(MVT_SLOTS_KEY, slots)\n}\n\n/**\n * Inject the top-level `<MantineVueTable>` slots inside a deep section\n * component (detail panel, row/column action menus, toolbars, …).\n */\nexport const useMVT_Slots = (): Slots => inject(MVT_SLOTS_KEY, {})\n\n/**\n * Resolve a renderable section. A named slot takes precedence over the\n * equivalent `renderX` option/prop; both receive the same scoped argument, so a\n * section can be customized either way with identical semantics.\n */\nexport const renderMVT_Renderable = <TArg extends Record<string, any>>(\n slot: ((arg: TArg) => VNodeChild) | undefined,\n renderProp: ((arg: TArg) => VNodeChild) | MVT_Node | undefined,\n arg: TArg,\n): VNodeChild => (slot ? slot(arg) : parseFromValuesOrFunc(renderProp as any, arg))\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { renderMVT_Renderable, useMVT_Slots } from '../MVT_TableSlots'\n\nexport const MVT_RowActionMenu = defineComponent({\n name: 'MVTRowActionMenu',\n inheritAttrs: false,\n props: {\n handleEdit: { type: Function as PropType<(event: MouseEvent) => void>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { table, row } = props\n const o = table.options\n\n const custom =\n slots.default?.({ row, table }) ??\n renderMVT_Renderable(mvtSlots.rowActionMenuItems, o.renderRowActionMenuItems, {\n row,\n table,\n })\n return h(\n Menu,\n {\n closeOnItemClick: true,\n position:\n o.positionActionsColumn === 'first'\n ? 'bottom-start'\n : o.positionActionsColumn === 'last'\n ? 'bottom-end'\n : undefined,\n withinPortal: true,\n },\n () => [\n h(\n Tooltip,\n { label: o.localization.rowActions, openDelay: 1000, withinPortal: true },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.rowActions,\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...attrs,\n onClick: (e: MouseEvent) => e.stopPropagation(),\n },\n () => h(o.icons.IconDots),\n ),\n ),\n ),\n h(Menu.Dropdown, { onClick: (e: MouseEvent) => e.stopPropagation() }, () => [\n o.enableEditing &&\n o.editDisplayMode !== 'table' &&\n h(\n Menu.Item,\n { leftSection: h(o.icons.IconEdit), onClick: props.handleEdit },\n () => o.localization.edit,\n ),\n custom,\n ]),\n ],\n )\n }\n },\n})\n",".root {\n display: flex;\n gap: var(--mantine-spacing-xs);\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Box, Button, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport classes from './MVT_EditActionButtons.module.css'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_EditActionButtons = defineComponent({\n name: 'MVTEditActionButtons',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n variant: { type: String as PropType<'icon' | 'text'>, default: 'icon' },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n const state = table.getState()\n const l = table.options.localization\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const cancel = () => {\n if (creating) {\n table.options.onCreatingRowCancel?.({ row, table })\n table.setCreatingRow(null)\n } else if (editing) {\n table.options.onEditingRowCancel?.({ row, table })\n table.setEditingRow(null)\n }\n row._valuesCache = {}\n }\n const save = () => {\n Object.values(table.refs.editInputRefs.value)\n .filter((input) => row.id === input?.name?.split('_')?.[0])\n .forEach((input) => {\n if (input.value !== undefined && Object.hasOwn(row._valuesCache as object, input.name))\n row._valuesCache[input.name] = input.value\n })\n if (creating)\n table.options.onCreatingRowSave?.({\n exitCreatingMode: () => table.setCreatingRow(null),\n row,\n table,\n values: row._valuesCache,\n })\n else if (editing)\n table.options.onEditingRowSave?.({\n exitEditingMode: () => table.setEditingRow(null),\n row,\n table,\n values: row._valuesCache,\n })\n }\n const buttons =\n props.variant === 'icon'\n ? [\n h(Tooltip, { label: l.cancel, withinPortal: true }, () =>\n h(\n ActionIcon,\n { 'aria-label': l.cancel, color: 'red', variant: 'subtle', onClick: cancel },\n () => h(table.options.icons.IconCircleX),\n ),\n ),\n h(Tooltip, { label: l.save, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': l.save,\n color: 'blue',\n loading: state.isSaving,\n variant: 'subtle',\n onClick: save,\n },\n () => h(table.options.icons.IconDeviceFloppy),\n ),\n ),\n ]\n : [\n h(Button, { variant: 'subtle', onClick: cancel }, () => l.cancel),\n h(\n Button,\n { loading: state.isSaving, variant: 'filled', onClick: save },\n () => l.save,\n ),\n ]\n return h(\n Box,\n {\n ...attrs,\n class: clsx('mvt-edit-action-buttons', classes.root, attrs.class),\n onClick: (e: MouseEvent) => e.stopPropagation(),\n },\n () => buttons,\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Cell, MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_RowActionMenu } from '../menus/MVT_RowActionMenu'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_EditActionButtons } from './MVT_EditActionButtons'\n\nexport const MVT_ToggleRowActionMenuButton = defineComponent({\n name: 'MVTToggleRowActionMenuButton',\n props: {\n cell: { type: Object as PropType<MVT_Cell<MVT_RowData>>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { cell, row, table } = props\n const o = table.options\n const hasRowActions = slots.default || mvtSlots.rowActions || o.renderRowActions\n const hasRowActionMenuItems = mvtSlots.rowActionMenuItems || o.renderRowActionMenuItems\n const state = table.getState()\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const showEdit =\n (creating && o.createDisplayMode === 'row') || (editing && o.editDisplayMode === 'row')\n const startEdit = (event: MouseEvent) => {\n event.stopPropagation()\n table.setEditingRow({ ...row })\n }\n if (showEdit) return h(MVT_EditActionButtons, { row, table })\n if (hasRowActions)\n return (\n slots.default?.({ cell, row, table }) ??\n (mvtSlots.rowActions ?? o.renderRowActions)?.({ cell, row, table })\n )\n if (!hasRowActionMenuItems && parseFromValuesOrFunc(o.enableEditing, row))\n return h(\n Tooltip,\n { label: o.localization.edit, openDelay: 1000, position: 'right', withinPortal: true },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.edit,\n color: 'gray',\n disabled: !!state.editingRow && state.editingRow.id !== row.id,\n size: 'md',\n variant: 'subtle',\n onClick: startEdit,\n },\n () => h(o.icons.IconEdit),\n ),\n )\n return hasRowActionMenuItems\n ? h(MVT_RowActionMenu, { handleEdit: startEdit, row, table })\n : null\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_ToggleRowActionMenuButton } from '../../components/buttons/MVT_ToggleRowActionMenuButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowActionsColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ cell, row, table }) => h(MVT_ToggleRowActionMenuButton, { cell, row, table } as any),\n ...defaultDisplayColumnProps({\n header: 'actions',\n id: 'mvt-row-actions',\n size: 70,\n tableOptions,\n }),\n }\n}\n",".grab-icon {\n cursor: grab;\n &:active {\n cursor: grabbing;\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_GrabHandleButton.module.css'\n\nexport const MVT_GrabHandleButton = defineComponent({\n name: 'MVTGrabHandleButton',\n props: {\n actionIconProps: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\n onDragEnd: { type: Function as PropType<(event: DragEvent) => void>, required: true },\n onDragStart: { type: Function as PropType<(event: DragEvent) => void>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n return () => {\n const { actionIconProps, table } = props\n const label = actionIconProps.title ?? table.options.localization.move\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': label,\n draggable: true,\n ...actionIconProps,\n class: clsx('mvt-grab-handle-button', classes['grab-icon'], actionIconProps.class),\n color: 'gray',\n size: 'sm',\n title: undefined,\n variant: 'transparent',\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n actionIconProps.onClick?.(event)\n },\n onDragend: props.onDragEnd,\n onDragstart: props.onDragStart,\n } as any,\n () =>\n slots.default?.({ table }) ??\n h(table.options.icons.IconGripHorizontal, { size: '100%' }),\n ),\n )\n }\n },\n})\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\n\nexport const MVT_TableBodyRowGrabHandle = defineComponent({\n name: 'MVTTableBodyRowGrabHandle',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n rowRef: { type: Object as PropType<Ref<HTMLTableRowElement | null>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n const actionIconProps = {\n ...parseFromValuesOrFunc(table.options.mantineRowDragHandleProps, { row, table }),\n ...attrs,\n }\n return h(MVT_GrabHandleButton, {\n actionIconProps,\n table,\n onDragStart: (event: DragEvent) => {\n actionIconProps.onDragStart?.(event)\n if (props.rowRef.value) event.dataTransfer?.setDragImage(props.rowRef.value, 0, 0)\n table.setDraggingRow(row)\n },\n onDragEnd: (event: DragEvent) => {\n actionIconProps.onDragEnd?.(event)\n table.setDraggingRow(null)\n table.setHoveredRow(null)\n },\n } as any)\n }\n },\n})\n","import { h, type Ref } from 'vue'\n\nimport { MVT_TableBodyRowGrabHandle } from '../../components/body/MVT_TableBodyRowGrabHandle'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowDragColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ row, rowRef, table }) =>\n h(MVT_TableBodyRowGrabHandle, {\n row,\n rowRef: rowRef as Ref<HTMLTableRowElement | null>,\n table,\n } as any),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'move',\n id: 'mvt-row-drag',\n size: 60,\n tableOptions,\n }),\n }\n}\n",".root {\n margin-left: 6px;\n opacity: 0.8;\n &:disabled {\n background-color: transparent;\n border: none;\n }\n &:hover {\n opacity: 1;\n }\n &:global(.xl) {\n margin-left: -6px;\n }\n &:global(.md) {\n margin-left: 0;\n }\n .chevron {\n transition: transform 150ms;\n &.up {\n transform: rotate(-180deg);\n }\n &.right {\n transform: rotate(-90deg);\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ExpandAllButton.module.css'\n\nexport const MVT_ExpandAllButton = defineComponent({\n name: 'MVTExpandAllButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { table } = props\n const o = table.options\n const hasDetailPanel = !!o.renderDetailPanel || !!mvtSlots.detailPanel\n const state = table.getState()\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineExpandAllButtonProps, { table }),\n ...attrs,\n } as Record<string, any>\n const expanded = table.getIsAllRowsExpanded()\n const label =\n actionProps.title ?? (expanded ? o.localization.collapseAll : o.localization.expandAll)\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.expandAll,\n color: 'gray',\n variant: 'subtle',\n ...actionProps,\n class: clsx('mvt-expand-all-button', classes.root, actionProps.class, state.density),\n disabled: state.isLoading || (!hasDetailPanel && !table.getCanSomeRowsExpand()),\n title: undefined,\n onClick: () => table.toggleAllRowsExpanded(!expanded),\n } as any,\n () =>\n slots.default?.({ expanded, table }) ??\n h(o.icons.IconChevronsDown, {\n class: clsx(\n classes.chevron,\n expanded ? classes.up : table.getIsSomeRowsExpanded() ? classes.right : undefined,\n ),\n }),\n ),\n )\n }\n },\n})\n","import { MultiSelect, Select, TextInput } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Cell, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nexport const MVT_EditCellTextInput = defineComponent({\n name: 'MVTEditCellTextInput',\n inheritAttrs: false,\n props: {\n cell: { type: Object as PropType<MVT_Cell<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const value = ref<any>(props.cell.getValue())\n return () => {\n const { cell, table } = props\n const { column, row } = cell\n const def = column.columnDef\n const state = table.getState()\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const arg = { cell, column, row, table }\n const textProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditTextInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineEditTextInputProps, arg),\n ...attrs,\n } as Record<string, any>\n const selectProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineEditSelectProps, arg),\n ...attrs,\n } as Record<string, any>\n const custom = slots.default?.(arg) ?? def.Edit?.(arg)\n if (custom) return custom\n const save = (newValue: any) => {\n row._valuesCache[column.id] = newValue\n if (creating) table.setCreatingRow(row)\n else if (editing) table.setEditingRow(row)\n }\n const blur = (event: FocusEvent) => {\n textProps.onBlur?.(event)\n save(value.value)\n table.setEditingCell(null)\n }\n const setRef = (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) table.refs.editInputRefs.value[cell.id] = node\n }\n const modal = ['custom', 'modal'].includes(\n (creating ? table.options.createDisplayMode : table.options.editDisplayMode) as string,\n )\n const common = {\n disabled: parseFromValuesOrFunc(def.enableEditing, row) === false,\n label: modal ? def.header : undefined,\n name: cell.id,\n placeholder: !modal ? def.header : undefined,\n value: value.value,\n variant: table.options.editDisplayMode === 'table' ? 'unstyled' : 'default',\n onClick: (e: MouseEvent) => e.stopPropagation(),\n ref: setRef,\n }\n if (def.editVariant === 'select')\n return h(Select, {\n ...common,\n searchable: true,\n ...selectProps,\n onChange: (newValue: any, option: any) => {\n value.value = newValue\n selectProps.onChange?.(newValue, option)\n },\n onBlur: blur,\n } as any)\n if (def.editVariant === 'multi-select')\n return h(MultiSelect, {\n ...common,\n searchable: true,\n ...selectProps,\n onChange: (newValue: any[]) => {\n value.value = newValue\n selectProps.onChange?.(newValue)\n },\n onBlur: blur,\n } as any)\n return h(TextInput, {\n ...common,\n value: value.value ?? '',\n ...textProps,\n onChange: (event: Event | string) => {\n value.value = typeof event === 'string' ? event : (event.target as HTMLInputElement).value\n textProps.onChange?.(event)\n },\n onBlur: blur,\n onKeydown: (event: KeyboardEvent) => {\n textProps.onKeyDown?.(event)\n if (event.key === 'Enter') table.refs.editInputRefs.value[cell.id]?.blur()\n },\n } as any)\n }\n },\n})\n",".root {\n opacity: 0.8;\n &:disabled {\n background-color: transparent;\n border: none;\n opacity: 0.3;\n }\n &:hover {\n opacity: 1;\n }\n}\n\n.root-ltr {\n margin-left: calc(calc(var(--mvt-row-depth, 0)) * 16px);\n .chevron {\n transition: transform 200ms;\n &.right {\n transform: rotate(270deg);\n }\n &.up {\n transform: rotate(-180deg);\n }\n }\n}\n\n.root-rtl {\n margin-right: calc(calc(var(--mvt-row-depth, 0)) * 16px);\n .chevron {\n transition: transform 200ms;\n &.right {\n transform: rotate(-270deg);\n }\n &.up {\n transform: rotate(180deg);\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip, useDirection } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ExpandButton.module.css'\n\nexport const MVT_ExpandButton = defineComponent({\n name: 'MVTExpandButton',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const direction = useDirection()\n const mvtSlots = useMVT_Slots()\n return () => {\n const { row, table } = props\n const o = table.options\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineExpandButtonProps, { row, table }),\n ...attrs,\n } as Record<string, any>\n const edits = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { key: cell.id, cell, table }))\n const canExpand = row.getCanExpand()\n const expanded = row.getIsExpanded()\n const detail =\n !!mvtSlots.detailPanel ||\n !!o.renderDetailPanel?.({ internalEditComponents: edits, row, table })\n const rtl = direction.dir.value === 'rtl' || o.positionExpandColumn === 'last'\n const label =\n actionProps.title ?? (expanded ? o.localization.collapse : o.localization.expand)\n return h(\n Tooltip,\n { disabled: !canExpand && !detail, label, openDelay: 1000, withinPortal: true },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.expand,\n color: 'gray',\n disabled: !canExpand && !detail,\n variant: 'subtle',\n ...actionProps,\n class: clsx(\n 'mvt-expand-button',\n classes.root,\n classes[`root-${rtl ? 'rtl' : 'ltr'}`],\n actionProps.class,\n ),\n style: { '--mvt-row-depth': `${row.depth}`, ...actionProps.style },\n title: undefined,\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n row.toggleExpanded()\n actionProps.onClick?.(event)\n },\n } as any,\n () =>\n slots.default?.({ row, table }) ??\n h(o.icons.IconChevronDown, {\n class: clsx(\n 'mvt-expand-button-chevron',\n classes.chevron,\n !canExpand && !detail ? classes.right : expanded ? classes.up : undefined,\n ),\n }),\n ),\n )\n }\n },\n})\n","import { Fragment, h } from 'vue'\n\nimport { Flex, Tooltip } from '@mantine-vue/core'\n\nimport { MVT_ExpandAllButton } from '../../components/buttons/MVT_ExpandAllButton'\nimport { MVT_ExpandButton } from '../../components/buttons/MVT_ExpandButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowExpandColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const {\n defaultColumn,\n enableExpandAll,\n groupedColumnMode,\n positionExpandColumn,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions\n\n const alignProps =\n positionExpandColumn === 'last'\n ? ({\n align: 'right',\n } as const)\n : undefined\n\n return {\n Cell: ({ cell, column, row, table }) => {\n const expandButtonProps = { row, table }\n const subRowsLength = row.subRows?.length\n if (tableOptions.groupedColumnMode === 'remove' && row.groupingColumnId) {\n return h(Flex, { align: 'center', gap: '0.25rem' } as any, () => [\n h(MVT_ExpandButton, expandButtonProps as any),\n h(\n Tooltip,\n {\n label: table.getColumn(row.groupingColumnId!).columnDef.header,\n openDelay: 1000,\n position: 'right',\n } as any,\n () => h('span', row.groupingValue as any),\n ),\n subRowsLength ? h('span', `(${subRowsLength})`) : null,\n ])\n }\n return h(Fragment, null, [\n h(MVT_ExpandButton, expandButtonProps as any),\n column.columnDef.GroupedCell?.({ cell, column, row, table }),\n ])\n },\n Header: enableExpandAll\n ? ({ table }) => {\n return h(Flex, { align: 'center' } as any, () => [\n h(MVT_ExpandAllButton, { table } as any),\n groupedColumnMode === 'remove'\n ? grouping\n ?.map((groupedColumnId) => table.getColumn(groupedColumnId).columnDef.header)\n ?.join(', ')\n : null,\n ])\n }\n : undefined,\n mantineTableBodyCellProps: alignProps,\n mantineTableHeadCellProps: alignProps,\n ...defaultDisplayColumnProps({\n header: 'expand',\n id: 'mvt-row-expand',\n size:\n groupedColumnMode === 'remove'\n ? (defaultColumn?.size ?? 180)\n : renderDetailPanel\n ? enableExpandAll\n ? 60\n : 70\n : 100,\n tableOptions,\n }),\n }\n}\n","import { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowNumbersColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const { localization, rowNumberDisplayMode } = tableOptions\n const {\n pagination: { pageIndex, pageSize },\n } = tableOptions.state\n\n return {\n Cell: ({ renderedRowIndex = 0, row }) =>\n ((rowNumberDisplayMode === 'static' ? renderedRowIndex + pageSize * pageIndex : row.index) ??\n 0) + 1,\n grow: false,\n Header: () => localization.rowNumber,\n ...defaultDisplayColumnProps({\n header: 'rowNumbers',\n id: 'mvt-row-numbers',\n size: 50,\n tableOptions,\n }),\n }\n}\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_RowPinButton = defineComponent({\n name: 'MVTRowPinButton',\n inheritAttrs: false,\n props: {\n pinningPosition: { type: String as PropType<'bottom' | 'top'>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const opened = ref(false)\n return () => {\n const { row, table } = props\n const pinned = row.getIsPinned()\n const label = pinned ? table.options.localization.unpin : table.options.localization.pin\n return h(Tooltip, { label, openDelay: 1000, opened: opened.value }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': table.options.localization.pin,\n color: 'gray',\n size: 'xs',\n style: { height: '24px', width: '24px' },\n variant: 'subtle',\n ...attrs,\n onMouseenter: () => {\n opened.value = true\n },\n onMouseleave: () => {\n opened.value = false\n },\n onClick: (event: MouseEvent) => {\n opened.value = false\n event.stopPropagation()\n row.pin(pinned ? false : props.pinningPosition)\n },\n } as any,\n () =>\n pinned\n ? h(table.options.icons.IconX)\n : h(table.options.icons.IconPinned, {\n style: {\n transform: `rotate(${table.options.rowPinningDisplayMode === 'sticky' ? 135 : props.pinningPosition === 'top' ? 180 : 0}deg)`,\n },\n }),\n ),\n )\n }\n },\n})\n","import { Box } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_RowPinButton } from '../buttons/MVT_RowPinButton'\n\nexport const MVT_TableBodyRowPinButton = defineComponent({\n name: 'MVTTableBodyRowPinButton',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n if (!parseFromValuesOrFunc(table.options.enableRowPinning, row as any)) return null\n const common = { ...attrs, row, table }\n if (table.options.rowPinningDisplayMode === 'top-and-bottom' && !row.getIsPinned()) {\n return h(\n Box,\n {\n style: {\n display: 'flex',\n flexDirection: table.getState().density === 'xs' ? 'row' : 'column',\n },\n },\n () => [\n h(MVT_RowPinButton, { ...common, pinningPosition: 'top' } as any),\n h(MVT_RowPinButton, { ...common, pinningPosition: 'bottom' } as any),\n ],\n )\n }\n return h(MVT_RowPinButton, {\n ...common,\n pinningPosition: table.options.rowPinningDisplayMode === 'bottom' ? 'bottom' : 'top',\n } as any)\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_TableBodyRowPinButton } from '../../components/body/MVT_TableBodyRowPinButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowPinningColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ row, table }) => h(MVT_TableBodyRowPinButton, { row, table } as any),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'pin',\n id: 'mvt-row-pin',\n size: 60,\n tableOptions,\n }),\n }\n}\n","import { compareItems, type RankingInfo } from '@tanstack/match-sorter-utils'\nimport { type Row, sortingFns } from '@tanstack/vue-table'\n\nimport { type MVT_Row, type MVT_RowData } from '../types'\n\nconst fuzzy = <TData extends MVT_RowData>(rowA: Row<TData>, rowB: Row<TData>, columnId: string) => {\n let dir = 0\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId] as RankingInfo,\n rowB.columnFiltersMeta[columnId] as RankingInfo,\n )\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0 ? sortingFns.alphanumeric(rowA as Row<any>, rowB as Row<any>, columnId) : dir\n}\n\nexport const MVT_SortingFns = {\n ...sortingFns,\n fuzzy,\n}\n\nexport const rankGlobalFuzzy = <TData extends MVT_RowData>(\n rowA: MVT_Row<TData>,\n rowB: MVT_Row<TData>,\n) =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank))\n","import { rankGlobalFuzzy } from '../fns/sortingFns'\nimport { type MVT_Row, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from './utils'\n\nexport const getMVT_Rows = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n all?: boolean,\n): MVT_Row<TData>[] => {\n const {\n getCenterRows,\n getPrePaginationRowModel,\n getRowModel,\n getState,\n getTopRows,\n options: {\n createDisplayMode,\n enablePagination,\n enableRowPinning,\n manualPagination,\n positionCreatingRow,\n rowPinningDisplayMode,\n },\n } = table\n const { creatingRow, pagination } = getState()\n\n const isRankingRows = getIsRankingRows(table)\n\n let rows: MVT_Row<TData>[] = []\n if (!isRankingRows) {\n rows =\n !enableRowPinning || rowPinningDisplayMode?.includes('sticky')\n ? all\n ? getPrePaginationRowModel().rows\n : getRowModel().rows\n : getCenterRows()\n } else {\n // fuzzy ranking adjustments\n rows = getPrePaginationRowModel().rows.sort((a, b) => rankGlobalFuzzy(a, b))\n if (enablePagination && !manualPagination && !all) {\n const start = pagination.pageIndex * pagination.pageSize\n rows = rows.slice(start, start + pagination.pageSize)\n }\n if (enableRowPinning && !rowPinningDisplayMode?.includes('sticky')) {\n // \"re-center-ize\" the rows (no top or bottom pinned rows unless sticky)\n rows = rows.filter((row) => !row.getIsPinned())\n }\n }\n // row pinning adjustments\n if (enableRowPinning && rowPinningDisplayMode?.includes('sticky')) {\n const centerPinnedRowIds = rows.filter((row) => row.getIsPinned()).map((r) => r.id)\n\n rows = [...getTopRows().filter((row) => !centerPinnedRowIds.includes(row.id)), ...rows]\n }\n // blank inserted creating row adjustments\n if (positionCreatingRow !== undefined && creatingRow && createDisplayMode === 'row') {\n const creatingRowIndex = !isNaN(+positionCreatingRow)\n ? +positionCreatingRow\n : positionCreatingRow === 'top'\n ? 0\n : rows.length\n rows = [...rows.slice(0, creatingRowIndex), creatingRow, ...rows.slice(creatingRowIndex)]\n }\n\n return rows\n}\n\nexport const getCanRankRows = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const {\n getState,\n options: {\n enableGlobalFilterRankedResults,\n manualExpanding,\n manualFiltering,\n manualGrouping,\n manualSorting,\n },\n } = table\n const { expanded, globalFilterFn } = getState()\n\n return (\n !manualExpanding &&\n !manualFiltering &&\n !manualGrouping &&\n !manualSorting &&\n enableGlobalFilterRankedResults &&\n globalFilterFn === 'fuzzy' &&\n expanded !== true &&\n !Object.values(expanded).some(Boolean)\n )\n}\n\nexport const getIsRankingRows = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const { globalFilter, sorting } = table.getState()\n\n return getCanRankRows(table) && globalFilter && !Object.values(sorting).some(Boolean)\n}\n\nexport const getIsRowSelected = <TData extends MVT_RowData>({\n row,\n table,\n}: {\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n}) => {\n const {\n options: { enableRowSelection },\n } = table\n\n return (\n row.getIsSelected() ||\n (parseFromValuesOrFunc(enableRowSelection, row) &&\n row.getCanSelectSubRows() &&\n row.getIsAllSubRowsSelected())\n )\n}\n\nexport const getMVT_RowSelectionHandler =\n <TData extends MVT_RowData>({\n renderedRowIndex = 0,\n row,\n table,\n }: {\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) =>\n (event: Event, value?: boolean) => {\n const {\n getState,\n options: {\n enableBatchRowSelection,\n enableMultiRowSelection,\n enableRowPinning,\n manualPagination,\n rowPinningDisplayMode,\n },\n refs: { lastSelectedRowId },\n } = table\n const {\n pagination: { pageIndex, pageSize },\n } = getState()\n\n const paginationOffset = manualPagination ? 0 : pageSize * pageIndex\n\n const wasCurrentRowChecked = getIsRowSelected({ row, table })\n\n // toggle selection of this row\n row.toggleSelected(value ?? !wasCurrentRowChecked)\n\n const changedRowIds = new Set<string>([row.id])\n\n // if shift key is pressed, select all rows between last selected and this one\n if (\n enableBatchRowSelection &&\n enableMultiRowSelection &&\n (event as MouseEvent).shiftKey &&\n lastSelectedRowId.value !== null\n ) {\n const rows = getMVT_Rows(table, true)\n\n const lastIndex = rows.findIndex((r) => r.id === lastSelectedRowId.value)\n\n if (lastIndex !== -1) {\n const isLastIndexChecked = getIsRowSelected({\n row: rows?.[lastIndex],\n table,\n })\n\n const currentIndex = renderedRowIndex + paginationOffset\n const [start, end] =\n lastIndex < currentIndex ? [lastIndex, currentIndex] : [currentIndex, lastIndex]\n\n // toggle selection of all rows between last selected and this one\n // but only if the last selected row is not the same as the current one\n if (wasCurrentRowChecked !== isLastIndexChecked) {\n for (let i = start; i <= end; i++) {\n rows[i].toggleSelected(!wasCurrentRowChecked)\n changedRowIds.add(rows[i].id)\n }\n }\n }\n }\n\n // record the last selected row id\n lastSelectedRowId.value = row.id\n\n // if all sub rows were selected, unselect them\n if (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected()) {\n row.subRows?.forEach((r) => r.toggleSelected(false))\n }\n\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n changedRowIds.forEach((rowId) => {\n const rowToTogglePin = table.getRow(rowId)\n rowToTogglePin.pin(\n !wasCurrentRowChecked //was not previously pinned or selected\n ? rowPinningDisplayMode?.includes('bottom')\n ? 'bottom'\n : 'top'\n : false,\n )\n })\n }\n }\n\nexport const getMVT_SelectAllHandler =\n <TData extends MVT_RowData>({ table }: { table: MVT_TableInstance<TData> }) =>\n (event: Event, value?: boolean, forceAll?: boolean) => {\n const {\n options: { enableRowPinning, rowPinningDisplayMode, selectAllMode },\n refs: { lastSelectedRowId },\n } = table\n\n if (selectAllMode === 'all' || forceAll) {\n table.toggleAllRowsSelected(value ?? (event.target as HTMLInputElement).checked)\n } else {\n table.toggleAllPageRowsSelected(value ?? (event.target as HTMLInputElement).checked)\n }\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n table.setRowPinning({ bottom: [], top: [] })\n }\n lastSelectedRowId.value = null\n }\n","import { Checkbox, Radio, Switch, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport {\n getIsRowSelected,\n getMVT_RowSelectionHandler,\n getMVT_SelectAllHandler,\n} from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nexport const MVT_SelectCheckbox = defineComponent({\n name: 'MVTSelectCheckbox',\n inheritAttrs: false,\n props: {\n renderedRowIndex: { type: Number, default: 0 },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n let lastShiftKey = false\n return () => {\n const { row, table } = props\n const o = table.options\n const state = table.getState()\n const selectAll = !row\n const checked = selectAll\n ? o.selectAllMode === 'page'\n ? table.getIsAllPageRowsSelected()\n : table.getIsAllRowsSelected()\n : getIsRowSelected({ row, table })\n const checkboxProps = {\n ...(selectAll\n ? parseFromValuesOrFunc(o.mantineSelectAllCheckboxProps, { table })\n : parseFromValuesOrFunc(o.mantineSelectCheckboxProps, { row, table })),\n ...attrs,\n } as Record<string, any>\n const label =\n checkboxProps.title ??\n (selectAll ? o.localization.toggleSelectAll : o.localization.toggleSelectRow)\n const selection = row\n ? getMVT_RowSelectionHandler({ renderedRowIndex: props.renderedRowIndex, row, table })\n : getMVT_SelectAllHandler({ table })\n const common = {\n 'aria-label': label,\n checked,\n disabled: state.isLoading || (row && !row.getCanSelect()) || row?.id === 'mvt-row-create',\n size: state.density === 'xs' ? 'sm' : 'md',\n ...checkboxProps,\n title: undefined,\n onChange: (event: Event) => {\n event.stopPropagation()\n if ((event as any).shiftKey === undefined) {\n ;(event as any).shiftKey = lastShiftKey\n }\n selection(event)\n checkboxProps.onChange?.(event)\n },\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n lastShiftKey = event.shiftKey\n checkboxProps.onClick?.(event)\n },\n }\n const control =\n o.selectDisplayMode === 'switch'\n ? h(Switch, common as any)\n : o.selectDisplayMode === 'radio' || o.enableMultiRowSelection === false\n ? h(Radio, common as any)\n : h(Checkbox, {\n indeterminate:\n !checked && selectAll\n ? table.getIsSomeRowsSelected()\n : row?.getIsSomeSelected() && row.getCanSelectSubRows(),\n ...common,\n } as any)\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h('span', null, control),\n )\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_SelectCheckbox } from '../../components/inputs/MVT_SelectCheckbox'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowSelectColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const { enableMultiRowSelection, enableSelectAll } = tableOptions\n\n return {\n Cell: ({ renderedRowIndex, row, table }) =>\n h(MVT_SelectCheckbox, { renderedRowIndex, row, table } as any),\n grow: false,\n Header:\n enableSelectAll && enableMultiRowSelection\n ? ({ table }) => h(MVT_SelectCheckbox, { table } as any)\n : undefined,\n ...defaultDisplayColumnProps({\n header: 'select',\n id: 'mvt-row-select',\n size: enableSelectAll ? 60 : 70,\n tableOptions,\n }),\n }\n}\n","import { aggregationFns } from '@tanstack/vue-table'\n\nexport const MVT_AggregationFns = { ...aggregationFns }\n","import { type RankingInfo, rankings, rankItem } from '@tanstack/match-sorter-utils'\nimport { filterFns, type Row } from '@tanstack/vue-table'\n\nimport { type MVT_FilterOption, type MVT_Localization, type MVT_RowData } from '../types'\n\nconst fuzzy = <TData extends MVT_RowData>(\n row: Row<TData>,\n columnId: string,\n filterValue: number | string,\n addMeta: (item: RankingInfo) => void,\n) => {\n const itemRank = rankItem(row.getValue(columnId), filterValue as string, {\n threshold: rankings.MATCHES,\n })\n addMeta(itemRank)\n return itemRank.passed\n}\n\nfuzzy.autoRemove = (val: any) => !val\n\nconst contains = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .includes(filterValue.toString().toLowerCase().trim())\n\ncontains.autoRemove = (val: any) => !val\n\nconst startsWith = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .startsWith(filterValue.toString().toLowerCase().trim())\n\nstartsWith.autoRemove = (val: any) => !val\n\nconst endsWith = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .endsWith(filterValue.toString().toLowerCase().trim())\n\nendsWith.autoRemove = (val: any) => !val\n\nconst equals = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row.getValue<number | string>(id)?.toString().toLowerCase().trim() ===\n filterValue?.toString().toLowerCase().trim()\n\nequals.autoRemove = (val: any) => !val\n\nconst notEquals = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row.getValue<number | string>(id)?.toString().toLowerCase().trim() !==\n filterValue.toString().toLowerCase().trim()\n\nnotEquals.autoRemove = (val: any) => !val\n\nconst greaterThan = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +row.getValue<number | string>(id) > +filterValue\n : row.getValue<number | string>(id)?.toString().toLowerCase().trim() >\n filterValue?.toString().toLowerCase().trim()\n\ngreaterThan.autoRemove = (val: any) => !val\n\nconst greaterThanOrEqualTo = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) => equals(row, id, filterValue) || greaterThan(row, id, filterValue)\n\ngreaterThanOrEqualTo.autoRemove = (val: any) => !val\n\nconst lessThan = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +row.getValue<number | string>(id) < +filterValue\n : row.getValue<number | string>(id)?.toString().toLowerCase().trim() <\n filterValue?.toString().toLowerCase().trim()\n\nlessThan.autoRemove = (val: any) => !val\n\nconst lessThanOrEqualTo = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) => equals(row, id, filterValue) || lessThan(row, id, filterValue)\n\nlessThanOrEqualTo.autoRemove = (val: any) => !val\n\nconst between = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValues: [number | string, number | string],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) || greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThan(row, id, filterValues[1]))\n\nbetween.autoRemove = (val: any) => !val\n\nconst betweenInclusive = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValues: [number | string, number | string],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThanOrEqualTo(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThanOrEqualTo(row, id, filterValues[1]))\n\nbetweenInclusive.autoRemove = (val: any) => !val\n\nconst empty = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n _filterValue: number | string,\n) => !row.getValue<number | string>(id)?.toString().trim()\n\nempty.autoRemove = (val: any) => !val\n\nconst notEmpty = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n _filterValue: number | string,\n) => !!row.getValue<number | string>(id)?.toString().trim()\n\nnotEmpty.autoRemove = (val: any) => !val\n\nexport const MVT_FilterFns = {\n ...filterFns,\n between,\n betweenInclusive,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n greaterThanOrEqualTo,\n lessThan,\n lessThanOrEqualTo,\n notEmpty,\n notEquals,\n startsWith,\n}\n\nexport function localizedFilterOption(localization: MVT_Localization, option: MVT_FilterOption) {\n if (!option) {\n return ''\n }\n const key = `filter${option[0].toUpperCase()}${option.slice(1)}`\n return localization[key as keyof MVT_Localization] ?? ''\n}\n","import {\n IconArrowAutofitContent,\n IconArrowsSort,\n IconBaselineDensityLarge,\n IconBaselineDensityMedium,\n IconBaselineDensitySmall,\n IconBoxMultiple,\n IconChevronDown,\n IconChevronLeft,\n IconChevronLeftPipe,\n IconChevronRight,\n IconChevronRightPipe,\n IconChevronsDown,\n IconCircleX,\n IconClearAll,\n IconColumns,\n IconDeviceFloppy,\n IconDots,\n IconDotsVertical,\n IconEdit,\n IconEyeOff,\n IconFilter,\n IconFilterCog,\n IconFilterOff,\n IconGripHorizontal,\n IconMaximize,\n IconMinimize,\n IconPinned,\n IconPinnedOff,\n IconSearch,\n IconSearchOff,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} from '@tabler/icons-vue'\n\nexport const MVT_Default_Icons = {\n IconArrowAutofitContent,\n IconArrowsSort,\n IconBaselineDensityLarge,\n IconBaselineDensityMedium,\n IconBaselineDensitySmall,\n IconBoxMultiple,\n IconChevronDown,\n IconChevronLeft,\n IconChevronLeftPipe,\n IconChevronRight,\n IconChevronRightPipe,\n IconChevronsDown,\n IconCircleX,\n IconClearAll,\n IconColumns,\n IconDeviceFloppy,\n IconDots,\n IconDotsVertical,\n IconEdit,\n IconEyeOff,\n IconFilter,\n IconFilterCog,\n IconFilterOff,\n IconGripHorizontal,\n IconMaximize,\n IconMinimize,\n IconPinned,\n IconPinnedOff,\n IconSearch,\n IconSearchOff,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} as const\n\nexport type MVT_Icons = Record<keyof typeof MVT_Default_Icons, any>\n","import { type MVT_Localization } from '..'\n\nexport const MVT_Localization_EN: MVT_Localization = {\n actions: 'Actions',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearSelection: 'Clear selection',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n copy: 'Copy',\n collapse: 'Collapse',\n collapseAll: 'Collapse all',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n dropToGroupBy: 'Drop to group by {column}',\n edit: 'Edit',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterArrIncludes: 'Includes',\n filterArrIncludesAll: 'Includes all',\n filterArrIncludesSome: 'Includes',\n filterBetween: 'Between',\n filterBetweenInclusive: 'Between Inclusive',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterEqualsString: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterGreaterThanOrEqualTo: 'Greater Than Or Equal To',\n filterInNumberRange: 'Between',\n filterIncludesString: 'Contains',\n filterIncludesStringSensitive: 'Contains',\n filterLessThan: 'Less Than',\n filterLessThanOrEqualTo: 'Less Than Or Equal To',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filterWeakEquals: 'Equals',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n goToFirstPage: 'Go to first page',\n goToLastPage: 'Go to last page',\n goToNextPage: 'Go to next page',\n goToPreviousPage: 'Go to previous page',\n grab: 'Grab',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n max: 'Max',\n min: 'Min',\n move: 'Move',\n noRecordsToDisplay: 'No records to display',\n noResultsFound: 'No results found',\n of: 'of',\n or: 'or',\n pin: 'Pin',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n rowsPerPage: 'Rows per page',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected: '{selectedCount} of {rowCount} row(s) selected',\n select: 'Select',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n}\n","/* oxlint-disable prefer-const */\n\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n} from '@tanstack/vue-table'\n\nimport { useDirection } from '@mantine-vue/core'\n\nimport { MVT_AggregationFns } from '../fns/aggregationFns'\nimport { MVT_FilterFns } from '../fns/filterFns'\nimport { MVT_SortingFns } from '../fns/sortingFns'\nimport { MVT_Default_Icons } from '../icons'\nimport { MVT_Localization_EN } from '../locales/en'\nimport { type MVT_DefinedTableOptions, type MVT_RowData, type MVT_TableOptions } from '../types'\n\nexport const MVT_DefaultColumn = {\n filterVariant: 'text',\n maxSize: 1000,\n minSize: 40,\n size: 180,\n} as const\n\nexport const MVT_DefaultDisplayColumn = {\n columnDefType: 'display',\n enableClickToCopy: false,\n enableColumnActions: false,\n enableColumnDragging: false,\n enableColumnFilter: false,\n enableColumnOrdering: false,\n enableEditing: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n} as const\n\n/**\n * Applies MVT's option defaults\n */\nexport const useMVT_TableOptions: <TData extends MVT_RowData>(\n tableOptions: MVT_TableOptions<TData>,\n) => MVT_DefinedTableOptions<TData> = <TData extends MVT_RowData>(\n rawOptions: MVT_TableOptions<TData>,\n) => {\n let {\n aggregationFns,\n autoResetExpanded = false,\n columnFilterDisplayMode = 'subheader',\n columnResizeDirection,\n columnResizeMode = 'onChange',\n createDisplayMode = 'modal',\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode = 'modal',\n enableBatchRowSelection = true,\n enableBottomToolbar = true,\n enableColumnActions = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnPinning = false,\n enableColumnResizing = false,\n enableColumnVirtualization,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableExpanding,\n enableFacetedValues = false,\n enableFilterMatchHighlighting = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHeaderActionsHoverReveal = false,\n enableHiding = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enableRowPinning = false,\n enableRowSelection = false,\n enableRowVirtualization,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarInternalActions = true,\n enableTopToolbar = true,\n filterFns,\n icons,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n paginationDisplayMode = 'default',\n positionActionsColumn = 'first',\n positionCreatingRow = 'top',\n positionExpandColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n positionToolbarDropZone = 'top',\n rowNumberDisplayMode = 'static',\n rowPinningDisplayMode = 'sticky',\n selectAllMode = 'page',\n sortingFns,\n ...rest\n } = rawOptions\n\n const direction = useDirection()\n\n icons = { ...MVT_Default_Icons, ...icons }\n localization = {\n ...MVT_Localization_EN,\n ...localization,\n }\n aggregationFns = { ...MVT_AggregationFns, ...aggregationFns }\n filterFns = { ...MVT_FilterFns, ...filterFns }\n sortingFns = { ...MVT_SortingFns, ...sortingFns }\n defaultColumn = { ...MVT_DefaultColumn, ...defaultColumn }\n defaultDisplayColumn = {\n ...MVT_DefaultDisplayColumn,\n ...defaultDisplayColumn,\n }\n\n if (!columnResizeDirection) {\n columnResizeDirection = direction.dir.value || 'ltr'\n }\n\n layoutMode = layoutMode || (enableColumnResizing ? 'grid-no-grow' : 'semantic')\n if (layoutMode === 'semantic' && (enableRowVirtualization || enableColumnVirtualization)) {\n layoutMode = 'grid'\n }\n\n if (enableRowVirtualization) {\n enableStickyHeader = true\n }\n\n if (enablePagination === false && manualPagination === undefined) {\n manualPagination = true\n }\n\n if (!rest.data?.length) {\n manualFiltering = true\n manualGrouping = true\n manualPagination = true\n manualSorting = true\n }\n\n const definedOptions = {\n aggregationFns,\n autoResetExpanded,\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode,\n enableBatchRowSelection,\n enableBottomToolbar,\n enableColumnActions,\n enableColumnFilters,\n enableColumnOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnVirtualization,\n enableDensityToggle,\n enableExpandAll,\n enableExpanding,\n enableFacetedValues,\n enableFilterMatchHighlighting,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableGlobalFilterRankedResults,\n enableGrouping,\n enableHeaderActionsHoverReveal,\n enableHiding,\n enableMultiRowSelection,\n enableMultiSort,\n enablePagination,\n enableRowPinning,\n enableRowSelection,\n enableRowVirtualization,\n enableSelectAll,\n enableSorting,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n enableToolbarInternalActions,\n enableTopToolbar,\n filterFns,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: enableExpanding || enableGrouping ? getExpandedRowModel() : undefined,\n getFacetedMinMaxValues: enableFacetedValues ? getFacetedMinMaxValues() : undefined,\n getFacetedRowModel: enableFacetedValues ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: enableFacetedValues ? getFacetedUniqueValues() : undefined,\n getFilteredRowModel:\n enableColumnFilters || enableGlobalFilter || enableFilters\n ? getFilteredRowModel()\n : undefined,\n getGroupedRowModel: enableGrouping ? getGroupedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getSubRows: (row) => row?.subRows,\n icons,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n paginationDisplayMode,\n positionActionsColumn,\n positionCreatingRow,\n positionExpandColumn,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n rowNumberDisplayMode,\n rowPinningDisplayMode,\n selectAllMode,\n sortingFns,\n ...rest,\n } as MVT_DefinedTableOptions<TData>\n\n Object.defineProperty(definedOptions, 'data', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.data,\n })\n Object.defineProperty(definedOptions, 'columns', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.columns,\n })\n\n return definedOptions\n}\n","import { MVT_DefaultDisplayColumn } from '../useMVT_TableOptions'\n\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nconst blankColProps = {\n children: null,\n style: {\n minWidth: 0,\n padding: 0,\n width: 0,\n },\n}\n\nexport const getMVT_RowSpacerColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n ...defaultDisplayColumnProps({\n id: 'mvt-row-spacer',\n size: 0,\n tableOptions,\n }),\n grow: true,\n ...MVT_DefaultDisplayColumn,\n mantineTableBodyCellProps: blankColProps,\n mantineTableFooterCellProps: blankColProps,\n mantineTableHeadCellProps: blankColProps,\n }\n}\n","import { onMounted, ref, watch } from 'vue'\n\nimport { type MVT_RowData, type MVT_SortingState, type MVT_TableInstance } from '../types'\nimport { getDefaultColumnOrderIds } from '../utils/displayColumn.utils'\nimport { getCanRankRows } from '../utils/row.utils'\n\n/**\n * Side effects for the table instance.\n */\nexport const useMVT_Effects = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const {\n getIsSomeRowsPinned,\n getPrePaginationRowModel,\n getState,\n options: { enablePagination, enableRowPinning, rowCount },\n } = table\n\n const initialBodyHeight = ref<string>()\n const previousTop = ref<number>()\n const appliedSort = ref<MVT_SortingState>(getState().sorting)\n\n onMounted(() => {\n if (typeof window !== 'undefined') {\n initialBodyHeight.value = document.body.style.height\n }\n })\n\n //hide scrollbars when table is in full screen mode, preserve body scroll position after full screen exit\n watch(\n () => getState().isFullScreen,\n (isFullScreen) => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n previousTop.value = document.body.getBoundingClientRect().top //save scroll position\n document.body.style.height = '100dvh' //hide page scrollbars when table is in full screen mode\n } else {\n document.body.style.height = initialBodyHeight.value as string\n if (!previousTop.value) return\n //restore scroll position\n window.scrollTo({\n behavior: 'instant',\n top: -1 * (previousTop.value as number),\n })\n }\n }\n },\n { flush: 'post' },\n )\n\n //recalculate column order when columns change or features are toggled on/off\n watch(\n () => table.options.columns.length,\n (totalColumnCount) => {\n if (totalColumnCount !== getState().columnOrder.length) {\n table.setColumnOrder(getDefaultColumnOrderIds(table.options as any))\n }\n },\n { flush: 'post' },\n )\n\n //if page index is out of bounds, set it to the last page\n watch(\n () => rowCount ?? getPrePaginationRowModel().rows.length,\n (totalRowCount) => {\n const { isLoading, pagination, showSkeletons } = getState()\n if (!enablePagination || isLoading || showSkeletons) return\n const { pageIndex, pageSize } = pagination\n const firstVisibleRowIndex = pageIndex * pageSize\n if (firstVisibleRowIndex >= totalRowCount && firstVisibleRowIndex > 0) {\n table.setPageIndex(Math.ceil(totalRowCount / pageSize) - 1)\n }\n },\n { flush: 'post' },\n )\n\n //track the last applied sort\n watch(\n () => getState().sorting,\n (sorting) => {\n if (sorting.length) {\n appliedSort.value = sorting\n }\n },\n { flush: 'post' },\n )\n\n //turn off sort when global filter is looking for ranked results\n watch(\n () => getState().globalFilter,\n () => {\n if (!getCanRankRows(table)) return\n if (getState().globalFilter) {\n table.setSorting([])\n } else {\n table.setSorting(() => appliedSort.value || [])\n }\n },\n { flush: 'post' },\n )\n\n //fix pinned row top style when density changes\n watch(\n () => getState().density,\n () => {\n if (enableRowPinning && getIsSomeRowsPinned()) {\n setTimeout(() => {\n //touch a reactive dependency to force a re-render, used here to recompute pinned-row offsets\n table.setDensity((d) => d)\n }, 150)\n }\n },\n { flush: 'post' },\n )\n}\n","import { computed, ref, shallowRef } from 'vue'\n\nimport { useVueTable } from '@tanstack/vue-table'\n\nimport {\n type MVT_Cell,\n type MVT_Column,\n type MVT_ColumnDef,\n type MVT_ColumnFilterFnsState,\n type MVT_ColumnOrderState,\n type MVT_ColumnSizingInfoState,\n type MVT_DefinedTableOptions,\n type MVT_DensityState,\n type MVT_FilterOption,\n type MVT_GroupingState,\n type MVT_PaginationState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_StatefulTableOptions,\n type MVT_TableInstance,\n type MVT_TableState,\n type MVT_Updater,\n} from '../types'\nimport {\n getAllLeafColumnDefs,\n getColumnId,\n getDefaultColumnFilterFn,\n prepareColumns,\n} from '../utils/column.utils'\nimport {\n getDefaultColumnOrderIds,\n showRowActionsColumn,\n showRowDragColumn,\n showRowExpandColumn,\n showRowNumbersColumn,\n showRowPinningColumn,\n showRowSelectionColumn,\n showRowSpacerColumn,\n} from '../utils/displayColumn.utils'\nimport { createRow } from '../utils/tanstack.helpers'\nimport { getMVT_RowActionsColumnDef } from './display-columns/getMVT_RowActionsColumnDef'\nimport { getMVT_RowDragColumnDef } from './display-columns/getMVT_RowDragColumnDef'\nimport { getMVT_RowExpandColumnDef } from './display-columns/getMVT_RowExpandColumnDef'\nimport { getMVT_RowNumbersColumnDef } from './display-columns/getMVT_RowNumbersColumnDef'\nimport { getMVT_RowPinningColumnDef } from './display-columns/getMVT_RowPinningColumnDef'\nimport { getMVT_RowSelectColumnDef } from './display-columns/getMVT_RowSelectColumnDef'\nimport { getMVT_RowSpacerColumnDef } from './display-columns/getMVT_RowSpacerColumnDef'\nimport { useMVT_Effects } from './useMVT_Effects'\n\nconst applyUpdater = <T>(target: { value: T }, updater: MVT_Updater<T>) => {\n target.value = updater instanceof Function ? (updater as (prev: T) => T)(target.value) : updater\n}\n\n/**\n * The MVT composable that wraps TanStack's `useVueTable` and adds MVT\n * functionality. MVT-managed state slices are held in Vue refs and injected\n * into the table via reactive getters\n *\n * @param definedTableOptions - table options with proper defaults set\n * @returns the MVT table instance\n */\nexport const useMVT_TableInstance = <TData extends MVT_RowData>(\n definedTableOptions: MVT_DefinedTableOptions<TData>,\n): MVT_TableInstance<TData> => {\n //DOM refs\n const lastSelectedRowId = ref<null | string>(null)\n const bottomToolbarRef = ref<HTMLDivElement | null>(null)\n const editInputRefs = ref<Record<string, HTMLInputElement>>({})\n const filterInputRefs = ref<Record<string, HTMLInputElement>>({})\n const searchInputRef = ref<HTMLInputElement | null>(null)\n const tableContainerRef = ref<HTMLDivElement | null>(null)\n const tableHeadCellRefs = ref<Record<string, HTMLTableCellElement>>({})\n const tablePaperRef = ref<HTMLDivElement | null>(null)\n const topToolbarRef = ref<HTMLDivElement | null>(null)\n const tableHeadRef = ref<HTMLTableSectionElement | null>(null)\n const tableFooterRef = ref<HTMLTableSectionElement | null>(null)\n\n //transform initial state with proper column order\n const initialState: Partial<MVT_TableState<TData>> = definedTableOptions.initialState ?? {}\n initialState.columnOrder =\n initialState.columnOrder ??\n getDefaultColumnOrderIds({\n ...definedTableOptions,\n state: {\n ...definedTableOptions.initialState,\n ...definedTableOptions.state,\n },\n } as MVT_StatefulTableOptions<TData>)\n initialState.globalFilterFn = definedTableOptions.globalFilterFn ?? 'fuzzy'\n\n definedTableOptions.initialState = initialState\n\n const mvtSlots = shallowRef<Record<string, unknown>>({})\n ;(definedTableOptions as any)._mvtSlots = mvtSlots\n\n const creatingRow = shallowRef<MVT_Row<TData> | null>(initialState.creatingRow ?? null)\n const columnFilterFns = ref<MVT_ColumnFilterFnsState>(\n Object.assign(\n {},\n ...getAllLeafColumnDefs(definedTableOptions.columns as MVT_ColumnDef<TData>[]).map((col) => ({\n [getColumnId(col)]:\n col.filterFn instanceof Function\n ? (col.filterFn.name ?? 'custom')\n : (col.filterFn ??\n initialState?.columnFilterFns?.[getColumnId(col)] ??\n getDefaultColumnFilterFn(col)),\n })),\n ),\n )\n const columnOrder = ref<MVT_ColumnOrderState>(initialState.columnOrder ?? [])\n const columnSizingInfo = shallowRef<MVT_ColumnSizingInfoState>(\n initialState.columnSizingInfo ?? ({} as MVT_ColumnSizingInfoState),\n )\n const density = ref<MVT_DensityState>(initialState?.density ?? 'md')\n const draggingColumn = shallowRef<MVT_Column<TData> | null>(initialState.draggingColumn ?? null)\n const draggingRow = shallowRef<MVT_Row<TData> | null>(initialState.draggingRow ?? null)\n const editingCell = shallowRef<MVT_Cell<TData> | null>(initialState.editingCell ?? null)\n const editingRow = shallowRef<MVT_Row<TData> | null>(initialState.editingRow ?? null)\n const globalFilterFn = ref<MVT_FilterOption>(initialState.globalFilterFn ?? 'fuzzy')\n const grouping = ref<MVT_GroupingState>(initialState.grouping ?? [])\n const hoveredColumn = shallowRef<null | Partial<MVT_Column<TData>>>(\n initialState.hoveredColumn ?? null,\n )\n const hoveredRow = shallowRef<null | Partial<MVT_Row<TData>>>(initialState.hoveredRow ?? null)\n const isFullScreen = ref<boolean>(initialState?.isFullScreen ?? false)\n const pagination = ref<MVT_PaginationState>(\n initialState?.pagination ?? { pageIndex: 0, pageSize: 10 },\n )\n const showAlertBanner = ref<boolean>(initialState?.showAlertBanner ?? false)\n const showColumnFilters = ref<boolean>(initialState?.showColumnFilters ?? false)\n const showGlobalFilter = ref<boolean>(initialState?.showGlobalFilter ?? false)\n const showToolbarDropZone = ref<boolean>(initialState?.showToolbarDropZone ?? false)\n\n //build the injected state object: user-provided state keys stay static\n //while all other MVT-managed slices are reactive getters over the refs above.\n const userState = definedTableOptions.state ?? {}\n const state = { ...userState } as MVT_TableState<TData>\n const defineState = <K extends keyof MVT_TableState<TData>>(\n key: K,\n getter: () => MVT_TableState<TData>[K],\n ) => {\n if (!(key in userState)) {\n Object.defineProperty(state, key, { enumerable: true, get: getter })\n }\n }\n defineState('columnFilterFns', () => columnFilterFns.value)\n defineState('columnOrder', () => columnOrder.value)\n defineState('columnSizingInfo', () => columnSizingInfo.value)\n defineState('creatingRow', () => creatingRow.value)\n defineState('density', () => density.value)\n defineState('draggingColumn', () => draggingColumn.value)\n defineState('draggingRow', () => draggingRow.value)\n defineState('editingCell', () => editingCell.value)\n defineState('editingRow', () => editingRow.value)\n defineState('globalFilterFn', () => globalFilterFn.value)\n defineState('grouping', () => grouping.value)\n defineState('hoveredColumn', () => hoveredColumn.value)\n defineState('hoveredRow', () => hoveredRow.value)\n defineState('isFullScreen', () => isFullScreen.value)\n defineState('pagination', () => pagination.value)\n defineState('showAlertBanner', () => showAlertBanner.value)\n defineState('showColumnFilters', () => showColumnFilters.value)\n defineState('showGlobalFilter', () => showGlobalFilter.value)\n defineState('showToolbarDropZone', () => showToolbarDropZone.value)\n\n definedTableOptions.state = state\n\n //The table options now include all state needed to help determine column\n //visibility and order logic\n const statefulTableOptions = definedTableOptions as MVT_StatefulTableOptions<TData>\n\n //don't recompute columnDefs while resizing column or dragging column/row\n let columnDefsCache: MVT_ColumnDef<TData>[] = []\n const columns = computed<MVT_ColumnDef<TData>[]>(() => {\n if (\n statefulTableOptions.state.columnSizingInfo.isResizingColumn ||\n statefulTableOptions.state.draggingColumn ||\n statefulTableOptions.state.draggingRow\n ) {\n return columnDefsCache\n }\n const prepared = prepareColumns({\n columnDefs: [\n ...([\n showRowPinningColumn(statefulTableOptions) &&\n getMVT_RowPinningColumnDef(statefulTableOptions),\n showRowDragColumn(statefulTableOptions) && getMVT_RowDragColumnDef(statefulTableOptions),\n showRowActionsColumn(statefulTableOptions) &&\n getMVT_RowActionsColumnDef(statefulTableOptions),\n showRowExpandColumn(statefulTableOptions) &&\n getMVT_RowExpandColumnDef(statefulTableOptions),\n showRowSelectionColumn(statefulTableOptions) &&\n getMVT_RowSelectColumnDef(statefulTableOptions),\n showRowNumbersColumn(statefulTableOptions) &&\n getMVT_RowNumbersColumnDef(statefulTableOptions),\n ].filter(Boolean) as MVT_ColumnDef<TData>[]),\n ...statefulTableOptions.columns,\n ...([\n showRowSpacerColumn(statefulTableOptions) &&\n getMVT_RowSpacerColumnDef(statefulTableOptions),\n ].filter(Boolean) as MVT_ColumnDef<TData>[]),\n ],\n tableOptions: statefulTableOptions,\n }) as unknown as MVT_ColumnDef<TData>[]\n columnDefsCache = prepared\n return prepared\n })\n\n //if loading, generate blank rows to show skeleton loaders\n const data = computed<TData[]>(() => {\n const s = statefulTableOptions.state\n return (s.isLoading || s.showSkeletons) && !definedTableOptions.data.length\n ? [...Array(Math.min(s.pagination.pageSize, 20)).fill(null)].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(columns.value).map((col) => ({\n [getColumnId(col)]: null,\n })),\n ),\n )\n : definedTableOptions.data\n })\n\n const { columns: _columns, data: _data, ...restOptions } = statefulTableOptions\n\n const table = useVueTable<TData>({\n onColumnOrderChange: (updater: MVT_Updater<MVT_ColumnOrderState>) =>\n applyUpdater(columnOrder, updater),\n onColumnSizingInfoChange: (updater: MVT_Updater<MVT_ColumnSizingInfoState>) =>\n applyUpdater(columnSizingInfo, updater),\n onGroupingChange: (updater: MVT_Updater<MVT_GroupingState>) => applyUpdater(grouping, updater),\n onPaginationChange: (updater: MVT_Updater<MVT_PaginationState>) =>\n applyUpdater(pagination, updater),\n ...(restOptions as any),\n get columns() {\n return columns.value as any\n },\n get data() {\n return data.value\n },\n globalFilterFn: statefulTableOptions.filterFns?.[globalFilterFn.value ?? 'fuzzy'],\n } as any) as unknown as MVT_TableInstance<TData>\n\n table.refs = {\n bottomToolbarRef,\n editInputRefs,\n filterInputRefs,\n lastSelectedRowId,\n searchInputRef,\n tableContainerRef,\n tableFooterRef,\n tableHeadCellRefs,\n tableHeadRef,\n tablePaperRef,\n topToolbarRef,\n }\n\n table.setCreatingRow = (row) => {\n let _row = row\n if (row === true) {\n _row = createRow(table)\n }\n if (statefulTableOptions?.onCreatingRowChange) {\n statefulTableOptions.onCreatingRowChange(_row as MVT_Row<TData> | null)\n } else {\n applyUpdater(creatingRow, _row as MVT_Row<TData> | null)\n }\n }\n table.setColumnFilterFns =\n statefulTableOptions.onColumnFilterFnsChange ??\n ((updater) => applyUpdater(columnFilterFns, updater))\n table.setDensity =\n statefulTableOptions.onDensityChange ?? ((updater) => applyUpdater(density, updater))\n table.setDraggingColumn =\n statefulTableOptions.onDraggingColumnChange ??\n ((updater) => applyUpdater(draggingColumn, updater))\n table.setDraggingRow =\n statefulTableOptions.onDraggingRowChange ?? ((updater) => applyUpdater(draggingRow, updater))\n table.setEditingCell =\n statefulTableOptions.onEditingCellChange ?? ((updater) => applyUpdater(editingCell, updater))\n table.setEditingRow =\n statefulTableOptions.onEditingRowChange ?? ((updater) => applyUpdater(editingRow, updater))\n table.setGlobalFilterFn =\n statefulTableOptions.onGlobalFilterFnChange ??\n ((updater) => applyUpdater(globalFilterFn, updater))\n table.setHoveredColumn =\n statefulTableOptions.onHoveredColumnChange ??\n ((updater) => applyUpdater(hoveredColumn, updater))\n table.setHoveredRow =\n statefulTableOptions.onHoveredRowChange ?? ((updater) => applyUpdater(hoveredRow, updater))\n table.setIsFullScreen =\n statefulTableOptions.onIsFullScreenChange ?? ((updater) => applyUpdater(isFullScreen, updater))\n table.setShowAlertBanner =\n statefulTableOptions.onShowAlertBannerChange ??\n ((updater) => applyUpdater(showAlertBanner, updater))\n table.setShowColumnFilters =\n statefulTableOptions.onShowColumnFiltersChange ??\n ((updater) => applyUpdater(showColumnFilters, updater))\n table.setShowGlobalFilter =\n statefulTableOptions.onShowGlobalFilterChange ??\n ((updater) => applyUpdater(showGlobalFilter, updater))\n table.setShowToolbarDropZone =\n statefulTableOptions.onShowToolbarDropZoneChange ??\n ((updater) => applyUpdater(showToolbarDropZone, updater))\n\n // Expose the reactive slot registry + setter so `<MantineVueTable>` can\n // publish its named slots into the instance\n ;(table as any)._mvtSlots = mvtSlots\n ;(table as any).setMVTSlots = (slots: Record<string, unknown>) => {\n mvtSlots.value = slots\n }\n\n useMVT_Effects(table)\n\n return table\n}\n","import { type MVT_RowData, type MVT_TableInstance, type MVT_TableOptions } from '../types'\nimport { useMVT_TableInstance } from './useMVT_TableInstance'\nimport { useMVT_TableOptions } from './useMVT_TableOptions'\n\nexport const useMantineVueTable = <TData extends MVT_RowData>(\n tableOptions: MVT_TableOptions<TData>,\n): MVT_TableInstance<TData> => useMVT_TableInstance(useMVT_TableOptions(tableOptions))\n",".collapse {\n position: absolute;\n width: 100%;\n top: 0;\n}\n\n.collapse-top {\n bottom: 0;\n top: unset;\n}\n","import clsx from 'clsx'\nimport { Collapse, Progress } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_ProgressBar.module.css'\n\nexport const MVT_ProgressBar = defineComponent({\n name: 'MVTProgressBar',\n inheritAttrs: false,\n props: {\n isTopToolbar: { type: Boolean, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { table, isTopToolbar } = props\n const state = table.getState()\n const progressProps = {\n ...parseFromValuesOrFunc(table.options.mantineProgressProps, { isTopToolbar, table }),\n ...attrs,\n }\n\n return h(\n Collapse,\n {\n class: clsx(classes.collapse, isTopToolbar && classes['collapse-top']),\n expanded: Boolean(state.isSaving || state.showProgressBars),\n } as any,\n () =>\n h(Progress, {\n animated: true,\n 'aria-busy': 'true',\n 'aria-label': 'Loading',\n radius: 0,\n value: 100,\n ...progressProps,\n } as any),\n )\n }\n },\n})\n",".root {\n display: flex;\n z-index: 2;\n gap: var(--mantine-spacing-lg);\n align-items: center;\n justify-content: space-between;\n padding-right: var(--mantine-spacing-sm);\n padding-left: var(--mantine-spacing-sm);\n padding-top: var(--mantine-spacing-xs);\n padding-bottom: var(--mantine-spacing-xs);\n .pagesize {\n input {\n width: calc(5rem * var(--mantine-scale));\n }\n }\n}\n\n.with-top-margin {\n margin-top: 3rem;\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Box, Group, Pagination, Select, Text } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_TablePagination.module.css'\n\nconst defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100].map(String)\nexport const MVT_TablePagination = defineComponent({\n name: 'MVTTablePagination',\n inheritAttrs: false,\n props: {\n position: { type: String as PropType<'bottom' | 'top'>, default: 'bottom' },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const o = table.options\n const state = table.getState()\n const { pageIndex = 0, pageSize = 10 } = state.pagination\n const paginationProps = {\n ...parseFromValuesOrFunc(o.mantinePaginationProps, { table }),\n ...attrs,\n } as Record<string, any>\n const totalRowCount = o.rowCount ?? table.getPrePaginationRowModel().rows.length\n const numberOfPages = Math.ceil(totalRowCount / pageSize)\n const firstRowIndex = pageIndex * pageSize\n const lastRowIndex = Math.min(firstRowIndex + pageSize, totalRowCount)\n const showEdges = numberOfPages > 2\n const {\n rowsPerPageOptions = defaultRowsPerPage,\n showRowsPerPage = true,\n withEdges = showEdges,\n ...rest\n } = paginationProps\n const controls =\n o.paginationDisplayMode === 'pages'\n ? h(Pagination, {\n total: numberOfPages,\n value: pageIndex + 1,\n withEdges,\n ...rest,\n onChange: (page: number) => table.setPageIndex(page - 1),\n } as any)\n : o.paginationDisplayMode === 'default'\n ? [\n h(\n Text,\n null,\n () =>\n `${lastRowIndex === 0 ? 0 : (firstRowIndex + 1).toLocaleString()}-${lastRowIndex.toLocaleString()} ${o.localization.of} ${totalRowCount.toLocaleString()}`,\n ),\n h(Group, { gap: 6 }, () => [\n withEdges &&\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToFirstPage,\n color: 'gray',\n disabled: pageIndex <= 0,\n variant: 'subtle',\n onClick: () => table.setPageIndex(0),\n },\n () => h(o.icons.IconChevronLeftPipe),\n ),\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToPreviousPage,\n color: 'gray',\n disabled: pageIndex <= 0,\n variant: 'subtle',\n onClick: () => table.setPageIndex(pageIndex - 1),\n },\n () => h(o.icons.IconChevronLeft),\n ),\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToNextPage,\n color: 'gray',\n disabled: lastRowIndex >= totalRowCount,\n variant: 'subtle',\n onClick: () => table.setPageIndex(pageIndex + 1),\n },\n () => h(o.icons.IconChevronRight),\n ),\n withEdges &&\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToLastPage,\n color: 'gray',\n disabled: lastRowIndex >= totalRowCount,\n variant: 'subtle',\n onClick: () => table.setPageIndex(Math.max(0, numberOfPages - 1)),\n },\n () => h(o.icons.IconChevronRightPipe),\n ),\n ]),\n ]\n : null\n return h(\n Box,\n {\n class: clsx(\n 'mvt-table-pagination',\n classes.root,\n props.position === 'top' &&\n o.enableToolbarInternalActions &&\n !state.showGlobalFilter &&\n classes['with-top-margin'],\n ),\n },\n () => [\n showRowsPerPage &&\n h(Group, { gap: 'xs' }, () => [\n h(Text, { id: 'rpp-label' }, () => o.localization.rowsPerPage),\n h(Select, {\n allowDeselect: false,\n 'aria-labelledby': 'rpp-label',\n class: classes.pagesize,\n data: rowsPerPageOptions,\n value: pageSize.toString(),\n onChange: (value: null | string) => value && table.setPageSize(+value),\n } as any),\n ]),\n controls,\n ],\n )\n }\n },\n})\n",".alert {\n border-radius: 0;\n font-size: 1rem;\n left: 0;\n position: relative;\n padding: rem(8px);\n right: 0;\n top: 0;\n width: 100%;\n z-index: 2;\n}\n\n.alert-stacked {\n margin-bottom: 0;\n}\n\n.alert-bottom {\n margin-bottom: -16px;\n}\n\n.alert-badge {\n margin-left: 1ch;\n}\n\n.toolbar-alert {\n gap: var(--mantine-spacing-sm);\n padding: 8px 16px;\n &.head-overlay {\n padding: 2px;\n &:global(.xl) {\n padding: 16px;\n }\n &:global(.md) {\n padding: 8px;\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Alert, Badge, Button, Collapse, Flex, Stack } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { getMVT_SelectAllHandler } from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_SelectCheckbox } from '../inputs/MVT_SelectCheckbox'\nimport classes from './MVT_ToolbarAlertBanner.module.css'\n\nexport const MVT_ToolbarAlertBanner = defineComponent({\n name: 'MVTToolbarAlertBanner',\n inheritAttrs: false,\n props: {\n stackAlertBanner: { type: Boolean, default: false },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const { table } = props\n const state = table.getState()\n const o = table.options\n const alertProps = {\n ...parseFromValuesOrFunc(o.mantineToolbarAlertBannerProps, { table }),\n ...attrs,\n } as Record<string, any>\n const badgeProps = parseFromValuesOrFunc(o.mantineToolbarAlertBannerBadgeProps, { table })\n const total = o.rowCount ?? table.getPrePaginationRowModel().flatRows.length\n const selectedCount = o.manualPagination\n ? Object.values(state.rowSelection).filter(Boolean).length\n : table.getFilteredSelectedRowModel().rows.length\n const selectedAlert = selectedCount\n ? h(Flex, { align: 'center', gap: 'sm' }, () => [\n o.localization.selectedCountOfRowCountRowsSelected\n .replace('{selectedCount}', String(selectedCount))\n .replace('{rowCount}', String(total)),\n h(\n Button,\n {\n size: 'compact-xs',\n variant: 'subtle',\n onClick: (event: Event) => getMVT_SelectAllHandler({ table })(event, false, true),\n },\n () => o.localization.clearSelection,\n ),\n ])\n : null\n const groupedAlert = state.grouping.length\n ? h(Flex, null, () => [\n `${o.localization.groupedBy} `,\n ...state.grouping.flatMap((columnId, index) => [\n index > 0 ? o.localization.thenBy : null,\n h(\n Badge,\n {\n key: columnId,\n class: classes['alert-badge'],\n variant: 'filled',\n ...badgeProps,\n rightSection: h(\n ActionIcon,\n {\n color: 'white',\n size: 'xs',\n variant: 'subtle',\n onClick: () => table.getColumn(columnId).toggleGrouping(),\n },\n () => h(o.icons.IconX, { style: { transform: 'scale(0.8)' } }),\n ),\n } as any,\n () => `${table.getColumn(columnId).columnDef.header} `,\n ),\n ]),\n ])\n : null\n const custom =\n slots.default?.({ groupedAlert, selectedAlert, table }) ??\n o.renderToolbarAlertBannerContent?.({ groupedAlert, selectedAlert, table })\n return h(\n Collapse,\n {\n expanded: state.showAlertBanner || !!selectedAlert || !!groupedAlert,\n transitionDuration: props.stackAlertBanner ? 200 : 0,\n } as any,\n () =>\n h(\n Alert,\n {\n color: 'blue',\n icon: false,\n ...alertProps,\n class: clsx(\n classes.alert,\n props.stackAlertBanner && !o.positionToolbarAlertBanner && classes['alert-stacked'],\n !props.stackAlertBanner &&\n o.positionToolbarAlertBanner === 'bottom' &&\n classes['alert-bottom'],\n alertProps.class,\n ),\n },\n () =>\n custom ??\n h(\n Flex,\n {\n class: clsx(\n classes['toolbar-alert'],\n o.positionToolbarAlertBanner === 'head-overlay' && classes['head-overlay'],\n state.density,\n ),\n },\n () => [\n o.enableRowSelection &&\n o.enableSelectAll &&\n o.positionToolbarAlertBanner === 'head-overlay'\n ? h(MVT_SelectCheckbox, { table })\n : null,\n h(Stack, null, () => [alertProps.children, selectedAlert, groupedAlert]),\n ],\n ),\n ),\n )\n }\n },\n})\n",".root {\n align-items: center;\n\n border: dashed var(--mantine-primary-color-filled) 2px;\n justify-content: center;\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 2;\n background-color: color-mix(in srgb, var(--mantine-primary-color-filled) 10%, transparent);\n}\n\n.hovered {\n background-color: color-mix(in srgb, var(--mantine-primary-color-filled) 20%, transparent);\n}\n","import clsx from 'clsx'\nimport { Flex, Text, Transition } from '@mantine-vue/core'\nimport { defineComponent, h, watch, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_ToolbarDropZone.module.css'\n\nexport const MVT_ToolbarDropZone = defineComponent({\n name: 'MVTToolbarDropZone',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n watch(\n () => {\n const state = props.table.getState()\n return [props.table.options.enableGrouping, state.draggingColumn, state.grouping] as const\n },\n ([enableGrouping, draggingColumn, grouping]) => {\n if (props.table.options.state?.showToolbarDropZone !== undefined) {\n props.table.setShowToolbarDropZone(\n !!enableGrouping &&\n !!draggingColumn &&\n draggingColumn.columnDef.enableGrouping !== false &&\n !grouping.includes(draggingColumn.id),\n )\n }\n },\n { deep: true },\n )\n return () => {\n const { table } = props\n const state = table.getState()\n return h(Transition, { mounted: state.showToolbarDropZone, transition: 'fade' } as any, () =>\n h(\n Flex,\n {\n class: clsx(\n 'mvt-toolbar-dropzone',\n classes.root,\n state.hoveredColumn?.id === 'drop-zone' && classes.hovered,\n ),\n ...attrs,\n onDragenter: () => table.setHoveredColumn({ id: 'drop-zone' }),\n },\n () =>\n h(Text, null, () =>\n table.options.localization.dropToGroupBy.replace(\n '{column}',\n String(state.draggingColumn?.columnDef?.header ?? ''),\n ),\n ),\n ),\n )\n }\n },\n})\n",".common-toolbar-styles {\n align-items: flex-start;\n display: grid;\n flex-wrap: wrap-reverse;\n min-height: calc(3.5rem * var(--mantine-scale));\n overflow: visible;\n padding: 0;\n transition: all 150ms ease-in-out;\n z-index: 3;\n}\n",".root {\n background-color: var(--mvt-base-background-color);\n border-top: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4));\n bottom: var(--mvt-bottom-toolbar-bottom);\n box-shadow: 0 1px 2px -1px color-mix(in srgb, var(--mantine-color-black) 10%, transparent) inset;\n left: 0;\n right: 0;\n position: relative;\n}\n\n.root-fullscreen {\n position: fixed !important;\n bottom: 0;\n}\n\n.custom-toolbar-container {\n align-items: center;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n padding: rem(8px);\n width: 100%;\n}\n\n.paginator-container {\n display: flex;\n justify-content: flex-end;\n right: 0;\n top: 0;\n position: absolute;\n}\n\n.paginator-container-alert-banner {\n position: relative !important;\n}\n","import { defineComponent, h, onMounted, type PropType, ref } from 'vue'\n\nimport { Box } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ProgressBar } from './MVT_ProgressBar'\nimport { MVT_TablePagination } from './MVT_TablePagination'\nimport { MVT_ToolbarAlertBanner } from './MVT_ToolbarAlertBanner'\nimport { MVT_ToolbarDropZone } from './MVT_ToolbarDropZone'\nimport commonClasses from './common.styles.module.css'\nimport classes from './MVT_BottomToolbar.module.css'\n\nexport const MVT_BottomToolbar = defineComponent({\n name: 'MVTBottomToolbar',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const isMobile = ref(false)\n onMounted(() => {\n if (typeof window === 'undefined' || !window.matchMedia) return\n const mql = window.matchMedia('(max-width: 720px)')\n isMobile.value = mql.matches\n mql.addEventListener('change', (e) => (isMobile.value = e.matches))\n })\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enablePagination,\n mantineBottomToolbarProps,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderBottomToolbarCustomActions,\n },\n refs: { bottomToolbarRef },\n } = table\n const { isFullScreen } = getState()\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(mantineBottomToolbarProps, { table }),\n ...attrs,\n }\n\n const stackAlertBanner = isMobile.value || !!renderBottomToolbarCustomActions\n\n return h(\n Box,\n {\n ...toolbarProps,\n class: clsx(\n 'mvt-bottom-toolbar',\n classes.root,\n commonClasses['common-toolbar-styles'],\n isFullScreen && classes['root-fullscreen'],\n (toolbarProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n bottomToolbarRef.value = node\n if ((toolbarProps as any)?.ref) {\n ;(toolbarProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n h(MVT_ProgressBar, { isTopToolbar: false, table } as any),\n positionToolbarAlertBanner === 'bottom' &&\n h(MVT_ToolbarAlertBanner, { stackAlertBanner, table } as any),\n ['both', 'bottom'].includes(positionToolbarDropZone ?? '') &&\n h(MVT_ToolbarDropZone, { table } as any),\n h(Box, { class: classes['custom-toolbar-container'] } as any, () => [\n parseFromValuesOrFunc(renderBottomToolbarCustomActions, {\n table,\n }) ?? h('span'),\n h(\n Box,\n {\n class: clsx(\n classes['paginator-container'],\n stackAlertBanner && classes['paginator-container-alert-banner'],\n ),\n } as any,\n () =>\n enablePagination &&\n ['both', 'bottom'].includes(positionPagination ?? '') &&\n h(MVT_TablePagination, { position: 'bottom', table } as any),\n ),\n ]),\n ],\n )\n }\n },\n})\n",".symbol {\n font-size: var(--mantine-font-size-xl);\n text-align: center;\n width: 2ch;\n transform: translateY(-0.1em);\n}\n","import { Menu } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type {\n MVT_FilterOption,\n MVT_Header,\n MVT_InternalFilterOption,\n MVT_Localization,\n MVT_RowData,\n MVT_TableInstance,\n} from '../../types'\nimport classes from './MVT_FilterOptionMenu.module.css'\n\nexport const mrtFilterOptions = (l: MVT_Localization): MVT_InternalFilterOption[] => [\n { divider: false, label: l.filterFuzzy, option: 'fuzzy', symbol: '≈' },\n { divider: false, label: l.filterContains, option: 'contains', symbol: '*' },\n { divider: false, label: l.filterStartsWith, option: 'startsWith', symbol: 'a' },\n { divider: true, label: l.filterEndsWith, option: 'endsWith', symbol: 'z' },\n { divider: false, label: l.filterEquals, option: 'equals', symbol: '=' },\n { divider: true, label: l.filterNotEquals, option: 'notEquals', symbol: '≠' },\n { divider: false, label: l.filterBetween, option: 'between', symbol: '⇿' },\n { divider: true, label: l.filterBetweenInclusive, option: 'betweenInclusive', symbol: '⬌' },\n { divider: false, label: l.filterGreaterThan, option: 'greaterThan', symbol: '>' },\n {\n divider: false,\n label: l.filterGreaterThanOrEqualTo,\n option: 'greaterThanOrEqualTo',\n symbol: '≥',\n },\n { divider: false, label: l.filterLessThan, option: 'lessThan', symbol: '<' },\n { divider: true, label: l.filterLessThanOrEqualTo, option: 'lessThanOrEqualTo', symbol: '≤' },\n { divider: false, label: l.filterEmpty, option: 'empty', symbol: '∅' },\n { divider: false, label: l.filterNotEmpty, option: 'notEmpty', symbol: '!∅' },\n]\nconst rangeModes = ['between', 'betweenInclusive', 'inNumberRange']\nconst emptyModes = ['empty', 'notEmpty']\nconst arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes']\nconst rangeVariants = ['range-slider', 'date-range', 'range']\n\nexport const MVT_FilterOptionMenu = defineComponent({\n name: 'MVTFilterOptionMenu',\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, default: undefined },\n onSelect: { type: Function as PropType<() => void>, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n return () => {\n const { table, header } = props\n const o = table.options\n const column = header?.column\n const def = column?.columnDef\n const current = column?.getFilterValue()\n let allowed = def?.columnFilterModeOptions ?? o.columnFilterModeOptions\n if (rangeVariants.includes(def?.filterVariant ?? ''))\n allowed = [...rangeModes, ...(allowed ?? [])].filter(\n (v, i, a) => rangeModes.includes(v) && a.indexOf(v) === i,\n ) as MVT_FilterOption[]\n const options = mrtFilterOptions(o.localization).filter((entry) =>\n def\n ? allowed === undefined || allowed?.includes(entry.option as MVT_FilterOption)\n : (!o.globalFilterModeOptions ||\n o.globalFilterModeOptions.includes(entry.option as MVT_FilterOption)) &&\n ['contains', 'fuzzy', 'startsWith'].includes(entry.option),\n )\n if (options.at(-1)?.divider) options[options.length - 1].divider = false\n const select = (option: MVT_FilterOption) => {\n const previous = def?._filterFn ?? ''\n if (!header || !column) table.setGlobalFilterFn(option)\n else if (option !== previous) {\n table.setColumnFilterFns((old) => ({ ...old, [header.id]: option }))\n if (emptyModes.includes(option)) {\n if (current !== ' ' && !emptyModes.includes(previous)) column.setFilterValue(' ')\n else if (current) column.setFilterValue(current)\n } else if (def?.filterVariant === 'multi-select' || arrModes.includes(option)) {\n if (typeof current === 'string' || (current as unknown[])?.length)\n column.setFilterValue([])\n else if (current) column.setFilterValue(current)\n } else if (\n rangeVariants.includes(def?.filterVariant ?? '') ||\n rangeModes.includes(option)\n ) {\n if (\n !Array.isArray(current) ||\n (!current.every((v) => v === '') && !rangeModes.includes(previous))\n )\n column.setFilterValue(['', ''])\n else column.setFilterValue(current)\n } else if (Array.isArray(current)) column.setFilterValue('')\n else if (current === ' ' && emptyModes.includes(previous))\n column.setFilterValue(undefined)\n else column.setFilterValue(current)\n }\n props.onSelect?.()\n }\n const custom =\n slots.default?.({\n internalFilterOptions: options,\n onSelectFilterMode: select,\n column,\n table,\n }) ??\n (def\n ? (def.renderColumnFilterModeMenuItems?.({\n column: column!,\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }) ??\n o.renderColumnFilterModeMenuItems?.({\n column: column!,\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }))\n : o.renderGlobalFilterModeMenuItems?.({\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }))\n const selected = header && def ? def._filterFn : table.getState().globalFilterFn\n return h(\n Menu.Dropdown,\n null,\n () =>\n custom ??\n options.flatMap((entry) => [\n h(\n Menu.Item,\n {\n color: entry.option === selected ? 'blue' : undefined,\n leftSection: h('span', { class: classes.symbol }, entry.symbol),\n value: entry.option,\n onClick: () => select(entry.option as MVT_FilterOption),\n },\n () => entry.label,\n ),\n entry.divider ? h(Menu.Divider) : null,\n ]),\n )\n }\n },\n})\n",".root {\n z-index: 2;\n position: relative;\n}\n\n.collapse {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: nowrap;\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Collapse, Menu, TextInput, Tooltip } from '@mantine-vue/core'\nimport { useDebouncedValue } from '@mantine-vue/hooks'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_FilterOptionMenu } from '../menus/MVT_FilterOptionMenu'\nimport classes from './MVT_GlobalFilterTextInput.module.css'\n\nexport const MVT_GlobalFilterTextInput = defineComponent({\n name: 'MVTGlobalFilterTextInput',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n const searchValue = ref(props.table.getState().globalFilter ?? '')\n const [debounced] = useDebouncedValue(\n searchValue,\n props.table.options.manualFiltering ? 500 : 250,\n )\n watch(debounced, (value) => props.table.setGlobalFilter(value || undefined))\n watch(\n () => props.table.getState().globalFilter,\n (value) => {\n searchValue.value = value ?? ''\n },\n )\n const clear = () => {\n searchValue.value = ''\n props.table.setGlobalFilter(undefined)\n }\n return () => {\n const { table } = props\n const o = table.options\n const inputProps = {\n ...parseFromValuesOrFunc(o.mantineSearchTextInputProps, { table }),\n ...attrs,\n } as Record<string, any>\n\n return h(\n Collapse,\n { class: classes.collapse, expanded: table.getState().showGlobalFilter } as any,\n () => [\n o.enableGlobalFilterModes &&\n h(Menu, { withinPortal: true }, () => [\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.changeSearchMode,\n color: 'gray',\n size: 'sm',\n variant: 'transparent',\n },\n () => h(o.icons.IconSearch),\n ),\n ),\n h(MVT_FilterOptionMenu, { table, onSelect: clear }),\n ]),\n h(TextInput, {\n leftSection: !o.enableGlobalFilterModes ? h(o.icons.IconSearch) : undefined,\n mt: 0,\n mx: o.positionGlobalFilter !== 'left' ? 'mx' : undefined,\n placeholder: o.localization.search,\n value: searchValue.value,\n variant: 'filled',\n ...inputProps,\n class: clsx('mvt-global-filter-text-input', classes.root, inputProps.class),\n onInput: (event: Event | string) => {\n searchValue.value =\n typeof event === 'string' ? event : (event.target as HTMLInputElement).value\n inputProps.onChange?.(event)\n },\n rightSection: h(\n ActionIcon,\n {\n 'aria-label': o.localization.clearSearch,\n color: 'gray',\n disabled: !searchValue.value.length,\n hidden: !searchValue.value,\n size: 'sm',\n style: { visibility: !searchValue.value ? 'hidden' : undefined },\n variant: 'transparent',\n onClick: clear,\n },\n () =>\n h(Tooltip, { label: o.localization.clearSearch, withinPortal: true }, () =>\n h(o.icons.IconX),\n ),\n ),\n ref: (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) table.refs.searchInputRef.value = node\n },\n } as any),\n ],\n )\n }\n },\n})\n",".root {\n min-width: 70px;\n align-content: center;\n justify-content: center;\n .left {\n transform: rotate(90deg);\n }\n .right {\n transform: rotate(-90deg);\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Flex, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_ColumnPinningButtons.module.css'\n\nexport const MVT_ColumnPinningButtons = defineComponent({\n name: 'MVTColumnPinningButtons',\n props: {\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props) {\n return () => {\n const { column, table } = props\n const l = table.options.localization\n const icons = table.options.icons\n const button = (\n label: string,\n side: 'left' | 'right' | false,\n icon: any,\n className?: string,\n ) =>\n h(Tooltip, { label, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': label,\n color: 'gray',\n size: 'md',\n variant: 'subtle',\n onClick: () => column.pin(side),\n },\n () => h(icon, { class: className }),\n ),\n )\n return h(Flex, { class: clsx('mvt-column-pinning-buttons', classes.root) }, () =>\n column.getIsPinned()\n ? button(l.unpin, false, icons.IconPinnedOff)\n : [\n button(l.pinToLeft, 'left', icons.IconPinned, classes.left),\n button(l.pinToRight, 'right', icons.IconPinned, classes.right),\n ],\n )\n }\n },\n})\n",".root {\n align-items: center;\n cursor: default;\n justify-content: flex-start;\n opacity: 1;\n outline: none;\n padding-left: var(--_column-depth);\n padding-top: rem(6px);\n padding-bottom: rem(6);\n &[data-dragging] {\n opacity: 0.5;\n outline: 1px dashed var(--mantine-color-gray-7);\n }\n &[data-order-hovered]:not(&[data-dragging]) {\n outline: 2px dashed var(--_hover-color);\n }\n}\n.menu {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: rem(8px);\n}\n.grab {\n width: rem(28px);\n}\n.pin {\n width: rem(70px);\n}\n.switch {\n cursor: pointer !important;\n}\n.header {\n align-self: center;\n}\n","import clsx from 'clsx'\nimport { Box, Menu, Switch, Text, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, resolveComponent, type PropType, type VNodeChild } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { reorderColumn } from '../../utils/column.utils'\nimport { MVT_ColumnPinningButtons } from '../buttons/MVT_ColumnPinningButtons'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\nimport classes from './MVT_ShowHideColumnsMenuItems.module.css'\n\nexport const MVT_ShowHideColumnsMenuItems = defineComponent({\n name: 'MVTShowHideColumnsMenuItems',\n props: {\n allColumns: { type: Array as PropType<MVT_Column<MVT_RowData>[]>, required: true },\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n hoveredColumn: { type: Object as PropType<MVT_Column<MVT_RowData> | null>, default: null },\n getHoveredColumn: {\n type: Function as PropType<() => MVT_Column<MVT_RowData> | null>,\n default: undefined,\n },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n emits: { hoveredColumnChange: (_value: MVT_Column<MVT_RowData> | null) => true },\n setup(props, { emit }) {\n const menuItemRef = ref<HTMLElement | null>(null)\n const dragging = ref(false)\n return () => {\n const { column, table } = props\n const def = column.columnDef\n const group = def.columnDefType === 'group'\n if (!def.header || def.visibleInShowHideMenu === false) return null\n const checked = !group\n ? column.getIsVisible()\n : column.getLeafColumns().some((c) => c.getIsVisible())\n const toggle = () =>\n group\n ? column.columns?.forEach((c) => c.toggleVisibility(!checked))\n : column.toggleVisibility()\n const children: VNodeChild[] =\n column.columns?.map((child) =>\n h(resolveComponent('MVT_ShowHideColumnsMenuItems'), {\n key: child.id,\n ...props,\n column: child,\n onHoveredColumnChange: (value: MVT_Column<MVT_RowData> | null) =>\n emit('hoveredColumnChange', value),\n }),\n ) ?? []\n return [\n h(\n Menu.Item,\n {\n class: clsx(classes.root),\n component: 'span',\n ref: (el: any) => {\n menuItemRef.value = el?.$el ?? el\n },\n style: { '--_column-depth': `${(column.depth + 0.5) * 2}rem` },\n 'data-dragging': dragging.value || undefined,\n 'data-order-hovered': props.hoveredColumn?.id === column.id || undefined,\n onDragenter: () => {\n if (!dragging.value && def.enableColumnOrdering !== false)\n emit('hoveredColumnChange', column)\n },\n },\n () =>\n h(Box, { class: classes.menu }, () => [\n !group &&\n table.options.enableColumnOrdering &&\n !props.allColumns.some((c) => c.columnDef.columnDefType === 'group')\n ? def.enableColumnOrdering !== false\n ? h(MVT_GrabHandleButton, {\n table,\n onDragStart: (e: DragEvent) => {\n dragging.value = true\n if (menuItemRef.value) e.dataTransfer?.setDragImage(menuItemRef.value, 0, 0)\n },\n onDragEnd: () => {\n dragging.value = false\n\n const hovered = props.getHoveredColumn?.() ?? props.hoveredColumn\n if (hovered)\n table.setColumnOrder(\n reorderColumn(column, hovered, table.getState().columnOrder),\n )\n emit('hoveredColumnChange', null)\n },\n } as any)\n : h(Box, { class: classes.grab })\n : null,\n table.options.enableColumnPinning\n ? column.getCanPin()\n ? h(MVT_ColumnPinningButtons, { column, table })\n : h(Box, { class: classes.pin })\n : null,\n table.options.enableHiding\n ? h(\n Tooltip,\n {\n label: table.options.localization.toggleVisibility,\n openDelay: 1000,\n withinPortal: true,\n },\n () =>\n h(Switch, {\n checked,\n class: classes.switch,\n disabled: !column.getCanHide(),\n label: def.header,\n onChange: toggle,\n }),\n )\n : h(Text, { class: classes.header }, () => def.header),\n ]),\n ),\n ...children,\n ]\n }\n },\n})\n",".root {\n max-height: calc(80vh - 100px);\n overflow-y: auto;\n .content {\n padding-top: rem(4px);\n padding-bottom: rem(4px);\n gap: rem(8px);\n justify-content: space-between;\n }\n}\n","import clsx from 'clsx'\nimport { Button, Flex, Menu } from '@mantine-vue/core'\nimport { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { getDefaultColumnOrderIds } from '../../utils/displayColumn.utils'\nimport { MVT_ShowHideColumnsMenuItems } from './MVT_ShowHideColumnsMenuItems'\nimport classes from './MVT_ShowHideColumnsMenu.module.css'\n\nexport const MVT_ShowHideColumnsMenu = defineComponent({\n name: 'MVTShowHideColumnsMenu',\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props) {\n const hoveredColumn = ref<MVT_Column<MVT_RowData> | null>(null)\n const allColumns = computed(() => {\n const { table } = props\n const columns = table.getAllColumns()\n const order = table.getState().columnOrder\n if (order.length && !columns.some((c) => c.columnDef.columnDefType === 'group'))\n return [\n ...table.getLeftLeafColumns(),\n ...Array.from(new Set(order)).map((id) =>\n table.getCenterLeafColumns().find((c) => c.id === id),\n ),\n ...table.getRightLeafColumns(),\n ].filter(Boolean) as MVT_Column<MVT_RowData>[]\n return columns\n })\n return () => {\n const { table } = props\n const o = table.options\n const toggleAll = (value: boolean) =>\n table\n .getAllLeafColumns()\n .filter((c) => c.columnDef.enableHiding !== false)\n .forEach((c) => c.toggleVisibility(value))\n return h(Menu.Dropdown, { class: clsx('mvt-show-hide-columns-menu', classes.root) }, () => [\n h(Flex, { class: classes.content }, () => [\n o.enableHiding &&\n h(\n Button,\n {\n disabled: !table.getIsSomeColumnsVisible(),\n variant: 'subtle',\n onClick: () => toggleAll(false),\n },\n () => o.localization.hideAll,\n ),\n o.enableColumnOrdering &&\n h(\n Button,\n {\n variant: 'subtle',\n onClick: () => table.setColumnOrder(getDefaultColumnOrderIds(o, true)),\n },\n () => o.localization.resetOrder,\n ),\n o.enableColumnPinning &&\n h(\n Button,\n {\n disabled: !table.getIsSomeColumnsPinned(),\n variant: 'subtle',\n onClick: () => table.resetColumnPinning(true),\n },\n () => o.localization.unpinAll,\n ),\n o.enableHiding &&\n h(\n Button,\n {\n disabled: table.getIsAllColumnsVisible(),\n variant: 'subtle',\n onClick: () => toggleAll(true),\n },\n () => o.localization.showAll,\n ),\n ]),\n h(Menu.Divider),\n ...allColumns.value.map((column) =>\n h(MVT_ShowHideColumnsMenuItems, {\n key: column.id,\n allColumns: allColumns.value,\n column,\n hoveredColumn: hoveredColumn.value,\n getHoveredColumn: () => hoveredColumn.value,\n table,\n onHoveredColumnChange: (value: MVT_Column<MVT_RowData> | null) => {\n hoveredColumn.value = value\n },\n } as any),\n ),\n ])\n }\n },\n})\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_ShowHideColumnsMenu } from '../menus/MVT_ShowHideColumnsMenu'\n\nexport const MVT_ShowHideColumnsButton = defineComponent({\n name: 'MVTShowHideColumnsButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const title =\n (attrs.title as string | undefined) ?? props.table.options.localization.showHideColumns\n return h(Menu, { closeOnItemClick: false, withinPortal: true }, () => [\n h(Tooltip, { label: title, withinPortal: true }, () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n },\n () => h(props.table.options.icons.IconColumns),\n ),\n ),\n ),\n h(MVT_ShowHideColumnsMenu, { table: props.table }),\n ])\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_DensityState, MVT_RowData, MVT_TableInstance } from '../../types'\n\nconst next: Record<\n Exclude<MVT_DensityState, 'lg' | 'sm'>,\n Exclude<MVT_DensityState, 'lg' | 'sm'>\n> = { md: 'xs', xl: 'md', xs: 'xl' }\nexport const MVT_ToggleDensePaddingButton = defineComponent({\n name: 'MVTToggleDensePaddingButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const density = table.getState().density\n const { IconBaselineDensityLarge, IconBaselineDensityMedium, IconBaselineDensitySmall } =\n table.options.icons\n const title = (attrs.title as string | undefined) ?? table.options.localization.toggleDensity\n const icon =\n density === 'xs'\n ? IconBaselineDensitySmall\n : density === 'md'\n ? IconBaselineDensityMedium\n : IconBaselineDensityLarge\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => table.setDensity((current) => next[current as keyof typeof next]),\n },\n () => h(icon),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\n\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleFiltersButton = defineComponent({\n name: 'MVTToggleFiltersButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const { IconFilter, IconFilterOff } = table.options.icons\n const title =\n (attrs.title as string | undefined) ?? table.options.localization.showHideFilters\n const shown = table.getState().showColumnFilters\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => table.setShowColumnFilters((current) => !current),\n },\n () => h(shown ? IconFilterOff : IconFilter),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleFullScreenButton = defineComponent({\n name: 'MVTToggleFullScreenButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n const tooltipOpened = ref(false)\n return () => {\n const { table } = props\n const full = table.getState().isFullScreen\n const { IconMaximize, IconMinimize } = table.options.icons\n const title =\n (attrs.title as string | undefined) ?? table.options.localization.toggleFullScreen\n return h(Tooltip, { label: title, opened: tooltipOpened.value, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onMouseenter: () => {\n tooltipOpened.value = true\n },\n onMouseleave: () => {\n tooltipOpened.value = false\n },\n onClick: () => {\n tooltipOpened.value = false\n table.setIsFullScreen((current) => !current)\n },\n },\n () => h(full ? IconMinimize : IconMaximize),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleGlobalFilterButton = defineComponent({\n name: 'MVTToggleGlobalFilterButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const state = table.getState()\n const { IconSearch, IconSearchOff } = table.options.icons\n const title = (attrs.title as string | undefined) ?? table.options.localization.showHideSearch\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n disabled: !!state.globalFilter,\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => {\n table.setShowGlobalFilter(!state.showGlobalFilter)\n setTimeout(() => table.refs.searchInputRef.value?.focus(), 100)\n },\n },\n () => h(state.showGlobalFilter ? IconSearchOff : IconSearch),\n ),\n )\n }\n },\n})\n",".root {\n align-items: center;\n gap: 2px;\n z-index: 3;\n margin-left: 4px;\n}\n","import clsx from 'clsx'\nimport { Flex } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ShowHideColumnsButton } from '../buttons/MVT_ShowHideColumnsButton'\nimport { MVT_ToggleDensePaddingButton } from '../buttons/MVT_ToggleDensePaddingButton'\nimport { MVT_ToggleFiltersButton } from '../buttons/MVT_ToggleFiltersButton'\nimport { MVT_ToggleFullScreenButton } from '../buttons/MVT_ToggleFullScreenButton'\nimport { MVT_ToggleGlobalFilterButton } from '../buttons/MVT_ToggleGlobalFilterButton'\nimport classes from './MVT_ToolbarInternalButtons.module.css'\n\nexport const MVT_ToolbarInternalButtons = defineComponent({\n name: 'MVTToolbarInternalButtons',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const o = table.options\n const custom = parseFromValuesOrFunc(o.renderToolbarInternalActions, { table })\n const buttons = custom ?? [\n o.enableFilters && o.enableGlobalFilter && !o.initialState?.showGlobalFilter\n ? h(MVT_ToggleGlobalFilterButton, { table })\n : null,\n o.enableFilters && o.enableColumnFilters && o.columnFilterDisplayMode !== 'popover'\n ? h(MVT_ToggleFiltersButton, { table })\n : null,\n o.enableHiding || o.enableColumnOrdering || o.enableColumnPinning\n ? h(MVT_ShowHideColumnsButton, { table })\n : null,\n o.enableDensityToggle ? h(MVT_ToggleDensePaddingButton, { table }) : null,\n o.enableFullScreenToggle ? h(MVT_ToggleFullScreenButton, { table }) : null,\n ]\n return h(\n Flex,\n { ...attrs, class: clsx('mvt-toolbar-internal-buttons', classes.root, attrs.class) },\n () => buttons,\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n position: relative;\n}\n\n.root-fullscreen {\n position: sticky !important;\n top: 0;\n}\n\n.actions-container {\n align-items: flex-start;\n box-sizing: border-box;\n justify-content: space-between;\n padding: rem(8px);\n right: 0;\n top: 0;\n width: 100%;\n position: absolute;\n}\n\n.actions-container-stack-alert {\n position: relative !important;\n}\n","import { defineComponent, h, onMounted, type PropType, ref } from 'vue'\n\nimport { Box, Flex } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GlobalFilterTextInput } from '../inputs/MVT_GlobalFilterTextInput'\nimport { MVT_ProgressBar } from './MVT_ProgressBar'\nimport { MVT_TablePagination } from './MVT_TablePagination'\nimport { MVT_ToolbarAlertBanner } from './MVT_ToolbarAlertBanner'\nimport { MVT_ToolbarDropZone } from './MVT_ToolbarDropZone'\nimport { MVT_ToolbarInternalButtons } from './MVT_ToolbarInternalButtons'\nimport commonClasses from './common.styles.module.css'\nimport classes from './MVT_TopToolbar.module.css'\n\nconst useMedia = (query: string) => {\n const matches = ref(false)\n onMounted(() => {\n if (typeof window === 'undefined' || !window.matchMedia) return\n const mql = window.matchMedia(query)\n matches.value = mql.matches\n mql.addEventListener('change', (e) => (matches.value = e.matches))\n })\n return matches\n}\n\nexport const MVT_TopToolbar = defineComponent({\n name: 'MVTTopToolbar',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const isMobile = useMedia('(max-width: 720px)')\n const isTablet = useMedia('(max-width: 1024px)')\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n mantineTopToolbarProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderTopToolbarCustomActions,\n },\n refs: { topToolbarRef },\n } = table\n\n const { isFullScreen, showGlobalFilter } = getState()\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(mantineTopToolbarProps, { table }),\n ...attrs,\n }\n\n const stackAlertBanner =\n isMobile.value || !!renderTopToolbarCustomActions || (showGlobalFilter && isTablet.value)\n\n const globalFilterProps = { table }\n\n return h(\n Box,\n {\n ...toolbarProps,\n class: clsx(\n commonClasses['common-toolbar-styles'],\n classes['root'],\n isFullScreen && classes['root-fullscreen'],\n (toolbarProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n topToolbarRef.value = node\n if ((toolbarProps as any)?.ref) {\n ;(toolbarProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n positionToolbarAlertBanner === 'top' &&\n h(MVT_ToolbarAlertBanner, { stackAlertBanner, table } as any),\n ['both', 'top'].includes(positionToolbarDropZone ?? '') &&\n h(MVT_ToolbarDropZone, { table } as any),\n h(\n Flex,\n {\n class: clsx(\n classes['actions-container'],\n stackAlertBanner && classes['actions-container-stack-alert'],\n ),\n } as any,\n () => [\n enableGlobalFilter &&\n positionGlobalFilter === 'left' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n parseFromValuesOrFunc(renderTopToolbarCustomActions, { table }) ?? h('span'),\n enableToolbarInternalActions\n ? h(Flex, { justify: 'end', wrap: 'wrap-reverse' } as any, () => [\n enableGlobalFilter &&\n positionGlobalFilter === 'right' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n h(MVT_ToolbarInternalButtons, { table } as any),\n ])\n : enableGlobalFilter &&\n positionGlobalFilter === 'right' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n ],\n ),\n enablePagination &&\n ['both', 'top'].includes(positionPagination ?? '') &&\n h(Flex, { justify: 'end' } as any, () =>\n h(MVT_TablePagination, { position: 'top', table } as any),\n ),\n h(MVT_ProgressBar, { isTopToolbar: true, table } as any),\n ],\n )\n }\n },\n})\n","import { Flex, Modal, Stack } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditActionButtons } from '../buttons/MVT_EditActionButtons'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\n\nexport const MVT_EditRowModal = defineComponent({\n name: 'MVTEditRowModal',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: false },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n emits: { close: () => true },\n setup(props, { attrs, emit, slots }) {\n return () => {\n const { table } = props\n const state = table.getState()\n const row = state.creatingRow ?? state.editingRow\n if (!row) return null\n const arg = { row, table }\n const modalProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditRowModalProps, arg),\n ...(state.creatingRow\n ? parseFromValuesOrFunc(table.options.mantineCreateRowModalProps, arg)\n : {}),\n ...attrs,\n } as Record<string, any>\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { key: cell.id, cell, table }))\n const cancel = () => {\n if (state.creatingRow) {\n table.options.onCreatingRowCancel?.({ row, table })\n table.setCreatingRow(null)\n } else {\n table.options.onEditingRowCancel?.({ row, table })\n table.setEditingRow(null)\n }\n row._valuesCache = {}\n modalProps.onClose?.()\n emit('close')\n }\n const slot = state.creatingRow\n ? (slots.create ?? slots.default)\n : (slots.edit ?? slots.default)\n const custom =\n slot?.({ internalEditComponents, row, table }) ??\n (state.creatingRow\n ? table.options.renderCreateRowModalContent?.({ internalEditComponents, row, table })\n : table.options.renderEditRowModalContent?.({ internalEditComponents, row, table }))\n return h(\n Modal,\n { opened: props.open, withCloseButton: false, ...modalProps, key: row.id, onClose: cancel },\n () =>\n custom ?? [\n h('form', { onSubmit: (e: Event) => e.preventDefault() }, [\n h(Stack, { gap: 'lg', pb: 24, pt: 16 }, () => internalEditComponents),\n ]),\n h(Flex, { justify: 'flex-end' }, () =>\n h(MVT_EditActionButtons, { row, table, variant: 'text' }),\n ),\n ],\n )\n }\n },\n})\n","import { defaultRangeExtractor, type Range } from '@tanstack/vue-virtual'\n\nexport const extraIndexRangeExtractor = (range: Range, draggingIndex?: number) => {\n const newIndexes = defaultRangeExtractor(range)\n if (draggingIndex === undefined) return newIndexes\n if (draggingIndex >= 0 && draggingIndex < Math.max(range.startIndex - range.overscan, 0)) {\n newIndexes.unshift(draggingIndex)\n }\n if (draggingIndex >= 0 && draggingIndex > range.endIndex + range.overscan) {\n newIndexes.push(draggingIndex)\n }\n return newIndexes\n}\n","import { computed, type Ref } from 'vue'\n\nimport { type Range, useVirtualizer } from '@tanstack/vue-virtual'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils'\n\nexport const useMVT_ColumnVirtualizer = <\n TData extends MVT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableCellElement,\n>(\n table: MVT_TableInstance<TData>,\n): Ref<MVT_ColumnVirtualizer> | undefined => {\n const {\n getLeftLeafColumns,\n getRightLeafColumns,\n getState,\n getVisibleLeafColumns,\n options: {\n columnVirtualizerInstanceRef,\n columnVirtualizerOptions,\n enableColumnPinning,\n enableColumnVirtualization,\n },\n refs: { tableContainerRef },\n } = table\n\n if (!enableColumnVirtualization) return undefined\n\n const columnVirtualizerProps = parseFromValuesOrFunc(columnVirtualizerOptions, { table })\n\n const visibleColumns = getVisibleLeafColumns()\n\n const { draggingColumn } = getState()\n\n const [leftPinnedIndexes, rightPinnedIndexes] = enableColumnPinning\n ? [\n getLeftLeafColumns().map((c) => c.getPinnedIndex()),\n getRightLeafColumns()\n .map((column) => visibleColumns.length - column.getPinnedIndex() - 1)\n .sort((a, b) => a - b),\n ]\n : [[] as number[], [] as number[]]\n\n const numPinnedLeft = leftPinnedIndexes.length\n const numPinnedRight = rightPinnedIndexes.length\n\n const draggingColumnIndex = draggingColumn?.id\n ? visibleColumns.findIndex((c) => c.id === draggingColumn?.id)\n : undefined\n\n const columnVirtualizerRef = useVirtualizer<HTMLDivElement, HTMLTableCellElement>(\n computed(() => ({\n count: visibleColumns.length,\n estimateSize: (index: number) => visibleColumns[index].getSize(),\n getScrollElement: () => tableContainerRef.value as any,\n horizontal: true,\n overscan: 3,\n rangeExtractor: (range: Range) => {\n const newIndexes = extraIndexRangeExtractor(range, draggingColumnIndex)\n if (!numPinnedLeft && !numPinnedRight) {\n return newIndexes\n }\n return [...new Set([...leftPinnedIndexes, ...newIndexes, ...rightPinnedIndexes])]\n },\n ...columnVirtualizerProps,\n })) as any,\n )\n\n const columnVirtualizer = columnVirtualizerRef.value as unknown as MVT_ColumnVirtualizer<\n TScrollElement,\n TItemElement\n >\n\n //expose the MVT-augmented properties as live getters\n Object.defineProperties(columnVirtualizer, {\n virtualColumns: {\n configurable: true,\n get() {\n return this.getVirtualItems()\n },\n },\n virtualPaddingLeft: {\n configurable: true,\n get() {\n const virtualColumns = this.getVirtualItems()\n const numColumns = virtualColumns.length\n if (!numColumns) return undefined\n const leftNonPinnedStart = virtualColumns[numPinnedLeft]?.start || 0\n const leftNonPinnedEnd = virtualColumns[leftPinnedIndexes.length - 1]?.end || 0\n return leftNonPinnedStart - leftNonPinnedEnd\n },\n },\n virtualPaddingRight: {\n configurable: true,\n get() {\n const virtualColumns = this.getVirtualItems()\n const numColumns = virtualColumns.length\n if (!numColumns) return undefined\n const totalSize = this.getTotalSize()\n const rightNonPinnedStart = virtualColumns[numColumns - numPinnedRight]?.start || 0\n const rightNonPinnedEnd = virtualColumns[numColumns - numPinnedRight - 1]?.end || 0\n return (\n totalSize - rightNonPinnedEnd - (numPinnedRight ? totalSize - rightNonPinnedStart : 0)\n )\n },\n },\n })\n\n if (columnVirtualizerInstanceRef) {\n columnVirtualizerInstanceRef.value = columnVirtualizer as any\n }\n\n return columnVirtualizerRef as unknown as Ref<MVT_ColumnVirtualizer>\n}\n","import { type MantineTheme } from '@mantine-vue/core'\n\nimport { type MantineShade } from '../types'\n\nexport const parseCSSVarId = (id: string) => id.replace(/[^a-zA-Z0-9]/g, '_')\n\nexport const getPrimaryShade = (theme: MantineTheme): number =>\n typeof theme.primaryShade === 'number' ? theme.primaryShade : (theme.primaryShade?.dark ?? 7)\n\nexport const getPrimaryColor = (theme: MantineTheme, shade?: MantineShade): string =>\n theme.colors[theme.primaryColor][shade ?? getPrimaryShade(theme)]\n\nexport function dataVariable(name: string, value: boolean | number | string | undefined) {\n const key = `data-${name}`\n switch (typeof value) {\n case 'boolean':\n return value ? { [key]: '' } : null\n case 'number':\n return { [key]: `${value}` }\n case 'string':\n return { [key]: value }\n default:\n return null\n }\n}\n","import { computed, type ComputedRef } from 'vue'\n\nimport { type MVT_Row, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { getMVT_Rows } from '../utils/row.utils'\n\n/**\n * Returns the MVT-adjusted rows (ranking, pinning, and creating-row insertion)\n */\nexport const useMVT_Rows = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n): ComputedRef<MVT_Row<TData>[]> => {\n return computed(() => {\n const { creatingRow, expanded, globalFilter, pagination, rowPinning, sorting } =\n table.getState()\n void creatingRow\n void expanded\n void globalFilter\n void pagination.pageIndex\n void pagination.pageSize\n void rowPinning\n void sorting\n void table.getRowModel().rows\n return getMVT_Rows(table)\n })\n}\n","import { computed, type Ref } from 'vue'\n\nimport { type Range, useVirtualizer } from '@tanstack/vue-virtual'\n\nimport {\n type MVT_DensityState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n} from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils'\n\nexport const useMVT_RowVirtualizer = <\n TData extends MVT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableRowElement,\n>(\n table: MVT_TableInstance<TData>,\n rows?: Ref<MVT_Row<TData>[]>,\n): Ref<MVT_RowVirtualizer<TScrollElement, TItemElement>> | undefined => {\n const {\n getRowModel,\n getState,\n options: {\n enableRowVirtualization,\n renderDetailPanel,\n rowVirtualizerInstanceRef,\n rowVirtualizerOptions,\n },\n refs: { tableContainerRef },\n } = table\n\n if (!enableRowVirtualization) return undefined\n\n const rowVirtualizerProps = parseFromValuesOrFunc(rowVirtualizerOptions, {\n table,\n })\n\n const defaultRowHeightByDensity: Record<MVT_DensityState, number> = {\n lg: 62.7,\n md: 54.7,\n sm: 48.7,\n xl: 70.7,\n xs: 42.7,\n }\n\n const { density, draggingRow, expanded } = getState()\n\n const normalRowHeight = defaultRowHeightByDensity[density] ?? defaultRowHeightByDensity['md']\n\n const rowVirtualizerRef = useVirtualizer<HTMLDivElement, HTMLTableRowElement>(\n computed(() => {\n const rowCount = rows?.value.length ?? getRowModel().rows.length\n return {\n count: renderDetailPanel ? rowCount * 2 : rowCount,\n estimateSize: (index: number) =>\n renderDetailPanel && index % 2 === 1 ? (expanded === true ? 100 : 0) : normalRowHeight,\n getScrollElement: () => tableContainerRef.value as any,\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element: any) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 4,\n rangeExtractor: (range: Range) => {\n const current_index = getRowModel().rows.findIndex((row) => row.id === draggingRow?.id)\n return extraIndexRangeExtractor(range, current_index >= 0 ? current_index : 0)\n },\n ...rowVirtualizerProps,\n }\n }) as any,\n )\n\n const rowVirtualizer = rowVirtualizerRef.value as unknown as MVT_RowVirtualizer<\n TScrollElement,\n TItemElement\n >\n\n if (!Object.getOwnPropertyDescriptor(rowVirtualizer, 'virtualRows')) {\n Object.defineProperty(rowVirtualizer, 'virtualRows', {\n configurable: true,\n get() {\n return this.getVirtualItems()\n },\n })\n }\n\n if (rowVirtualizerInstanceRef) {\n rowVirtualizerInstanceRef.value = rowVirtualizer as any\n }\n\n return rowVirtualizerRef as unknown as Ref<MVT_RowVirtualizer<TScrollElement, TItemElement>>\n}\n",".root {\n background-color: transparent;\n border: none;\n border-radius: 4px;\n color: inherit;\n cursor: copy;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n justify-content: inherit;\n letter-spacing: inherit;\n margin: -4px;\n min-width: unset;\n padding: 4px;\n text-align: inherit;\n text-transform: inherit;\n &:active {\n transform: translateY(1px);\n }\n &:hover {\n background-color: color-mix(\n in srgb,\n var(--mantine-primary-color-filled-hover) 10%,\n transparent\n );\n }\n}\n","import { defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Tooltip, UnstyledButton } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Cell, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_CopyButton.module.css'\n\nexport const MVT_CopyButton = defineComponent({\n name: 'MVTCopyButton',\n inheritAttrs: false,\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs, slots }) {\n const copied = ref(false)\n return () => {\n const { cell, table } = props\n const {\n options: { localization, mantineCopyButtonProps },\n } = table\n const { column, row } = cell\n\n const copyButtonProps = {\n ...parseFromValuesOrFunc(mantineCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...parseFromValuesOrFunc(column.columnDef.mantineCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...attrs,\n }\n\n const handleCopy = () => {\n navigator?.clipboard?.writeText(cell.getValue<any>()?.toString())\n copied.value = true\n setTimeout(() => (copied.value = false), 4000)\n }\n\n return h(\n Tooltip,\n {\n color: copied.value ? 'teal' : undefined,\n label: copied.value ? localization.copiedToClipboard : localization.clickToCopy,\n openDelay: 1000,\n withinPortal: true,\n } as any,\n () =>\n h(\n UnstyledButton,\n {\n ...copyButtonProps,\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n handleCopy()\n ;(copyButtonProps as any)?.onClick?.(event)\n },\n class: clsx(classes.root, (copyButtonProps as any)?.class),\n } as any,\n () => slots.default?.(),\n ),\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Highlight } from '@mantine-vue/core'\n\nimport { type MVT_Cell, type MVT_Node, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nconst allowedTypes = ['string', 'number']\nconst allowedFilterVariants = ['text', 'autocomplete']\n\nexport const MVT_TableBodyCellValue = defineComponent({\n name: 'MVTTableBodyCellValue',\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n renderedColumnIndex: { type: Number, default: 0 },\n renderedRowIndex: { type: Number, default: 0 },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props) {\n return () => {\n const { cell, renderedColumnIndex, renderedRowIndex, table } = props\n const {\n getState,\n options: { enableFilterMatchHighlighting, mantineHighlightProps = { size: 'sm' } },\n } = table\n const { column, row } = cell\n const { columnDef } = column\n const { globalFilter, globalFilterFn } = getState()\n const filterValue = column.getFilterValue()\n\n const highlightProps = parseFromValuesOrFunc(mantineHighlightProps, {\n cell,\n column,\n row,\n table,\n }) as Record<string, any>\n\n let renderedCellValue: MVT_Node | number | string | undefined =\n cell.getIsAggregated() && columnDef.AggregatedCell\n ? columnDef.AggregatedCell({ cell, column, row, table })\n : row.getIsGrouped() && !cell.getIsGrouped()\n ? null\n : cell.getIsGrouped() && columnDef.GroupedCell\n ? columnDef.GroupedCell({ cell, column, row, table })\n : undefined\n\n const isGroupedValue = renderedCellValue !== undefined\n\n if (!isGroupedValue) {\n renderedCellValue = cell.renderValue() as number | string\n }\n\n if (\n enableFilterMatchHighlighting &&\n columnDef.enableFilterMatchHighlighting !== false &&\n renderedCellValue &&\n allowedTypes.includes(typeof renderedCellValue) &&\n ((filterValue &&\n allowedTypes.includes(typeof filterValue) &&\n allowedFilterVariants.includes(columnDef.filterVariant as string)) ||\n (globalFilter &&\n allowedTypes.includes(typeof globalFilter) &&\n column.getCanGlobalFilter()))\n ) {\n let highlight: string | string[] = (\n column.getFilterValue() ??\n globalFilter ??\n ''\n ).toString() as string\n if ((filterValue ? columnDef._filterFn : globalFilterFn) === 'fuzzy') {\n highlight = highlight.split(' ')\n }\n const text = renderedCellValue.toString()\n\n renderedCellValue = h(\n Highlight,\n { color: 'yellow.3', highlight, ...highlightProps } as any,\n () => text,\n )\n }\n\n if (columnDef.Cell && !isGroupedValue) {\n renderedCellValue = columnDef.Cell({\n cell,\n column,\n renderedCellValue,\n renderedColumnIndex,\n renderedRowIndex,\n row,\n table,\n })\n }\n\n return renderedCellValue\n }\n },\n})\n",".root {\n --resize-thickness: 2px;\n\n background-clip: padding-box;\n text-align: var(--mvt-cell-align, left);\n overflow: hidden;\n position: relative;\n transition: padding 150ms ease-in-out;\n\n &[data-dragging-column] {\n z-index: 2;\n border-left: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n border-right: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n &[data-last-row] {\n border-bottom: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n }\n }\n\n &[data-hovered-column-target] {\n opacity: 0.5;\n border-left: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n border-right: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n &[data-last-row] {\n border-bottom: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n }\n\n &[data-resizing='ltr'] {\n border-right: var(--resize-thickness) solid var(--mvt-resize-column-border-color);\n }\n\n &[data-resizing='rtl'] {\n border-left: var(--resize-thickness) solid var(--mvt-resize-column-border-color);\n }\n\n &:hover {\n outline-offset: -1px;\n text-overflow: clip;\n }\n}\n\n.root-grid {\n align-items: center;\n justify-content: var(--mvt-cell-align, flex-start);\n display: flex;\n}\n\n.root-virtualized {\n transition: none;\n}\n\n.root-data-col {\n text-overflow: ellipsis;\n}\n\n.root-nowrap {\n white-space: nowrap;\n}\n\n.root-cursor-pointer {\n cursor: pointer;\n}\n\n.root-editable-hover {\n @mixin hover {\n outline: 1px solid var(--mantine-color-gray-7);\n }\n}\n\n.root-cell-hover-reveal {\n overflow: visible;\n}\n\n.cell-hover-reveal {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: var(--mvt-cell-align);\n}\n\n.cell-hover-reveal.overflowing:hover {\n overflow: visible;\n white-space: normal;\n position: absolute;\n z-index: 2;\n padding: var(--table-vertical-spacing) var(--table-horizontal-spacing, var(--mantine-spacing-xs));\n background-color: var(--mvt-base-background-color);\n box-shadow: var(--mantine-shadow-sm);\n border: 1px solid var(--mantine-primary-color-filled);\n text-indent: -1px;\n width: max-content;\n top: 0;\n left: 0;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n","import { type CSSProperties, defineComponent, h, type PropType, ref, type Ref } from 'vue'\n\nimport { Skeleton, TableTd, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Cell,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_CopyButton } from '../buttons/MVT_CopyButton'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { MVT_TableBodyCellValue } from './MVT_TableBodyCellValue'\nimport classes from './MVT_TableBodyCell.module.css'\n\nexport const MVT_TableBodyCell = defineComponent({\n name: 'MVTTableBodyCell',\n inheritAttrs: false,\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n numRows: { type: Number, default: 1 },\n renderedColumnIndex: { type: Number, default: 0 },\n renderedRowIndex: { type: Number, default: 0 },\n rowRef: {\n type: Object as PropType<Ref<HTMLTableRowElement | null>>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n virtualCell: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n const skeletonWidth = ref(100)\n const isCellContentOverflowing = ref(false)\n const cellHoverRevealDivRef = ref<HTMLDivElement | null>(null)\n\n // compute a stable skeleton width once\n {\n const { cell, table } = props\n const { isLoading, showSkeletons } = table.getState()\n if (isLoading || showSkeletons) {\n const size = cell.column.getSize()\n skeletonWidth.value =\n cell.column.columnDef.columnDefType === 'display'\n ? size / 2\n : Math.round(Math.random() * (size - size / 3) + size / 3)\n }\n }\n\n return () => {\n const { cell, numRows, renderedColumnIndex, renderedRowIndex, rowRef, table, virtualCell } =\n props\n const {\n getState,\n options: {\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n editDisplayMode,\n enableClickToCopy,\n enableColumnOrdering,\n enableColumnPinning,\n enableEditing,\n enableGrouping,\n layoutMode,\n mantineSkeletonProps,\n mantineTableBodyCellProps,\n },\n refs: { editInputRefs },\n setEditingCell,\n setHoveredColumn,\n } = table\n const {\n columnSizingInfo,\n creatingRow,\n density,\n draggingColumn,\n editingCell,\n editingRow,\n hoveredColumn,\n isLoading,\n showSkeletons,\n } = getState()\n const { column, row } = cell\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const args = {\n cell,\n column,\n renderedColumnIndex,\n renderedRowIndex,\n row,\n table,\n }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableBodyCellProps, args),\n ...parseFromValuesOrFunc(columnDef.mantineTableBodyCellProps, args),\n ...attrs,\n }\n\n const skeletonProps = parseFromValuesOrFunc(mantineSkeletonProps, args)\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--col-${parseCSSVarId(\n column?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--col-${parseCSSVarId(column.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!) ? 0 : `var(--col-${parseCSSVarId(column.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n const isDraggingColumn = draggingColumn?.id === column.id\n const isHoveredColumn = hoveredColumn?.id === column.id\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const isEditable =\n !cell.getIsPlaceholder() &&\n parseFromValuesOrFunc(enableEditing, row) &&\n parseFromValuesOrFunc(columnDef.enableEditing, row) !== false\n\n const isEditing =\n isEditable &&\n !['custom', 'modal'].includes(editDisplayMode as string) &&\n (editDisplayMode === 'table' || editingRow?.id === row.id || editingCell?.id === cell.id) &&\n !row.getIsGrouped()\n\n const isCreating = isEditable && createDisplayMode === 'row' && creatingRow?.id === row.id\n\n const showClickToCopyButton =\n parseFromValuesOrFunc(enableClickToCopy, cell) ||\n (parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) &&\n parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) !== false)\n\n const handleDoubleClick = (event: MouseEvent) => {\n ;(tableCellProps as any)?.onDoubleClick?.(event)\n if (isEditable && editDisplayMode === 'cell') {\n setEditingCell(cell)\n setTimeout(() => {\n const textField = editInputRefs.value[cell.id]\n if (textField) {\n textField.focus()\n textField.select?.()\n }\n }, 100)\n }\n }\n\n const handleDragEnter = (e: DragEvent) => {\n ;(tableCellProps as any)?.onDragEnter?.(e)\n const { draggingColumn: dragging, hoveredColumn: hovered } = getState()\n if (enableGrouping && hovered?.id === 'drop-zone') {\n setHoveredColumn(null)\n }\n if (enableColumnOrdering && dragging) {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null)\n }\n }\n\n const cellValueProps = {\n cell,\n renderedColumnIndex,\n renderedRowIndex,\n table,\n }\n\n const onMouseEnter = () => {\n if (!columnDef.enableCellHoverReveal) return\n const div = cellHoverRevealDivRef.value\n if (div) {\n isCellContentOverflowing.value = div.scrollWidth > div.clientWidth\n }\n }\n const onMouseLeave = () => {\n if (!columnDef.enableCellHoverReveal) return\n isCellContentOverflowing.value = false\n }\n\n const renderCellContent = () => {\n if (cell.getIsPlaceholder()) {\n return columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null\n }\n\n if (showSkeletons !== false && (isLoading || showSkeletons)) {\n return h(Skeleton, {\n height: 20,\n width: skeletonWidth.value,\n ...skeletonProps,\n } as any)\n }\n\n if (\n columnDefType === 'display' &&\n (['mvt-row-expand', 'mvt-row-numbers', 'mvt-row-select'].includes(column.id) ||\n !row.getIsGrouped())\n ) {\n return columnDef.Cell?.({\n column,\n renderedCellValue: cell.renderValue() as any,\n row,\n rowRef,\n ...cellValueProps,\n })\n }\n\n if (isCreating || isEditing) {\n return h(MVT_EditCellTextInput, { cell, table } as any)\n }\n\n if (showClickToCopyButton && columnDef.enableClickToCopy !== false) {\n return h(MVT_CopyButton, { cell, table } as any, () =>\n h(MVT_TableBodyCellValue, cellValueProps as any),\n )\n }\n\n return h(MVT_TableBodyCellValue, cellValueProps as any)\n }\n\n const groupedSuffix =\n cell.getIsGrouped() && !columnDef.GroupedCell ? ` (${row.subRows?.length})` : null\n\n const inner = columnDef.enableCellHoverReveal\n ? h(\n 'div',\n {\n class: clsx(\n columnDef.enableCellHoverReveal &&\n !(isCreating || isEditing) &&\n classes['cell-hover-reveal'],\n isCellContentOverflowing.value && classes['overflowing'],\n ),\n ref: (el: any) => {\n cellHoverRevealDivRef.value = (el?.$el ?? el) as HTMLDivElement\n },\n },\n [renderCellContent(), groupedSuffix],\n )\n : [renderCellContent(), groupedSuffix]\n\n const style = {\n ...widthStyles,\n '--mvt-cell-align':\n (tableCellProps as any).align ?? (direction.dir.value === 'rtl' ? 'right' : 'left'),\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any).style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n return h(\n TableTd,\n {\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-dragging-column': isDraggingColumn || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-hovered-column-target': isHoveredColumn || undefined,\n 'data-index': renderedColumnIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n 'data-last-row': renderedRowIndex === numRows - 1 || undefined,\n 'data-resizing':\n (columnResizeMode === 'onChange' &&\n columnSizingInfo?.isResizingColumn === column.id &&\n columnResizeDirection) ||\n undefined,\n ...tableCellRest,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualCell && classes['root-virtualized'],\n isEditable && editDisplayMode === 'cell' && classes['root-cursor-pointer'],\n isEditable &&\n ['cell', 'table'].includes(editDisplayMode ?? '') &&\n columnDefType !== 'display' &&\n classes['root-editable-hover'],\n columnDefType === 'data' && classes['root-data-col'],\n density === 'xs' && classes['root-nowrap'],\n columnDef.enableCellHoverReveal && classes['root-cell-hover-reveal'],\n (tableCellProps as any)?.class,\n ),\n onDblclick: handleDoubleClick,\n onDragenter: handleDragEnter,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n style,\n } as any,\n () => cellChildren ?? inner,\n )\n }\n },\n})\n\nexport const Memo_MVT_TableBodyCell = MVT_TableBodyCell\n",".root {\n display: table-row;\n width: 100%;\n background-color: var(--mvt-base-background-color);\n}\n\n.root-grid {\n display: flex;\n}\n\n.root-virtual-row {\n position: absolute;\n top: var(--mvt-parent-row-height);\n transform: translateY(var(--mvt-virtual-row-start));\n transition: none;\n z-index: 1;\n}\n\n.inner {\n display: table-cell;\n transition: all 150ms ease-in-out;\n width: var(--mvt-inner-width);\n}\n\n.inner-grid {\n display: flex;\n}\n\n.inner-expanded {\n border-bottom: 1px solid var(--_table-border-color);\n}\n\n.inner-virtual {\n transition: none;\n}\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\n\nimport { Collapse, TableTd, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { renderMVT_Renderable, useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_TableDetailPanel.module.css'\n\nexport const MVT_TableDetailPanel = defineComponent({\n name: 'MVTTableDetailPanel',\n inheritAttrs: false,\n props: {\n parentRowRef: {\n type: Object as PropType<Ref<HTMLTableRowElement | null>>,\n required: true,\n },\n renderedRowIndex: { type: Number, default: 0 },\n row: {\n type: Object as PropType<MVT_Row<MVT_RowData>>,\n required: true,\n },\n rowVirtualizer: {\n type: Object as PropType<MVT_RowVirtualizer>,\n default: undefined,\n },\n striped: {\n type: [Boolean, String] as PropType<false | string>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n virtualRow: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { parentRowRef, renderedRowIndex, row, rowVirtualizer, striped, table, virtualRow } =\n props\n const {\n getState,\n getVisibleLeafColumns,\n options: {\n layoutMode,\n mantineDetailPanelProps,\n mantineTableBodyRowProps,\n renderDetailPanel,\n },\n } = table\n const { isLoading } = getState()\n\n const tableRowProps = parseFromValuesOrFunc(mantineTableBodyRowProps, {\n isDetailPanel: true,\n row,\n table,\n })\n\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineDetailPanelProps, { row, table }),\n ...attrs,\n }\n\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { cell, key: cell.id, table } as any))\n\n const DetailPanel =\n !isLoading &&\n row.getIsExpanded() &&\n renderMVT_Renderable(mvtSlots.detailPanel, renderDetailPanel, {\n internalEditComponents,\n row,\n table,\n })\n\n return h(\n TableTr,\n {\n 'data-index': renderDetailPanel ? renderedRowIndex * 2 + 1 : renderedRowIndex,\n 'data-striped': striped,\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableRowElement\n if (node) rowVirtualizer?.measureElement?.(node)\n },\n ...tableRowProps,\n style: {\n '--mvt-parent-row-height': virtualRow\n ? `${parentRowRef.value?.getBoundingClientRect()?.height}px`\n : undefined,\n '--mvt-virtual-row-start': virtualRow ? `${virtualRow.start}px` : undefined,\n ...(tableRowProps as any)?.style,\n },\n class: clsx(\n 'mantine-Table-tr-detail-panel',\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualRow && classes['root-virtual-row'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () =>\n h(\n TableTd,\n {\n colspan: getVisibleLeafColumns().length,\n component: 'td',\n ...tableCellProps,\n style: {\n '--mvt-inner-width': `${table.getTotalSize()}px`,\n },\n class: clsx(\n 'mantine-Table-td-detail-panel',\n classes.inner,\n layoutMode?.startsWith('grid') && classes['inner-grid'],\n row.getIsExpanded() && classes['inner-expanded'],\n virtualRow && classes['inner-virtual'],\n ),\n p: row.getIsExpanded() && DetailPanel ? 'md' : 0,\n } as any,\n () =>\n rowVirtualizer\n ? row.getIsExpanded() && DetailPanel\n : h(Collapse, { expanded: row.getIsExpanded() } as any, () => DetailPanel),\n ),\n )\n }\n },\n})\n",".root {\n --hover-thickness: 3px;\n --drag-thickness: 1px;\n\n box-sizing: border-box;\n transition: all 150ms ease-in-out;\n width: 100%;\n\n /* default background-color */\n &:not([data-striped], [data-striped='false']) {\n background-color: var(--mvt-base-background-color);\n }\n /* striped background-colors (take detail panels and virtualization into account) */\n &:not([data-selected], [data-row-pinned]) {\n &[data-striped='odd'] {\n background-color: var(--mvt-striped-row-background-color);\n }\n &[data-striped='even'] {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n\n /* column pinning styles */\n &:not([data-selected], [data-row-pinned]) {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-pinned-column-background-color);\n }\n }\n }\n &[data-striped='odd'] {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n }\n }\n &[data-striped='even'] {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n }\n }\n }\n\n td {\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n opacity: 0.97;\n position: sticky;\n z-index: 1;\n\n &::before {\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n &::before {\n box-shadow: -6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n &::before {\n box-shadow: 6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n }\n }\n /* end column pinning styles */\n /* row pinning styles */\n &[data-row-pinned] {\n background-color: var(--mvt-pinned-row-background-color, --mantine-color-body);\n bottom: calc(var(--mvt-pinned-row-bottom) * 1px);\n opacity: 0.97;\n top: calc(var(--mvt-pinned-row-top) * 1px);\n\n td {\n &::before {\n background-color: var(--mvt-pinned-row-background-color);\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n\n &::before {\n background-color: var(--mvt-pinned-row-background-color);\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n }\n }\n }\n\n &[data-row-pinned='sticky'] {\n z-index: 2;\n position: sticky;\n }\n /* end row pinning styles */\n\n /* selection styles */\n &[data-selected] {\n background-color: var(--mvt-selected-row-background-color, --mantine-color-body);\n\n td {\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n\n &::before {\n background-color: var(--mvt-selected-row-background-color);\n }\n }\n }\n }\n /* end selection styles */\n\n &[data-hover] {\n &:hover {\n td {\n background-color: var(--mvt-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-row-hover-background-color);\n }\n }\n }\n &:not([data-selected], [data-row-pinned]) {\n &[data-striped='odd'] {\n td {\n background-color: var(--mvt-striped-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-striped-row-hover-background-color);\n }\n }\n }\n }\n &[data-striped='even'] {\n td {\n background-color: var(--mvt-striped-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-striped-row-hover-background-color);\n }\n }\n }\n }\n }\n &[data-selected] {\n td {\n background-color: var(--mvt-selected-row-hover-background-color);\n\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n\n &::before {\n background-color: var(--mvt-selected-row-hover-background-color);\n }\n }\n }\n }\n }\n }\n\n &[data-dragging-row] {\n opacity: 0.5;\n border-bottom: var(--drag-thickness) dashed var(--drag-color);\n border-top: var(--drag-thickness) dashed var(--drag-color);\n td {\n &:first-child {\n border-left: var(--drag-thickness) dashed var(--drag-color);\n }\n &:last-child {\n border-right: var(--drag-thickness) dashed var(--drag-color);\n }\n }\n }\n\n &[data-hovered-row-target] {\n td {\n opacity: 0.5;\n border-top: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n border-bottom: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n &:first-child {\n border-left: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n &:last-child {\n border-right: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n }\n }\n}\n\n.root-grid {\n display: flex;\n}\n\n.root-virtualized {\n position: absolute !important;\n top: 0;\n transition: none !important;\n transform: translateY(calc(var(--mvt-virtual-row-start) * 1px));\n will-change: transform;\n}\n","import { defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Cell,\n type MVT_ColumnVirtualizer,\n type MVT_DensityState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { getIsRowSelected } from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_TableBodyCell } from './MVT_TableBodyCell'\nimport { MVT_TableDetailPanel } from './MVT_TableDetailPanel'\nimport classes from './MVT_TableBodyRow.module.css'\n\nexport const MVT_TableBodyRow = defineComponent({\n name: 'MVTTableBodyRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n numRows: { type: Number, default: undefined },\n pinnedRowIds: {\n type: Array as PropType<string[]>,\n default: undefined,\n },\n renderedRowIndex: { type: Number, default: 0 },\n row: {\n type: Object as PropType<MVT_Row<MVT_RowData>>,\n required: true,\n },\n rowVirtualizer: {\n type: Object as PropType<MVT_RowVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n virtualRow: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs, slots }) {\n const rowRef = ref<HTMLTableRowElement | null>(null)\n const mvtSlots = useMVT_Slots()\n\n return () => {\n const {\n columnVirtualizer,\n numRows,\n pinnedRowIds,\n renderedRowIndex,\n row,\n rowVirtualizer,\n table,\n tableProps,\n virtualRow,\n } = props\n const {\n getState,\n options: {\n enableRowOrdering,\n enableRowPinning,\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n mantineTableBodyRowProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n setHoveredRow,\n } = table\n const {\n density,\n // draggingColumn,\n draggingRow,\n // editingCell,\n // editingRow,\n hoveredRow,\n isFullScreen,\n } = getState()\n\n const showDetailPanel = renderDetailPanel || mvtSlots.detailPanel\n\n const visibleCells = row.getVisibleCells()\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n const isRowSelected = getIsRowSelected({ row, table })\n const isRowPinned = enableRowPinning && row.getIsPinned()\n const isRowStickyPinned = isRowPinned && rowPinningDisplayMode?.includes('sticky') && 'sticky'\n const isDraggingRow = draggingRow?.id === row.id\n const isHoveredRow = hoveredRow?.id === row.id\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableBodyRowProps, {\n renderedRowIndex,\n row,\n table,\n }),\n ...attrs,\n }\n\n const [bottomPinnedIndex, topPinnedIndex] =\n !enableRowPinning || !isRowStickyPinned || !pinnedRowIds || !row.getIsPinned()\n ? [undefined, undefined]\n : [[...pinnedRowIds].reverse().indexOf(row.id), pinnedRowIds.indexOf(row.id)]\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) && tableHeadRef.value?.clientHeight) || 0\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.value?.clientHeight) || 0\n\n const defaultRowHeightByDensity: Record<MVT_DensityState, number> = {\n lg: 61,\n md: 53,\n sm: 45,\n xl: 69,\n xs: 37,\n }\n\n const rowHeight =\n parseInt((tableRowProps as any)?.style?.height, 10) ||\n (defaultRowHeightByDensity[density] ?? defaultRowHeightByDensity['md'])\n\n const handleDragEnter = (_e: DragEvent) => {\n if (enableRowOrdering && getState().draggingRow) {\n setHoveredRow(row)\n }\n }\n\n let striped = tableProps.striped as boolean | string\n if (striped) {\n if (striped === true) striped = 'odd'\n if (striped === 'odd' && renderedRowIndex % 2 !== 0) striped = false\n if (striped === 'even' && renderedRowIndex % 2 === 0) striped = false\n }\n\n const style = {\n ...(tableRowProps as any)?.style,\n '--mvt-pinned-row-bottom':\n !virtualRow && bottomPinnedIndex !== undefined && isRowPinned\n ? `${bottomPinnedIndex * rowHeight + (enableStickyFooter ? tableFooterHeight - 1 : 0)}`\n : undefined,\n '--mvt-pinned-row-top': virtualRow\n ? undefined\n : topPinnedIndex !== undefined && isRowPinned\n ? `${\n topPinnedIndex * rowHeight +\n (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0)\n }`\n : undefined,\n '--mvt-virtual-row-start': virtualRow ? `${virtualRow.start}` : undefined,\n }\n\n const cells = slots.default\n ? slots.default()\n : (virtualColumns ?? row.getVisibleCells()).map(\n (cellOrVirtualCell, renderedColumnIndex) => {\n let cell = cellOrVirtualCell as MVT_Cell<MVT_RowData>\n let index = renderedColumnIndex\n if (columnVirtualizer) {\n index = (cellOrVirtualCell as MVT_VirtualItem).index\n cell = visibleCells[index]\n }\n return h(MVT_TableBodyCell, {\n cell,\n key: cell.id,\n numRows,\n renderedColumnIndex: index,\n renderedRowIndex,\n rowRef,\n table,\n virtualCell: columnVirtualizer ? (cellOrVirtualCell as MVT_VirtualItem) : undefined,\n } as any)\n },\n )\n\n return [\n h(\n TableTr,\n {\n 'data-dragging-row': isDraggingRow || undefined,\n 'data-hovered-row-target': isHoveredRow || undefined,\n 'data-index': showDetailPanel ? renderedRowIndex * 2 : renderedRowIndex,\n 'data-row-pinned': isRowStickyPinned || isRowPinned || undefined,\n 'data-selected': isRowSelected || undefined,\n 'data-striped': striped,\n onDragenter: handleDragEnter,\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableRowElement\n if (node) {\n rowRef.value = node\n rowVirtualizer?.measureElement?.(node)\n }\n },\n ...tableRowProps,\n style,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualRow && classes['root-virtualized'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'td',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n cells,\n virtualPaddingRight\n ? h(Box, {\n component: 'td',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n ),\n showDetailPanel &&\n !row.getIsGrouped() &&\n h(MVT_TableDetailPanel, {\n parentRowRef: rowRef,\n renderedRowIndex,\n row,\n rowVirtualizer,\n striped,\n table,\n virtualRow,\n } as any),\n ]\n }\n },\n})\n\nexport const Memo_MVT_TableBodyRow = MVT_TableBodyRow\n",".root {\n background-color: var(--mvt-base-background-color);\n position: relative;\n}\n\n.root-grid {\n display: grid;\n}\n\n.root-no-rows {\n min-height: 100px;\n}\n\n.root-virtualized {\n height: var(--mvt-table-body-height);\n}\n\n.empty-row-tr-grid {\n display: grid;\n}\n\n.empty-row-td-grid {\n display: grid;\n width: inherit;\n}\n\n.empty-row-td-content {\n color: var(--mantine-color-dimmed);\n font-style: italic;\n max-width: min(100vw, calc(var(--mvt-paper-width) * 1px));\n padding-bottom: 2rem;\n padding-top: 2rem;\n text-align: center;\n width: 100%;\n}\n\n.pinned {\n bottom: calc(var(--mvt-table-footer-height, 0) * 1px - 1px);\n position: sticky;\n top: calc(var(--mvt-table-head-height, 0) * 1px - 1px);\n z-index: 1;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { createRow } from '@tanstack/vue-table'\n\nimport { TableTd, Text } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../../types'\nimport { MVT_ExpandButton } from '../buttons/MVT_ExpandButton'\nimport { MVT_TableBodyRow } from './MVT_TableBodyRow'\nimport classes from './MVT_TableBody.module.css'\n\nexport const MVT_TableBodyEmptyRow = defineComponent({\n name: 'MVTTableBodyEmptyRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n numRows: { type: Number, default: undefined },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n },\n setup(props) {\n const emptyRow = createRow(\n props.table as any,\n 'mvt-row-empty',\n {} as MVT_RowData,\n 0,\n 0,\n ) as MVT_Row<MVT_RowData>\n\n return () => {\n const { columnVirtualizer, numRows, table, tableProps } = props\n const {\n getState,\n options: { layoutMode, localization, renderDetailPanel, renderEmptyRowsFallback },\n refs: { tablePaperRef },\n } = table\n const { columnFilters, globalFilter } = getState()\n\n return h(\n MVT_TableBodyRow,\n {\n columnVirtualizer,\n numRows,\n class: clsx(\n 'mvt-table-body-row',\n layoutMode?.startsWith('grid') && classes['empty-row-tr-grid'],\n ),\n renderedRowIndex: 0,\n row: emptyRow,\n table,\n tableProps,\n virtualRow: undefined,\n } as any,\n () => [\n renderDetailPanel &&\n h(\n TableTd,\n {\n class: clsx(\n 'mvt-table-body-cell',\n layoutMode?.startsWith('grid') && classes['empty-row-td-grid'],\n ),\n colspan: 1,\n } as any,\n () => h(MVT_ExpandButton, { row: emptyRow, table } as any),\n ),\n h(\n 'td',\n {\n class: clsx(\n 'mvt-table-body-cell',\n layoutMode?.startsWith('grid') && classes['empty-row-td-grid'],\n ),\n colspan: table.getVisibleLeafColumns().length,\n },\n [\n renderEmptyRowsFallback?.({ table }) ??\n h(\n Text,\n {\n style: {\n '--mvt-paper-width': `${tablePaperRef.value?.clientWidth}`,\n },\n class: clsx(classes['empty-row-td-content']),\n } as any,\n () =>\n globalFilter || columnFilters.length\n ? localization.noResultsFound\n : localization.noRecordsToDisplay,\n ),\n ],\n ),\n ],\n )\n }\n },\n})\n","import { defineComponent, Fragment, h, type PropType } from 'vue'\n\nimport { TableTbody } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { useMVT_Rows } from '../../hooks/useMVT_Rows'\nimport { useMVT_RowVirtualizer } from '../../hooks/useMVT_RowVirtualizer'\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableBodyEmptyRow } from './MVT_TableBodyEmptyRow'\nimport { MVT_TableBodyRow } from './MVT_TableBodyRow'\nimport classes from './MVT_TableBody.module.css'\n\nexport const MVT_TableBody = defineComponent({\n name: 'MVTTableBody',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const rows = useMVT_Rows(props.table)\n const rowVirtualizerRef = useMVT_RowVirtualizer(props.table, rows)\n\n return () => {\n const { columnVirtualizer, table, tableProps } = props\n\n const rowVirtualizer = rowVirtualizerRef?.value\n const {\n getIsSomeRowsPinned,\n getRowModel,\n getState,\n getTopRows,\n getBottomRows,\n options: {\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n mantineTableBodyProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n } = table\n const { isFullScreen, rowPinning } = getState()\n\n const tableBodyProps = {\n ...parseFromValuesOrFunc(mantineTableBodyProps, { table }),\n ...attrs,\n }\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) && tableHeadRef.value?.clientHeight) || 0\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.value?.clientHeight) || 0\n\n const pinnedRowIds =\n !rowPinning.bottom?.length && !rowPinning.top?.length\n ? []\n : getRowModel()\n .rows.filter((row) => row.getIsPinned())\n .map((r) => r.id)\n\n const currentRows = rows.value\n const { virtualRows } = rowVirtualizer ?? {}\n\n const commonRowProps = {\n columnVirtualizer,\n numRows: currentRows.length,\n table,\n tableProps,\n }\n\n const renderRow = (\n row: MVT_Row<MVT_RowData>,\n renderedRowIndex: number,\n extra?: Record<string, any>,\n ) =>\n h(MVT_TableBodyRow, {\n ...commonRowProps,\n key: `${row.id}-${row.index}`,\n renderedRowIndex,\n row,\n ...extra,\n } as any)\n\n return h(Fragment, null, [\n !rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('top') &&\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-head-height': `${tableHeadHeight}`,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.pinned,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () => getTopRows().map((row, renderedRowIndex) => renderRow(row, renderedRowIndex)),\n ),\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-body-height': rowVirtualizer\n ? `${rowVirtualizer.getTotalSize()}px`\n : undefined,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n !currentRows.length && classes['root-no-rows'],\n rowVirtualizer && classes['root-virtualized'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () =>\n (tableBodyProps as any)?.children ??\n (!currentRows.length\n ? h(MVT_TableBodyEmptyRow, commonRowProps as any)\n : (virtualRows ?? currentRows).map((rowOrVirtualRow, renderedRowIndex) => {\n let index = renderedRowIndex\n if (rowVirtualizer) {\n if (renderDetailPanel) {\n if ((rowOrVirtualRow as MVT_VirtualItem).index % 2 === 1) return null\n index = (rowOrVirtualRow as MVT_VirtualItem).index / 2\n } else {\n index = (rowOrVirtualRow as MVT_VirtualItem).index\n }\n }\n const row = rowVirtualizer\n ? currentRows[index]\n : (rowOrVirtualRow as MVT_Row<MVT_RowData>)\n\n if (!row) return null\n return renderRow(row, index, {\n pinnedRowIds,\n rowVirtualizer,\n virtualRow: rowVirtualizer ? (rowOrVirtualRow as MVT_VirtualItem) : undefined,\n })\n })),\n ),\n !rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('bottom') &&\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-footer-height': `${tableFooterHeight}`,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.pinned,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () => getBottomRows().map((row, renderedRowIndex) => renderRow(row, renderedRowIndex)),\n ),\n ])\n }\n },\n})\n\nexport const Memo_MVT_TableBody = MVT_TableBody\n",".root {\n font-size: 0.8rem;\n font-weight: bold;\n padding: 1rem;\n text-align: var(--mvt-cell-align, left);\n vertical-align: top;\n z-index: 1;\n\n &.grid {\n display: flex;\n justify-content: var(--mvt-cell-align, flex-start);\n }\n\n &.group {\n text-align: center;\n justify-content: center;\n }\n\n background-color: var(--mvt-base-background-color);\n\n &[data-column-pinned] {\n position: sticky;\n }\n\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n box-shadow: -6px 0 6px -6px\n alpha(light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)), 0.5)\n inset;\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n box-shadow: 6px 0 6px -6px\n alpha(light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)), 0.5)\n inset;\n }\n }\n}\n","import { type CSSProperties, defineComponent, h, type PropType } from 'vue'\n\nimport { TableTh, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_TableFooterCell.module.css'\n\nexport const MVT_TableFooterCell = defineComponent({\n name: 'MVTTableFooterCell',\n inheritAttrs: false,\n props: {\n footer: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n renderedColumnIndex: { type: Number, default: undefined },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n return () => {\n const { footer, renderedColumnIndex, table } = props\n const {\n options: { enableColumnPinning, layoutMode, mantineTableFooterCellProps },\n } = table\n const { column } = footer\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const args = { column, table }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableFooterCellProps, args),\n ...parseFromValuesOrFunc(columnDef.mantineTableFooterCellProps, args),\n ...attrs,\n }\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--header-${parseCSSVarId(\n footer?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--header-${parseCSSVarId(footer.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--header-${parseCSSVarId(footer.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n\n const style = {\n ...widthStyles,\n '--mvt-cell-align':\n (tableCellProps as any).align ??\n (columnDefType === 'group' ? 'center' : direction.dir.value === 'rtl' ? 'right' : 'left'),\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any).style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n return h(\n TableTh,\n {\n colspan: footer.colSpan,\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-index': renderedColumnIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n ...tableCellRest,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes.grid,\n columnDefType === 'group' && classes.group,\n (tableCellProps as any)?.class,\n ),\n style,\n } as any,\n () =>\n cellChildren ??\n (footer.isPlaceholder\n ? null\n : (parseFromValuesOrFunc(columnDef.Footer, {\n column,\n footer,\n table,\n }) ??\n columnDef.footer ??\n null)),\n )\n }\n },\n})\n",".root {\n width: 100%;\n display: table-row;\n &.layout-mode-grid {\n display: flex;\n }\n background-color: light-dark(var(--light-bg-color), var(--dark-bg-color));\n border-top: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4));\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_HeaderGroup,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableFooterCell } from './MVT_TableFooterCell'\nimport classes from './MVT_TableFooterRow.module.css'\n\nexport const MVT_TableFooterRow = defineComponent({\n name: 'MVTTableFooterRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n footerGroup: {\n type: Object as PropType<MVT_HeaderGroup<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, footerGroup, table } = props\n const {\n options: { layoutMode, mantineTableFooterRowProps },\n } = table\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n ) {\n return null\n }\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableFooterRowProps, {\n footerGroup,\n table,\n }),\n ...attrs,\n }\n\n return h(\n TableTr,\n {\n class: clsx(classes.root, layoutMode?.startsWith('grid') && classes['layout-mode-grid']),\n ...tableRowProps,\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n (virtualColumns ?? footerGroup.headers).map(\n (footerOrVirtualFooter, renderedColumnIndex) => {\n let footer = footerOrVirtualFooter as MVT_Header<MVT_RowData>\n let index = renderedColumnIndex\n if (columnVirtualizer) {\n index = (footerOrVirtualFooter as MVT_VirtualItem).index\n footer = footerGroup.headers[index]\n }\n return h(MVT_TableFooterCell, {\n footer,\n key: footer.id,\n renderedColumnIndex: index,\n table,\n } as any)\n },\n ),\n virtualPaddingRight\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n display: table-row-group;\n}\n\n.grid {\n display: grid;\n}\n\n.sticky {\n bottom: 0;\n opacity: 0.97;\n position: sticky;\n z-index: 1;\n outline: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-gray-7));\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { TableTfoot } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableFooterRow } from './MVT_TableFooterRow'\nimport classes from './MVT_TableFooter.module.css'\n\nexport const MVT_TableFooter = defineComponent({\n name: 'MVTTableFooter',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, table } = props\n const {\n getFooterGroups,\n getState,\n options: { enableStickyFooter, layoutMode, mantineTableFooterProps },\n refs: { tableFooterRef },\n } = table\n const { isFullScreen } = getState()\n\n const tableFooterProps = {\n ...parseFromValuesOrFunc(mantineTableFooterProps, { table }),\n ...attrs,\n }\n\n const stickFooter = (isFullScreen || enableStickyFooter) && enableStickyFooter !== false\n\n return h(\n TableTfoot,\n {\n ...tableFooterProps,\n class: clsx(\n classes.root,\n (tableFooterProps as any)?.class,\n stickFooter && classes.sticky,\n layoutMode?.startsWith('grid') && classes.grid,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableSectionElement\n tableFooterRef.value = node\n if ((tableFooterProps as any)?.ref) {\n ;(tableFooterProps as any).ref.value = node\n }\n },\n } as any,\n () =>\n getFooterGroups().map((footerGroup) =>\n h(MVT_TableFooterRow, {\n columnVirtualizer,\n footerGroup,\n key: footerGroup.id,\n table,\n } as any),\n ),\n )\n }\n },\n})\n",".left {\n transform: rotate(90deg);\n}\n\n.right {\n transform: rotate(-90deg);\n}\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType, type VNodeChild } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ColumnActionMenu.module.css'\n\nexport const MVT_ColumnActionMenu = defineComponent({\n name: 'MVTColumnActionMenu',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n onChange: { type: Function as PropType<(opened: boolean) => void>, default: undefined },\n opened: { type: Boolean, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const state = table.getState()\n const icons = o.icons\n const l = o.localization\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineColumnActionsButtonProps, { column, table }),\n ...parseFromValuesOrFunc(def.mantineColumnActionsButtonProps, { column, table }),\n } as Record<string, any>\n const item = (\n label: string,\n icon: any,\n onClick: () => void,\n disabled = false,\n iconClass?: string,\n ) =>\n h(Menu.Item, { disabled, leftSection: h(icon, { class: iconClass }), onClick }, () => label)\n const internal: VNodeChild[] = []\n if (o.enableSorting && column.getCanSort()) {\n if (o.enableSortingRemoval !== false)\n internal.push(\n item(\n l.clearSort,\n icons.IconClearAll,\n () => column.clearSorting(),\n !column.getIsSorted(),\n ),\n )\n internal.push(\n item(\n l.sortByColumnAsc.replace('{column}', String(def.header)),\n icons.IconSortAscending,\n () => column.toggleSorting(false),\n column.getIsSorted() === 'asc',\n ),\n )\n internal.push(\n item(\n l.sortByColumnDesc.replace('{column}', String(def.header)),\n icons.IconSortDescending,\n () => column.toggleSorting(true),\n column.getIsSorted() === 'desc',\n ),\n )\n if (o.enableColumnFilters || o.enableGrouping || o.enableHiding)\n internal.push(h(Menu.Divider))\n }\n if (\n o.enableColumnFilters &&\n o.columnFilterDisplayMode !== 'popover' &&\n column.getCanFilter()\n ) {\n internal.push(\n item(\n l.clearFilter,\n icons.IconFilterOff,\n () => column.setFilterValue(''),\n !column.getFilterValue(),\n ),\n )\n internal.push(\n item(l.filterByColumn.replace('{column}', String(def.header)), icons.IconFilter, () => {\n table.setShowColumnFilters(true)\n setTimeout(() => table.refs.filterInputRefs.value[`${column.id}-0`]?.focus(), 100)\n }),\n )\n if (o.enableGrouping || o.enableHiding) internal.push(h(Menu.Divider))\n }\n if (o.enableGrouping && column.getCanGroup()) {\n internal.push(\n item(\n l[column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'].replace(\n '{column}',\n String(def.header),\n ),\n icons.IconBoxMultiple,\n () => {\n column.toggleGrouping()\n table.setColumnOrder((old: string[]) => ['mvt-row-expand', ...old])\n },\n ),\n )\n if (o.enableColumnPinning) internal.push(h(Menu.Divider))\n }\n if (o.enableColumnPinning && column.getCanPin()) {\n internal.push(\n item(\n l.pinToLeft,\n icons.IconPinned,\n () => column.pin('left'),\n column.getIsPinned() === 'left',\n classes.left,\n ),\n )\n internal.push(\n item(\n l.pinToRight,\n icons.IconPinned,\n () => column.pin('right'),\n column.getIsPinned() === 'right',\n classes.right,\n ),\n )\n internal.push(\n item(l.unpin, icons.IconPinnedOff, () => column.pin(false), !column.getIsPinned()),\n )\n if (o.enableHiding) internal.push(h(Menu.Divider))\n }\n if (o.enableColumnResizing && column.getCanResize())\n internal.push(\n item(\n l.resetColumnSize,\n icons.IconArrowAutofitContent,\n () => {\n table.setColumnSizingInfo((old: typeof state.columnSizingInfo) => ({\n ...old,\n isResizingColumn: false,\n }))\n column.resetSize()\n },\n !state.columnSizing[column.id],\n ),\n )\n if (o.enableHiding) {\n internal.push(\n item(\n l.hideColumn.replace('{column}', String(def.header)),\n icons.IconEyeOff,\n () => column.toggleVisibility(false),\n !column.getCanHide(),\n ),\n )\n internal.push(\n item(\n l.showAllColumns.replace('{column}', String(def.header)),\n icons.IconColumns,\n () => table.toggleAllColumnsVisible(true),\n !Object.values(state.columnVisibility).some((visible) => !visible),\n ),\n )\n }\n\n const menuArg = { column, internalColumnMenuItems: internal, table }\n const custom =\n slots.default?.(menuArg) ??\n mvtSlots.columnActionsMenuItems?.(menuArg) ??\n def.renderColumnActionsMenuItems?.(menuArg) ??\n o.renderColumnActionsMenuItems?.(menuArg)\n return h(\n Menu,\n {\n closeOnItemClick: true,\n position: 'bottom-start',\n withinPortal: true,\n ...attrs,\n opened: props.opened,\n onChange: props.onChange,\n },\n () => [\n h(\n Tooltip,\n { label: actionProps.title ?? l.columnActions, openDelay: 1000, withinPortal: true },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': l.columnActions,\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...actionProps,\n },\n () => h(icons.IconDotsVertical, { size: '100%' }),\n ),\n ),\n ),\n h(Menu.Dropdown, null, () => custom ?? internal),\n ],\n )\n }\n },\n})\n",".root {\n font-weight: normal;\n margin-top: 8px;\n}\n","import clsx from 'clsx'\nimport { Checkbox, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterCheckBox.module.css'\n\nexport const MVT_FilterCheckbox = defineComponent({\n name: 'MVTFilterCheckbox',\n inheritAttrs: false,\n props: {\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { column, table } = props\n const arg = { column, table }\n const checkboxProps = {\n ...parseFromValuesOrFunc(table.options.mantineFilterCheckboxProps, arg),\n ...parseFromValuesOrFunc(column.columnDef.mantineFilterCheckboxProps, arg),\n ...attrs,\n } as Record<string, any>\n const label = table.options.localization.filterByColumn.replace(\n '{column}',\n String(column.columnDef.header),\n )\n const value = column.getFilterValue()\n return h(\n Tooltip,\n { label: checkboxProps.title ?? label, openDelay: 1000, withinPortal: true },\n () =>\n h(Checkbox, {\n checked: value === 'true',\n class: clsx('mvt-filter-checkbox', classes.root, checkboxProps.class),\n indeterminate: value === undefined,\n label: checkboxProps.title ?? label,\n size: table.getState().density === 'xs' ? 'sm' : 'md',\n ...checkboxProps,\n title: undefined,\n onChange: (e: Event) => {\n column.setFilterValue(\n value === undefined ? 'true' : value === 'true' ? 'false' : undefined,\n )\n checkboxProps.onChange?.(e)\n },\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n checkboxProps.onClick?.(e)\n },\n } as any),\n )\n }\n },\n})\n",".root {\n font-weight: normal;\n border-bottom: 2px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-gray-7));\n min-width: auto;\n &.date-filter {\n min-width: rem(125px);\n }\n &.range-filter {\n min-width: rem(80px);\n }\n &.not-filter-chip {\n min-width: rem(100px);\n }\n width: 100%;\n & :global(.mantine-TextInput-input) {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n & :global(.mantine-DateInput-input) {\n height: 2.1rem;\n }\n}\n\n.filter-chip-badge {\n margin: 5px;\n}\n","import clsx from 'clsx'\nimport {\n ActionIcon,\n Autocomplete,\n Badge,\n Box,\n MultiSelect,\n Select,\n TextInput,\n} from '@mantine-vue/core'\nimport { DateInput } from '@mantine-vue/dates'\nimport { useDebouncedValue } from '@mantine-vue/hooks'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterTextInput.module.css'\n\nexport const MVT_FilterTextInput = defineComponent({\n name: 'MVTFilterTextInput',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n rangeFilterIndex: { type: Number, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const { column } = props.header\n const { filterInputRefs } = props.table.refs\n const def = column.columnDef\n const isRange =\n def.filterVariant === 'range' ||\n def.filterVariant === 'date-range' ||\n props.rangeFilterIndex !== undefined\n const isMulti = def.filterVariant === 'multi-select'\n const read = () =>\n isMulti\n ? ((column.getFilterValue() as unknown[]) ?? [])\n : isRange\n ? ((column.getFilterValue() as [unknown, unknown])?.[props.rangeFilterIndex!] ?? '')\n : (column.getFilterValue() ?? '')\n const filterValue = ref<any>(read())\n const [debounced] = useDebouncedValue(\n filterValue,\n props.table.options.manualFiltering ? 400 : 200,\n )\n watch(debounced, (value) => {\n if (isRange)\n column.setFilterValue((old: [unknown, unknown]) => {\n const next = Array.isArray(old) ? [...old] : ['', '']\n next[props.rangeFilterIndex!] = value\n return next\n })\n else column.setFilterValue(value ?? undefined)\n })\n watch(\n () => column.getFilterValue(),\n (value) => {\n filterValue.value =\n value === undefined\n ? isMulti\n ? []\n : ''\n : isRange\n ? ((value as any[])?.[props.rangeFilterIndex!] ?? '')\n : value\n },\n )\n const assignRef = (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) filterInputRefs.value[`${column.id}-${props.rangeFilterIndex ?? 0}`] = node\n }\n return () => {\n const { table } = props\n const o = table.options\n const arg = { column, rangeFilterIndex: props.rangeFilterIndex, table }\n const textProps = {\n ...parseFromValuesOrFunc(o.mantineFilterTextInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterTextInputProps, arg),\n ...attrs,\n } as Record<string, any>\n const selectProps = {\n ...parseFromValuesOrFunc(o.mantineFilterSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterSelectProps, arg),\n } as Record<string, any>\n const multiProps = {\n clearable: true,\n ...parseFromValuesOrFunc(o.mantineFilterMultiSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterMultiSelectProps, arg),\n } as Record<string, any>\n const dateProps = {\n ...parseFromValuesOrFunc(o.mantineFilterDateInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterDateInputProps, arg),\n } as Record<string, any>\n const autoProps = {\n ...parseFromValuesOrFunc(o.mantineFilterAutocompleteProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterAutocompleteProps, arg),\n } as Record<string, any>\n const isSelect = def.filterVariant === 'select'\n const isDate = def.filterVariant === 'date' || def.filterVariant === 'date-range'\n const isAuto = def.filterVariant === 'autocomplete'\n const modeLabel = ['empty', 'notEmpty'].includes(def._filterFn)\n ? localizedFilterOption(o.localization, def._filterFn)\n : ''\n const placeholder = !isRange\n ? (textProps.placeholder ??\n o.localization.filterByColumn.replace('{column}', String(def.header)))\n : props.rangeFilterIndex === 0\n ? o.localization.min\n : o.localization.max\n const provided = autoProps.data ?? selectProps.data ?? multiProps.data\n const faceted = column.getFacetedUniqueValues()\n const options = (\n provided ??\n ((isAuto || isSelect || isMulti) && faceted\n ? Array.from(faceted.keys())\n .filter((v) => v != null)\n .sort((a, b) => String(a).localeCompare(String(b)))\n : [])\n ).filter((v: unknown) => v != null)\n const clear = () => {\n if (isMulti) {\n filterValue.value = []\n column.setFilterValue([])\n } else if (isRange) {\n filterValue.value = ''\n column.setFilterValue((old: any[]) => {\n const next = Array.isArray(old) ? [...old] : ['', '']\n next[props.rangeFilterIndex!] = undefined\n return next\n })\n } else if (isSelect) {\n filterValue.value = null\n column.setFilterValue(null)\n } else {\n filterValue.value = ''\n column.setFilterValue(undefined)\n }\n }\n const clearButton = filterValue.value\n ? h(\n ActionIcon,\n {\n 'aria-label': o.localization.clearFilter,\n color: 'var(--mantine-color-gray-7)',\n size: 'sm',\n title: o.localization.clearFilter,\n variant: 'transparent',\n onClick: clear,\n },\n () => h(o.icons.IconX),\n )\n : null\n const className = clsx(\n 'mvt-filter-text-input',\n classes.root,\n isDate\n ? classes['date-filter']\n : isRange\n ? classes['range-filter']\n : !modeLabel && classes['not-filter-chip'],\n )\n const common: Record<string, any> = {\n 'aria-label': placeholder,\n disabled: !!modeLabel,\n placeholder,\n title: placeholder,\n value: isMulti && !Array.isArray(filterValue.value) ? [] : filterValue.value,\n variant: 'unstyled',\n onClick: (e: MouseEvent) => e.stopPropagation(),\n }\n const custom =\n slots.default?.({\n column,\n header: props.header,\n rangeFilterIndex: props.rangeFilterIndex,\n table,\n }) ??\n def.Filter?.({\n column,\n header: props.header,\n rangeFilterIndex: props.rangeFilterIndex,\n table,\n })\n if (custom) return custom\n if (modeLabel)\n return h(Box, null, () =>\n h(\n Badge,\n {\n class: classes['filter-chip-badge'],\n rightSection: clearButton,\n size: 'lg',\n onClick: () => {\n clear()\n table.setColumnFilterFns((old) => ({\n ...old,\n [props.header.id]:\n (def.columnFilterModeOptions ?? o.columnFilterModeOptions)?.[0] ?? 'fuzzy',\n }))\n },\n },\n () => modeLabel,\n ),\n )\n if (isMulti)\n return h(MultiSelect, {\n ...common,\n searchable: true,\n ...multiProps,\n class: clsx(className, multiProps.class, multiProps.className),\n data: options,\n rightSection:\n filterValue.value?.toString()?.length && multiProps.clearable ? clearButton : undefined,\n onChange: (value: unknown[]) => {\n filterValue.value = value\n multiProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n if (isSelect)\n return h(Select, {\n ...common,\n clearable: true,\n searchable: true,\n ...selectProps,\n class: clsx(className, selectProps.class, selectProps.className),\n clearButtonProps: { size: 'md' },\n data: options,\n onChange: (value: unknown, option: unknown) => {\n filterValue.value = value\n selectProps.onChange?.(value, option)\n },\n ref: assignRef,\n } as any)\n if (isDate)\n return h(DateInput, {\n ...common,\n allowDeselect: true,\n clearable: true,\n popoverProps: { withinPortal: o.columnFilterDisplayMode !== 'popover' },\n ...dateProps,\n class: clsx(className, dateProps.class, dateProps.className),\n onChange: (value: unknown) => {\n filterValue.value = value ?? ''\n dateProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n if (isAuto)\n return h(Autocomplete, {\n ...common,\n ...autoProps,\n class: clsx(className, autoProps.class, autoProps.className),\n data: options,\n rightSection: filterValue.value?.toString()?.length ? clearButton : undefined,\n onChange: (value: string) => {\n filterValue.value = value\n autoProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n return h(TextInput, {\n ...common,\n ...textProps,\n class: clsx(className, textProps.class, textProps.className),\n mt: 0,\n rightSection: filterValue.value?.toString()?.length ? clearButton : undefined,\n onInput: (event: Event | string) => {\n const value = typeof event === 'string' ? event : (event.target as HTMLInputElement).value\n filterValue.value = value\n textProps.onChange?.(event)\n },\n ref: assignRef,\n } as any)\n }\n },\n})\n",".root {\n display: grid;\n grid-template-columns: 6fr 6fr;\n gap: 16px;\n}\n","import clsx from 'clsx'\nimport { Box } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_FilterTextInput } from './MVT_FilterTextInput'\nimport classes from './MVT_FilterRangeFields.module.css'\n\nexport const MVT_FilterRangeFields = defineComponent({\n name: 'MVTFilterRangeFields',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () =>\n h(\n Box,\n { ...attrs, class: clsx('mvt-filter-range-fields', classes.root, attrs.class) },\n () => [\n h(MVT_FilterTextInput, { header: props.header, rangeFilterIndex: 0, table: props.table }),\n h(MVT_FilterTextInput, { header: props.header, rangeFilterIndex: 1, table: props.table }),\n ],\n )\n },\n})\n",".root {\n margin: auto;\n margin-top: 16px;\n margin-bottom: 6px;\n width: calc(100% - 8px);\n}\n","import clsx from 'clsx'\nimport { RangeSlider } from '@mantine-vue/core'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterRangeSlider.module.css'\n\nexport const MVT_FilterRangeSlider = defineComponent({\n name: 'MVTFilterRangeSlider',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const initial = () => {\n const p = {\n ...parseFromValuesOrFunc(props.table.options.mantineFilterRangeSliderProps, {\n column: props.header.column,\n table: props.table,\n }),\n ...parseFromValuesOrFunc(props.header.column.columnDef.mantineFilterRangeSliderProps, {\n column: props.header.column,\n table: props.table,\n }),\n ...attrs,\n } as Record<string, any>\n let [min, max] =\n p.min !== undefined && p.max !== undefined\n ? [p.min, p.max]\n : (props.header.column.getFacetedMinMaxValues() ?? [0, 1])\n if (Array.isArray(min)) min = min[0]\n if (Array.isArray(max)) max = max[0]\n return [min ?? 0, max ?? 1] as [number, number]\n }\n const values = ref<[number, number]>(\n (props.header.column.getFilterValue() as [number, number]) ?? initial(),\n )\n watch(\n () => props.header.column.getFilterValue(),\n (value) => {\n values.value = Array.isArray(value) ? (value as [number, number]) : initial()\n },\n )\n return () => {\n const [min, max] = initial()\n const { column } = props.header\n const rangeProps = {\n ...parseFromValuesOrFunc(props.table.options.mantineFilterRangeSliderProps, {\n column,\n table: props.table,\n }),\n ...parseFromValuesOrFunc(column.columnDef.mantineFilterRangeSliderProps, {\n column,\n table: props.table,\n }),\n ...attrs,\n } as Record<string, any>\n return h(RangeSlider, {\n class: clsx('mvt-filter-range-slider', classes.root, rangeProps.class),\n min,\n max,\n value: values.value,\n ...rangeProps,\n onChange: (value: [number, number]) => {\n values.value = value\n rangeProps.onChange?.(value)\n },\n onChangeEnd: (value: [number, number]) => {\n column.setFilterValue(value[0] <= min && value[1] >= max ? undefined : value)\n rangeProps.onChangeEnd?.(value)\n },\n } as any)\n }\n },\n})\n",".filter-mode-label {\n white-space: nowrap;\n margin-top: 4px;\n font-size: 10px;\n}\n","import { ActionIcon, Collapse, Flex, Menu, Text, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_FilterCheckbox } from '../inputs/MVT_FilterCheckbox'\nimport { MVT_FilterRangeFields } from '../inputs/MVT_FilterRangeFields'\nimport { MVT_FilterRangeSlider } from '../inputs/MVT_FilterRangeSlider'\nimport { MVT_FilterTextInput } from '../inputs/MVT_FilterTextInput'\nimport { MVT_FilterOptionMenu } from '../menus/MVT_FilterOptionMenu'\nimport classes from './MVT_TableHeadCellFilterContainer.module.css'\n\nexport const MVT_TableHeadCellFilterContainer = defineComponent({\n name: 'MVTTableHeadCellFilterContainer',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const allowed = def.columnFilterModeOptions ?? o.columnFilterModeOptions\n const showMode =\n o.enableColumnFilterModes &&\n def.enableColumnFilterModes !== false &&\n (allowed === undefined || !!allowed?.length)\n const input =\n slots.default?.({ column, header, table }) ??\n (def.filterVariant === 'checkbox'\n ? h(MVT_FilterCheckbox, { column, table })\n : def.filterVariant === 'range-slider'\n ? h(MVT_FilterRangeSlider, { header, table })\n : ['date-range', 'range'].includes(def.filterVariant ?? '') ||\n ['between', 'betweenInclusive', 'inNumberRange'].includes(def._filterFn)\n ? h(MVT_FilterRangeFields, { header, table })\n : h(MVT_FilterTextInput, { header, table }))\n const modeMenu = showMode\n ? h(Menu, { withinPortal: o.columnFilterDisplayMode !== 'popover' }, () => [\n h(\n Tooltip,\n {\n label: o.localization.changeFilterMode,\n position: 'bottom-start',\n withinPortal: true,\n },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.changeFilterMode,\n color: 'gray',\n size: 'md',\n variant: 'subtle',\n },\n () => h(o.icons.IconFilterCog),\n ),\n ),\n ),\n h(MVT_FilterOptionMenu, {\n header,\n table,\n onSelect: () =>\n setTimeout(() => table.refs.filterInputRefs.value[`${column.id}-0`]?.focus(), 100),\n }),\n ])\n : null\n return h(\n Collapse,\n {\n expanded: table.getState().showColumnFilters || o.columnFilterDisplayMode === 'popover',\n } as any,\n () =>\n h(Flex, { direction: 'column', ...attrs }, () => [\n h(Flex, { align: 'flex-end' }, () => [input, modeMenu]),\n showMode\n ? h(\n Text,\n { c: 'dimmed', class: classes['filter-mode-label'], component: 'label' },\n () =>\n o.localization.filterMode.replace(\n '{filterType}',\n localizedFilterOption(o.localization, def._filterFn),\n ),\n )\n : null,\n ]),\n )\n }\n },\n})\n",".root {\n transition: all 150ms ease;\n --ai-size: var(--ai-size-sm);\n --ai-bg: transparent;\n --ai-hover: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6));\n --ai-hover-color: var(--mantine-color-bright);\n color: var(--mantine-color-bright);\n &[data-active] {\n color: var(--mantine-primary-color-filled);\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Popover, Tooltip, Transition } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { dataVariable } from '../../utils/style.utils'\nimport { MVT_TableHeadCellFilterContainer } from './MVT_TableHeadCellFilterContainer'\nimport classes from './MVT_TableHeadCellFilterLabel.module.css'\n\nexport const MVT_TableHeadCellFilterLabel = defineComponent({\n name: 'MVTTableHeadCellFilterLabel',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const popoverOpened = ref(false)\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const value = column.getFilterValue()\n const active = Array.isArray(value) ? value.some(Boolean) : !!value\n const range =\n def.filterVariant === 'range' ||\n def.filterVariant === 'date-range' ||\n ['between', 'betweenInclusive', 'inNumberRange'].includes(def._filterFn)\n const format =\n def.filterTooltipValueFn ?? ((filterValue: unknown) => String(filterValue ?? ''))\n const displayed = Array.isArray(value)\n ? value\n .map((entry) => format(entry))\n .join(`\" ${range ? o.localization.and : o.localization.or} \"`)\n : format(value)\n const tooltip =\n o.columnFilterDisplayMode === 'popover' && !active\n ? o.localization.filterByColumn.replace('{column}', String(def.header))\n : o.localization.filteringByColumn\n .replace('{column}', String(def.header))\n .replace('{filterType}', localizedFilterOption(o.localization, def._filterFn))\n .replace('{filterValue}', `\"${displayed}\"`)\n .replace('\" \"', '')\n const showIcon =\n o.columnFilterDisplayMode === 'popover' ||\n (!!value && !range) ||\n (range && (!!(value as unknown[])?.[0] || !!(value as unknown[])?.[1]))\n const click = (event: MouseEvent) => {\n event.stopPropagation()\n if (o.columnFilterDisplayMode === 'popover') popoverOpened.value = !popoverOpened.value\n else table.setShowColumnFilters(true)\n setTimeout(() => {\n const input = table.refs.filterInputRefs.value[`${column.id}-0`]\n input?.focus()\n input?.select()\n }, 100)\n }\n return h(\n Popover,\n {\n keepMounted: def.filterVariant === 'range-slider',\n opened: popoverOpened.value,\n position: 'top',\n shadow: 'xl',\n width: 360,\n withinPortal: true,\n onChange: (opened: boolean) => {\n popoverOpened.value = opened\n },\n },\n () => [\n h(Transition, { mounted: showIcon, transition: 'scale' } as any, () =>\n h(Popover.Target, null, () =>\n h(\n Tooltip,\n {\n disabled: popoverOpened.value,\n label: tooltip,\n multiline: true,\n w: tooltip.length > 40 ? 300 : undefined,\n withinPortal: true,\n },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': tooltip,\n class: clsx('mvt-table-head-cell-filter-label-icon', classes.root),\n size: 18,\n ...dataVariable('active', active),\n ...attrs,\n onClick: click,\n } as any,\n () => h(o.icons.IconFilter, { size: '100%' }),\n ),\n ),\n ),\n ),\n o.columnFilterDisplayMode === 'popover'\n ? h(\n Popover.Dropdown,\n {\n onClick: (event: MouseEvent) => event.stopPropagation(),\n onKeydown: (event: KeyboardEvent) => {\n if (event.key === 'Enter') popoverOpened.value = false\n },\n onMousedown: (event: MouseEvent) => event.stopPropagation(),\n },\n () => h(MVT_TableHeadCellFilterContainer, { header, table }),\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\n\nimport { type MVT_Column, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { reorderColumn } from '../../utils/column.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\n\nexport const MVT_TableHeadCellGrabHandle = defineComponent({\n name: 'MVTTableHeadCellGrabHandle',\n inheritAttrs: false,\n props: {\n column: {\n type: Object as PropType<MVT_Column<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableHeadCellRef: {\n type: Object as PropType<Ref<HTMLTableCellElement | null>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { column, table, tableHeadCellRef } = props\n const {\n getState,\n options: { enableColumnOrdering, mantineColumnDragHandleProps },\n setColumnOrder,\n setDraggingColumn,\n setHoveredColumn,\n } = table\n const { columnDef } = column\n\n const arg = { column, table }\n const actionIconProps = {\n ...parseFromValuesOrFunc(mantineColumnDragHandleProps, arg),\n ...parseFromValuesOrFunc(columnDef.mantineColumnDragHandleProps, arg),\n ...attrs,\n }\n\n const handleDragStart = (event: DragEvent) => {\n ;(actionIconProps as any)?.onDragStart?.(event)\n setDraggingColumn(column)\n event.dataTransfer?.setDragImage(tableHeadCellRef.value as HTMLElement, 0, 0)\n }\n\n const handleDragEnd = (event: DragEvent) => {\n ;(actionIconProps as any)?.onDragEnd?.(event)\n\n const { columnOrder, draggingColumn, hoveredColumn } = getState()\n if (hoveredColumn?.id === 'drop-zone') {\n column.toggleGrouping()\n } else if (\n enableColumnOrdering &&\n hoveredColumn &&\n hoveredColumn?.id !== draggingColumn?.id\n ) {\n setColumnOrder(\n reorderColumn(column, hoveredColumn as MVT_Column<MVT_RowData>, columnOrder),\n )\n }\n setDraggingColumn(null)\n setHoveredColumn(null)\n }\n\n return h(MVT_GrabHandleButton, {\n actionIconProps,\n onDragEnd: handleDragEnd,\n onDragStart: handleDragStart,\n table,\n } as any)\n }\n },\n})\n",".root {\n --resize-handle-thickness: 4px;\n background: var(--mantine-color-placeholder);\n border-radius: 2px;\n cursor: col-resize;\n height: 24px;\n position: absolute;\n width: var(--resize-handle-thickness);\n &:hover {\n background: var(--mantine-primary-color-filled-hover);\n }\n &:active {\n background: var(--mantine-primary-color-filled);\n }\n transform: var(--mvt-transform);\n}\n\n.root-ltr {\n right: 0px;\n margin-right: -10px;\n &:global(.md) {\n margin-right: -16px;\n }\n &:global(.xl) {\n margin-right: -22px;\n }\n}\n\n.root-rtl {\n left: 0px;\n margin-left: -10px;\n &:global(.md) {\n margin-left: -16px;\n }\n &:global(.xl) {\n margin-left: -22px;\n }\n}\n\n.root-hide {\n &:active {\n opacity: 0;\n }\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport classes from './MVT_TableHeadCellResizeHandle.module.css'\n\nexport const MVT_TableHeadCellResizeHandle = defineComponent({\n name: 'MVTTableHeadCellResizeHandle',\n inheritAttrs: false,\n props: {\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { header, table } = props\n const {\n getState,\n options: { columnResizeDirection, columnResizeMode },\n setColumnSizingInfo,\n } = table\n const { density } = getState()\n const { column } = header\n const handler = header.getResizeHandler()\n\n const offset =\n column.getIsResizing() && columnResizeMode === 'onEnd'\n ? `translateX(${\n (columnResizeDirection === 'rtl' ? -1 : 1) *\n (getState().columnSizingInfo.deltaOffset ?? 0)\n }px)`\n : undefined\n\n return h(Box, {\n onDblclick: () => {\n setColumnSizingInfo((old) => ({\n ...old,\n isResizingColumn: false,\n }))\n column.resetSize()\n },\n onMousedown: handler,\n onTouchstart: handler,\n role: 'separator',\n ...attrs,\n style: { '--mvt-transform': offset, ...(attrs as any).style },\n class: clsx(\n 'mvt-table-head-cell-resize-handle',\n classes.root,\n classes[`root-${columnResizeDirection}`],\n !header.subHeaders.length && columnResizeMode === 'onChange' && classes['root-hide'],\n density,\n (attrs as any).class,\n ),\n } as any)\n }\n },\n})\n",".sort-icon {\n transition: all 150ms ease;\n --ai-size: var(--ai-size-xs);\n --ai-bg: transparent;\n --ai-hover: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6));\n --ai-hover-color: var(--mantine-color-bright);\n color: var(--mantine-color-bright);\n &[data-sorted] {\n color: var(--mantine-primary-color-filled);\n }\n margin-left: 1px;\n}\n\n.multi-sort-indicator {\n --indicator-size: rem(16px);\n --indicator-color: transparent;\n --indicator-text-color: var(--mantine-color-bright);\n height: var(--indicator-size);\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { ActionIcon, Indicator, Tooltip } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { dataVariable } from '../../utils/style.utils'\nimport classes from './MVT_TableHeadCellSortLabel.module.css'\n\nexport const MVT_TableHeadCellSortLabel = defineComponent({\n name: 'MVTTableHeadCellSortLabel',\n inheritAttrs: false,\n props: {\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { header, table } = props\n const {\n getState,\n options: {\n icons: { IconArrowsSort, IconSortAscending, IconSortDescending },\n localization,\n },\n } = table\n const column = header.column\n const { columnDef } = column\n const { sorting } = getState()\n const sorted = column.getIsSorted()\n const sortIndex = column.getSortIndex()\n\n const sortTooltip = sorted\n ? sorted === 'desc'\n ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : column.getNextSortingOrder() === 'desc'\n ? localization.sortByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortByColumnAsc.replace('{column}', columnDef.header)\n\n const SortActionButton = h(\n ActionIcon,\n {\n 'aria-label': sortTooltip,\n ...dataVariable('sorted', sorted),\n ...attrs,\n class: clsx('mvt-table-head-sort-button', classes['sort-icon'], (attrs as any).class),\n } as any,\n () =>\n sorted === 'desc'\n ? h(IconSortDescending, { size: '100%' })\n : sorted === 'asc'\n ? h(IconSortAscending, { size: '100%' })\n : h(IconArrowsSort, { size: '100%' }),\n )\n\n return h(Tooltip, { label: sortTooltip, openDelay: 1000, withinPortal: true } as any, () =>\n sorting.length < 2 || sortIndex === -1\n ? SortActionButton\n : h(\n Indicator,\n {\n classNames: {\n root: clsx(\n 'mvt-table-head-multi-sort-indicator',\n classes['multi-sort-indicator'],\n ),\n },\n inline: true,\n label: sortIndex + 1,\n offset: 4,\n } as any,\n () => SortActionButton,\n ),\n )\n }\n },\n})\n",".root {\n --resize-border-color: var(--mantine-primary-color-filled);\n --hover-color: var(--mantine-primary-color-filled);\n --drag-color: var(--mantine-color-gray-7);\n --resize-thickness: 2px;\n --hover-thickness: 3px;\n --drag-thickness: 1px;\n\n background-color: var(--mvt-base-background-color);\n background-clip: padding-box;\n font-weight: bold;\n overflow: visible;\n position: relative;\n transition: padding 150ms ease-in-out;\n vertical-align: top;\n z-index: 1;\n\n &:active {\n z-index: 3;\n }\n\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n opacity: 0.97;\n position: sticky;\n z-index: 4;\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n box-shadow: -6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n box-shadow: 6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n\n &[data-resizing] {\n &[data-resizing='ltr'] {\n border-right: var(--resize-thickness) solid var(--resize-border-color);\n }\n &[data-resizing='rtl'] {\n border-left: var(--resize-thickness) solid var(--resize-border-color);\n }\n }\n\n &[data-dragging-column] {\n border-left: var(--drag-thickness) dashed var(--drag-color);\n border-right: var(--drag-thickness) dashed var(--drag-color);\n border-top: var(--drag-thickness) dashed var(--drag-color);\n opacity: 0.5;\n z-index: 3;\n }\n\n &[data-hovered-column-target] {\n border-left: var(--hover-thickness) dashed var(--hover-color);\n border-right: var(--hover-thickness) dashed var(--hover-color);\n border-top: var(--hover-thickness) dashed var(--hover-color);\n z-index: 2;\n }\n\n :global(.mantine-ActionIcon-root) {\n opacity: 0.7;\n transition: opacity 100ms ease-in-out;\n }\n\n &:hover {\n :global(.mantine-ActionIcon-root) {\n opacity: 1;\n }\n }\n}\n\n.root-grid {\n display: flex;\n flex-direction: column;\n}\n\n.root-virtualized {\n transition: none;\n}\n\n.root-no-select {\n user-select: none;\n}\n\n.content {\n align-items: center;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.content-spaced {\n justify-content: space-between;\n}\n\n.content-center {\n justify-content: center;\n}\n\n.content-right {\n flex-direction: row-reverse;\n}\n\n.content-wrapper {\n text-overflow: ellipsis;\n}\n\n.content-wrapper-hidden-overflow {\n overflow: hidden;\n}\n\n.content-wrapper-nowrap {\n white-space: nowrap;\n}\n\n.labels {\n align-items: center;\n gap: rem(2px);\n min-height: rem(22px);\n}\n\n.labels-right {\n flex-direction: row-reverse;\n}\n\n.labels-center {\n padding-left: calc(var(--mvt-table-head-cell-labels-padding-left) * 1rem);\n}\n\n.labels-sortable {\n cursor: pointer;\n}\n\n.labels-data {\n overflow: hidden;\n}\n\n.content-actions {\n align-items: center;\n align-self: center;\n white-space: nowrap;\n gap: rem(2px);\n margin-left: rem(2px);\n}\n","import { type CSSProperties, defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Flex, TableTh, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ColumnActionMenu } from '../menus/MVT_ColumnActionMenu'\nimport { MVT_TableHeadCellFilterContainer } from './MVT_TableHeadCellFilterContainer'\nimport { MVT_TableHeadCellFilterLabel } from './MVT_TableHeadCellFilterLabel'\nimport { MVT_TableHeadCellGrabHandle } from './MVT_TableHeadCellGrabHandle'\nimport { MVT_TableHeadCellResizeHandle } from './MVT_TableHeadCellResizeHandle'\nimport { MVT_TableHeadCellSortLabel } from './MVT_TableHeadCellSortLabel'\nimport classes from './MVT_TableHeadCell.module.css'\n\nexport const MVT_TableHeadCell = defineComponent({\n name: 'MVTTableHeadCell',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n renderedHeaderIndex: { type: Number, default: 0 },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n const isHoveredHeadCell = ref(false)\n const isOpenedColumnActions = ref(false)\n\n return () => {\n const { columnVirtualizer, header, renderedHeaderIndex, table } = props\n const {\n getState,\n options: {\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n enableColumnActions,\n enableColumnDragging,\n enableColumnOrdering,\n enableColumnPinning,\n enableGrouping,\n enableHeaderActionsHoverReveal,\n enableMultiSort,\n layoutMode,\n mantineTableHeadCellProps,\n },\n refs: { tableHeadCellRefs },\n setHoveredColumn,\n } = table\n const { columnSizingInfo, draggingColumn, grouping, hoveredColumn } = getState()\n const { column } = header\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const arg = { column, table }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableHeadCellProps, arg),\n ...parseFromValuesOrFunc(columnDef.mantineTableHeadCellProps, arg),\n ...attrs,\n }\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--header-${parseCSSVarId(\n header?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--header-${parseCSSVarId(header.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--header-${parseCSSVarId(header.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const isDraggingColumn = draggingColumn?.id === column.id\n const isHoveredColumn = hoveredColumn?.id === column.id\n\n const columnActionsEnabled =\n (enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false\n\n const showColumnButtons =\n !enableHeaderActionsHoverReveal ||\n isOpenedColumnActions.value ||\n (isHoveredHeadCell.value &&\n !table.getVisibleFlatColumns().find((col) => col.getIsResizing()))\n\n const showDragHandle =\n enableColumnDragging !== false &&\n columnDef.enableColumnDragging !== false &&\n (enableColumnDragging ||\n (enableColumnOrdering && columnDef.enableColumnOrdering !== false) ||\n (enableGrouping &&\n columnDef.enableGrouping !== false &&\n !grouping.includes(column.id))) &&\n showColumnButtons\n\n let headerPL = 0\n if (column.getCanSort()) headerPL++\n if (showColumnButtons && (columnActionsEnabled || showDragHandle)) headerPL += 1.75\n if (showDragHandle) headerPL += 1.25\n\n const handleDragEnter = (_e: DragEvent) => {\n const { draggingColumn: dragging, hoveredColumn: hovered } = getState()\n if (enableGrouping && hovered?.id === 'drop-zone') {\n setHoveredColumn(null)\n }\n if (enableColumnOrdering && dragging && columnDefType !== 'group') {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null)\n }\n }\n\n const headerElement =\n columnDef?.Header instanceof Function\n ? columnDef?.Header?.({ column, header, table })\n : (columnDef?.Header ?? columnDef.header)\n\n const align =\n columnDefType === 'group' ? 'center' : direction.dir.value === 'rtl' ? 'right' : 'left'\n\n const style = {\n ...widthStyles,\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any)?.style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n const content = header.isPlaceholder\n ? null\n : (cellChildren ??\n h(\n Flex,\n {\n class: clsx(\n 'mvt-table-head-cell-content',\n classes.content,\n (columnDefType === 'group' || (tableCellProps as any)?.align === 'center') &&\n classes['content-center'],\n (tableCellProps as any)?.align === 'right' && classes['content-right'],\n column.getCanResize() && classes['content-spaced'],\n ),\n } as any,\n () => [\n h(\n Flex,\n {\n style: {\n '--mvt-table-head-cell-labels-padding-left': `${headerPL}`,\n },\n class: clsx(\n 'mvt-table-head-cell-labels',\n classes.labels,\n column.getCanSort() && columnDefType !== 'group' && classes['labels-sortable'],\n (tableCellProps as any)?.align === 'right'\n ? classes['labels-right']\n : (tableCellProps as any)?.align === 'center' && classes['labels-center'],\n columnDefType === 'data' && classes['labels-data'],\n ),\n onClick: column.getToggleSortingHandler(),\n } as any,\n () => [\n h(\n Flex,\n {\n class: clsx(\n 'mvt-table-head-cell-content-wrapper',\n classes['content-wrapper'],\n columnDefType === 'data' && classes['content-wrapper-hidden-overflow'],\n (columnDef.header?.length ?? 0) < 20 && classes['content-wrapper-nowrap'],\n ),\n } as any,\n () => headerElement,\n ),\n column.getCanFilter() &&\n (column.getIsFiltered() || showColumnButtons) &&\n h(MVT_TableHeadCellFilterLabel, { header, table } as any),\n column.getCanSort() &&\n (column.getIsSorted() || showColumnButtons) &&\n h(MVT_TableHeadCellSortLabel, { header, table } as any),\n ],\n ),\n columnDefType !== 'group' &&\n h(\n Flex,\n {\n class: clsx('mvt-table-head-cell-content-actions', classes['content-actions']),\n } as any,\n () => [\n showDragHandle &&\n h(MVT_TableHeadCellGrabHandle, {\n column,\n table,\n tableHeadCellRef: {\n value: tableHeadCellRefs.value[column.id],\n },\n } as any),\n columnActionsEnabled &&\n showColumnButtons &&\n h(MVT_ColumnActionMenu, {\n header,\n onChange: (v: boolean) => {\n isOpenedColumnActions.value = v\n },\n opened: isOpenedColumnActions.value,\n table,\n } as any),\n ],\n ),\n column.getCanResize() && h(MVT_TableHeadCellResizeHandle, { header, table } as any),\n ],\n ))\n\n return h(\n TableTh,\n {\n colspan: header.colSpan,\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-dragging-column': isDraggingColumn || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-hovered-column-target': isHoveredColumn || undefined,\n 'data-index': renderedHeaderIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n 'data-resizing':\n (columnResizeMode === 'onChange' &&\n columnSizingInfo?.isResizingColumn === column.id &&\n columnResizeDirection) ||\n undefined,\n ...tableCellRest,\n align,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n enableMultiSort && column.getCanSort() && classes['root-no-select'],\n columnVirtualizer && classes['root-virtualized'],\n (tableCellProps as any)?.class,\n ),\n onDragenter: handleDragEnter,\n onMouseenter: () => {\n isHoveredHeadCell.value = true\n },\n onMouseleave: () => {\n isHoveredHeadCell.value = false\n },\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableCellElement\n if (node) {\n tableHeadCellRefs.value[column.id] = node\n if (columnDefType !== 'group') {\n columnVirtualizer?.measureElement?.(node)\n }\n }\n },\n style,\n } as any,\n () => [\n content,\n columnFilterDisplayMode === 'subheader' &&\n column.getCanFilter() &&\n h(MVT_TableHeadCellFilterContainer, { header, table } as any),\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n display: table-row;\n &.layout-mode-grid {\n display: flex;\n }\n}\n\n.sticky {\n position: sticky;\n top: 0;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_HeaderGroup,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableHeadCell } from './MVT_TableHeadCell'\nimport classes from './MVT_TableHeadRow.module.css'\n\nexport const MVT_TableHeadRow = defineComponent({\n name: 'MVTTableHeadRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n headerGroup: {\n type: Object as PropType<MVT_HeaderGroup<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, headerGroup, table } = props\n const {\n getState,\n options: { enableStickyHeader, layoutMode, mantineTableHeadRowProps },\n } = table\n const { isFullScreen } = getState()\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableHeadRowProps, {\n headerGroup,\n table,\n }),\n ...attrs,\n }\n\n return h(\n TableTr,\n {\n ...tableRowProps,\n class: clsx(\n classes.root,\n (enableStickyHeader || isFullScreen) && classes.sticky,\n layoutMode?.startsWith('grid') && classes['layout-mode-grid'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n (virtualColumns ?? headerGroup.headers).map(\n (headerOrVirtualHeader, renderedHeaderIndex) => {\n let header = headerOrVirtualHeader as MVT_Header<MVT_RowData>\n let index = renderedHeaderIndex\n if (columnVirtualizer) {\n index = (headerOrVirtualHeader as MVT_VirtualItem).index\n header = headerGroup.headers[index]\n }\n return h(MVT_TableHeadCell, {\n columnVirtualizer,\n header,\n key: header.id,\n renderedHeaderIndex: index,\n table,\n } as any)\n },\n ),\n virtualPaddingRight\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n opacity: 0.97;\n position: relative;\n}\n\n.root-grid {\n display: grid;\n}\n\n.root-table-row-group {\n display: table-row-group;\n}\n\n.root-sticky {\n position: sticky;\n top: 0;\n z-index: 3;\n}\n\n.banner-tr {\n display: table-row;\n}\n\n.banner-th {\n display: table-cell;\n padding: 0;\n}\n\n.grid {\n display: grid;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { TableTh, TableThead, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ToolbarAlertBanner } from '../toolbar/MVT_ToolbarAlertBanner'\nimport { MVT_TableHeadRow } from './MVT_TableHeadRow'\nimport classes from './MVT_TableHead.module.css'\n\nexport const MVT_TableHead = defineComponent({\n name: 'MVTTableHead',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, table } = props\n const {\n getHeaderGroups,\n getSelectedRowModel,\n getState,\n options: {\n enableStickyHeader,\n layoutMode,\n mantineTableHeadProps,\n positionToolbarAlertBanner,\n },\n refs: { tableHeadRef },\n } = table\n const { isFullScreen, showAlertBanner } = getState()\n\n const tableHeadProps = {\n ...parseFromValuesOrFunc(mantineTableHeadProps, { table }),\n ...attrs,\n }\n\n const stickyHeader = enableStickyHeader || isFullScreen\n\n return h(\n TableThead,\n {\n ...tableHeadProps,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') ? classes['root-grid'] : classes['root-table-row-group'],\n stickyHeader && classes['root-sticky'],\n (tableHeadProps as any)?.class,\n ),\n pos: stickyHeader && layoutMode?.startsWith('grid') ? 'sticky' : 'relative',\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableSectionElement\n tableHeadRef.value = node\n if ((tableHeadProps as any)?.ref) {\n ;(tableHeadProps as any).ref.value = node\n }\n },\n } as any,\n () =>\n positionToolbarAlertBanner === 'head-overlay' &&\n (showAlertBanner || getSelectedRowModel().rows.length > 0)\n ? h(\n TableTr,\n {\n class: clsx(classes['banner-tr'], layoutMode?.startsWith('grid') && classes.grid),\n } as any,\n () =>\n h(\n TableTh,\n {\n class: clsx(\n classes['banner-th'],\n layoutMode?.startsWith('grid') && classes.grid,\n ),\n colspan: table.getVisibleLeafColumns().length,\n } as any,\n () => h(MVT_ToolbarAlertBanner, { table } as any),\n ),\n )\n : getHeaderGroups().map((headerGroup) =>\n h(MVT_TableHeadRow, {\n columnVirtualizer,\n headerGroup,\n key: headerGroup.id,\n table,\n } as any),\n ),\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n}\n\n.root-grid {\n display: grid;\n}\n","import { defineComponent, h, type PropType, unref } from 'vue'\n\nimport { darken, lighten, Table, useMantineColorScheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { useMVT_ColumnVirtualizer } from '../../hooks/useMVT_ColumnVirtualizer'\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableBody } from '../body/MVT_TableBody'\nimport { MVT_TableFooter } from '../footer/MVT_TableFooter'\nimport { MVT_TableHead } from '../head/MVT_TableHead'\nimport classes from './MVT_Table.module.css'\n\nexport const MVT_Table = defineComponent({\n name: 'MVTTable',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const columnVirtualizerRef = useMVT_ColumnVirtualizer(props.table)\n const { colorScheme } = useMantineColorScheme()\n\n return () => {\n const { table } = props\n\n const columnVirtualizer = columnVirtualizerRef?.value\n const {\n getFlatHeaders,\n options: { enableTableFooter, enableTableHead, layoutMode, mantineTableProps },\n } = table\n\n const tableProps = {\n highlightOnHover: true,\n horizontalSpacing: table.getState().density,\n verticalSpacing: table.getState().density,\n ...parseFromValuesOrFunc(mantineTableProps, { table }),\n ...attrs,\n }\n\n const columnSizeVars: Record<string, number> = (() => {\n const headers = getFlatHeaders()\n const colSizes: Record<string, number> = {}\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]\n const colSize = header.getSize()\n colSizes[`--header-${parseCSSVarId(header.id)}-size`] = colSize\n colSizes[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize\n }\n return colSizes\n })()\n\n const stripedColor = (tableProps as any).stripedColor\n\n const commonTableGroupProps = { columnVirtualizer, table }\n\n return h(\n Table,\n {\n ...tableProps,\n class: clsx(\n 'mvt-table',\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableProps as any).class,\n ),\n style: {\n ...columnSizeVars,\n '--mvt-striped-row-background-color': stripedColor,\n '--mvt-striped-row-hover-background-color': stripedColor\n ? unref(colorScheme) === 'dark'\n ? lighten(stripedColor, 0.08)\n : darken(stripedColor, 0.12)\n : undefined,\n ...(tableProps as any).style,\n },\n } as any,\n () => [\n enableTableHead && h(MVT_TableHead, commonTableGroupProps as any),\n h(MVT_TableBody, {\n ...commonTableGroupProps,\n tableProps,\n } as any),\n enableTableFooter && h(MVT_TableFooter, commonTableGroupProps as any),\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n max-width: 100%;\n overflow: auto;\n position: relative;\n}\n\n.root-sticky {\n max-height: clamp(350px, calc(100vh - calc(var(--mvt-top-toolbar-height) * 1px)), 9999px);\n}\n\n.root-fullscreen {\n max-height: calc(100vh - calc(var(--mvt-top-toolbar-height) * 1px)) !important;\n}\n","import { defineComponent, h, onMounted, type PropType, ref } from 'vue'\n\nimport { Box, LoadingOverlay } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditRowModal } from '../modals/MVT_EditRowModal'\nimport { MVT_Table } from './MVT_Table'\nimport classes from './MVT_TableContainer.module.css'\n\nexport const MVT_TableContainer = defineComponent({\n name: 'MVTTableContainer',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const totalToolbarHeight = ref(0)\n\n onMounted(() => {\n const { bottomToolbarRef, topToolbarRef } = props.table.refs\n const topToolbarHeight = topToolbarRef.value?.offsetHeight ?? 0\n const bottomToolbarHeight = bottomToolbarRef.value?.offsetHeight ?? 0\n totalToolbarHeight.value = topToolbarHeight + bottomToolbarHeight\n })\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n createDisplayMode,\n editDisplayMode,\n enableStickyHeader,\n mantineLoadingOverlayProps,\n mantineTableContainerProps,\n },\n refs: { tableContainerRef },\n } = table\n const { creatingRow, editingRow, isFullScreen, isLoading, showLoadingOverlay } = getState()\n\n const tableContainerProps = {\n ...parseFromValuesOrFunc(mantineTableContainerProps, { table }),\n ...attrs,\n }\n const loadingOverlayProps = parseFromValuesOrFunc(mantineLoadingOverlayProps, { table })\n\n const createModalOpen = createDisplayMode === 'modal' && creatingRow\n const editModalOpen = editDisplayMode === 'modal' && editingRow\n\n return h(\n Box,\n {\n ...tableContainerProps,\n style: {\n '--mvt-top-toolbar-height': `${totalToolbarHeight.value}`,\n ...(tableContainerProps as any)?.style,\n },\n class: clsx(\n 'mvt-table-container',\n classes.root,\n enableStickyHeader && classes['root-sticky'],\n isFullScreen && classes['root-fullscreen'],\n (tableContainerProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n tableContainerRef.value = node\n if ((tableContainerProps as any)?.ref) {\n ;(tableContainerProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n h(LoadingOverlay, {\n visible: isLoading || showLoadingOverlay,\n zIndex: 2,\n ...loadingOverlayProps,\n } as any),\n h(MVT_Table, { table } as any),\n (createModalOpen || editModalOpen) && h(MVT_EditRowModal, { open: true, table } as any),\n ],\n )\n }\n },\n})\n",":root {\n /* default background color for everything */\n --mvt-base-background-color: var(--mantine-color-body);\n\n @mixin light-root {\n --mvt-striped-row-background-color: darken(var(--mvt-base-background-color), 0.05);\n }\n @mixin dark-root {\n --mvt-striped-row-background-color: lighten(var(--mvt-base-background-color), 0.04);\n }\n\n /* row hover */\n @mixin light-root {\n --mvt-row-hover-background-color: darken(var(--mvt-base-background-color), 0.08);\n --mvt-striped-row-hover-background-color: darken(var(--mvt-striped-row-background-color), 0.12);\n }\n @mixin dark-root {\n --mvt-row-hover-background-color: lighten(var(--mvt-base-background-color), 0.08);\n --mvt-striped-row-hover-background-color: lighten(\n var(--mvt-striped-row-background-color),\n 0.08\n );\n }\n\n /* row selection */\n --mvt-selected-row-background-color: alpha(var(--mantine-primary-color-light), 0.8);\n @mixin light-root {\n --mvt-selected-row-hover-background-color: darken(\n var(--mantine-primary-color-light-hover),\n 0.05\n );\n }\n @mixin dark-root {\n --mvt-selected-row-hover-background-color: lighten(\n var(--mantine-primary-color-light-hover),\n 0.05\n );\n }\n\n /* row pinning */\n --mvt-pinned-row-background-color: var(--mvt-selected-row-background-color);\n --mvt-pinned-row-hover-background-color: var(--mvt-selected-row-hover-background-color);\n\n /* column pinning */\n @mixin light-root {\n --mvt-pinned-column-background-color: darken(var(--mvt-base-background-color), 0.01);\n }\n @mixin dark-root {\n --mvt-pinned-column-background-color: darken(var(--mvt-base-background-color), 0.05);\n }\n\n /* cell borders */\n --mvt-dragging-hovered-border-color: var(--mantine-primary-color-filled);\n --mvt-dragging-drag-border-color: var(--mantine-color-gray-7);\n --mvt-resize-column-border-color: var(--mantine-primary-color-filled);\n}\n\n.root {\n background-color: var(--mvt-base-background-color);\n overflow: hidden;\n transition: all 150ms ease-in-out;\n}\n","import { defineComponent, h, onBeforeUnmount, type PropType, Teleport, watch } from 'vue'\n\nimport { Paper, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_BottomToolbar } from '../toolbar/MVT_BottomToolbar'\nimport { MVT_TopToolbar } from '../toolbar/MVT_TopToolbar'\nimport { MVT_TableContainer } from './MVT_TableContainer'\nimport classes from './MVT_TablePaper.module.css'\n\nexport const MVT_TablePaper = defineComponent({\n name: 'MVTTablePaper',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const theme = useMantineTheme()\n\n // Lock body scroll while full screen so the scrollbar moves the table's own\n // container instead of the page behind it.\n const setBodyScrollLock = (locked: boolean) => {\n if (typeof document === 'undefined') return\n document.body.style.overflow = locked ? 'hidden' : ''\n }\n\n watch(\n () => props.table.getState().isFullScreen,\n (isFullScreen) => setBodyScrollLock(!!isFullScreen),\n )\n\n onBeforeUnmount(() => setBodyScrollLock(false))\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enableBottomToolbar,\n enableTopToolbar,\n mantinePaperProps,\n renderBottomToolbar,\n renderTopToolbar,\n },\n refs: { tablePaperRef },\n } = table\n const { isFullScreen } = getState()\n\n const tablePaperProps = {\n ...parseFromValuesOrFunc(mantinePaperProps, { table }),\n ...attrs,\n }\n\n const style = {\n zIndex: isFullScreen ? 200 : undefined,\n ...parseFromValuesOrFunc(tablePaperProps?.style as any, theme),\n ...(isFullScreen\n ? {\n border: 0,\n borderRadius: 0,\n bottom: 0,\n height: '100vh',\n left: 0,\n margin: 0,\n maxHeight: '100vh',\n maxWidth: '100vw',\n padding: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n width: '100vw',\n }\n : null),\n }\n\n const paper = h(\n Paper,\n {\n shadow: 'xs',\n withBorder: true,\n ...tablePaperProps,\n class: clsx(\n 'mvt-table-paper',\n classes.root,\n isFullScreen && 'mvt-table-paper-fullscreen',\n (tablePaperProps as any)?.class,\n ),\n ref: (el: any) => {\n tablePaperRef.value = (el?.$el ?? el) as HTMLDivElement\n if ((tablePaperProps as any)?.ref) {\n ;(tablePaperProps as any).ref.value = tablePaperRef.value\n }\n },\n style,\n } as any,\n () => [\n enableTopToolbar &&\n (parseFromValuesOrFunc(renderTopToolbar, { table }) ??\n h(MVT_TopToolbar, { table } as any)),\n h(MVT_TableContainer, { table } as any),\n enableBottomToolbar &&\n (parseFromValuesOrFunc(renderBottomToolbar, { table }) ??\n h(MVT_BottomToolbar, { table } as any)),\n ],\n )\n\n // Teleport to <body> while full screen so `position: fixed` is relative to\n // the viewport and lands in the root stacking context. Otherwise a\n // transformed / stacking-context ancestor (common in docs shells and app\n // layouts) traps it, leaving the table behind the page header/sidebar.\n // `disabled` keeps the same instance mounted when toggling in/out.\n return h(Teleport, { disabled: !isFullScreen, to: 'body' }, [paper])\n }\n },\n})\n","import { defineComponent, h, type PropType, type Slots, type SlotsType } from 'vue'\n\nimport { useMantineVueTable } from '../hooks/useMantineVueTable'\nimport { type MVT_RowData, type MVT_TableInstance, type MVT_TableOptions } from '../types'\nimport { type MVT_TableSlots, provideMVT_Slots } from './MVT_TableSlots'\nimport { MVT_TablePaper } from './table/MVT_TablePaper'\n\nexport const MantineVueTable = defineComponent({\n name: 'MantineVueTable',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<object>,\n default: undefined,\n },\n },\n slots: Object as SlotsType<MVT_TableSlots>,\n setup(props, { attrs, slots }) {\n const table =\n (props.table as MVT_TableInstance<MVT_RowData> | undefined) ??\n useMantineVueTable(attrs as unknown as MVT_TableOptions<MVT_RowData>)\n\n const rawSlots = slots as unknown as Slots\n provideMVT_Slots(rawSlots)\n\n ;(table as any).setMVTSlots?.(rawSlots)\n return () => h(MVT_TablePaper, { table } as any)\n },\n})\n"],"mappings":";;;;;;;;;;AAYA,IAAa,eAA0C,cACrD,UAAU,MAAM,UAAU,aAAa,WAAW,KAAK,UAAU;AAEnE,IAAa,wBACX,YAC2B;CAC3B,MAAM,oBAA4C,CAAC;CACnD,MAAM,kBAAkB,SAAiC;EACvD,KAAK,SAAS,QAAQ;GACpB,IAAI,IAAI,SACN,eAAe,IAAI,OAAO;QAE1B,kBAAkB,KAAK,GAAG;EAE9B,CAAC;CACH;CACA,eAAe,OAAO;CACtB,OAAO;AACT;AAEA,IAAa,kBAA6C,EACxD,YACA,mBAImC;CACnC,MAAM,EACJ,iBAAiB,CAAC,GAClB,sBACA,YAAY,CAAC,GACb,aAAa,CAAC,GACd,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,MACjC;CACJ,OAAO,WAAW,KAAK,QAAQ;EAG7B,IAAI,YAAY;EAEhB,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,YAAY,SAAS;EAEvD,IAAI,CAAC,UAAU,eAAe,UAAU,gBAAgB;EACxD,IAAI,UAAU,SAAS,QAAQ;GAC7B,UAAU,gBAAgB;GAE1B,UAAU,UAAU,eAAe;IACjC,YAAY,UAAU;IACtB;GACF,CAAC;EACH,OAAO,IAAI,UAAU,kBAAkB,QAAQ;GAE7C,IAAI,MAAM,QAAQ,UAAU,aAAa,GAAG;IAC1C,MAAM,SAAS,UAAU;IACzB,UAAU,iBACR,UACA,UACA,cACG,OAAO,KAAK,OAAO,eAAe,MAAM,UAAU,UAAU,SAAS,CAAC;GAC7E;GAGA,IAAI,OAAO,KAAK,SAAS,EAAE,SAAS,gBAAgB,UAAU,GAAG,GAAG;IAClE,UAAU,WAAW,UAAU,gBAAgB,UAAU,QAAQ,UAAU;IAC1E,UAA2C,YAAY,gBAAgB,UAAU;GACpF;GAGA,IAAI,OAAO,KAAK,UAAU,EAAE,SAAS,UAAU,SAAmB,GAEhE,UAAU,YAAY,WAAW,UAAU;EAE/C,OAAO,IAAI,UAAU,kBAAkB,WACrC,YAAY;GACV,GAAI;GACJ,GAAG;EACL;EAEF,OAAO;CACT,CAAC;AACH;AAEA,IAAa,iBACX,eACA,cACA,gBACyB;CACzB,IAAI,cAAc,UAAU,GAC1B,cAAc,IAAI,aAAa,YAAY,CAAC;CAE9C,MAAM,iBAAiB,CAAC,GAAG,WAAW;CACtC,eAAe,OACb,eAAe,QAAQ,aAAa,EAAE,GACtC,GACA,eAAe,OAAO,eAAe,QAAQ,cAAc,EAAE,GAAG,CAAC,EAAE,EACrE;CACA,OAAO;AACT;AAEA,IAAa,4BACX,cACqB;CACrB,MAAM,EAAE,kBAAkB;CAC1B,IAAI,kBAAkB,gBAAgB,OAAO;CAC7C,IAAI,eAAe,SAAS,OAAO,GAAG,OAAO;CAC7C,IAAI;EAAC;EAAY;EAAQ;CAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,OAAO;CACzE,OAAO;AACT;;;AC5GA,SAAgB,0BAAqD,EACnE,QACA,IACA,MACA,gBAMuB;CACvB,MAAM,EAAE,sBAAsB,yBAAyB,iBAAiB;CACxE,OAAO;EACL,GAAG;EACH,QAAQ,SAAS,aAAa,UAAW;EACzC;EACA,GAAG,0BAA0B;EAC7B;CACF;AACF;AAEA,IAAa,wBACX,iBACY;CACZ,MAAM,EAAE,kBAAkB,0BAA0B;CACpD,OAAO,CAAC,EAAE,oBAAoB,CAAC,uBAAuB,WAAW,QAAQ;AAC3E;AAEA,IAAa,qBACX,iBACY;CACZ,MAAM,EAAE,mBAAmB,sBAAsB;CACjD,OAAO,CAAC,EAAE,qBAAqB;AACjC;AAEA,IAAa,uBACX,iBACY;CACZ,MAAM,EACJ,iBACA,gBACA,mBACA,OAAO,EAAE,eACP;CAEJ,MAAM,qBAAqB,CAAC,CAAE,aAAqB,WAAW,OAAO;CACrE,OAAO,CAAC,EACN,mBACC,kBAAkB,UAAU,UAC7B,qBACA;AAEJ;AAEA,IAAa,wBACX,iBACY;CACZ,MAAM,EACJ,mBACA,iBACA,eACA,kBACA,OAAO,EAAE,kBACP;CACJ,OAAO,CAAC,EACN,oBACC,eAAe,sBAAsB,SACrC,iBAAiB,CAAC,SAAS,KAAK,EAAE,SAAS,mBAAmB,EAAE;AAErE;AAEA,IAAa,0BACX,iBACY,CAAC,CAAC,aAAa;AAE7B,IAAa,wBACX,iBACY,CAAC,CAAC,aAAa;AAE7B,IAAa,uBACX,iBACY,aAAa,eAAe;AAE1C,IAAa,8BACX,iBAEA;CACE,qBAAqB,YAAY,KAAK;CACtC,kBAAkB,YAAY,KAAK;CACnC,aAAa,0BAA0B,WACrC,qBAAqB,YAAY,KACjC;CACF,aAAa,yBAAyB,WACpC,oBAAoB,YAAY,KAChC;CACF,uBAAuB,YAAY,KAAK;CACxC,qBAAqB,YAAY,KAAK;AACxC,EAAE,OAAO,OAAO;AAElB,IAAa,+BACX,iBAEA;CACE,aAAa,0BAA0B,UACrC,qBAAqB,YAAY,KACjC;CACF,aAAa,yBAAyB,UACpC,oBAAoB,YAAY,KAChC;CACF,oBAAoB,YAAY,KAAK;AACvC,EAAE,OAAO,OAAO;AAElB,IAAa,4BACX,cACA,QAAQ,UACL;CACH,MAAM,EACJ,OAAO,EAAE,aAAa,wBAAwB,CAAC,QAC7C;CAEJ,MAAM,uBAAiC,2BAA2B,YAAY;CAC9E,MAAM,wBAAkC,4BAA4B,YAAY;CAEhF,MAAM,sBAAsB,qBAAqB,aAAa,OAAO,EAAE,KAAK,cAC1E,YAAY,SAAS,CACvB;CAEA,IAAI,sBAAsB,QACtB,sBACA,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,uBAAuB,GAAG,mBAAmB,CAAC,CAAC;CAE1E,sBAAsB,oBAAoB,QACvC,UAAU,CAAC,qBAAqB,SAAS,KAAK,KAAK,CAAC,sBAAsB,SAAS,KAAK,CAC3F;CAEA,OAAO;EAAC,GAAG;EAAsB,GAAG;EAAqB,GAAG;CAAqB;AACnF;;;;;;;;ACzHA,IAAa,cACX,MACA,UACa;CACb,IAAI,SAAS,QAAQ,SAAS,KAAA,KAAa,SAAS,OAClD,OAAO;CAET,IAAI,OAAO,SAAS,YAClB,OAAQ,KAAuC,KAAK;CAEtD,IAAI,OAAO,SAAS,UAClB,OAAO,EAAE,MAAmB,KAA4B;CAE1D,OAAO;AACT;AAEA,SAAgB,wBAA4E;CAC1F,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;GACd,IACA;IACE,GAAG;IACH,aAAa;GACf;EACN;EACA,UAAU,WAAW;EACrB,QAAQ,WAAW;CACrB;AACF;AAEA,IAAa,aACX,OACA,aACA,WAAW,IACX,QAAQ,GACR,SACA,aAEA,YACE,OACA,kBACA,eACE,OAAO,OACL,CAAC,GACD,GAAG,qBAAqB,MAAM,QAAQ,OAAO,EAAE,KAAK,SAAS,GAC1D,YAAY,GAAG,IAAI,GACtB,EAAE,CACJ,GACF,UACA,OACA,SACA,QACF;;;ACjFF,IAAa,yBACX,IACA,QACmB,cAAc,WAAW,GAAG,GAAG,IAAI;;;ACqFxD,IAAM,gBAAqC,OAAO,WAAW;;;;;AAM7D,IAAa,oBAAoB,UAAuB;CACtD,QAAQ,eAAe,KAAK;AAC9B;;;;;AAMA,IAAa,qBAA4B,OAAO,eAAe,CAAC,CAAC;;;;;;AAOjE,IAAa,wBACX,MACA,YACA,QACgB,OAAO,KAAK,GAAG,IAAI,sBAAsB,YAAmB,GAAG;;;AC5GjF,IAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,cAAc;CACd,OAAO;EACL,YAAY;GAAE,MAAM;GAAmD,UAAU;EAAK;EACtF,KAAK;GAAE,MAAM;GAA0C,UAAU;EAAK;EACtE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,WAAW,aAAa;EAC9B,aAAa;GACX,MAAM,EAAE,OAAO,QAAQ;GACvB,MAAM,IAAI,MAAM;GAEhB,MAAM,SACJ,MAAM,UAAU;IAAE;IAAK;GAAM,CAAC,KAC9B,qBAAqB,SAAS,oBAAoB,EAAE,0BAA0B;IAC5E;IACA;GACF,CAAC;GACH,OAAO,EACL,MACA;IACE,kBAAkB;IAClB,UACE,EAAE,0BAA0B,UACxB,iBACA,EAAE,0BAA0B,SAC1B,eACA,KAAA;IACR,cAAc;GAChB,SACM,CACJ,EACE,SACA;IAAE,OAAO,EAAE,aAAa;IAAY,WAAW;IAAM,cAAc;GAAK,SAEtE,EAAE,KAAK,QAAQ,YACb,EACE,YACA;IACE,cAAc,EAAE,aAAa;IAC7B,OAAO;IACP,MAAM;IACN,SAAS;IACT,GAAG;IACH,UAAU,MAAkB,EAAE,gBAAgB;GAChD,SACM,EAAE,EAAE,MAAM,QAAQ,CAC1B,CACF,CACJ,GACA,EAAE,KAAK,UAAU,EAAE,UAAU,MAAkB,EAAE,gBAAgB,EAAE,SAAS,CAC1E,EAAE,iBACA,EAAE,oBAAoB,WACtB,EACE,KAAK,MACL;IAAE,aAAa,EAAE,EAAE,MAAM,QAAQ;IAAG,SAAS,MAAM;GAAW,SACxD,EAAE,aAAa,IACvB,GACF,MACF,CAAC,CACH,CACF;EACF;CACF;AACF,CAAC;;;;AEjED,IAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,cAAc;CACd,OAAO;EACL,KAAK;GAAE,MAAM;GAA0C,UAAU;EAAK;EACtE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;EAClF,SAAS;GAAE,MAAM;GAAqC,SAAS;EAAO;CACxE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,KAAK,UAAU;GACvB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,IAAI,MAAM,QAAQ;GACxB,MAAM,WAAW,MAAM,aAAa,OAAO,IAAI;GAC/C,MAAM,UAAU,MAAM,YAAY,OAAO,IAAI;GAC7C,MAAM,eAAe;IACnB,IAAI,UAAU;KACZ,MAAM,QAAQ,sBAAsB;MAAE;MAAK;KAAM,CAAC;KAClD,MAAM,eAAe,IAAI;IAC3B,OAAO,IAAI,SAAS;KAClB,MAAM,QAAQ,qBAAqB;MAAE;MAAK;KAAM,CAAC;KACjD,MAAM,cAAc,IAAI;IAC1B;IACA,IAAI,eAAe,CAAC;GACtB;GACA,MAAM,aAAa;IACjB,OAAO,OAAO,MAAM,KAAK,cAAc,KAAK,EACzC,QAAQ,UAAU,IAAI,OAAO,OAAO,MAAM,MAAM,GAAG,IAAI,EAAE,EACzD,SAAS,UAAU;KAClB,IAAI,MAAM,UAAU,KAAA,KAAa,OAAO,OAAO,IAAI,cAAwB,MAAM,IAAI,GACnF,IAAI,aAAa,MAAM,QAAQ,MAAM;IACzC,CAAC;IACH,IAAI,UACF,MAAM,QAAQ,oBAAoB;KAChC,wBAAwB,MAAM,eAAe,IAAI;KACjD;KACA;KACA,QAAQ,IAAI;IACd,CAAC;SACE,IAAI,SACP,MAAM,QAAQ,mBAAmB;KAC/B,uBAAuB,MAAM,cAAc,IAAI;KAC/C;KACA;KACA,QAAQ,IAAI;IACd,CAAC;GACL;GACA,MAAM,UACJ,MAAM,YAAY,SACd,CACE,EAAE,SAAS;IAAE,OAAO,EAAE;IAAQ,cAAc;GAAK,SAC/C,EACE,YACA;IAAE,cAAc,EAAE;IAAQ,OAAO;IAAO,SAAS;IAAU,SAAS;GAAO,SACrE,EAAE,MAAM,QAAQ,MAAM,WAAW,CACzC,CACF,GACA,EAAE,SAAS;IAAE,OAAO,EAAE;IAAM,cAAc;GAAK,SAC7C,EACE,YACA;IACE,cAAc,EAAE;IAChB,OAAO;IACP,SAAS,MAAM;IACf,SAAS;IACT,SAAS;GACX,SACM,EAAE,MAAM,QAAQ,MAAM,gBAAgB,CAC9C,CACF,CACF,IACA,CACE,EAAE,QAAQ;IAAE,SAAS;IAAU,SAAS;GAAO,SAAS,EAAE,MAAM,GAChE,EACE,QACA;IAAE,SAAS,MAAM;IAAU,SAAS;IAAU,SAAS;GAAK,SACtD,EAAE,IACV,CACF;GACN,OAAO,EACL,KACA;IACE,GAAG;IACH,OAAO,KAAK,2BAA2B,qCAAQ,MAAM,MAAM,KAAK;IAChE,UAAU,MAAkB,EAAE,gBAAgB;GAChD,SACM,OACR;EACF;CACF;AACF,CAAC;;;ACxFD,IAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAA2C,UAAU;EAAK;EACxE,KAAK;GAAE,MAAM;GAA0C,UAAU;EAAK;EACtE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,WAAW,aAAa;EAC9B,aAAa;GACX,MAAM,EAAE,MAAM,KAAK,UAAU;GAC7B,MAAM,IAAI,MAAM;GAChB,MAAM,gBAAgB,MAAM,WAAW,SAAS,cAAc,EAAE;GAChE,MAAM,wBAAwB,SAAS,sBAAsB,EAAE;GAC/D,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,WAAW,MAAM,aAAa,OAAO,IAAI;GAC/C,MAAM,UAAU,MAAM,YAAY,OAAO,IAAI;GAC7C,MAAM,WACH,YAAY,EAAE,sBAAsB,SAAW,WAAW,EAAE,oBAAoB;GACnF,MAAM,aAAa,UAAsB;IACvC,MAAM,gBAAgB;IACtB,MAAM,cAAc,EAAE,GAAG,IAAI,CAAC;GAChC;GACA,IAAI,UAAU,OAAO,EAAE,uBAAuB;IAAE;IAAK;GAAM,CAAC;GAC5D,IAAI,eACF,OACE,MAAM,UAAU;IAAE;IAAM;IAAK;GAAM,CAAC,MACnC,SAAS,cAAc,EAAE,oBAAoB;IAAE;IAAM;IAAK;GAAM,CAAC;GAEtE,IAAI,CAAC,yBAAyB,sBAAsB,EAAE,eAAe,GAAG,GACtE,OAAO,EACL,SACA;IAAE,OAAO,EAAE,aAAa;IAAM,WAAW;IAAM,UAAU;IAAS,cAAc;GAAK,SAEnF,EACE,YACA;IACE,cAAc,EAAE,aAAa;IAC7B,OAAO;IACP,UAAU,CAAC,CAAC,MAAM,cAAc,MAAM,WAAW,OAAO,IAAI;IAC5D,MAAM;IACN,SAAS;IACT,SAAS;GACX,SACM,EAAE,EAAE,MAAM,QAAQ,CAC1B,CACJ;GACF,OAAO,wBACH,EAAE,mBAAmB;IAAE,YAAY;IAAW;IAAK;GAAM,CAAC,IAC1D;EACN;CACF;AACF,CAAC;;;ACtDD,IAAa,8BACX,iBACgC;CAChC,OAAO;EACL,OAAO,EAAE,MAAM,KAAK,YAAY,EAAE,+BAA+B;GAAE;GAAM;GAAK;EAAM,CAAQ;EAC5F,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;;;;;AEZA,IAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,OAAO;EACL,iBAAiB;GAAE,MAAM;GAAyC,gBAAgB,CAAC;EAAG;EACtF,WAAW;GAAE,MAAM;GAAkD,UAAU;EAAK;EACpF,aAAa;GAAE,MAAM;GAAkD,UAAU;EAAK;EACtF,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,iBAAiB,UAAU;GACnC,MAAM,QAAQ,gBAAgB,SAAS,MAAM,QAAQ,aAAa;GAClE,OAAO,EAAE,SAAS;IAAE;IAAO,WAAW;IAAM,cAAc;GAAK,SAC7D,EACE,YACA;IACE,cAAc;IACd,WAAW;IACX,GAAG;IACH,OAAO,KAAK,0BAA0B,oCAAQ,cAAc,gBAAgB,KAAK;IACjF,OAAO;IACP,MAAM;IACN,OAAO,KAAA;IACP,SAAS;IACT,UAAU,UAAsB;KAC9B,MAAM,gBAAgB;KACtB,gBAAgB,UAAU,KAAK;IACjC;IACA,WAAW,MAAM;IACjB,aAAa,MAAM;GACrB,SAEE,MAAM,UAAU,EAAE,MAAM,CAAC,KACzB,EAAE,MAAM,QAAQ,MAAM,oBAAoB,EAAE,MAAM,OAAO,CAAC,CAC9D,CACF;EACF;CACF;AACF,CAAC;;;ACvCD,IAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,cAAc;CACd,OAAO;EACL,KAAK;GAAE,MAAM;GAA0C,UAAU;EAAK;EACtE,QAAQ;GAAE,MAAM;GAAqD,UAAU;EAAK;EACpF,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,KAAK,UAAU;GACvB,MAAM,kBAAkB;IACtB,GAAG,sBAAsB,MAAM,QAAQ,2BAA2B;KAAE;KAAK;IAAM,CAAC;IAChF,GAAG;GACL;GACA,OAAO,EAAE,sBAAsB;IAC7B;IACA;IACA,cAAc,UAAqB;KACjC,gBAAgB,cAAc,KAAK;KACnC,IAAI,MAAM,OAAO,OAAO,MAAM,cAAc,aAAa,MAAM,OAAO,OAAO,GAAG,CAAC;KACjF,MAAM,eAAe,GAAG;IAC1B;IACA,YAAY,UAAqB;KAC/B,gBAAgB,YAAY,KAAK;KACjC,MAAM,eAAe,IAAI;KACzB,MAAM,cAAc,IAAI;IAC1B;GACF,CAAQ;EACV;CACF;AACF,CAAC;;;AC9BD,IAAa,2BACX,iBACgC;CAChC,OAAO;EACL,OAAO,EAAE,KAAK,QAAQ,YACpB,EAAE,4BAA4B;GAC5B;GACQ;GACR;EACF,CAAQ;EACV,MAAM;EACN,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;;;;;;;;AEhBA,IAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,WAAW,aAAa;EAC9B,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,IAAI,MAAM;GAChB,MAAM,iBAAiB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,SAAS;GAC3D,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,cAAc;IAClB,GAAG,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,CAAC;IACjE,GAAG;GACL;GACA,MAAM,WAAW,MAAM,qBAAqB;GAG5C,OAAO,EAAE,SAAS;IAAE,OADlB,YAAY,UAAU,WAAW,EAAE,aAAa,cAAc,EAAE,aAAa;IACpD,WAAW;IAAM,cAAc;GAAK,SAC7D,EACE,YACA;IACE,cAAc,EAAE,aAAa;IAC7B,OAAO;IACP,SAAS;IACT,GAAG;IACH,OAAO,KAAK,yBAAyB,mCAAQ,MAAM,YAAY,OAAO,MAAM,OAAO;IACnF,UAAU,MAAM,aAAc,CAAC,kBAAkB,CAAC,MAAM,qBAAqB;IAC7E,OAAO,KAAA;IACP,eAAe,MAAM,sBAAsB,CAAC,QAAQ;GACtD,SAEE,MAAM,UAAU;IAAE;IAAU;GAAM,CAAC,KACnC,EAAE,EAAE,MAAM,kBAAkB,EAC1B,OAAO,KACL,mCAAQ,SACR,WAAW,mCAAQ,KAAK,MAAM,sBAAsB,IAAI,mCAAQ,QAAQ,KAAA,CAC1E,EACF,CAAC,CACL,CACF;EACF;CACF;AACF,CAAC;;;AC9CD,IAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,cAAc;CACd,OAAO;EACL,MAAM;GAAE,MAAM;GAA2C,UAAU;EAAK;EACxE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,QAAQ,IAAS,MAAM,KAAK,SAAS,CAAC;EAC5C,aAAa;GACX,MAAM,EAAE,MAAM,UAAU;GACxB,MAAM,EAAE,QAAQ,QAAQ;GACxB,MAAM,MAAM,OAAO;GACnB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,WAAW,MAAM,aAAa,OAAO,IAAI;GAC/C,MAAM,UAAU,MAAM,YAAY,OAAO,IAAI;GAC7C,MAAM,MAAM;IAAE;IAAM;IAAQ;IAAK;GAAM;GACvC,MAAM,YAAY;IAChB,GAAG,sBAAsB,MAAM,QAAQ,2BAA2B,GAAG;IACrE,GAAG,sBAAsB,IAAI,2BAA2B,GAAG;IAC3D,GAAG;GACL;GACA,MAAM,cAAc;IAClB,GAAG,sBAAsB,MAAM,QAAQ,wBAAwB,GAAG;IAClE,GAAG,sBAAsB,IAAI,wBAAwB,GAAG;IACxD,GAAG;GACL;GACA,MAAM,SAAS,MAAM,UAAU,GAAG,KAAK,IAAI,OAAO,GAAG;GACrD,IAAI,QAAQ,OAAO;GACnB,MAAM,QAAQ,aAAkB;IAC9B,IAAI,aAAa,OAAO,MAAM;IAC9B,IAAI,UAAU,MAAM,eAAe,GAAG;SACjC,IAAI,SAAS,MAAM,cAAc,GAAG;GAC3C;GACA,MAAM,QAAQ,UAAsB;IAClC,UAAU,SAAS,KAAK;IACxB,KAAK,MAAM,KAAK;IAChB,MAAM,eAAe,IAAI;GAC3B;GACA,MAAM,UAAU,OAAY;IAC1B,MAAM,OAAQ,IAAI,KAAK,gBAAgB,OAAO,KAAK,IAAI,OAAO;IAC9D,IAAI,MAAM,MAAM,KAAK,cAAc,MAAM,KAAK,MAAM;GACtD;GACA,MAAM,QAAQ,CAAC,UAAU,OAAO,EAAE,SAC/B,WAAW,MAAM,QAAQ,oBAAoB,MAAM,QAAQ,eAC9D;GACA,MAAM,SAAS;IACb,UAAU,sBAAsB,IAAI,eAAe,GAAG,MAAM;IAC5D,OAAO,QAAQ,IAAI,SAAS,KAAA;IAC5B,MAAM,KAAK;IACX,aAAa,CAAC,QAAQ,IAAI,SAAS,KAAA;IACnC,OAAO,MAAM;IACb,SAAS,MAAM,QAAQ,oBAAoB,UAAU,aAAa;IAClE,UAAU,MAAkB,EAAE,gBAAgB;IAC9C,KAAK;GACP;GACA,IAAI,IAAI,gBAAgB,UACtB,OAAO,EAAE,QAAQ;IACf,GAAG;IACH,YAAY;IACZ,GAAG;IACH,WAAW,UAAe,WAAgB;KACxC,MAAM,QAAQ;KACd,YAAY,WAAW,UAAU,MAAM;IACzC;IACA,QAAQ;GACV,CAAQ;GACV,IAAI,IAAI,gBAAgB,gBACtB,OAAO,EAAE,aAAa;IACpB,GAAG;IACH,YAAY;IACZ,GAAG;IACH,WAAW,aAAoB;KAC7B,MAAM,QAAQ;KACd,YAAY,WAAW,QAAQ;IACjC;IACA,QAAQ;GACV,CAAQ;GACV,OAAO,EAAE,WAAW;IAClB,GAAG;IACH,OAAO,MAAM,SAAS;IACtB,GAAG;IACH,WAAW,UAA0B;KACnC,MAAM,QAAQ,OAAO,UAAU,WAAW,QAAS,MAAM,OAA4B;KACrF,UAAU,WAAW,KAAK;IAC5B;IACA,QAAQ;IACR,YAAY,UAAyB;KACnC,UAAU,YAAY,KAAK;KAC3B,IAAI,MAAM,QAAQ,SAAS,MAAM,KAAK,cAAc,MAAM,KAAK,KAAK,KAAK;IAC3E;GACF,CAAQ;EACV;CACF;AACF,CAAC;;;;;;;;;;;AE1FD,IAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,cAAc;CACd,OAAO;EACL,KAAK;GAAE,MAAM;GAA0C,UAAU;EAAK;EACtE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,YAAY,aAAa;EAC/B,MAAM,WAAW,aAAa;EAC9B,aAAa;GACX,MAAM,EAAE,KAAK,UAAU;GACvB,MAAM,IAAI,MAAM;GAChB,MAAM,cAAc;IAClB,GAAG,sBAAsB,EAAE,0BAA0B;KAAE;KAAK;IAAM,CAAC;IACnE,GAAG;GACL;GACA,MAAM,QAAQ,IACX,YAAY,EACZ,QAAQ,SAAS,KAAK,OAAO,UAAU,kBAAkB,MAAM,EAC/D,KAAK,SAAS,EAAE,uBAAuB;IAAE,KAAK,KAAK;IAAI;IAAM;GAAM,CAAC,CAAC;GACxE,MAAM,YAAY,IAAI,aAAa;GACnC,MAAM,WAAW,IAAI,cAAc;GACnC,MAAM,SACJ,CAAC,CAAC,SAAS,eACX,CAAC,CAAC,EAAE,oBAAoB;IAAE,wBAAwB;IAAO;IAAK;GAAM,CAAC;GACvE,MAAM,MAAM,UAAU,IAAI,UAAU,SAAS,EAAE,yBAAyB;GACxE,MAAM,QACJ,YAAY,UAAU,WAAW,EAAE,aAAa,WAAW,EAAE,aAAa;GAC5E,OAAO,EACL,SACA;IAAE,UAAU,CAAC,aAAa,CAAC;IAAQ;IAAO,WAAW;IAAM,cAAc;GAAK,SAE5E,EACE,YACA;IACE,cAAc,EAAE,aAAa;IAC7B,OAAO;IACP,UAAU,CAAC,aAAa,CAAC;IACzB,SAAS;IACT,GAAG;IACH,OAAO,KACL,qBACA,gCAAQ,MACR,gCAAQ,QAAQ,MAAM,QAAQ,UAC9B,YAAY,KACd;IACA,OAAO;KAAE,mBAAmB,GAAG,IAAI;KAAS,GAAG,YAAY;IAAM;IACjE,OAAO,KAAA;IACP,UAAU,UAAsB;KAC9B,MAAM,gBAAgB;KACtB,IAAI,eAAe;KACnB,YAAY,UAAU,KAAK;IAC7B;GACF,SAEE,MAAM,UAAU;IAAE;IAAK;GAAM,CAAC,KAC9B,EAAE,EAAE,MAAM,iBAAiB,EACzB,OAAO,KACL,6BACA,gCAAQ,SACR,CAAC,aAAa,CAAC,SAAS,gCAAQ,QAAQ,WAAW,gCAAQ,KAAK,KAAA,CAClE,EACF,CAAC,CACL,CACJ;EACF;CACF;AACF,CAAC;;;ACpED,IAAa,6BACX,iBACgC;CAChC,MAAM,EACJ,eACA,iBACA,mBACA,sBACA,mBACA,OAAO,EAAE,eACP;CAEJ,MAAM,aACJ,yBAAyB,SACpB,EACC,OAAO,QACT,IACA,KAAA;CAEN,OAAO;EACL,OAAO,EAAE,MAAM,QAAQ,KAAK,YAAY;GACtC,MAAM,oBAAoB;IAAE;IAAK;GAAM;GACvC,MAAM,gBAAgB,IAAI,SAAS;GACnC,IAAI,aAAa,sBAAsB,YAAY,IAAI,kBACrD,OAAO,EAAE,MAAM;IAAE,OAAO;IAAU,KAAK;GAAU,SAAgB;IAC/D,EAAE,kBAAkB,iBAAwB;IAC5C,EACE,SACA;KACE,OAAO,MAAM,UAAU,IAAI,gBAAiB,EAAE,UAAU;KACxD,WAAW;KACX,UAAU;IACZ,SACM,EAAE,QAAQ,IAAI,aAAoB,CAC1C;IACA,gBAAgB,EAAE,QAAQ,IAAI,cAAc,EAAE,IAAI;GACpD,CAAC;GAEH,OAAO,EAAE,UAAU,MAAM,CACvB,EAAE,kBAAkB,iBAAwB,GAC5C,OAAO,UAAU,cAAc;IAAE;IAAM;IAAQ;IAAK;GAAM,CAAC,CAC7D,CAAC;EACH;EACA,QAAQ,mBACH,EAAE,YAAY;GACb,OAAO,EAAE,MAAM,EAAE,OAAO,SAAS,SAAgB,CAC/C,EAAE,qBAAqB,EAAE,MAAM,CAAQ,GACvC,sBAAsB,WAClB,UACI,KAAK,oBAAoB,MAAM,UAAU,eAAe,EAAE,UAAU,MAAM,GAC1E,KAAK,IAAI,IACb,IACN,CAAC;EACH,IACA,KAAA;EACJ,2BAA2B;EAC3B,2BAA2B;EAC3B,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MACE,sBAAsB,WACjB,eAAe,QAAQ,MACxB,oBACE,kBACE,KACA,KACF;GACR;EACF,CAAC;CACH;AACF;;;AC7EA,IAAa,8BACX,iBACgC;CAChC,MAAM,EAAE,cAAc,yBAAyB;CAC/C,MAAM,EACJ,YAAY,EAAE,WAAW,eACvB,aAAa;CAEjB,OAAO;EACL,OAAO,EAAE,mBAAmB,GAAG,YAC3B,yBAAyB,WAAW,mBAAmB,WAAW,YAAY,IAAI,UAClF,KAAK;EACT,MAAM;EACN,cAAc,aAAa;EAC3B,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;;ACpBA,IAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,cAAc;CACd,OAAO;EACL,iBAAiB;GAAE,MAAM;GAAsC,UAAU;EAAK;EAC9E,KAAK;GAAE,MAAM;GAA0C,UAAU;EAAK;EACtE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,SAAS,IAAI,KAAK;EACxB,aAAa;GACX,MAAM,EAAE,KAAK,UAAU;GACvB,MAAM,SAAS,IAAI,YAAY;GAE/B,OAAO,EAAE,SAAS;IAAE,OADN,SAAS,MAAM,QAAQ,aAAa,QAAQ,MAAM,QAAQ,aAAa;IAC1D,WAAW;IAAM,QAAQ,OAAO;GAAM,SAC/D,EACE,YACA;IACE,cAAc,MAAM,QAAQ,aAAa;IACzC,OAAO;IACP,MAAM;IACN,OAAO;KAAE,QAAQ;KAAQ,OAAO;IAAO;IACvC,SAAS;IACT,GAAG;IACH,oBAAoB;KAClB,OAAO,QAAQ;IACjB;IACA,oBAAoB;KAClB,OAAO,QAAQ;IACjB;IACA,UAAU,UAAsB;KAC9B,OAAO,QAAQ;KACf,MAAM,gBAAgB;KACtB,IAAI,IAAI,SAAS,QAAQ,MAAM,eAAe;IAChD;GACF,SAEE,SACI,EAAE,MAAM,QAAQ,MAAM,KAAK,IAC3B,EAAE,MAAM,QAAQ,MAAM,YAAY,EAChC,OAAO,EACL,WAAW,UAAU,MAAM,QAAQ,0BAA0B,WAAW,MAAM,MAAM,oBAAoB,QAAQ,MAAM,EAAE,MAC1H,EACF,CAAC,CACT,CACF;EACF;CACF;AACF,CAAC;;;AC9CD,IAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,cAAc;CACd,OAAO;EACL,KAAK;GAAE,MAAM;GAA0C,UAAU;EAAK;EACtE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,KAAK,UAAU;GACvB,IAAI,CAAC,sBAAsB,MAAM,QAAQ,kBAAkB,GAAU,GAAG,OAAO;GAC/E,MAAM,SAAS;IAAE,GAAG;IAAO;IAAK;GAAM;GACtC,IAAI,MAAM,QAAQ,0BAA0B,oBAAoB,CAAC,IAAI,YAAY,GAC/E,OAAO,EACL,KACA,EACE,OAAO;IACL,SAAS;IACT,eAAe,MAAM,SAAS,EAAE,YAAY,OAAO,QAAQ;GAC7D,EACF,SACM,CACJ,EAAE,kBAAkB;IAAE,GAAG;IAAQ,iBAAiB;GAAM,CAAQ,GAChE,EAAE,kBAAkB;IAAE,GAAG;IAAQ,iBAAiB;GAAS,CAAQ,CACrE,CACF;GAEF,OAAO,EAAE,kBAAkB;IACzB,GAAG;IACH,iBAAiB,MAAM,QAAQ,0BAA0B,WAAW,WAAW;GACjF,CAAQ;EACV;CACF;AACF,CAAC;;;ACjCD,IAAa,8BACX,iBACgC;CAChC,OAAO;EACL,OAAO,EAAE,KAAK,YAAY,EAAE,2BAA2B;GAAE;GAAK;EAAM,CAAQ;EAC5E,MAAM;EACN,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;;ACdA,IAAM,WAAoC,MAAkB,MAAkB,aAAqB;CACjG,IAAI,MAAM;CACV,IAAI,KAAK,kBAAkB,WACzB,MAAM,aACJ,KAAK,kBAAkB,WACvB,KAAK,kBAAkB,SACzB;CAGF,OAAO,QAAQ,IAAI,WAAW,aAAa,MAAkB,MAAkB,QAAQ,IAAI;AAC7F;AAEA,IAAa,iBAAiB;CAC5B,GAAG;CACH,OAAA;AACF;AAEA,IAAa,mBACX,MACA,SAEA,KAAK,IAAI,GAAG,OAAO,OAAO,KAAK,iBAAiB,EAAE,KAAK,MAAW,EAAE,IAAI,CAAC,IACzE,KAAK,IAAI,GAAG,OAAO,OAAO,KAAK,iBAAiB,EAAE,KAAK,MAAW,EAAE,IAAI,CAAC;;;ACvB3E,IAAa,eACX,OACA,QACqB;CACrB,MAAM,EACJ,eACA,0BACA,aACA,UACA,YACA,SAAS,EACP,mBACA,kBACA,kBACA,kBACA,qBACA,4BAEA;CACJ,MAAM,EAAE,aAAa,eAAe,SAAS;CAE7C,MAAM,gBAAgB,iBAAiB,KAAK;CAE5C,IAAI,OAAyB,CAAC;CAC9B,IAAI,CAAC,eACH,OACE,CAAC,oBAAoB,uBAAuB,SAAS,QAAQ,IACzD,MACE,yBAAyB,EAAE,OAC3B,YAAY,EAAE,OAChB,cAAc;MACf;EAEL,OAAO,yBAAyB,EAAE,KAAK,MAAM,GAAG,MAAM,gBAAgB,GAAG,CAAC,CAAC;EAC3E,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,KAAK;GACjD,MAAM,QAAQ,WAAW,YAAY,WAAW;GAChD,OAAO,KAAK,MAAM,OAAO,QAAQ,WAAW,QAAQ;EACtD;EACA,IAAI,oBAAoB,CAAC,uBAAuB,SAAS,QAAQ,GAE/D,OAAO,KAAK,QAAQ,QAAQ,CAAC,IAAI,YAAY,CAAC;CAElD;CAEA,IAAI,oBAAoB,uBAAuB,SAAS,QAAQ,GAAG;EACjE,MAAM,qBAAqB,KAAK,QAAQ,QAAQ,IAAI,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,EAAE;EAElF,OAAO,CAAC,GAAG,WAAW,EAAE,QAAQ,QAAQ,CAAC,mBAAmB,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI;CACxF;CAEA,IAAI,wBAAwB,KAAA,KAAa,eAAe,sBAAsB,OAAO;EACnF,MAAM,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,IAChD,CAAC,sBACD,wBAAwB,QACtB,IACA,KAAK;EACX,OAAO;GAAC,GAAG,KAAK,MAAM,GAAG,gBAAgB;GAAG;GAAa,GAAG,KAAK,MAAM,gBAAgB;EAAC;CAC1F;CAEA,OAAO;AACT;AAEA,IAAa,kBAA6C,UAAoC;CAC5F,MAAM,EACJ,UACA,SAAS,EACP,iCACA,iBACA,iBACA,gBACA,oBAEA;CACJ,MAAM,EAAE,UAAU,mBAAmB,SAAS;CAE9C,OACE,CAAC,mBACD,CAAC,mBACD,CAAC,kBACD,CAAC,iBACD,mCACA,mBAAmB,WACnB,aAAa,QACb,CAAC,OAAO,OAAO,QAAQ,EAAE,KAAK,OAAO;AAEzC;AAEA,IAAa,oBAA+C,UAAoC;CAC9F,MAAM,EAAE,cAAc,YAAY,MAAM,SAAS;CAEjD,OAAO,eAAe,KAAK,KAAK,gBAAgB,CAAC,OAAO,OAAO,OAAO,EAAE,KAAK,OAAO;AACtF;AAEA,IAAa,oBAA+C,EAC1D,KACA,YAII;CACJ,MAAM,EACJ,SAAS,EAAE,yBACT;CAEJ,OACE,IAAI,cAAc,KACjB,sBAAsB,oBAAoB,GAAG,KAC5C,IAAI,oBAAoB,KACxB,IAAI,wBAAwB;AAElC;AAEA,IAAa,8BACiB,EAC1B,mBAAmB,GACnB,KACA,aAMD,OAAc,UAAoB;CACjC,MAAM,EACJ,UACA,SAAS,EACP,yBACA,yBACA,kBACA,kBACA,yBAEF,MAAM,EAAE,wBACN;CACJ,MAAM,EACJ,YAAY,EAAE,WAAW,eACvB,SAAS;CAEb,MAAM,mBAAmB,mBAAmB,IAAI,WAAW;CAE3D,MAAM,uBAAuB,iBAAiB;EAAE;EAAK;CAAM,CAAC;CAG5D,IAAI,eAAe,SAAS,CAAC,oBAAoB;CAEjD,MAAM,gBAAgB,IAAI,IAAY,CAAC,IAAI,EAAE,CAAC;CAG9C,IACE,2BACA,2BACC,MAAqB,YACtB,kBAAkB,UAAU,MAC5B;EACA,MAAM,OAAO,YAAY,OAAO,IAAI;EAEpC,MAAM,YAAY,KAAK,WAAW,MAAM,EAAE,OAAO,kBAAkB,KAAK;EAExE,IAAI,cAAc,IAAI;GACpB,MAAM,qBAAqB,iBAAiB;IAC1C,KAAK,OAAO;IACZ;GACF,CAAC;GAED,MAAM,eAAe,mBAAmB;GACxC,MAAM,CAAC,OAAO,OACZ,YAAY,eAAe,CAAC,WAAW,YAAY,IAAI,CAAC,cAAc,SAAS;GAIjF,IAAI,yBAAyB,oBAC3B,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,KAAK;IACjC,KAAK,GAAG,eAAe,CAAC,oBAAoB;IAC5C,cAAc,IAAI,KAAK,GAAG,EAAE;GAC9B;EAEJ;CACF;CAGA,kBAAkB,QAAQ,IAAI;CAG9B,IAAI,IAAI,oBAAoB,KAAK,IAAI,wBAAwB,GAC3D,IAAI,SAAS,SAAS,MAAM,EAAE,eAAe,KAAK,CAAC;CAGrD,IAAI,oBAAoB,uBAAuB,SAAS,QAAQ,GAC9D,cAAc,SAAS,UAAU;EAE/B,MAD6B,OAAO,KACpC,EAAe,IACb,CAAC,uBACG,uBAAuB,SAAS,QAAQ,IACtC,WACA,QACF,KACN;CACF,CAAC;AAEL;AAEF,IAAa,2BACiB,EAAE,aAC7B,OAAc,OAAiB,aAAuB;CACrD,MAAM,EACJ,SAAS,EAAE,kBAAkB,uBAAuB,iBACpD,MAAM,EAAE,wBACN;CAEJ,IAAI,kBAAkB,SAAS,UAC7B,MAAM,sBAAsB,SAAU,MAAM,OAA4B,OAAO;MAE/E,MAAM,0BAA0B,SAAU,MAAM,OAA4B,OAAO;CAErF,IAAI,oBAAoB,uBAAuB,SAAS,QAAQ,GAC9D,MAAM,cAAc;EAAE,QAAQ,CAAC;EAAG,KAAK,CAAC;CAAE,CAAC;CAE7C,kBAAkB,QAAQ;AAC5B;;;ACpNF,IAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,cAAc;CACd,OAAO;EACL,kBAAkB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAC7C,KAAK;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EAC1E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,IAAI,eAAe;EACnB,aAAa;GACX,MAAM,EAAE,KAAK,UAAU;GACvB,MAAM,IAAI,MAAM;GAChB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,YAAY,CAAC;GACnB,MAAM,UAAU,YACZ,EAAE,kBAAkB,SAClB,MAAM,yBAAyB,IAC/B,MAAM,qBAAqB,IAC7B,iBAAiB;IAAE;IAAK;GAAM,CAAC;GACnC,MAAM,gBAAgB;IACpB,GAAI,YACA,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,CAAC,IAChE,sBAAsB,EAAE,4BAA4B;KAAE;KAAK;IAAM,CAAC;IACtE,GAAG;GACL;GACA,MAAM,QACJ,cAAc,UACb,YAAY,EAAE,aAAa,kBAAkB,EAAE,aAAa;GAC/D,MAAM,YAAY,MACd,2BAA2B;IAAE,kBAAkB,MAAM;IAAkB;IAAK;GAAM,CAAC,IACnF,wBAAwB,EAAE,MAAM,CAAC;GACrC,MAAM,SAAS;IACb,cAAc;IACd;IACA,UAAU,MAAM,aAAc,OAAO,CAAC,IAAI,aAAa,KAAM,KAAK,OAAO;IACzE,MAAM,MAAM,YAAY,OAAO,OAAO;IACtC,GAAG;IACH,OAAO,KAAA;IACP,WAAW,UAAiB;KAC1B,MAAM,gBAAgB;KACtB,IAAK,MAAc,aAAa,KAAA,GAC7B,MAAe,WAAW;KAE7B,UAAU,KAAK;KACf,cAAc,WAAW,KAAK;IAChC;IACA,UAAU,UAAsB;KAC9B,MAAM,gBAAgB;KACtB,eAAe,MAAM;KACrB,cAAc,UAAU,KAAK;IAC/B;GACF;GACA,MAAM,UACJ,EAAE,sBAAsB,WACpB,EAAE,QAAQ,MAAa,IACvB,EAAE,sBAAsB,WAAW,EAAE,4BAA4B,QAC/D,EAAE,OAAO,MAAa,IACtB,EAAE,UAAU;IACV,eACE,CAAC,WAAW,YACR,MAAM,sBAAsB,IAC5B,KAAK,kBAAkB,KAAK,IAAI,oBAAoB;IAC1D,GAAG;GACL,CAAQ;GAChB,OAAO,EAAE,SAAS;IAAE;IAAO,WAAW;IAAM,cAAc;GAAK,SAC7D,EAAE,QAAQ,MAAM,OAAO,CACzB;EACF;CACF;AACF,CAAC;;;AC1ED,IAAa,6BACX,iBACgC;CAChC,MAAM,EAAE,yBAAyB,oBAAoB;CAErD,OAAO;EACL,OAAO,EAAE,kBAAkB,KAAK,YAC9B,EAAE,oBAAoB;GAAE;GAAkB;GAAK;EAAM,CAAQ;EAC/D,MAAM;EACN,QACE,mBAAmB,2BACd,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,CAAQ,IACrD,KAAA;EACN,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM,kBAAkB,KAAK;GAC7B;EACF,CAAC;CACH;AACF;;;ACxBA,IAAa,qBAAqB,EAAE,GAAG,eAAe;;;ACGtD,IAAM,SACJ,KACA,UACA,aACA,YACG;CACH,MAAM,WAAW,SAAS,IAAI,SAAS,QAAQ,GAAG,aAAuB,EACvE,WAAW,SAAS,QACtB,CAAC;CACD,QAAQ,QAAQ;CAChB,OAAO,SAAS;AAClB;AAEA,MAAM,cAAc,QAAa,CAAC;AAElC,IAAM,YACJ,KACA,IACA,gBAEA,IACG,SAA0B,EAAE,GAC3B,SAAS,EACV,YAAY,EACZ,KAAK,EACL,SAAS,YAAY,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;AAEzD,SAAS,cAAc,QAAa,CAAC;AAErC,IAAM,cACJ,KACA,IACA,gBAEA,IACG,SAA0B,EAAE,GAC3B,SAAS,EACV,YAAY,EACZ,KAAK,EACL,WAAW,YAAY,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;AAE3D,WAAW,cAAc,QAAa,CAAC;AAEvC,IAAM,YACJ,KACA,IACA,gBAEA,IACG,SAA0B,EAAE,GAC3B,SAAS,EACV,YAAY,EACZ,KAAK,EACL,SAAS,YAAY,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;AAEzD,SAAS,cAAc,QAAa,CAAC;AAErC,IAAM,UACJ,KACA,IACA,gBAEA,IAAI,SAA0B,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,KAAK,MACjE,aAAa,SAAS,EAAE,YAAY,EAAE,KAAK;AAE7C,OAAO,cAAc,QAAa,CAAC;AAEnC,IAAM,aACJ,KACA,IACA,gBAEA,IAAI,SAA0B,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,KAAK,MACjE,YAAY,SAAS,EAAE,YAAY,EAAE,KAAK;AAE5C,UAAU,cAAc,QAAa,CAAC;AAEtC,IAAM,eACJ,KACA,IACA,gBAEA,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,SAA0B,EAAE,CAAC,IAC7D,CAAC,IAAI,SAA0B,EAAE,IAAI,CAAC,cACtC,IAAI,SAA0B,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,KAAK,IACjE,aAAa,SAAS,EAAE,YAAY,EAAE,KAAK;AAEjD,YAAY,cAAc,QAAa,CAAC;AAExC,IAAM,wBACJ,KACA,IACA,gBACG,OAAO,KAAK,IAAI,WAAW,KAAK,YAAY,KAAK,IAAI,WAAW;AAErE,qBAAqB,cAAc,QAAa,CAAC;AAEjD,IAAM,YACJ,KACA,IACA,gBAEA,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,SAA0B,EAAE,CAAC,IAC7D,CAAC,IAAI,SAA0B,EAAE,IAAI,CAAC,cACtC,IAAI,SAA0B,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,KAAK,IACjE,aAAa,SAAS,EAAE,YAAY,EAAE,KAAK;AAEjD,SAAS,cAAc,QAAa,CAAC;AAErC,IAAM,qBACJ,KACA,IACA,gBACG,OAAO,KAAK,IAAI,WAAW,KAAK,SAAS,KAAK,IAAI,WAAW;AAElE,kBAAkB,cAAc,QAAa,CAAC;AAE9C,IAAM,WACJ,KACA,IACA,kBAEE,CAAC,IAAI,KAAA,CAAS,EAAY,SAAS,aAAa,EAAE,KAAK,YAAY,KAAK,IAAI,aAAa,EAAE,OAC3F,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,MACxF,CAAC,IAAI,KAAA,CAAS,EAAY,SAAS,aAAa,EAAE,KACnD,SAAS,KAAK,IAAI,aAAa,EAAE;AAErC,QAAQ,cAAc,QAAa,CAAC;AAEpC,IAAM,oBACJ,KACA,IACA,kBAEE,CAAC,IAAI,KAAA,CAAS,EAAY,SAAS,aAAa,EAAE,KAClD,qBAAqB,KAAK,IAAI,aAAa,EAAE,OAC7C,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,MACxF,CAAC,IAAI,KAAA,CAAS,EAAY,SAAS,aAAa,EAAE,KACnD,kBAAkB,KAAK,IAAI,aAAa,EAAE;AAE9C,iBAAiB,cAAc,QAAa,CAAC;AAE7C,IAAM,SACJ,KACA,IACA,iBACG,CAAC,IAAI,SAA0B,EAAE,GAAG,SAAS,EAAE,KAAK;AAEzD,MAAM,cAAc,QAAa,CAAC;AAElC,IAAM,YACJ,KACA,IACA,iBACG,CAAC,CAAC,IAAI,SAA0B,EAAE,GAAG,SAAS,EAAE,KAAK;AAE1D,SAAS,cAAc,QAAa,CAAC;AAErC,IAAa,gBAAgB;CAC3B,GAAG;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAgB,sBAAsB,cAAgC,QAA0B;CAC9F,IAAI,CAAC,QACH,OAAO;CAGT,OAAO,aAAa,SADC,OAAO,GAAG,YAAY,IAAI,OAAO,MAAM,CAAC,QACP;AACxD;;;ACvJA,IAAa,oBAAoB;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;ACpEA,IAAa,sBAAwC;CACnD,SAAS;CACT,KAAK;CACL,QAAQ;CACR,kBAAkB;CAClB,kBAAkB;CAClB,aAAa;CACb,aAAa;CACb,gBAAgB;CAChB,WAAW;CACX,aAAa;CACb,MAAM;CACN,UAAU;CACV,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,eAAe;CACf,MAAM;CACN,QAAQ;CACR,WAAW;CACX,mBAAmB;CACnB,sBAAsB;CACtB,uBAAuB;CACvB,eAAe;CACf,wBAAwB;CACxB,gBAAgB;CAChB,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB,cAAc;CACd,oBAAoB;CACpB,aAAa;CACb,mBAAmB;CACnB,4BAA4B;CAC5B,qBAAqB;CACrB,sBAAsB;CACtB,+BAA+B;CAC/B,gBAAgB;CAChB,yBAAyB;CACzB,YAAY;CACZ,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,cAAc;CACd,cAAc;CACd,kBAAkB;CAClB,MAAM;CACN,eAAe;CACf,WAAW;CACX,SAAS;CACT,YAAY;CACZ,KAAK;CACL,KAAK;CACL,MAAM;CACN,oBAAoB;CACpB,gBAAgB;CAChB,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,aAAa;CACb,MAAM;CACN,QAAQ;CACR,qCAAqC;CACrC,QAAQ;CACR,SAAS;CACT,gBAAgB;CAChB,iBAAiB;CACjB,iBAAiB;CACjB,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,QAAQ;CACR,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;CACjB,kBAAkB;CAClB,iBAAiB;CACjB,OAAO;CACP,UAAU;AACZ;;;ACvEA,IAAa,oBAAoB;CAC/B,eAAe;CACf,SAAS;CACT,SAAS;CACT,MAAM;AACR;AAEA,IAAa,2BAA2B;CACtC,eAAe;CACf,mBAAmB;CACnB,qBAAqB;CACrB,sBAAsB;CACtB,oBAAoB;CACpB,sBAAsB;CACtB,eAAe;CACf,oBAAoB;CACpB,gBAAgB;CAChB,cAAc;CACd,gBAAgB;CAChB,eAAe;AACjB;;;;AAKA,IAAa,uBAGX,eACG;CACH,IAAI,EACF,gBACA,oBAAoB,OACpB,0BAA0B,aAC1B,uBACA,mBAAmB,YACnB,oBAAoB,SACpB,eACA,sBACA,kBAAkB,SAClB,0BAA0B,MAC1B,sBAAsB,MACtB,sBAAsB,MACtB,sBAAsB,MACtB,uBAAuB,OACvB,sBAAsB,OACtB,uBAAuB,OACvB,4BACA,sBAAsB,MACtB,kBAAkB,MAClB,iBACA,sBAAsB,OACtB,gCAAgC,MAChC,gBAAgB,MAChB,yBAAyB,MACzB,qBAAqB,MACrB,kCAAkC,MAClC,iBAAiB,OACjB,iCAAiC,OACjC,eAAe,MACf,0BAA0B,MAC1B,kBAAkB,MAClB,mBAAmB,MACnB,mBAAmB,OACnB,qBAAqB,OACrB,yBACA,kBAAkB,MAClB,gBAAgB,MAChB,qBAAqB,OACrB,oBAAoB,MACpB,kBAAkB,MAClB,+BAA+B,MAC/B,mBAAmB,MACnB,WACA,OACA,YACA,cACA,iBACA,gBACA,kBACA,eACA,wBAAwB,WACxB,wBAAwB,SACxB,sBAAsB,OACtB,uBAAuB,SACvB,uBAAuB,SACvB,qBAAqB,UACrB,6BAA6B,OAC7B,0BAA0B,OAC1B,uBAAuB,UACvB,wBAAwB,UACxB,gBAAgB,QAChB,YACA,GAAG,SACD;CAEJ,MAAM,YAAY,aAAa;CAE/B,QAAQ;EAAE,GAAG;EAAmB,GAAG;CAAM;CACzC,eAAe;EACb,GAAG;EACH,GAAG;CACL;CACA,iBAAiB;EAAE,GAAG;EAAoB,GAAG;CAAe;CAC5D,YAAY;EAAE,GAAG;EAAe,GAAG;CAAU;CAC7C,aAAa;EAAE,GAAG;EAAgB,GAAG;CAAW;CAChD,gBAAgB;EAAE,GAAG;EAAmB,GAAG;CAAc;CACzD,uBAAuB;EACrB,GAAG;EACH,GAAG;CACL;CAEA,IAAI,CAAC,uBACH,wBAAwB,UAAU,IAAI,SAAS;CAGjD,aAAa,eAAe,uBAAuB,iBAAiB;CACpE,IAAI,eAAe,eAAe,2BAA2B,6BAC3D,aAAa;CAGf,IAAI,yBACF,qBAAqB;CAGvB,IAAI,qBAAqB,SAAS,qBAAqB,KAAA,GACrD,mBAAmB;CAGrB,IAAI,CAAC,KAAK,MAAM,QAAQ;EACtB,kBAAkB;EAClB,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;CAClB;CAEA,MAAM,iBAAiB;EACrB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB,gBAAgB;EACjC,qBAAqB,mBAAmB,iBAAiB,oBAAoB,IAAI,KAAA;EACjF,wBAAwB,sBAAsB,uBAAuB,IAAI,KAAA;EACzE,oBAAoB,sBAAsB,mBAAmB,IAAI,KAAA;EACjE,wBAAwB,sBAAsB,uBAAuB,IAAI,KAAA;EACzE,qBACE,uBAAuB,sBAAsB,gBACzC,oBAAoB,IACpB,KAAA;EACN,oBAAoB,iBAAiB,mBAAmB,IAAI,KAAA;EAC5D,uBAAuB,mBAAmB,sBAAsB,IAAI,KAAA;EACpE,mBAAmB,gBAAgB,kBAAkB,IAAI,KAAA;EACzD,aAAa,QAAQ,KAAK;EAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;CACL;CAEA,OAAO,eAAe,gBAAgB,QAAQ;EAC5C,cAAc;EACd,YAAY;EACZ,WAAW,WAAW;CACxB,CAAC;CACD,OAAO,eAAe,gBAAgB,WAAW;EAC/C,cAAc;EACd,YAAY;EACZ,WAAW,WAAW;CACxB,CAAC;CAED,OAAO;AACT;;;ACrPA,IAAM,gBAAgB;CACpB,UAAU;CACV,OAAO;EACL,UAAU;EACV,SAAS;EACT,OAAO;CACT;AACF;AAEA,IAAa,6BACX,iBACgC;CAChC,OAAO;EACL,GAAG,0BAA0B;GAC3B,IAAI;GACJ,MAAM;GACN;EACF,CAAC;EACD,MAAM;EACN,GAAG;EACH,2BAA2B;EAC3B,6BAA6B;EAC7B,2BAA2B;CAC7B;AACF;;;;;;ACpBA,IAAa,kBAA6C,UAAoC;CAC5F,MAAM,EACJ,qBACA,0BACA,UACA,SAAS,EAAE,kBAAkB,kBAAkB,eAC7C;CAEJ,MAAM,oBAAoB,IAAY;CACtC,MAAM,cAAc,IAAY;CAChC,MAAM,cAAc,IAAsB,SAAS,EAAE,OAAO;CAE5D,gBAAgB;EACd,IAAI,OAAO,WAAW,aACpB,kBAAkB,QAAQ,SAAS,KAAK,MAAM;CAElD,CAAC;CAGD,YACQ,SAAS,EAAE,eAChB,iBAAiB;EAChB,IAAI,OAAO,WAAW,aACpB,IAAI,cAAc;GAChB,YAAY,QAAQ,SAAS,KAAK,sBAAsB,EAAE;GAC1D,SAAS,KAAK,MAAM,SAAS;EAC/B,OAAO;GACL,SAAS,KAAK,MAAM,SAAS,kBAAkB;GAC/C,IAAI,CAAC,YAAY,OAAO;GAExB,OAAO,SAAS;IACd,UAAU;IACV,KAAK,KAAM,YAAY;GACzB,CAAC;EACH;CAEJ,GACA,EAAE,OAAO,OAAO,CAClB;CAGA,YACQ,MAAM,QAAQ,QAAQ,SAC3B,qBAAqB;EACpB,IAAI,qBAAqB,SAAS,EAAE,YAAY,QAC9C,MAAM,eAAe,yBAAyB,MAAM,OAAc,CAAC;CAEvE,GACA,EAAE,OAAO,OAAO,CAClB;CAGA,YACQ,YAAY,yBAAyB,EAAE,KAAK,SACjD,kBAAkB;EACjB,MAAM,EAAE,WAAW,YAAY,kBAAkB,SAAS;EAC1D,IAAI,CAAC,oBAAoB,aAAa,eAAe;EACrD,MAAM,EAAE,WAAW,aAAa;EAChC,MAAM,uBAAuB,YAAY;EACzC,IAAI,wBAAwB,iBAAiB,uBAAuB,GAClE,MAAM,aAAa,KAAK,KAAK,gBAAgB,QAAQ,IAAI,CAAC;CAE9D,GACA,EAAE,OAAO,OAAO,CAClB;CAGA,YACQ,SAAS,EAAE,UAChB,YAAY;EACX,IAAI,QAAQ,QACV,YAAY,QAAQ;CAExB,GACA,EAAE,OAAO,OAAO,CAClB;CAGA,YACQ,SAAS,EAAE,oBACX;EACJ,IAAI,CAAC,eAAe,KAAK,GAAG;EAC5B,IAAI,SAAS,EAAE,cACb,MAAM,WAAW,CAAC,CAAC;OAEnB,MAAM,iBAAiB,YAAY,SAAS,CAAC,CAAC;CAElD,GACA,EAAE,OAAO,OAAO,CAClB;CAGA,YACQ,SAAS,EAAE,eACX;EACJ,IAAI,oBAAoB,oBAAoB,GAC1C,iBAAiB;GAEf,MAAM,YAAY,MAAM,CAAC;EAC3B,GAAG,GAAG;CAEV,GACA,EAAE,OAAO,OAAO,CAClB;AACF;;;AChEA,IAAM,gBAAmB,QAAsB,YAA4B;CACzE,OAAO,QAAQ,mBAAmB,WAAY,QAA2B,OAAO,KAAK,IAAI;AAC3F;;;;;;;;;AAUA,IAAa,wBACX,wBAC6B;CAE7B,MAAM,oBAAoB,IAAmB,IAAI;CACjD,MAAM,mBAAmB,IAA2B,IAAI;CACxD,MAAM,gBAAgB,IAAsC,CAAC,CAAC;CAC9D,MAAM,kBAAkB,IAAsC,CAAC,CAAC;CAChE,MAAM,iBAAiB,IAA6B,IAAI;CACxD,MAAM,oBAAoB,IAA2B,IAAI;CACzD,MAAM,oBAAoB,IAA0C,CAAC,CAAC;CACtE,MAAM,gBAAgB,IAA2B,IAAI;CACrD,MAAM,gBAAgB,IAA2B,IAAI;CACrD,MAAM,eAAe,IAAoC,IAAI;CAC7D,MAAM,iBAAiB,IAAoC,IAAI;CAG/D,MAAM,eAA+C,oBAAoB,gBAAgB,CAAC;CAC1F,aAAa,cACX,aAAa,eACb,yBAAyB;EACvB,GAAG;EACH,OAAO;GACL,GAAG,oBAAoB;GACvB,GAAG,oBAAoB;EACzB;CACF,CAAoC;CACtC,aAAa,iBAAiB,oBAAoB,kBAAkB;CAEpE,oBAAoB,eAAe;CAEnC,MAAM,WAAW,WAAoC,CAAC,CAAC;CACtD,oBAA6B,YAAY;CAE1C,MAAM,cAAc,WAAkC,aAAa,eAAe,IAAI;CACtF,MAAM,kBAAkB,IACtB,OAAO,OACL,CAAC,GACD,GAAG,qBAAqB,oBAAoB,OAAiC,EAAE,KAAK,SAAS,GAC1F,YAAY,GAAG,IACd,IAAI,oBAAoB,WACnB,IAAI,SAAS,QAAQ,WACrB,IAAI,YACL,cAAc,kBAAkB,YAAY,GAAG,MAC/C,yBAAyB,GAAG,EACpC,EAAE,CACJ,CACF;CACA,MAAM,cAAc,IAA0B,aAAa,eAAe,CAAC,CAAC;CAC5E,MAAM,mBAAmB,WACvB,aAAa,oBAAqB,CAAC,CACrC;CACA,MAAM,UAAU,IAAsB,cAAc,WAAW,IAAI;CACnE,MAAM,iBAAiB,WAAqC,aAAa,kBAAkB,IAAI;CAC/F,MAAM,cAAc,WAAkC,aAAa,eAAe,IAAI;CACtF,MAAM,cAAc,WAAmC,aAAa,eAAe,IAAI;CACvF,MAAM,aAAa,WAAkC,aAAa,cAAc,IAAI;CACpF,MAAM,iBAAiB,IAAsB,aAAa,kBAAkB,OAAO;CACnF,MAAM,WAAW,IAAuB,aAAa,YAAY,CAAC,CAAC;CACnE,MAAM,gBAAgB,WACpB,aAAa,iBAAiB,IAChC;CACA,MAAM,aAAa,WAA2C,aAAa,cAAc,IAAI;CAC7F,MAAM,eAAe,IAAa,cAAc,gBAAgB,KAAK;CACrE,MAAM,aAAa,IACjB,cAAc,cAAc;EAAE,WAAW;EAAG,UAAU;CAAG,CAC3D;CACA,MAAM,kBAAkB,IAAa,cAAc,mBAAmB,KAAK;CAC3E,MAAM,oBAAoB,IAAa,cAAc,qBAAqB,KAAK;CAC/E,MAAM,mBAAmB,IAAa,cAAc,oBAAoB,KAAK;CAC7E,MAAM,sBAAsB,IAAa,cAAc,uBAAuB,KAAK;CAInF,MAAM,YAAY,oBAAoB,SAAS,CAAC;CAChD,MAAM,QAAQ,EAAE,GAAG,UAAU;CAC7B,MAAM,eACJ,KACA,WACG;EACH,IAAI,EAAE,OAAO,YACX,OAAO,eAAe,OAAO,KAAK;GAAE,YAAY;GAAM,KAAK;EAAO,CAAC;CAEvE;CACA,YAAY,yBAAyB,gBAAgB,KAAK;CAC1D,YAAY,qBAAqB,YAAY,KAAK;CAClD,YAAY,0BAA0B,iBAAiB,KAAK;CAC5D,YAAY,qBAAqB,YAAY,KAAK;CAClD,YAAY,iBAAiB,QAAQ,KAAK;CAC1C,YAAY,wBAAwB,eAAe,KAAK;CACxD,YAAY,qBAAqB,YAAY,KAAK;CAClD,YAAY,qBAAqB,YAAY,KAAK;CAClD,YAAY,oBAAoB,WAAW,KAAK;CAChD,YAAY,wBAAwB,eAAe,KAAK;CACxD,YAAY,kBAAkB,SAAS,KAAK;CAC5C,YAAY,uBAAuB,cAAc,KAAK;CACtD,YAAY,oBAAoB,WAAW,KAAK;CAChD,YAAY,sBAAsB,aAAa,KAAK;CACpD,YAAY,oBAAoB,WAAW,KAAK;CAChD,YAAY,yBAAyB,gBAAgB,KAAK;CAC1D,YAAY,2BAA2B,kBAAkB,KAAK;CAC9D,YAAY,0BAA0B,iBAAiB,KAAK;CAC5D,YAAY,6BAA6B,oBAAoB,KAAK;CAElE,oBAAoB,QAAQ;CAI5B,MAAM,uBAAuB;CAG7B,IAAI,kBAA0C,CAAC;CAC/C,MAAM,UAAU,eAAuC;EACrD,IACE,qBAAqB,MAAM,iBAAiB,oBAC5C,qBAAqB,MAAM,kBAC3B,qBAAqB,MAAM,aAE3B,OAAO;EAET,MAAM,WAAW,eAAe;GAC9B,YAAY;IACV,GAAI;KACF,qBAAqB,oBAAoB,KACvC,2BAA2B,oBAAoB;KACjD,kBAAkB,oBAAoB,KAAK,wBAAwB,oBAAoB;KACvF,qBAAqB,oBAAoB,KACvC,2BAA2B,oBAAoB;KACjD,oBAAoB,oBAAoB,KACtC,0BAA0B,oBAAoB;KAChD,uBAAuB,oBAAoB,KACzC,0BAA0B,oBAAoB;KAChD,qBAAqB,oBAAoB,KACvC,2BAA2B,oBAAoB;IACnD,EAAE,OAAO,OAAO;IAChB,GAAG,qBAAqB;IACxB,GAAI,CACF,oBAAoB,oBAAoB,KACtC,0BAA0B,oBAAoB,CAClD,EAAE,OAAO,OAAO;GAClB;GACA,cAAc;EAChB,CAAC;EACD,kBAAkB;EAClB,OAAO;CACT,CAAC;CAGD,MAAM,OAAO,eAAwB;EACnC,MAAM,IAAI,qBAAqB;EAC/B,QAAQ,EAAE,aAAa,EAAE,kBAAkB,CAAC,oBAAoB,KAAK,SACjE,CAAC,GAAG,MAAM,KAAK,IAAI,EAAE,WAAW,UAAU,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,UACzD,OAAO,OACL,CAAC,GACD,GAAG,qBAAqB,QAAQ,KAAK,EAAE,KAAK,SAAS,GAClD,YAAY,GAAG,IAAI,KACtB,EAAE,CACJ,CACF,IACA,oBAAoB;CAC1B,CAAC;CAED,MAAM,EAAE,SAAS,UAAU,MAAM,OAAO,GAAG,gBAAgB;CAE3D,MAAM,QAAQ,YAAmB;EAC/B,sBAAsB,YACpB,aAAa,aAAa,OAAO;EACnC,2BAA2B,YACzB,aAAa,kBAAkB,OAAO;EACxC,mBAAmB,YAA4C,aAAa,UAAU,OAAO;EAC7F,qBAAqB,YACnB,aAAa,YAAY,OAAO;EAClC,GAAI;EACJ,IAAI,UAAU;GACZ,OAAO,QAAQ;EACjB;EACA,IAAI,OAAO;GACT,OAAO,KAAK;EACd;EACA,gBAAgB,qBAAqB,YAAY,eAAe,SAAS;CAC3E,CAAQ;CAER,MAAM,OAAO;EACX;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CAEA,MAAM,kBAAkB,QAAQ;EAC9B,IAAI,OAAO;EACX,IAAI,QAAQ,MACV,OAAO,UAAU,KAAK;EAExB,IAAI,sBAAsB,qBACxB,qBAAqB,oBAAoB,IAA6B;OAEtE,aAAa,aAAa,IAA6B;CAE3D;CACA,MAAM,qBACJ,qBAAqB,6BACnB,YAAY,aAAa,iBAAiB,OAAO;CACrD,MAAM,aACJ,qBAAqB,qBAAqB,YAAY,aAAa,SAAS,OAAO;CACrF,MAAM,oBACJ,qBAAqB,4BACnB,YAAY,aAAa,gBAAgB,OAAO;CACpD,MAAM,iBACJ,qBAAqB,yBAAyB,YAAY,aAAa,aAAa,OAAO;CAC7F,MAAM,iBACJ,qBAAqB,yBAAyB,YAAY,aAAa,aAAa,OAAO;CAC7F,MAAM,gBACJ,qBAAqB,wBAAwB,YAAY,aAAa,YAAY,OAAO;CAC3F,MAAM,oBACJ,qBAAqB,4BACnB,YAAY,aAAa,gBAAgB,OAAO;CACpD,MAAM,mBACJ,qBAAqB,2BACnB,YAAY,aAAa,eAAe,OAAO;CACnD,MAAM,gBACJ,qBAAqB,wBAAwB,YAAY,aAAa,YAAY,OAAO;CAC3F,MAAM,kBACJ,qBAAqB,0BAA0B,YAAY,aAAa,cAAc,OAAO;CAC/F,MAAM,qBACJ,qBAAqB,6BACnB,YAAY,aAAa,iBAAiB,OAAO;CACrD,MAAM,uBACJ,qBAAqB,+BACnB,YAAY,aAAa,mBAAmB,OAAO;CACvD,MAAM,sBACJ,qBAAqB,8BACnB,YAAY,aAAa,kBAAkB,OAAO;CACtD,MAAM,yBACJ,qBAAqB,iCACnB,YAAY,aAAa,qBAAqB,OAAO;CAIxD,MAAe,YAAY;CAC3B,MAAe,eAAe,UAAmC;EAChE,SAAS,QAAQ;CACnB;CAEA,eAAe,KAAK;CAEpB,OAAO;AACT;;;ACvTA,IAAa,sBACX,iBAC6B,qBAAqB,oBAAoB,YAAY,CAAC;;;;;;;AECrF,IAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,cAAc;CACd,OAAO;EACL,cAAc;GAAE,MAAM;GAAS,UAAU;EAAK;EAC9C,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,OAAO,iBAAiB;GAChC,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,gBAAgB;IACpB,GAAG,sBAAsB,MAAM,QAAQ,sBAAsB;KAAE;KAAc;IAAM,CAAC;IACpF,GAAG;GACL;GAEA,OAAO,EACL,UACA;IACE,OAAO,KAAK,+BAAQ,UAAU,gBAAgB,+BAAQ,eAAe;IACrE,UAAU,QAAQ,MAAM,YAAY,MAAM,gBAAgB;GAC5D,SAEE,EAAE,UAAU;IACV,UAAU;IACV,aAAa;IACb,cAAc;IACd,QAAQ;IACR,OAAO;IACP,GAAG;GACL,CAAQ,CACZ;EACF;CACF;AACF,CAAC;;;;;;;;AElCD,IAAM,qBAAqB;CAAC;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;AAAG,EAAE,IAAI,MAAM;AACtE,IAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,cAAc;CACd,OAAO;EACL,UAAU;GAAE,MAAM;GAAsC,SAAS;EAAS;EAC1E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,IAAI,MAAM;GAChB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,EAAE,YAAY,GAAG,WAAW,OAAO,MAAM;GAC/C,MAAM,kBAAkB;IACtB,GAAG,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,CAAC;IAC5D,GAAG;GACL;GACA,MAAM,gBAAgB,EAAE,YAAY,MAAM,yBAAyB,EAAE,KAAK;GAC1E,MAAM,gBAAgB,KAAK,KAAK,gBAAgB,QAAQ;GACxD,MAAM,gBAAgB,YAAY;GAClC,MAAM,eAAe,KAAK,IAAI,gBAAgB,UAAU,aAAa;GACrE,MAAM,YAAY,gBAAgB;GAClC,MAAM,EACJ,qBAAqB,oBACrB,kBAAkB,MAClB,YAAY,WACZ,GAAG,SACD;GACJ,MAAM,WACJ,EAAE,0BAA0B,UACxB,EAAE,YAAY;IACZ,OAAO;IACP,OAAO,YAAY;IACnB;IACA,GAAG;IACH,WAAW,SAAiB,MAAM,aAAa,OAAO,CAAC;GACzD,CAAQ,IACR,EAAE,0BAA0B,YAC1B,CACE,EACE,MACA,YAEE,GAAG,iBAAiB,IAAI,KAAK,gBAAgB,GAAG,eAAe,EAAE,GAAG,aAAa,eAAe,EAAE,GAAG,EAAE,aAAa,GAAG,GAAG,cAAc,eAAe,GAC3J,GACA,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;IACzB,aACE,EACE,YACA;KACE,cAAc,EAAE,aAAa;KAC7B,OAAO;KACP,UAAU,aAAa;KACvB,SAAS;KACT,eAAe,MAAM,aAAa,CAAC;IACrC,SACM,EAAE,EAAE,MAAM,mBAAmB,CACrC;IACF,EACE,YACA;KACE,cAAc,EAAE,aAAa;KAC7B,OAAO;KACP,UAAU,aAAa;KACvB,SAAS;KACT,eAAe,MAAM,aAAa,YAAY,CAAC;IACjD,SACM,EAAE,EAAE,MAAM,eAAe,CACjC;IACA,EACE,YACA;KACE,cAAc,EAAE,aAAa;KAC7B,OAAO;KACP,UAAU,gBAAgB;KAC1B,SAAS;KACT,eAAe,MAAM,aAAa,YAAY,CAAC;IACjD,SACM,EAAE,EAAE,MAAM,gBAAgB,CAClC;IACA,aACE,EACE,YACA;KACE,cAAc,EAAE,aAAa;KAC7B,OAAO;KACP,UAAU,gBAAgB;KAC1B,SAAS;KACT,eAAe,MAAM,aAAa,KAAK,IAAI,GAAG,gBAAgB,CAAC,CAAC;IAClE,SACM,EAAE,EAAE,MAAM,oBAAoB,CACtC;GACJ,CAAC,CACH,IACA;GACR,OAAO,EACL,KACA,EACE,OAAO,KACL,wBACA,mCAAQ,MACR,MAAM,aAAa,SACjB,EAAE,gCACF,CAAC,MAAM,oBACP,mCAAQ,kBACZ,EACF,SACM,CACJ,mBACE,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,CAC5B,EAAE,MAAM,EAAE,IAAI,YAAY,SAAS,EAAE,aAAa,WAAW,GAC7D,EAAE,QAAQ;IACR,eAAe;IACf,mBAAmB;IACnB,OAAO,mCAAQ;IACf,MAAM;IACN,OAAO,SAAS,SAAS;IACzB,WAAW,UAAyB,SAAS,MAAM,YAAY,CAAC,KAAK;GACvE,CAAQ,CACV,CAAC,GACH,QACF,CACF;EACF;CACF;AACF,CAAC;;;;;;;;;;;AE5HD,IAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,cAAc;CACd,OAAO;EACL,kBAAkB;GAAE,MAAM;GAAS,SAAS;EAAM;EAClD,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,IAAI,MAAM;GAChB,MAAM,aAAa;IACjB,GAAG,sBAAsB,EAAE,gCAAgC,EAAE,MAAM,CAAC;IACpE,GAAG;GACL;GACA,MAAM,aAAa,sBAAsB,EAAE,qCAAqC,EAAE,MAAM,CAAC;GACzF,MAAM,QAAQ,EAAE,YAAY,MAAM,yBAAyB,EAAE,SAAS;GACtE,MAAM,gBAAgB,EAAE,mBACpB,OAAO,OAAO,MAAM,YAAY,EAAE,OAAO,OAAO,EAAE,SAClD,MAAM,4BAA4B,EAAE,KAAK;GAC7C,MAAM,gBAAgB,gBAClB,EAAE,MAAM;IAAE,OAAO;IAAU,KAAK;GAAK,SAAS,CAC5C,EAAE,aAAa,oCACZ,QAAQ,mBAAmB,OAAO,aAAa,CAAC,EAChD,QAAQ,cAAc,OAAO,KAAK,CAAC,GACtC,EACE,QACA;IACE,MAAM;IACN,SAAS;IACT,UAAU,UAAiB,wBAAwB,EAAE,MAAM,CAAC,EAAE,OAAO,OAAO,IAAI;GAClF,SACM,EAAE,aAAa,cACvB,CACF,CAAC,IACD;GACJ,MAAM,eAAe,MAAM,SAAS,SAChC,EAAE,MAAM,YAAY,CAClB,GAAG,EAAE,aAAa,UAAU,IAC5B,GAAG,MAAM,SAAS,SAAS,UAAU,UAAU,CAC7C,QAAQ,IAAI,EAAE,aAAa,SAAS,MACpC,EACE,OACA;IACE,KAAK;IACL,OAAO,sCAAQ;IACf,SAAS;IACT,GAAG;IACH,cAAc,EACZ,YACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,eAAe,MAAM,UAAU,QAAQ,EAAE,eAAe;IAC1D,SACM,EAAE,EAAE,MAAM,OAAO,EAAE,OAAO,EAAE,WAAW,aAAa,EAAE,CAAC,CAC/D;GACF,SACM,GAAG,MAAM,UAAU,QAAQ,EAAE,UAAU,OAAO,EACtD,CACF,CAAC,CACH,CAAC,IACD;GACJ,MAAM,SACJ,MAAM,UAAU;IAAE;IAAc;IAAe;GAAM,CAAC,KACtD,EAAE,kCAAkC;IAAE;IAAc;IAAe;GAAM,CAAC;GAC5E,OAAO,EACL,UACA;IACE,UAAU,MAAM,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACxD,oBAAoB,MAAM,mBAAmB,MAAM;GACrD,SAEE,EACE,OACA;IACE,OAAO;IACP,MAAM;IACN,GAAG;IACH,OAAO,KACL,sCAAQ,OACR,MAAM,oBAAoB,CAAC,EAAE,8BAA8B,sCAAQ,kBACnE,CAAC,MAAM,oBACL,EAAE,+BAA+B,YACjC,sCAAQ,iBACV,WAAW,KACb;GACF,SAEE,UACA,EACE,MACA,EACE,OAAO,KACL,sCAAQ,kBACR,EAAE,+BAA+B,kBAAkB,sCAAQ,iBAC3D,MAAM,OACR,EACF,SACM,CACJ,EAAE,sBACF,EAAE,mBACF,EAAE,+BAA+B,iBAC7B,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAC/B,MACJ,EAAE,OAAO,YAAY;IAAC,WAAW;IAAU;IAAe;GAAY,CAAC,CACzE,CACF,CACJ,CACJ;EACF;CACF;AACF,CAAC;;;;;;;AErHD,IAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,YACQ;GACJ,MAAM,QAAQ,MAAM,MAAM,SAAS;GACnC,OAAO;IAAC,MAAM,MAAM,QAAQ;IAAgB,MAAM;IAAgB,MAAM;GAAQ;EAClF,IACC,CAAC,gBAAgB,gBAAgB,cAAc;GAC9C,IAAI,MAAM,MAAM,QAAQ,OAAO,wBAAwB,KAAA,GACrD,MAAM,MAAM,uBACV,CAAC,CAAC,kBACA,CAAC,CAAC,kBACF,eAAe,UAAU,mBAAmB,SAC5C,CAAC,SAAS,SAAS,eAAe,EAAE,CACxC;EAEJ,GACA,EAAE,MAAM,KAAK,CACf;EACA,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,QAAQ,MAAM,SAAS;GAC7B,OAAO,EAAE,YAAY;IAAE,SAAS,MAAM;IAAqB,YAAY;GAAO,SAC5E,EACE,MACA;IACE,OAAO,KACL,wBACA,mCAAQ,MACR,MAAM,eAAe,OAAO,eAAe,mCAAQ,OACrD;IACA,GAAG;IACH,mBAAmB,MAAM,iBAAiB,EAAE,IAAI,YAAY,CAAC;GAC/D,SAEE,EAAE,MAAM,YACN,MAAM,QAAQ,aAAa,cAAc,QACvC,YACA,OAAO,MAAM,gBAAgB,WAAW,UAAU,EAAE,CACtD,CACF,CACJ,CACF;EACF;CACF;AACF,CAAC;;;;;;;;;;;;;AGvCD,IAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,cAAc;CACd,OAAO,EACL,OAAO;EACL,MAAM;EACN,UAAU;CACZ,EACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,WAAW,IAAI,KAAK;EAC1B,gBAAgB;GACd,IAAI,OAAO,WAAW,eAAe,CAAC,OAAO,YAAY;GACzD,MAAM,MAAM,OAAO,WAAW,oBAAoB;GAClD,SAAS,QAAQ,IAAI;GACrB,IAAI,iBAAiB,WAAW,MAAO,SAAS,QAAQ,EAAE,OAAQ;EACpE,CAAC;EAED,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,EACJ,UACA,SAAS,EACP,kBACA,2BACA,oBACA,4BACA,yBACA,oCAEF,MAAM,EAAE,uBACN;GACJ,MAAM,EAAE,iBAAiB,SAAS;GAElC,MAAM,eAAe;IACnB,GAAG,sBAAsB,2BAA2B,EAAE,MAAM,CAAC;IAC7D,GAAG;GACL;GAEA,MAAM,mBAAmB,SAAS,SAAS,CAAC,CAAC;GAE7C,OAAO,EACL,KACA;IACE,GAAG;IACH,OAAO,KACL,sBACA,iCAAQ,MACR,6BAAc,0BACd,gBAAgB,iCAAQ,oBACvB,cAAsB,KACzB;IACA,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,IAAI,MAAM;MACR,iBAAiB,QAAQ;MACzB,IAAK,cAAsB,KACxB,aAAsB,IAAI,QAAQ;KAEvC;IACF;GACF,SACM;IACJ,EAAE,iBAAiB;KAAE,cAAc;KAAO;IAAM,CAAQ;IACxD,+BAA+B,YAC7B,EAAE,wBAAwB;KAAE;KAAkB;IAAM,CAAQ;IAC9D,CAAC,QAAQ,QAAQ,EAAE,SAAS,2BAA2B,EAAE,KACvD,EAAE,qBAAqB,EAAE,MAAM,CAAQ;IACzC,EAAE,KAAK,EAAE,OAAO,iCAAQ,4BAA4B,SAAgB,CAClE,sBAAsB,kCAAkC,EACtD,MACF,CAAC,KAAK,EAAE,MAAM,GACd,EACE,KACA,EACE,OAAO,KACL,iCAAQ,wBACR,oBAAoB,iCAAQ,mCAC9B,EACF,SAEE,oBACA,CAAC,QAAQ,QAAQ,EAAE,SAAS,sBAAsB,EAAE,KACpD,EAAE,qBAAqB;KAAE,UAAU;KAAU;IAAM,CAAQ,CAC/D,CACF,CAAC;GACH,CACF;EACF;CACF;AACF,CAAC;;;;AE7FD,IAAa,oBAAoB,MAAoD;CACnF;EAAE,SAAS;EAAO,OAAO,EAAE;EAAa,QAAQ;EAAS,QAAQ;CAAI;CACrE;EAAE,SAAS;EAAO,OAAO,EAAE;EAAgB,QAAQ;EAAY,QAAQ;CAAI;CAC3E;EAAE,SAAS;EAAO,OAAO,EAAE;EAAkB,QAAQ;EAAc,QAAQ;CAAI;CAC/E;EAAE,SAAS;EAAM,OAAO,EAAE;EAAgB,QAAQ;EAAY,QAAQ;CAAI;CAC1E;EAAE,SAAS;EAAO,OAAO,EAAE;EAAc,QAAQ;EAAU,QAAQ;CAAI;CACvE;EAAE,SAAS;EAAM,OAAO,EAAE;EAAiB,QAAQ;EAAa,QAAQ;CAAI;CAC5E;EAAE,SAAS;EAAO,OAAO,EAAE;EAAe,QAAQ;EAAW,QAAQ;CAAI;CACzE;EAAE,SAAS;EAAM,OAAO,EAAE;EAAwB,QAAQ;EAAoB,QAAQ;CAAI;CAC1F;EAAE,SAAS;EAAO,OAAO,EAAE;EAAmB,QAAQ;EAAe,QAAQ;CAAI;CACjF;EACE,SAAS;EACT,OAAO,EAAE;EACT,QAAQ;EACR,QAAQ;CACV;CACA;EAAE,SAAS;EAAO,OAAO,EAAE;EAAgB,QAAQ;EAAY,QAAQ;CAAI;CAC3E;EAAE,SAAS;EAAM,OAAO,EAAE;EAAyB,QAAQ;EAAqB,QAAQ;CAAI;CAC5F;EAAE,SAAS;EAAO,OAAO,EAAE;EAAa,QAAQ;EAAS,QAAQ;CAAI;CACrE;EAAE,SAAS;EAAO,OAAO,EAAE;EAAgB,QAAQ;EAAY,QAAQ;CAAK;AAC9E;AACA,IAAM,aAAa;CAAC;CAAW;CAAoB;AAAe;AAClE,IAAM,aAAa,CAAC,SAAS,UAAU;AACvC,IAAM,WAAW;CAAC;CAAmB;CAAkB;AAAa;AACpE,IAAM,gBAAgB;CAAC;CAAgB;CAAc;AAAO;AAE5D,IAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,SAAS,KAAA;EAAU;EAChF,UAAU;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACvE,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,OAAO,WAAW;GAC1B,MAAM,IAAI,MAAM;GAChB,MAAM,SAAS,QAAQ;GACvB,MAAM,MAAM,QAAQ;GACpB,MAAM,UAAU,QAAQ,eAAe;GACvC,IAAI,UAAU,KAAK,2BAA2B,EAAE;GAChD,IAAI,cAAc,SAAS,KAAK,iBAAiB,EAAE,GACjD,UAAU,CAAC,GAAG,YAAY,GAAI,WAAW,CAAC,CAAE,EAAE,QAC3C,GAAG,GAAG,MAAM,WAAW,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAC1D;GACF,MAAM,UAAU,iBAAiB,EAAE,YAAY,EAAE,QAAQ,UACvD,MACI,YAAY,KAAA,KAAa,SAAS,SAAS,MAAM,MAA0B,KAC1E,CAAC,EAAE,2BACF,EAAE,wBAAwB,SAAS,MAAM,MAA0B,MACrE;IAAC;IAAY;IAAS;GAAY,EAAE,SAAS,MAAM,MAAM,CAC/D;GACA,IAAI,QAAQ,GAAG,EAAE,GAAG,SAAS,QAAQ,QAAQ,SAAS,GAAG,UAAU;GACnE,MAAM,UAAU,WAA6B;IAC3C,MAAM,WAAW,KAAK,aAAa;IACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,MAAM,kBAAkB,MAAM;SACjD,IAAI,WAAW,UAAU;KAC5B,MAAM,oBAAoB,SAAS;MAAE,GAAG;OAAM,OAAO,KAAK;KAAO,EAAE;KACnE,IAAI,WAAW,SAAS,MAAM;UACxB,YAAY,OAAO,CAAC,WAAW,SAAS,QAAQ,GAAG,OAAO,eAAe,GAAG;WAC3E,IAAI,SAAS,OAAO,eAAe,OAAO;KAAA,OAC1C,IAAI,KAAK,kBAAkB,kBAAkB,SAAS,SAAS,MAAM;UACtE,OAAO,YAAY,YAAa,SAAuB,QACzD,OAAO,eAAe,CAAC,CAAC;WACrB,IAAI,SAAS,OAAO,eAAe,OAAO;KAAA,OAC1C,IACL,cAAc,SAAS,KAAK,iBAAiB,EAAE,KAC/C,WAAW,SAAS,MAAM,GAE1B,IACE,CAAC,MAAM,QAAQ,OAAO,KACrB,CAAC,QAAQ,OAAO,MAAM,MAAM,EAAE,KAAK,CAAC,WAAW,SAAS,QAAQ,GAEjE,OAAO,eAAe,CAAC,IAAI,EAAE,CAAC;UAC3B,OAAO,eAAe,OAAO;UAC7B,IAAI,MAAM,QAAQ,OAAO,GAAG,OAAO,eAAe,EAAE;UACtD,IAAI,YAAY,OAAO,WAAW,SAAS,QAAQ,GACtD,OAAO,eAAe,KAAA,CAAS;UAC5B,OAAO,eAAe,OAAO;IACpC;IACA,MAAM,WAAW;GACnB;GACA,MAAM,SACJ,MAAM,UAAU;IACd,uBAAuB;IACvB,oBAAoB;IACpB;IACA;GACF,CAAC,MACA,MACI,IAAI,kCAAkC;IAC7B;IACR,uBAAuB;IACvB,oBAAoB;IACpB;GACF,CAAC,KACD,EAAE,kCAAkC;IAC1B;IACR,uBAAuB;IACvB,oBAAoB;IACpB;GACF,CAAC,IACD,EAAE,kCAAkC;IAClC,uBAAuB;IACvB,oBAAoB;IACpB;GACF,CAAC;GACP,MAAM,WAAW,UAAU,MAAM,IAAI,YAAY,MAAM,SAAS,EAAE;GAClE,OAAO,EACL,KAAK,UACL,YAEE,UACA,QAAQ,SAAS,UAAU,CACzB,EACE,KAAK,MACL;IACE,OAAO,MAAM,WAAW,WAAW,SAAS,KAAA;IAC5C,aAAa,EAAE,QAAQ,EAAE,OAAO,oCAAQ,OAAO,GAAG,MAAM,MAAM;IAC9D,OAAO,MAAM;IACb,eAAe,OAAO,MAAM,MAA0B;GACxD,SACM,MAAM,KACd,GACA,MAAM,UAAU,EAAE,KAAK,OAAO,IAAI,IACpC,CAAC,CACL;EACF;CACF;AACF,CAAC;;;;;;;AEpID,IAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,cAAc,IAAI,MAAM,MAAM,SAAS,EAAE,gBAAgB,EAAE;EACjE,MAAM,CAAC,aAAa,kBAClB,aACA,MAAM,MAAM,QAAQ,kBAAkB,MAAM,GAC9C;EACA,MAAM,YAAY,UAAU,MAAM,MAAM,gBAAgB,SAAS,KAAA,CAAS,CAAC;EAC3E,YACQ,MAAM,MAAM,SAAS,EAAE,eAC5B,UAAU;GACT,YAAY,QAAQ,SAAS;EAC/B,CACF;EACA,MAAM,cAAc;GAClB,YAAY,QAAQ;GACpB,MAAM,MAAM,gBAAgB,KAAA,CAAS;EACvC;EACA,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,IAAI,MAAM;GAChB,MAAM,aAAa;IACjB,GAAG,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,CAAC;IACjE,GAAG;GACL;GAEA,OAAO,EACL,UACA;IAAE,OAAO,yCAAQ;IAAU,UAAU,MAAM,SAAS,EAAE;GAAiB,SACjE,CACJ,EAAE,2BACA,EAAE,MAAM,EAAE,cAAc,KAAK,SAAS,CACpC,EAAE,KAAK,QAAQ,YACb,EACE,YACA;IACE,cAAc,EAAE,aAAa;IAC7B,OAAO;IACP,MAAM;IACN,SAAS;GACX,SACM,EAAE,EAAE,MAAM,UAAU,CAC5B,CACF,GACA,EAAE,sBAAsB;IAAE;IAAO,UAAU;GAAM,CAAC,CACpD,CAAC,GACH,EAAE,WAAW;IACX,aAAa,CAAC,EAAE,0BAA0B,EAAE,EAAE,MAAM,UAAU,IAAI,KAAA;IAClE,IAAI;IACJ,IAAI,EAAE,yBAAyB,SAAS,OAAO,KAAA;IAC/C,aAAa,EAAE,aAAa;IAC5B,OAAO,YAAY;IACnB,SAAS;IACT,GAAG;IACH,OAAO,KAAK,gCAAgC,yCAAQ,MAAM,WAAW,KAAK;IAC1E,UAAU,UAA0B;KAClC,YAAY,QACV,OAAO,UAAU,WAAW,QAAS,MAAM,OAA4B;KACzE,WAAW,WAAW,KAAK;IAC7B;IACA,cAAc,EACZ,YACA;KACE,cAAc,EAAE,aAAa;KAC7B,OAAO;KACP,UAAU,CAAC,YAAY,MAAM;KAC7B,QAAQ,CAAC,YAAY;KACrB,MAAM;KACN,OAAO,EAAE,YAAY,CAAC,YAAY,QAAQ,WAAW,KAAA,EAAU;KAC/D,SAAS;KACT,SAAS;IACX,SAEE,EAAE,SAAS;KAAE,OAAO,EAAE,aAAa;KAAa,cAAc;IAAK,SACjE,EAAE,EAAE,MAAM,KAAK,CACjB,CACJ;IACA,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,KAAK,gBAAgB,OAAO,KAAK,IAAI,OAAO;KAC9D,IAAI,MAAM,MAAM,KAAK,eAAe,QAAQ;IAC9C;GACF,CAAQ,CACV,CACF;EACF;CACF;AACF,CAAC;;;;;;;;AE5FD,IAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO;EACX,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,IAAI,MAAM,QAAQ;GACxB,MAAM,QAAQ,MAAM,QAAQ;GAC5B,MAAM,UACJ,OACA,MACA,MACA,cAEA,EAAE,SAAS;IAAE;IAAO,cAAc;GAAK,SACrC,EACE,YACA;IACE,cAAc;IACd,OAAO;IACP,MAAM;IACN,SAAS;IACT,eAAe,OAAO,IAAI,IAAI;GAChC,SACM,EAAE,MAAM,EAAE,OAAO,UAAU,CAAC,CACpC,CACF;GACF,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,8BAA8B,wCAAQ,IAAI,EAAE,SACvE,OAAO,YAAY,IACf,OAAO,EAAE,OAAO,OAAO,MAAM,aAAa,IAC1C,CACE,OAAO,EAAE,WAAW,QAAQ,MAAM,YAAY,wCAAQ,IAAI,GAC1D,OAAO,EAAE,YAAY,SAAS,MAAM,YAAY,wCAAQ,KAAK,CAC/D,CACN;EACF;CACF;AACF,CAAC;;;;;;;;;;;AErCD,IAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,OAAO;EACL,YAAY;GAAE,MAAM;GAA8C,UAAU;EAAK;EACjF,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,eAAe;GAAE,MAAM;GAAoD,SAAS;EAAK;EACzF,kBAAkB;GAChB,MAAM;GACN,SAAS,KAAA;EACX;EACA,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,OAAO,EAAE,sBAAsB,WAA2C,KAAK;CAC/E,MAAM,OAAO,EAAE,QAAQ;EACrB,MAAM,cAAc,IAAwB,IAAI;EAChD,MAAM,WAAW,IAAI,KAAK;EAC1B,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,MAAM,OAAO;GACnB,MAAM,QAAQ,IAAI,kBAAkB;GACpC,IAAI,CAAC,IAAI,UAAU,IAAI,0BAA0B,OAAO,OAAO;GAC/D,MAAM,UAAU,CAAC,QACb,OAAO,aAAa,IACpB,OAAO,eAAe,EAAE,MAAM,MAAM,EAAE,aAAa,CAAC;GACxD,MAAM,eACJ,QACI,OAAO,SAAS,SAAS,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAC3D,OAAO,iBAAiB;GAC9B,MAAM,WACJ,OAAO,SAAS,KAAK,UACnB,EAAE,iBAAiB,8BAA8B,GAAG;IAClD,KAAK,MAAM;IACX,GAAG;IACH,QAAQ;IACR,wBAAwB,UACtB,KAAK,uBAAuB,KAAK;GACrC,CAAC,CACH,KAAK,CAAC;GACR,OAAO,CACL,EACE,KAAK,MACL;IACE,OAAO,KAAK,4CAAQ,IAAI;IACxB,WAAW;IACX,MAAM,OAAY;KAChB,YAAY,QAAQ,IAAI,OAAO;IACjC;IACA,OAAO,EAAE,mBAAmB,IAAI,OAAO,QAAQ,MAAO,EAAE,KAAK;IAC7D,iBAAiB,SAAS,SAAS,KAAA;IACnC,sBAAsB,MAAM,eAAe,OAAO,OAAO,MAAM,KAAA;IAC/D,mBAAmB;KACjB,IAAI,CAAC,SAAS,SAAS,IAAI,yBAAyB,OAClD,KAAK,uBAAuB,MAAM;IACtC;GACF,SAEE,EAAE,KAAK,EAAE,OAAO,4CAAQ,KAAK,SAAS;IACpC,CAAC,SACD,MAAM,QAAQ,wBACd,CAAC,MAAM,WAAW,MAAM,MAAM,EAAE,UAAU,kBAAkB,OAAO,IAC/D,IAAI,yBAAyB,QAC3B,EAAE,sBAAsB;KACtB;KACA,cAAc,MAAiB;MAC7B,SAAS,QAAQ;MACjB,IAAI,YAAY,OAAO,EAAE,cAAc,aAAa,YAAY,OAAO,GAAG,CAAC;KAC7E;KACA,iBAAiB;MACf,SAAS,QAAQ;MAEjB,MAAM,UAAU,MAAM,mBAAmB,KAAK,MAAM;MACpD,IAAI,SACF,MAAM,eACJ,cAAc,QAAQ,SAAS,MAAM,SAAS,EAAE,WAAW,CAC7D;MACF,KAAK,uBAAuB,IAAI;KAClC;IACF,CAAQ,IACR,EAAE,KAAK,EAAE,OAAO,4CAAQ,KAAK,CAAC,IAChC;IACJ,MAAM,QAAQ,sBACV,OAAO,UAAU,IACf,EAAE,0BAA0B;KAAE;KAAQ;IAAM,CAAC,IAC7C,EAAE,KAAK,EAAE,OAAO,4CAAQ,IAAI,CAAC,IAC/B;IACJ,MAAM,QAAQ,eACV,EACE,SACA;KACE,OAAO,MAAM,QAAQ,aAAa;KAClC,WAAW;KACX,cAAc;IAChB,SAEE,EAAE,QAAQ;KACR;KACA,OAAO,4CAAQ;KACf,UAAU,CAAC,OAAO,WAAW;KAC7B,OAAO,IAAI;KACX,UAAU;IACZ,CAAC,CACL,IACA,EAAE,MAAM,EAAE,OAAO,4CAAQ,OAAO,SAAS,IAAI,MAAM;GACzD,CAAC,CACL,GACA,GAAG,QACL;EACF;CACF;AACF,CAAC;;;;;;;AE9GD,IAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO;EACX,MAAM,gBAAgB,IAAoC,IAAI;EAC9D,MAAM,aAAa,eAAe;GAChC,MAAM,EAAE,UAAU;GAClB,MAAM,UAAU,MAAM,cAAc;GACpC,MAAM,QAAQ,MAAM,SAAS,EAAE;GAC/B,IAAI,MAAM,UAAU,CAAC,QAAQ,MAAM,MAAM,EAAE,UAAU,kBAAkB,OAAO,GAC5E,OAAO;IACL,GAAG,MAAM,mBAAmB;IAC5B,GAAG,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,OACjC,MAAM,qBAAqB,EAAE,MAAM,MAAM,EAAE,OAAO,EAAE,CACtD;IACA,GAAG,MAAM,oBAAoB;GAC/B,EAAE,OAAO,OAAO;GAClB,OAAO;EACT,CAAC;EACD,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,IAAI,MAAM;GAChB,MAAM,aAAa,UACjB,MACG,kBAAkB,EAClB,QAAQ,MAAM,EAAE,UAAU,iBAAiB,KAAK,EAChD,SAAS,MAAM,EAAE,iBAAiB,KAAK,CAAC;GAC7C,OAAO,EAAE,KAAK,UAAU,EAAE,OAAO,KAAK,8BAA8B,uCAAQ,IAAI,EAAE,SAAS;IACzF,EAAE,MAAM,EAAE,OAAO,uCAAQ,QAAQ,SAAS;KACxC,EAAE,gBACA,EACE,QACA;MACE,UAAU,CAAC,MAAM,wBAAwB;MACzC,SAAS;MACT,eAAe,UAAU,KAAK;KAChC,SACM,EAAE,aAAa,OACvB;KACF,EAAE,wBACA,EACE,QACA;MACE,SAAS;MACT,eAAe,MAAM,eAAe,yBAAyB,GAAG,IAAI,CAAC;KACvE,SACM,EAAE,aAAa,UACvB;KACF,EAAE,uBACA,EACE,QACA;MACE,UAAU,CAAC,MAAM,uBAAuB;MACxC,SAAS;MACT,eAAe,MAAM,mBAAmB,IAAI;KAC9C,SACM,EAAE,aAAa,QACvB;KACF,EAAE,gBACA,EACE,QACA;MACE,UAAU,MAAM,uBAAuB;MACvC,SAAS;MACT,eAAe,UAAU,IAAI;KAC/B,SACM,EAAE,aAAa,OACvB;IACJ,CAAC;IACD,EAAE,KAAK,OAAO;IACd,GAAG,WAAW,MAAM,KAAK,WACvB,EAAE,8BAA8B;KAC9B,KAAK,OAAO;KACZ,YAAY,WAAW;KACvB;KACA,eAAe,cAAc;KAC7B,wBAAwB,cAAc;KACtC;KACA,wBAAwB,UAA0C;MAChE,cAAc,QAAQ;KACxB;IACF,CAAQ,CACV;GACF,CAAC;EACH;CACF;AACF,CAAC;;;ACzFD,IAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,QACH,MAAM,SAAgC,MAAM,MAAM,QAAQ,aAAa;GAC1E,OAAO,EAAE,MAAM;IAAE,kBAAkB;IAAO,cAAc;GAAK,SAAS,CACpE,EAAE,SAAS;IAAE,OAAO;IAAO,cAAc;GAAK,SAC5C,EAAE,KAAK,QAAQ,YACb,EACE,YACA;IACE,cAAc;IACd,OAAO;IACP,MAAM;IACN,SAAS;IACT,GAAG;GACL,SACM,EAAE,MAAM,MAAM,QAAQ,MAAM,WAAW,CAC/C,CACF,CACF,GACA,EAAE,yBAAyB,EAAE,OAAO,MAAM,MAAM,CAAC,CACnD,CAAC;EACH;CACF;AACF,CAAC;;;AC7BD,IAAM,OAGF;CAAE,IAAI;CAAM,IAAI;CAAM,IAAI;AAAK;AACnC,IAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,UAAU,MAAM,SAAS,EAAE;GACjC,MAAM,EAAE,0BAA0B,2BAA2B,6BAC3D,MAAM,QAAQ;GAChB,MAAM,QAAS,MAAM,SAAgC,MAAM,QAAQ,aAAa;GAChF,MAAM,OACJ,YAAY,OACR,2BACA,YAAY,OACV,4BACA;GACR,OAAO,EAAE,SAAS;IAAE,OAAO;IAAO,cAAc;GAAK,SACnD,EACE,YACA;IACE,cAAc;IACd,OAAO;IACP,MAAM;IACN,SAAS;IACT,GAAG;IACH,eAAe,MAAM,YAAY,YAAY,KAAK,QAA6B;GACjF,SACM,EAAE,IAAI,CACd,CACF;EACF;CACF;AACF,CAAC;;;ACpCD,IAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,EAAE,YAAY,kBAAkB,MAAM,QAAQ;GACpD,MAAM,QACH,MAAM,SAAgC,MAAM,QAAQ,aAAa;GACpE,MAAM,QAAQ,MAAM,SAAS,EAAE;GAC/B,OAAO,EAAE,SAAS;IAAE,OAAO;IAAO,cAAc;GAAK,SACnD,EACE,YACA;IACE,cAAc;IACd,OAAO;IACP,MAAM;IACN,SAAS;IACT,GAAG;IACH,eAAe,MAAM,sBAAsB,YAAY,CAAC,OAAO;GACjE,SACM,EAAE,QAAQ,gBAAgB,UAAU,CAC5C,CACF;EACF;CACF;AACF,CAAC;;;AC5BD,IAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,gBAAgB,IAAI,KAAK;EAC/B,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,OAAO,MAAM,SAAS,EAAE;GAC9B,MAAM,EAAE,cAAc,iBAAiB,MAAM,QAAQ;GACrD,MAAM,QACH,MAAM,SAAgC,MAAM,QAAQ,aAAa;GACpE,OAAO,EAAE,SAAS;IAAE,OAAO;IAAO,QAAQ,cAAc;IAAO,cAAc;GAAK,SAChF,EACE,YACA;IACE,cAAc;IACd,OAAO;IACP,MAAM;IACN,SAAS;IACT,GAAG;IACH,oBAAoB;KAClB,cAAc,QAAQ;IACxB;IACA,oBAAoB;KAClB,cAAc,QAAQ;IACxB;IACA,eAAe;KACb,cAAc,QAAQ;KACtB,MAAM,iBAAiB,YAAY,CAAC,OAAO;IAC7C;GACF,SACM,EAAE,OAAO,eAAe,YAAY,CAC5C,CACF;EACF;CACF;AACF,CAAC;;;ACrCD,IAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,EAAE,YAAY,kBAAkB,MAAM,QAAQ;GACpD,MAAM,QAAS,MAAM,SAAgC,MAAM,QAAQ,aAAa;GAChF,OAAO,EAAE,SAAS;IAAE,OAAO;IAAO,cAAc;GAAK,SACnD,EACE,YACA;IACE,cAAc;IACd,OAAO;IACP,UAAU,CAAC,CAAC,MAAM;IAClB,MAAM;IACN,SAAS;IACT,GAAG;IACH,eAAe;KACb,MAAM,oBAAoB,CAAC,MAAM,gBAAgB;KACjD,iBAAiB,MAAM,KAAK,eAAe,OAAO,MAAM,GAAG,GAAG;IAChE;GACF,SACM,EAAE,MAAM,mBAAmB,gBAAgB,UAAU,CAC7D,CACF;EACF;CACF;AACF,CAAC;;;;AEtBD,IAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,cAAc;CACd,OAAO,EAAE,OAAO;EAAE,MAAM;EAAoD,UAAU;CAAK,EAAE;CAC7F,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,IAAI,MAAM;GAEhB,MAAM,UADS,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,CAC7D,KAAU;IACxB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,cAAc,mBACxD,EAAE,8BAA8B,EAAE,MAAM,CAAC,IACzC;IACJ,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,4BAA4B,YACtE,EAAE,yBAAyB,EAAE,MAAM,CAAC,IACpC;IACJ,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,sBAC1C,EAAE,2BAA2B,EAAE,MAAM,CAAC,IACtC;IACJ,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,CAAC,IAAI;IACrE,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,CAAC,IAAI;GACxE;GACA,OAAO,EACL,MACA;IAAE,GAAG;IAAO,OAAO,KAAK,gCAAgC,0CAAQ,MAAM,MAAM,KAAK;GAAE,SAC7E,OACR;EACF;CACF;AACF,CAAC;;;;;;;;;AExBD,IAAM,YAAY,UAAkB;CAClC,MAAM,UAAU,IAAI,KAAK;CACzB,gBAAgB;EACd,IAAI,OAAO,WAAW,eAAe,CAAC,OAAO,YAAY;EACzD,MAAM,MAAM,OAAO,WAAW,KAAK;EACnC,QAAQ,QAAQ,IAAI;EACpB,IAAI,iBAAiB,WAAW,MAAO,QAAQ,QAAQ,EAAE,OAAQ;CACnE,CAAC;CACD,OAAO;AACT;AAEA,IAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,cAAc;CACd,OAAO,EACL,OAAO;EACL,MAAM;EACN,UAAU;CACZ,EACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,WAAW,SAAS,oBAAoB;EAC9C,MAAM,WAAW,SAAS,qBAAqB;EAE/C,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,EACJ,UACA,SAAS,EACP,oBACA,kBACA,8BACA,wBACA,sBACA,oBACA,4BACA,yBACA,iCAEF,MAAM,EAAE,oBACN;GAEJ,MAAM,EAAE,cAAc,qBAAqB,SAAS;GAEpD,MAAM,eAAe;IACnB,GAAG,sBAAsB,wBAAwB,EAAE,MAAM,CAAC;IAC1D,GAAG;GACL;GAEA,MAAM,mBACJ,SAAS,SAAS,CAAC,CAAC,iCAAkC,oBAAoB,SAAS;GAErF,MAAM,oBAAoB,EAAE,MAAM;GAElC,OAAO,EACL,KACA;IACE,GAAG;IACH,OAAO,KACL,6BAAc,0BACd,8BAAQ,SACR,gBAAgB,8BAAQ,oBACvB,cAAsB,KACzB;IACA,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,IAAI,MAAM;MACR,cAAc,QAAQ;MACtB,IAAK,cAAsB,KACxB,aAAsB,IAAI,QAAQ;KAEvC;IACF;GACF,SACM;IACJ,+BAA+B,SAC7B,EAAE,wBAAwB;KAAE;KAAkB;IAAM,CAAQ;IAC9D,CAAC,QAAQ,KAAK,EAAE,SAAS,2BAA2B,EAAE,KACpD,EAAE,qBAAqB,EAAE,MAAM,CAAQ;IACzC,EACE,MACA,EACE,OAAO,KACL,8BAAQ,sBACR,oBAAoB,8BAAQ,gCAC9B,EACF,SACM;KACJ,sBACE,yBAAyB,UACzB,EAAE,2BAA2B,iBAAwB;KACvD,sBAAsB,+BAA+B,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM;KAC3E,+BACI,EAAE,MAAM;MAAE,SAAS;MAAO,MAAM;KAAe,SAAgB,CAC7D,sBACE,yBAAyB,WACzB,EAAE,2BAA2B,iBAAwB,GACvD,EAAE,4BAA4B,EAAE,MAAM,CAAQ,CAChD,CAAC,IACD,sBACA,yBAAyB,WACzB,EAAE,2BAA2B,iBAAwB;IAC3D,CACF;IACA,oBACE,CAAC,QAAQ,KAAK,EAAE,SAAS,sBAAsB,EAAE,KACjD,EAAE,MAAM,EAAE,SAAS,MAAM,SACvB,EAAE,qBAAqB;KAAE,UAAU;KAAO;IAAM,CAAQ,CAC1D;IACF,EAAE,iBAAiB;KAAE,cAAc;KAAM;IAAM,CAAQ;GACzD,CACF;EACF;CACF;AACF,CAAC;;;AC5HD,IAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,cAAc;CACd,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS;EAAM;EACtC,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,OAAO,EAAE,aAAa,KAAK;CAC3B,MAAM,OAAO,EAAE,OAAO,MAAM,SAAS;EACnC,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,MAAM,MAAM,eAAe,MAAM;GACvC,IAAI,CAAC,KAAK,OAAO;GACjB,MAAM,MAAM;IAAE;IAAK;GAAM;GACzB,MAAM,aAAa;IACjB,GAAG,sBAAsB,MAAM,QAAQ,0BAA0B,GAAG;IACpE,GAAI,MAAM,cACN,sBAAsB,MAAM,QAAQ,4BAA4B,GAAG,IACnE,CAAC;IACL,GAAG;GACL;GACA,MAAM,yBAAyB,IAC5B,YAAY,EACZ,QAAQ,SAAS,KAAK,OAAO,UAAU,kBAAkB,MAAM,EAC/D,KAAK,SAAS,EAAE,uBAAuB;IAAE,KAAK,KAAK;IAAI;IAAM;GAAM,CAAC,CAAC;GACxE,MAAM,eAAe;IACnB,IAAI,MAAM,aAAa;KACrB,MAAM,QAAQ,sBAAsB;MAAE;MAAK;KAAM,CAAC;KAClD,MAAM,eAAe,IAAI;IAC3B,OAAO;KACL,MAAM,QAAQ,qBAAqB;MAAE;MAAK;KAAM,CAAC;KACjD,MAAM,cAAc,IAAI;IAC1B;IACA,IAAI,eAAe,CAAC;IACpB,WAAW,UAAU;IACrB,KAAK,OAAO;GACd;GAIA,MAAM,UAHO,MAAM,cACd,MAAM,UAAU,MAAM,UACtB,MAAM,QAAQ,MAAM,WAEhB;IAAE;IAAwB;IAAK;GAAM,CAAC,MAC5C,MAAM,cACH,MAAM,QAAQ,8BAA8B;IAAE;IAAwB;IAAK;GAAM,CAAC,IAClF,MAAM,QAAQ,4BAA4B;IAAE;IAAwB;IAAK;GAAM,CAAC;GACtF,OAAO,EACL,OACA;IAAE,QAAQ,MAAM;IAAM,iBAAiB;IAAO,GAAG;IAAY,KAAK,IAAI;IAAI,SAAS;GAAO,SAExF,UAAU,CACR,EAAE,QAAQ,EAAE,WAAW,MAAa,EAAE,eAAe,EAAE,GAAG,CACxD,EAAE,OAAO;IAAE,KAAK;IAAM,IAAI;IAAI,IAAI;GAAG,SAAS,sBAAsB,CACtE,CAAC,GACD,EAAE,MAAM,EAAE,SAAS,WAAW,SAC5B,EAAE,uBAAuB;IAAE;IAAK;IAAO,SAAS;GAAO,CAAC,CAC1D,CACF,CACJ;EACF;CACF;AACF,CAAC;;;AClED,IAAa,4BAA4B,OAAc,kBAA2B;CAChF,MAAM,aAAa,sBAAsB,KAAK;CAC9C,IAAI,kBAAkB,KAAA,GAAW,OAAO;CACxC,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,MAAM,aAAa,MAAM,UAAU,CAAC,GACrF,WAAW,QAAQ,aAAa;CAElC,IAAI,iBAAiB,KAAK,gBAAgB,MAAM,WAAW,MAAM,UAC/D,WAAW,KAAK,aAAa;CAE/B,OAAO;AACT;;;ACJA,IAAa,4BAKX,UAC2C;CAC3C,MAAM,EACJ,oBACA,qBACA,UACA,uBACA,SAAS,EACP,8BACA,0BACA,qBACA,8BAEF,MAAM,EAAE,wBACN;CAEJ,IAAI,CAAC,4BAA4B,OAAO,KAAA;CAExC,MAAM,yBAAyB,sBAAsB,0BAA0B,EAAE,MAAM,CAAC;CAExF,MAAM,iBAAiB,sBAAsB;CAE7C,MAAM,EAAE,mBAAmB,SAAS;CAEpC,MAAM,CAAC,mBAAmB,sBAAsB,sBAC5C,CACE,mBAAmB,EAAE,KAAK,MAAM,EAAE,eAAe,CAAC,GAClD,oBAAoB,EACjB,KAAK,WAAW,eAAe,SAAS,OAAO,eAAe,IAAI,CAAC,EACnE,MAAM,GAAG,MAAM,IAAI,CAAC,CACzB,IACA,CAAC,CAAC,GAAe,CAAC,CAAa;CAEnC,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,iBAAiB,mBAAmB;CAE1C,MAAM,sBAAsB,gBAAgB,KACxC,eAAe,WAAW,MAAM,EAAE,OAAO,gBAAgB,EAAE,IAC3D,KAAA;CAEJ,MAAM,uBAAuB,eAC3B,gBAAgB;EACd,OAAO,eAAe;EACtB,eAAe,UAAkB,eAAe,OAAO,QAAQ;EAC/D,wBAAwB,kBAAkB;EAC1C,YAAY;EACZ,UAAU;EACV,iBAAiB,UAAiB;GAChC,MAAM,aAAa,yBAAyB,OAAO,mBAAmB;GACtE,IAAI,CAAC,iBAAiB,CAAC,gBACrB,OAAO;GAET,OAAO,CAAC,GAAG,IAAI,IAAI;IAAC,GAAG;IAAmB,GAAG;IAAY,GAAG;GAAkB,CAAC,CAAC;EAClF;EACA,GAAG;CACL,EAAE,CACJ;CAEA,MAAM,oBAAoB,qBAAqB;CAM/C,OAAO,iBAAiB,mBAAmB;EACzC,gBAAgB;GACd,cAAc;GACd,MAAM;IACJ,OAAO,KAAK,gBAAgB;GAC9B;EACF;EACA,oBAAoB;GAClB,cAAc;GACd,MAAM;IACJ,MAAM,iBAAiB,KAAK,gBAAgB;IAE5C,IAAI,CADe,eAAe,QACjB,OAAO,KAAA;IAGxB,QAF2B,eAAe,gBAAgB,SAAS,MAC1C,eAAe,kBAAkB,SAAS,IAAI,OAAO;GAEhF;EACF;EACA,qBAAqB;GACnB,cAAc;GACd,MAAM;IACJ,MAAM,iBAAiB,KAAK,gBAAgB;IAC5C,MAAM,aAAa,eAAe;IAClC,IAAI,CAAC,YAAY,OAAO,KAAA;IACxB,MAAM,YAAY,KAAK,aAAa;IACpC,MAAM,sBAAsB,eAAe,aAAa,iBAAiB,SAAS;IAElF,OACE,aAFwB,eAAe,aAAa,iBAAiB,IAAI,OAAO,MAE/C,iBAAiB,YAAY,sBAAsB;GAExF;EACF;CACF,CAAC;CAED,IAAI,8BACF,6BAA6B,QAAQ;CAGvC,OAAO;AACT;;;AChHA,IAAa,iBAAiB,OAAe,GAAG,QAAQ,iBAAiB,GAAG;AAE5E,IAAa,mBAAmB,UAC9B,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAgB,MAAM,cAAc,QAAQ;AAE7F,IAAa,mBAAmB,OAAqB,UACnD,MAAM,OAAO,MAAM,cAAc,SAAS,gBAAgB,KAAK;AAEjE,SAAgB,aAAa,MAAc,OAA8C;CACvF,MAAM,MAAM,QAAQ;CACpB,QAAQ,OAAO,OAAf;EACE,KAAK,WACH,OAAO,QAAQ,GAAG,MAAM,GAAG,IAAI;EACjC,KAAK,UACH,OAAO,GAAG,MAAM,GAAG,QAAQ;EAC7B,KAAK,UACH,OAAO,GAAG,MAAM,MAAM;EACxB,SACE,OAAO;CACX;AACF;;;;;;AChBA,IAAa,eACX,UACkC;CAClC,OAAO,eAAe;EACpB,MAAM,EAAE,aAAa,UAAU,cAAc,YAAY,YAAY,YACnE,MAAM,SAAS;EAIjB,WAAgB;EAChB,WAAgB;EAGhB,MAAW,YAAY,EAAE;EACzB,OAAO,YAAY,KAAK;CAC1B,CAAC;AACH;;;ACVA,IAAa,yBAKX,OACA,SACsE;CACtE,MAAM,EACJ,aACA,UACA,SAAS,EACP,yBACA,mBACA,2BACA,yBAEF,MAAM,EAAE,wBACN;CAEJ,IAAI,CAAC,yBAAyB,OAAO,KAAA;CAErC,MAAM,sBAAsB,sBAAsB,uBAAuB,EACvE,MACF,CAAC;CAED,MAAM,4BAA8D;EAClE,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN;CAEA,MAAM,EAAE,SAAS,aAAa,aAAa,SAAS;CAEpD,MAAM,kBAAkB,0BAA0B,YAAY,0BAA0B;CAExF,MAAM,oBAAoB,eACxB,eAAe;EACb,MAAM,WAAW,MAAM,MAAM,UAAU,YAAY,EAAE,KAAK;EAC1D,OAAO;GACL,OAAO,oBAAoB,WAAW,IAAI;GAC1C,eAAe,UACb,qBAAqB,QAAQ,MAAM,IAAK,aAAa,OAAO,MAAM,IAAK;GACzE,wBAAwB,kBAAkB;GAC1C,gBACE,OAAO,WAAW,eAAe,UAAU,UAAU,QAAQ,SAAS,MAAM,MACvE,YAAiB,SAAS,sBAAsB,EAAE,SACnD,KAAA;GACN,UAAU;GACV,iBAAiB,UAAiB;IAChC,MAAM,gBAAgB,YAAY,EAAE,KAAK,WAAW,QAAQ,IAAI,OAAO,aAAa,EAAE;IACtF,OAAO,yBAAyB,OAAO,iBAAiB,IAAI,gBAAgB,CAAC;GAC/E;GACA,GAAG;EACL;CACF,CAAC,CACH;CAEA,MAAM,iBAAiB,kBAAkB;CAKzC,IAAI,CAAC,OAAO,yBAAyB,gBAAgB,aAAa,GAChE,OAAO,eAAe,gBAAgB,eAAe;EACnD,cAAc;EACd,MAAM;GACJ,OAAO,KAAK,gBAAgB;EAC9B;CACF,CAAC;CAGH,IAAI,2BACF,0BAA0B,QAAQ;CAGpC,OAAO;AACT;;;;AEnFA,IAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,cAAc;CACd,OAAO;EACL,MAAM;GACJ,MAAM;GACN,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,SAAS,IAAI,KAAK;EACxB,aAAa;GACX,MAAM,EAAE,MAAM,UAAU;GACxB,MAAM,EACJ,SAAS,EAAE,cAAc,6BACvB;GACJ,MAAM,EAAE,QAAQ,QAAQ;GAExB,MAAM,kBAAkB;IACtB,GAAG,sBAAsB,wBAAwB;KAC/C;KACA;KACA;KACA;IACF,CAAC;IACD,GAAG,sBAAsB,OAAO,UAAU,wBAAwB;KAChE;KACA;KACA;KACA;IACF,CAAC;IACD,GAAG;GACL;GAEA,MAAM,mBAAmB;IACvB,WAAW,WAAW,UAAU,KAAK,SAAc,GAAG,SAAS,CAAC;IAChE,OAAO,QAAQ;IACf,iBAAkB,OAAO,QAAQ,OAAQ,GAAI;GAC/C;GAEA,OAAO,EACL,SACA;IACE,OAAO,OAAO,QAAQ,SAAS,KAAA;IAC/B,OAAO,OAAO,QAAQ,aAAa,oBAAoB,aAAa;IACpE,WAAW;IACX,cAAc;GAChB,SAEE,EACE,gBACA;IACE,GAAG;IACH,UAAU,UAAsB;KAC9B,MAAM,gBAAgB;KACtB,WAAW;KACV,iBAA0B,UAAU,KAAK;IAC5C;IACA,OAAO,KAAK,8BAAQ,MAAO,iBAAyB,KAAK;GAC3D,SACM,MAAM,UAAU,CACxB,CACJ;EACF;CACF;AACF,CAAC;;;ACxED,IAAM,eAAe,CAAC,UAAU,QAAQ;AACxC,IAAM,wBAAwB,CAAC,QAAQ,cAAc;AAErD,IAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,OAAO;EACL,MAAM;GACJ,MAAM;GACN,UAAU;EACZ;EACA,qBAAqB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAChD,kBAAkB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAC7C,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO;EACX,aAAa;GACX,MAAM,EAAE,MAAM,qBAAqB,kBAAkB,UAAU;GAC/D,MAAM,EACJ,UACA,SAAS,EAAE,+BAA+B,wBAAwB,EAAE,MAAM,KAAK,QAC7E;GACJ,MAAM,EAAE,QAAQ,QAAQ;GACxB,MAAM,EAAE,cAAc;GACtB,MAAM,EAAE,cAAc,mBAAmB,SAAS;GAClD,MAAM,cAAc,OAAO,eAAe;GAE1C,MAAM,iBAAiB,sBAAsB,uBAAuB;IAClE;IACA;IACA;IACA;GACF,CAAC;GAED,IAAI,oBACF,KAAK,gBAAgB,KAAK,UAAU,iBAChC,UAAU,eAAe;IAAE;IAAM;IAAQ;IAAK;GAAM,CAAC,IACrD,IAAI,aAAa,KAAK,CAAC,KAAK,aAAa,IACvC,OACA,KAAK,aAAa,KAAK,UAAU,cAC/B,UAAU,YAAY;IAAE;IAAM;IAAQ;IAAK;GAAM,CAAC,IAClD,KAAA;GAEV,MAAM,iBAAiB,sBAAsB,KAAA;GAE7C,IAAI,CAAC,gBACH,oBAAoB,KAAK,YAAY;GAGvC,IACE,iCACA,UAAU,kCAAkC,SAC5C,qBACA,aAAa,SAAS,OAAO,iBAAiB,MAC5C,eACA,aAAa,SAAS,OAAO,WAAW,KACxC,sBAAsB,SAAS,UAAU,aAAuB,KAC/D,gBACC,aAAa,SAAS,OAAO,YAAY,KACzC,OAAO,mBAAmB,IAC9B;IACA,IAAI,aACF,OAAO,eAAe,KACtB,gBACA,IACA,SAAS;IACX,KAAK,cAAc,UAAU,YAAY,oBAAoB,SAC3D,YAAY,UAAU,MAAM,GAAG;IAEjC,MAAM,OAAO,kBAAkB,SAAS;IAExC,oBAAoB,EAClB,WACA;KAAE,OAAO;KAAY;KAAW,GAAG;IAAe,SAC5C,IACR;GACF;GAEA,IAAI,UAAU,QAAQ,CAAC,gBACrB,oBAAoB,UAAU,KAAK;IACjC;IACA;IACA;IACA;IACA;IACA;IACA;GACF,CAAC;GAGH,OAAO;EACT;CACF;AACF,CAAC;;;;;;;;;;;;;;;AEnFD,IAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,cAAc;CACd,OAAO;EACL,MAAM;GACJ,MAAM;GACN,UAAU;EACZ;EACA,SAAS;GAAE,MAAM;GAAQ,SAAS;EAAE;EACpC,qBAAqB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAChD,kBAAkB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAC7C,QAAQ;GACN,MAAM;GACN,SAAS,KAAA;EACX;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;EACA,aAAa;GACX,MAAM;GACN,SAAS,KAAA;EACX;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,YAAY,aAAa;EAC/B,MAAM,QAAQ,gBAAgB;EAC9B,MAAM,gBAAgB,IAAI,GAAG;EAC7B,MAAM,2BAA2B,IAAI,KAAK;EAC1C,MAAM,wBAAwB,IAA2B,IAAI;EAG7D;GACE,MAAM,EAAE,MAAM,UAAU;GACxB,MAAM,EAAE,WAAW,kBAAkB,MAAM,SAAS;GACpD,IAAI,aAAa,eAAe;IAC9B,MAAM,OAAO,KAAK,OAAO,QAAQ;IACjC,cAAc,QACZ,KAAK,OAAO,UAAU,kBAAkB,YACpC,OAAO,IACP,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,OAAO,KAAK,OAAO,CAAC;GAC/D;EACF;EAEA,aAAa;GACX,MAAM,EAAE,MAAM,SAAS,qBAAqB,kBAAkB,QAAQ,OAAO,gBAC3E;GACF,MAAM,EACJ,UACA,SAAS,EACP,uBACA,kBACA,mBACA,iBACA,mBACA,sBACA,qBACA,eACA,gBACA,YACA,sBACA,6BAEF,MAAM,EAAE,iBACR,gBACA,qBACE;GACJ,MAAM,EACJ,kBACA,aACA,SACA,gBACA,aACA,YACA,eACA,WACA,kBACE,SAAS;GACb,MAAM,EAAE,QAAQ,QAAQ;GACxB,MAAM,EAAE,cAAc;GACtB,MAAM,EAAE,kBAAkB;GAE1B,MAAM,OAAO;IACX;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM,iBAAiB;IACrB,GAAG,sBAAsB,2BAA2B,IAAI;IACxD,GAAG,sBAAsB,UAAU,2BAA2B,IAAI;IAClE,GAAG;GACL;GAEA,MAAM,gBAAgB,sBAAsB,sBAAsB,IAAI;GAEtE,MAAM,cAA6B;IACjC,UAAU,sBAAsB,cAC9B,QAAQ,EACV,EAAE,iBAAiB,UAAU,WAAW,GAAG;IAC3C,OAAO,kBAAkB,cAAc,OAAO,EAAE,EAAE;GACpD;GACA,IAAI,eAAe,QACjB,YAAY,OAAO,GACjB,CAAC,GAAG,KAAK,EAAE,SAAS,UAAU,IAAK,IAAI,IAAI,aAAa,cAAc,OAAO,EAAE,EAAE,QAClF;QACI,IAAI,eAAe,gBACxB,YAAY,OAAO,GAAG,EAAE,UAAU,QAAQ,GAAG;GAE/C,MAAM,mBAAmB,gBAAgB,OAAO,OAAO;GACvD,MAAM,kBAAkB,eAAe,OAAO,OAAO;GACrD,MAAM,iBACJ,uBAAuB,UAAU,kBAAkB,WAAW,OAAO,YAAY;GAEnF,MAAM,aACJ,CAAC,KAAK,iBAAiB,KACvB,sBAAsB,eAAe,GAAG,KACxC,sBAAsB,UAAU,eAAe,GAAG,MAAM;GAE1D,MAAM,YACJ,cACA,CAAC,CAAC,UAAU,OAAO,EAAE,SAAS,eAAyB,MACtD,oBAAoB,WAAW,YAAY,OAAO,IAAI,MAAM,aAAa,OAAO,KAAK,OACtF,CAAC,IAAI,aAAa;GAEpB,MAAM,aAAa,cAAc,sBAAsB,SAAS,aAAa,OAAO,IAAI;GAExF,MAAM,wBACJ,sBAAsB,mBAAmB,IAAI,KAC5C,sBAAsB,UAAU,mBAAmB,IAAI,KACtD,sBAAsB,UAAU,mBAAmB,IAAI,MAAM;GAEjE,MAAM,qBAAqB,UAAsB;IAC9C,gBAAyB,gBAAgB,KAAK;IAC/C,IAAI,cAAc,oBAAoB,QAAQ;KAC5C,eAAe,IAAI;KACnB,iBAAiB;MACf,MAAM,YAAY,cAAc,MAAM,KAAK;MAC3C,IAAI,WAAW;OACb,UAAU,MAAM;OAChB,UAAU,SAAS;MACrB;KACF,GAAG,GAAG;IACR;GACF;GAEA,MAAM,mBAAmB,MAAiB;IACvC,gBAAyB,cAAc,CAAC;IACzC,MAAM,EAAE,gBAAgB,UAAU,eAAe,YAAY,SAAS;IACtE,IAAI,kBAAkB,SAAS,OAAO,aACpC,iBAAiB,IAAI;IAEvB,IAAI,wBAAwB,UAC1B,iBAAiB,UAAU,yBAAyB,QAAQ,SAAS,IAAI;GAE7E;GAEA,MAAM,iBAAiB;IACrB;IACA;IACA;IACA;GACF;GAEA,MAAM,qBAAqB;IACzB,IAAI,CAAC,UAAU,uBAAuB;IACtC,MAAM,MAAM,sBAAsB;IAClC,IAAI,KACF,yBAAyB,QAAQ,IAAI,cAAc,IAAI;GAE3D;GACA,MAAM,qBAAqB;IACzB,IAAI,CAAC,UAAU,uBAAuB;IACtC,yBAAyB,QAAQ;GACnC;GAEA,MAAM,0BAA0B;IAC9B,IAAI,KAAK,iBAAiB,GACxB,OAAO,UAAU,kBAAkB;KAAE;KAAM;KAAQ;KAAK;IAAM,CAAC,KAAK;IAGtE,IAAI,kBAAkB,UAAU,aAAa,gBAC3C,OAAO,EAAE,UAAU;KACjB,QAAQ;KACR,OAAO,cAAc;KACrB,GAAG;IACL,CAAQ;IAGV,IACE,kBAAkB,cACjB;KAAC;KAAkB;KAAmB;IAAgB,EAAE,SAAS,OAAO,EAAE,KACzE,CAAC,IAAI,aAAa,IAEpB,OAAO,UAAU,OAAO;KACtB;KACA,mBAAmB,KAAK,YAAY;KACpC;KACA;KACA,GAAG;IACL,CAAC;IAGH,IAAI,cAAc,WAChB,OAAO,EAAE,uBAAuB;KAAE;KAAM;IAAM,CAAQ;IAGxD,IAAI,yBAAyB,UAAU,sBAAsB,OAC3D,OAAO,EAAE,gBAAgB;KAAE;KAAM;IAAM,SACrC,EAAE,wBAAwB,cAAqB,CACjD;IAGF,OAAO,EAAE,wBAAwB,cAAqB;GACxD;GAEA,MAAM,gBACJ,KAAK,aAAa,KAAK,CAAC,UAAU,cAAc,KAAK,IAAI,SAAS,OAAO,KAAK;GAEhF,MAAM,QAAQ,UAAU,wBACpB,EACE,OACA;IACE,OAAO,KACL,UAAU,yBACR,EAAE,cAAc,cAChB,iCAAQ,sBACV,yBAAyB,SAAS,iCAAQ,cAC5C;IACA,MAAM,OAAY;KAChB,sBAAsB,QAAS,IAAI,OAAO;IAC5C;GACF,GACA,CAAC,kBAAkB,GAAG,aAAa,CACrC,IACA,CAAC,kBAAkB,GAAG,aAAa;GAEvC,MAAM,QAAQ;IACZ,GAAG;IACH,oBACG,eAAuB,UAAU,UAAU,IAAI,UAAU,QAAQ,UAAU;IAC9E,yBACE,mBAAmB,SAAS,GAAG,OAAO,SAAS,cAAc,MAAM,KAAA;IACrE,0BACE,mBAAmB,UAAU,GAAG,OAAO,SAAS,cAAc,MAAM,KAAA;IACtE,GAAG,sBAAuB,eAAuB,OAAO,KAAK;GAC/D;GAEA,MAAM,EAAE,UAAU,cAAc,GAAG,kBAAkB;GAErD,OAAO,EACL,SACA;IACE,sBAAsB,kBAAkB,KAAA;IACxC,wBAAwB,oBAAoB,KAAA;IAC5C,2BACG,mBAAmB,WAAW,OAAO,iBAAiB,cAAc,KAAM,KAAA;IAC7E,8BAA8B,mBAAmB,KAAA;IACjD,cAAc;IACd,yBACG,mBAAmB,UAAU,OAAO,gBAAgB,cAAc,KAAM,KAAA;IAC3E,iBAAiB,qBAAqB,UAAU,KAAK,KAAA;IACrD,iBACG,qBAAqB,cACpB,kBAAkB,qBAAqB,OAAO,MAC9C,yBACF,KAAA;IACF,GAAG;IACH,OAAO,KACL,iCAAQ,MACR,YAAY,WAAW,MAAM,KAAK,iCAAQ,cAC1C,eAAe,iCAAQ,qBACvB,cAAc,oBAAoB,UAAU,iCAAQ,wBACpD,cACE,CAAC,QAAQ,OAAO,EAAE,SAAS,mBAAmB,EAAE,KAChD,kBAAkB,aAClB,iCAAQ,wBACV,kBAAkB,UAAU,iCAAQ,kBACpC,YAAY,QAAQ,iCAAQ,gBAC5B,UAAU,yBAAyB,iCAAQ,2BAC1C,gBAAwB,KAC3B;IACA,YAAY;IACZ,aAAa;IACb,cAAc;IACd,cAAc;IACd;GACF,SACM,gBAAgB,KACxB;EACF;CACF;AACF,CAAC;AAED,IAAa,yBAAyB;;;;;;;;;;;;AEzStC,IAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,cAAc;CACd,OAAO;EACL,cAAc;GACZ,MAAM;GACN,UAAU;EACZ;EACA,kBAAkB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAC7C,KAAK;GACH,MAAM;GACN,UAAU;EACZ;EACA,gBAAgB;GACd,MAAM;GACN,SAAS,KAAA;EACX;EACA,SAAS;GACP,MAAM,CAAC,SAAS,MAAM;GACtB,SAAS,KAAA;EACX;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;EACA,YAAY;GACV,MAAM;GACN,SAAS,KAAA;EACX;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,WAAW,aAAa;EAC9B,aAAa;GACX,MAAM,EAAE,cAAc,kBAAkB,KAAK,gBAAgB,SAAS,OAAO,eAC3E;GACF,MAAM,EACJ,UACA,uBACA,SAAS,EACP,YACA,yBACA,0BACA,wBAEA;GACJ,MAAM,EAAE,cAAc,SAAS;GAE/B,MAAM,gBAAgB,sBAAsB,0BAA0B;IACpE,eAAe;IACf;IACA;GACF,CAAC;GAED,MAAM,iBAAiB;IACrB,GAAG,sBAAsB,yBAAyB;KAAE;KAAK;IAAM,CAAC;IAChE,GAAG;GACL;GAEA,MAAM,yBAAyB,IAC5B,YAAY,EACZ,QAAQ,SAAS,KAAK,OAAO,UAAU,kBAAkB,MAAM,EAC/D,KAAK,SAAS,EAAE,uBAAuB;IAAE;IAAM,KAAK,KAAK;IAAI;GAAM,CAAQ,CAAC;GAE/E,MAAM,cACJ,CAAC,aACD,IAAI,cAAc,KAClB,qBAAqB,SAAS,aAAa,mBAAmB;IAC5D;IACA;IACA;GACF,CAAC;GAEH,OAAO,EACL,SACA;IACE,cAAc,oBAAoB,mBAAmB,IAAI,IAAI;IAC7D,gBAAgB;IAChB,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,IAAI,MAAM,gBAAgB,iBAAiB,IAAI;IACjD;IACA,GAAG;IACH,OAAO;KACL,2BAA2B,aACvB,GAAG,aAAa,OAAO,sBAAsB,GAAG,OAAO,MACvD,KAAA;KACJ,2BAA2B,aAAa,GAAG,WAAW,MAAM,MAAM,KAAA;KAClE,GAAI,eAAuB;IAC7B;IACA,OAAO,KACL,iCACA,oCAAQ,MACR,YAAY,WAAW,MAAM,KAAK,oCAAQ,cAC1C,cAAc,oCAAQ,qBACrB,eAAuB,KAC1B;GACF,SAEE,EACE,SACA;IACE,SAAS,sBAAsB,EAAE;IACjC,WAAW;IACX,GAAG;IACH,OAAO,EACL,qBAAqB,GAAG,MAAM,aAAa,EAAE,IAC/C;IACA,OAAO,KACL,iCACA,oCAAQ,OACR,YAAY,WAAW,MAAM,KAAK,oCAAQ,eAC1C,IAAI,cAAc,KAAK,oCAAQ,mBAC/B,cAAc,oCAAQ,gBACxB;IACA,GAAG,IAAI,cAAc,KAAK,cAAc,OAAO;GACjD,SAEE,iBACI,IAAI,cAAc,KAAK,cACvB,EAAE,UAAU,EAAE,UAAU,IAAI,cAAc,EAAE,SAAgB,WAAW,CAC/E,CACJ;EACF;CACF;AACF,CAAC;;;;;;;;AEvHD,IAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC5C,cAAc;GACZ,MAAM;GACN,SAAS,KAAA;EACX;EACA,kBAAkB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAC7C,KAAK;GACH,MAAM;GACN,UAAU;EACZ;EACA,gBAAgB;GACd,MAAM;GACN,SAAS,KAAA;EACX;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;EACA,YAAY;GACV,MAAM;GACN,UAAU;EACZ;EACA,YAAY;GACV,MAAM;GACN,SAAS,KAAA;EACX;CACF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,SAAS,IAAgC,IAAI;EACnD,MAAM,WAAW,aAAa;EAE9B,aAAa;GACX,MAAM,EACJ,mBACA,SACA,cACA,kBACA,KACA,gBACA,OACA,YACA,eACE;GACJ,MAAM,EACJ,UACA,SAAS,EACP,mBACA,kBACA,oBACA,oBACA,YACA,0BACA,mBACA,yBAEF,MAAM,EAAE,gBAAgB,gBACxB,kBACE;GACJ,MAAM,EACJ,SAEA,aAGA,YACA,iBACE,SAAS;GAEb,MAAM,kBAAkB,qBAAqB,SAAS;GAEtD,MAAM,eAAe,IAAI,gBAAgB;GAEzC,MAAM,EAAE,gBAAgB,oBAAoB,wBAAwB,qBAAqB,CAAC;GAE1F,MAAM,gBAAgB,iBAAiB;IAAE;IAAK;GAAM,CAAC;GACrD,MAAM,cAAc,oBAAoB,IAAI,YAAY;GACxD,MAAM,oBAAoB,eAAe,uBAAuB,SAAS,QAAQ,KAAK;GACtF,MAAM,gBAAgB,aAAa,OAAO,IAAI;GAC9C,MAAM,eAAe,YAAY,OAAO,IAAI;GAE5C,MAAM,gBAAgB;IACpB,GAAG,sBAAsB,0BAA0B;KACjD;KACA;KACA;IACF,CAAC;IACD,GAAG;GACL;GAEA,MAAM,CAAC,mBAAmB,kBACxB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,YAAY,IACzE,CAAC,KAAA,GAAW,KAAA,CAAS,IACrB,CAAC,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,GAAG,aAAa,QAAQ,IAAI,EAAE,CAAC;GAEhF,MAAM,mBACF,sBAAsB,iBAAiB,aAAa,OAAO,gBAAiB;GAChF,MAAM,oBAAqB,sBAAsB,eAAe,OAAO,gBAAiB;GAExF,MAAM,4BAA8D;IAClE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;GACN;GAEA,MAAM,YACJ,SAAU,eAAuB,OAAO,QAAQ,EAAE,MACjD,0BAA0B,YAAY,0BAA0B;GAEnE,MAAM,mBAAmB,OAAkB;IACzC,IAAI,qBAAqB,SAAS,EAAE,aAClC,cAAc,GAAG;GAErB;GAEA,IAAI,UAAU,WAAW;GACzB,IAAI,SAAS;IACX,IAAI,YAAY,MAAM,UAAU;IAChC,IAAI,YAAY,SAAS,mBAAmB,MAAM,GAAG,UAAU;IAC/D,IAAI,YAAY,UAAU,mBAAmB,MAAM,GAAG,UAAU;GAClE;GAEA,MAAM,QAAQ;IACZ,GAAI,eAAuB;IAC3B,2BACE,CAAC,cAAc,sBAAsB,KAAA,KAAa,cAC9C,GAAG,oBAAoB,aAAa,qBAAqB,oBAAoB,IAAI,OACjF,KAAA;IACN,wBAAwB,aACpB,KAAA,IACA,mBAAmB,KAAA,KAAa,cAC9B,GACE,iBAAiB,aAChB,sBAAsB,eAAe,kBAAkB,IAAI,OAE9D,KAAA;IACN,2BAA2B,aAAa,GAAG,WAAW,UAAU,KAAA;GAClE;GAEA,MAAM,QAAQ,MAAM,UAChB,MAAM,QAAQ,KACb,kBAAkB,IAAI,gBAAgB,GAAG,KACvC,mBAAmB,wBAAwB;IAC1C,IAAI,OAAO;IACX,IAAI,QAAQ;IACZ,IAAI,mBAAmB;KACrB,QAAS,kBAAsC;KAC/C,OAAO,aAAa;IACtB;IACA,OAAO,EAAE,mBAAmB;KAC1B;KACA,KAAK,KAAK;KACV;KACA,qBAAqB;KACrB;KACA;KACA;KACA,aAAa,oBAAqB,oBAAwC,KAAA;IAC5E,CAAQ;GACV,CACF;GAEJ,OAAO,CACL,EACE,SACA;IACE,qBAAqB,iBAAiB,KAAA;IACtC,2BAA2B,gBAAgB,KAAA;IAC3C,cAAc,kBAAkB,mBAAmB,IAAI;IACvD,mBAAmB,qBAAqB,eAAe,KAAA;IACvD,iBAAiB,iBAAiB,KAAA;IAClC,gBAAgB;IAChB,aAAa;IACb,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,IAAI,MAAM;MACR,OAAO,QAAQ;MACf,gBAAgB,iBAAiB,IAAI;KACvC;IACF;IACA,GAAG;IACH;IACA,OAAO,KACL,gCAAQ,MACR,YAAY,WAAW,MAAM,KAAK,gCAAQ,cAC1C,cAAc,gCAAQ,qBACrB,eAAuB,KAC1B;GACF,SACM;IACJ,qBACI,EAAE,KAAK;KACL,WAAW;KACX,SAAS;KACT,GAAG;IACL,CAAQ,IACR;IACJ;IACA,sBACI,EAAE,KAAK;KACL,WAAW;KACX,SAAS;KACT,GAAG;IACL,CAAQ,IACR;GACN,CACF,GACA,mBACE,CAAC,IAAI,aAAa,KAClB,EAAE,sBAAsB;IACtB,cAAc;IACd;IACA;IACA;IACA;IACA;IACA;GACF,CAAQ,CACZ;EACF;CACF;AACF,CAAC;AAED,IAAa,wBAAwB;;;;;;;;;;;;;AE7OrC,IAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC5C,OAAO;GACL,MAAM;GACN,UAAU;EACZ;EACA,YAAY;GACV,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO;EACX,MAAM,WAAW,YACf,MAAM,OACN,iBACA,CAAC,GACD,GACA,CACF;EAEA,aAAa;GACX,MAAM,EAAE,mBAAmB,SAAS,OAAO,eAAe;GAC1D,MAAM,EACJ,UACA,SAAS,EAAE,YAAY,cAAc,mBAAmB,2BACxD,MAAM,EAAE,oBACN;GACJ,MAAM,EAAE,eAAe,iBAAiB,SAAS;GAEjD,OAAO,EACL,kBACA;IACE;IACA;IACA,OAAO,KACL,sBACA,YAAY,WAAW,MAAM,KAAK,6BAAQ,oBAC5C;IACA,kBAAkB;IAClB,KAAK;IACL;IACA;IACA,YAAY,KAAA;GACd,SACM,CACJ,qBACE,EACE,SACA;IACE,OAAO,KACL,uBACA,YAAY,WAAW,MAAM,KAAK,6BAAQ,oBAC5C;IACA,SAAS;GACX,SACM,EAAE,kBAAkB;IAAE,KAAK;IAAU;GAAM,CAAQ,CAC3D,GACF,EACE,MACA;IACE,OAAO,KACL,uBACA,YAAY,WAAW,MAAM,KAAK,6BAAQ,oBAC5C;IACA,SAAS,MAAM,sBAAsB,EAAE;GACzC,GACA,CACE,0BAA0B,EAAE,MAAM,CAAC,KACjC,EACE,MACA;IACE,OAAO,EACL,qBAAqB,GAAG,cAAc,OAAO,cAC/C;IACA,OAAO,KAAK,6BAAQ,uBAAuB;GAC7C,SAEE,gBAAgB,cAAc,SAC1B,aAAa,iBACb,aAAa,kBACrB,CACJ,CACF,CACF,CACF;EACF;CACF;AACF,CAAC;;;AC5FD,IAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;EACA,YAAY;GACV,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,OAAO,YAAY,MAAM,KAAK;EACpC,MAAM,oBAAoB,sBAAsB,MAAM,OAAO,IAAI;EAEjE,aAAa;GACX,MAAM,EAAE,mBAAmB,OAAO,eAAe;GAEjD,MAAM,iBAAiB,mBAAmB;GAC1C,MAAM,EACJ,qBACA,aACA,UACA,YACA,eACA,SAAS,EACP,oBACA,oBACA,YACA,uBACA,mBACA,yBAEF,MAAM,EAAE,gBAAgB,mBACtB;GACJ,MAAM,EAAE,cAAc,eAAe,SAAS;GAE9C,MAAM,iBAAiB;IACrB,GAAG,sBAAsB,uBAAuB,EAAE,MAAM,CAAC;IACzD,GAAG;GACL;GAEA,MAAM,mBACF,sBAAsB,iBAAiB,aAAa,OAAO,gBAAiB;GAChF,MAAM,oBAAqB,sBAAsB,eAAe,OAAO,gBAAiB;GAExF,MAAM,eACJ,CAAC,WAAW,QAAQ,UAAU,CAAC,WAAW,KAAK,SAC3C,CAAC,IACD,YAAY,EACT,KAAK,QAAQ,QAAQ,IAAI,YAAY,CAAC,EACtC,KAAK,MAAM,EAAE,EAAE;GAExB,MAAM,cAAc,KAAK;GACzB,MAAM,EAAE,gBAAgB,kBAAkB,CAAC;GAE3C,MAAM,iBAAiB;IACrB;IACA,SAAS,YAAY;IACrB;IACA;GACF;GAEA,MAAM,aACJ,KACA,kBACA,UAEA,EAAE,kBAAkB;IAClB,GAAG;IACH,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI;IACtB;IACA;IACA,GAAG;GACL,CAAQ;GAEV,OAAO,EAAE,UAAU,MAAM;IACvB,CAAC,uBAAuB,SAAS,QAAQ,KACvC,oBAAoB,KAAK,KACzB,EACE,YACA;KACE,GAAG;KACH,OAAO;MACL,2BAA2B,GAAG;MAC9B,GAAI,gBAAwB;KAC9B;KACA,OAAO,KACL,6BAAQ,QACR,YAAY,WAAW,MAAM,KAAK,6BAAQ,cACzC,gBAAwB,KAC3B;IACF,SACM,WAAW,EAAE,KAAK,KAAK,qBAAqB,UAAU,KAAK,gBAAgB,CAAC,CACpF;IACF,EACE,YACA;KACE,GAAG;KACH,OAAO;MACL,2BAA2B,iBACvB,GAAG,eAAe,aAAa,EAAE,MACjC,KAAA;MACJ,GAAI,gBAAwB;KAC9B;KACA,OAAO,KACL,6BAAQ,MACR,YAAY,WAAW,MAAM,KAAK,6BAAQ,cAC1C,CAAC,YAAY,UAAU,6BAAQ,iBAC/B,kBAAkB,6BAAQ,qBACzB,gBAAwB,KAC3B;IACF,SAEG,gBAAwB,aACxB,CAAC,YAAY,SACV,EAAE,uBAAuB,cAAqB,KAC7C,eAAe,aAAa,KAAK,iBAAiB,qBAAqB;KACtE,IAAI,QAAQ;KACZ,IAAI,gBACF,IAAI,mBAAmB;MACrB,IAAK,gBAAoC,QAAQ,MAAM,GAAG,OAAO;MACjE,QAAS,gBAAoC,QAAQ;KACvD,OACE,QAAS,gBAAoC;KAGjD,MAAM,MAAM,iBACR,YAAY,SACX;KAEL,IAAI,CAAC,KAAK,OAAO;KACjB,OAAO,UAAU,KAAK,OAAO;MAC3B;MACA;MACA,YAAY,iBAAkB,kBAAsC,KAAA;KACtE,CAAC;IACH,CAAC,EACT;IACA,CAAC,uBAAuB,SAAS,QAAQ,KACvC,oBAAoB,QAAQ,KAC5B,EACE,YACA;KACE,GAAG;KACH,OAAO;MACL,6BAA6B,GAAG;MAChC,GAAI,gBAAwB;KAC9B;KACA,OAAO,KACL,6BAAQ,QACR,YAAY,WAAW,MAAM,KAAK,6BAAQ,cACzC,gBAAwB,KAC3B;IACF,SACM,cAAc,EAAE,KAAK,KAAK,qBAAqB,UAAU,KAAK,gBAAgB,CAAC,CACvF;GACJ,CAAC;EACH;CACF;AACF,CAAC;AAED,IAAa,qBAAqB;;;;;;;;AEjLlC,IAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GACN,MAAM;GACN,UAAU;EACZ;EACA,qBAAqB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxD,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,YAAY,aAAa;EAC/B,MAAM,QAAQ,gBAAgB;EAC9B,aAAa;GACX,MAAM,EAAE,QAAQ,qBAAqB,UAAU;GAC/C,MAAM,EACJ,SAAS,EAAE,qBAAqB,YAAY,kCAC1C;GACJ,MAAM,EAAE,WAAW;GACnB,MAAM,EAAE,cAAc;GACtB,MAAM,EAAE,kBAAkB;GAE1B,MAAM,iBACJ,uBAAuB,UAAU,kBAAkB,WAAW,OAAO,YAAY;GAEnF,MAAM,OAAO;IAAE;IAAQ;GAAM;GAC7B,MAAM,iBAAiB;IACrB,GAAG,sBAAsB,6BAA6B,IAAI;IAC1D,GAAG,sBAAsB,UAAU,6BAA6B,IAAI;IACpE,GAAG;GACL;GAEA,MAAM,cAA6B;IACjC,UAAU,yBAAyB,cACjC,QAAQ,EACV,EAAE,iBAAiB,UAAU,WAAW,GAAG;IAC3C,OAAO,qBAAqB,cAAc,OAAO,EAAE,EAAE;GACvD;GACA,IAAI,eAAe,QACjB,YAAY,OAAO,GACjB,CAAC,GAAG,KAAK,EAAE,SAAS,UAAU,IAAK,IAC/B,IACA,gBAAgB,cAAc,OAAO,EAAE,EAAE,QAC9C;QACI,IAAI,eAAe,gBACxB,YAAY,OAAO,GAAG,EAAE,UAAU,QAAQ,GAAG;GAG/C,MAAM,QAAQ;IACZ,GAAG;IACH,oBACG,eAAuB,UACvB,kBAAkB,UAAU,WAAW,UAAU,IAAI,UAAU,QAAQ,UAAU;IACpF,yBACE,mBAAmB,SAAS,GAAG,OAAO,SAAS,cAAc,MAAM,KAAA;IACrE,0BACE,mBAAmB,UAAU,GAAG,OAAO,SAAS,cAAc,MAAM,KAAA;IACtE,GAAG,sBAAuB,eAAuB,OAAO,KAAK;GAC/D;GAEA,MAAM,EAAE,UAAU,cAAc,GAAG,kBAAkB;GAErD,OAAO,EACL,SACA;IACE,SAAS,OAAO;IAChB,sBAAsB,kBAAkB,KAAA;IACxC,2BACG,mBAAmB,WAAW,OAAO,iBAAiB,cAAc,KAAM,KAAA;IAC7E,cAAc;IACd,yBACG,mBAAmB,UAAU,OAAO,gBAAgB,cAAc,KAAM,KAAA;IAC3E,GAAG;IACH,OAAO,KACL,mCAAQ,MACR,YAAY,WAAW,MAAM,KAAK,mCAAQ,MAC1C,kBAAkB,WAAW,mCAAQ,OACpC,gBAAwB,KAC3B;IACA;GACF,SAEE,iBACC,OAAO,gBACJ,OACC,sBAAsB,UAAU,QAAQ;IACvC;IACA;IACA;GACF,CAAC,KACD,UAAU,UACV,KACR;EACF;CACF;AACF,CAAC;;;;;;;AE5FD,IAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,aAAa;GACX,MAAM;GACN,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,mBAAmB,aAAa,UAAU;GAClD,MAAM,EACJ,SAAS,EAAE,YAAY,iCACrB;GAEJ,MAAM,EAAE,gBAAgB,oBAAoB,wBAAwB,qBAAqB,CAAC;GAG1F,IACE,CAAC,YAAY,SAAS,MACnB,WACE,OAAO,OAAO,OAAO,UAAU,WAAW,YACzC,CAAC,CAAC,OAAO,OAAO,UAAU,UAC5B,OAAO,OAAO,UAAU,MAC5B,GAEA,OAAO;GAGT,MAAM,gBAAgB;IACpB,GAAG,sBAAsB,4BAA4B;KACnD;KACA;IACF,CAAC;IACD,GAAG;GACL;GAEA,OAAO,EACL,SACA;IACE,OAAO,KAAK,kCAAQ,MAAM,YAAY,WAAW,MAAM,KAAK,kCAAQ,mBAAmB;IACvF,GAAG;GACL,SACM;IACJ,qBACI,EAAE,KAAK;KACL,WAAW;KACX,SAAS;KACT,GAAG;IACL,CAAQ,IACR;KACH,kBAAkB,YAAY,SAAS,KACrC,uBAAuB,wBAAwB;KAC9C,IAAI,SAAS;KACb,IAAI,QAAQ;KACZ,IAAI,mBAAmB;MACrB,QAAS,sBAA0C;MACnD,SAAS,YAAY,QAAQ;KAC/B;KACA,OAAO,EAAE,qBAAqB;MAC5B;MACA,KAAK,OAAO;MACZ,qBAAqB;MACrB;KACF,CAAQ;IACV,CACF;IACA,sBACI,EAAE,KAAK;KACL,WAAW;KACX,SAAS;KACT,GAAG;IACL,CAAQ,IACR;GACN,CACF;EACF;CACF;AACF,CAAC;;;;;;;;AE9FD,IAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,mBAAmB,UAAU;GACrC,MAAM,EACJ,iBACA,UACA,SAAS,EAAE,oBAAoB,YAAY,2BAC3C,MAAM,EAAE,qBACN;GACJ,MAAM,EAAE,iBAAiB,SAAS;GAElC,MAAM,mBAAmB;IACvB,GAAG,sBAAsB,yBAAyB,EAAE,MAAM,CAAC;IAC3D,GAAG;GACL;GAEA,MAAM,eAAe,gBAAgB,uBAAuB,uBAAuB;GAEnF,OAAO,EACL,YACA;IACE,GAAG;IACH,OAAO,KACL,+BAAQ,MACP,kBAA0B,OAC3B,eAAe,+BAAQ,QACvB,YAAY,WAAW,MAAM,KAAK,+BAAQ,IAC5C;IACA,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,eAAe,QAAQ;KACvB,IAAK,kBAA0B,KAC5B,iBAA0B,IAAI,QAAQ;IAE3C;GACF,SAEE,gBAAgB,EAAE,KAAK,gBACrB,EAAE,oBAAoB;IACpB;IACA;IACA,KAAK,YAAY;IACjB;GACF,CAAQ,CACV,CACJ;EACF;CACF;AACF,CAAC;;;;;;;AEjED,IAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,UAAU;GAAE,MAAM;GAAiD,SAAS,KAAA;EAAU;EACtF,QAAQ;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5C,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,WAAW,aAAa;EAC9B,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,EAAE,WAAW;GACnB,MAAM,MAAM,OAAO;GACnB,MAAM,IAAI,MAAM;GAChB,MAAM,QAAQ,MAAM,SAAS;GAC7B,MAAM,QAAQ,EAAE;GAChB,MAAM,IAAI,EAAE;GACZ,MAAM,cAAc;IAClB,GAAG,sBAAsB,EAAE,iCAAiC;KAAE;KAAQ;IAAM,CAAC;IAC7E,GAAG,sBAAsB,IAAI,iCAAiC;KAAE;KAAQ;IAAM,CAAC;GACjF;GACA,MAAM,QACJ,OACA,MACA,SACA,WAAW,OACX,cAEA,EAAE,KAAK,MAAM;IAAE;IAAU,aAAa,EAAE,MAAM,EAAE,OAAO,UAAU,CAAC;IAAG;GAAQ,SAAS,KAAK;GAC7F,MAAM,WAAyB,CAAC;GAChC,IAAI,EAAE,iBAAiB,OAAO,WAAW,GAAG;IAC1C,IAAI,EAAE,yBAAyB,OAC7B,SAAS,KACP,KACE,EAAE,WACF,MAAM,oBACA,OAAO,aAAa,GAC1B,CAAC,OAAO,YAAY,CACtB,CACF;IACF,SAAS,KACP,KACE,EAAE,gBAAgB,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,GACxD,MAAM,yBACA,OAAO,cAAc,KAAK,GAChC,OAAO,YAAY,MAAM,KAC3B,CACF;IACA,SAAS,KACP,KACE,EAAE,iBAAiB,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,GACzD,MAAM,0BACA,OAAO,cAAc,IAAI,GAC/B,OAAO,YAAY,MAAM,MAC3B,CACF;IACA,IAAI,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,cACjD,SAAS,KAAK,EAAE,KAAK,OAAO,CAAC;GACjC;GACA,IACE,EAAE,uBACF,EAAE,4BAA4B,aAC9B,OAAO,aAAa,GACpB;IACA,SAAS,KACP,KACE,EAAE,aACF,MAAM,qBACA,OAAO,eAAe,EAAE,GAC9B,CAAC,OAAO,eAAe,CACzB,CACF;IACA,SAAS,KACP,KAAK,EAAE,eAAe,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,GAAG,MAAM,kBAAkB;KACrF,MAAM,qBAAqB,IAAI;KAC/B,iBAAiB,MAAM,KAAK,gBAAgB,MAAM,GAAG,OAAO,GAAG,MAAM,MAAM,GAAG,GAAG;IACnF,CAAC,CACH;IACA,IAAI,EAAE,kBAAkB,EAAE,cAAc,SAAS,KAAK,EAAE,KAAK,OAAO,CAAC;GACvE;GACA,IAAI,EAAE,kBAAkB,OAAO,YAAY,GAAG;IAC5C,SAAS,KACP,KACE,EAAE,OAAO,aAAa,IAAI,oBAAoB,iBAAiB,QAC7D,YACA,OAAO,IAAI,MAAM,CACnB,GACA,MAAM,uBACA;KACJ,OAAO,eAAe;KACtB,MAAM,gBAAgB,QAAkB,CAAC,kBAAkB,GAAG,GAAG,CAAC;IACpE,CACF,CACF;IACA,IAAI,EAAE,qBAAqB,SAAS,KAAK,EAAE,KAAK,OAAO,CAAC;GAC1D;GACA,IAAI,EAAE,uBAAuB,OAAO,UAAU,GAAG;IAC/C,SAAS,KACP,KACE,EAAE,WACF,MAAM,kBACA,OAAO,IAAI,MAAM,GACvB,OAAO,YAAY,MAAM,QACzB,oCAAQ,IACV,CACF;IACA,SAAS,KACP,KACE,EAAE,YACF,MAAM,kBACA,OAAO,IAAI,OAAO,GACxB,OAAO,YAAY,MAAM,SACzB,oCAAQ,KACV,CACF;IACA,SAAS,KACP,KAAK,EAAE,OAAO,MAAM,qBAAqB,OAAO,IAAI,KAAK,GAAG,CAAC,OAAO,YAAY,CAAC,CACnF;IACA,IAAI,EAAE,cAAc,SAAS,KAAK,EAAE,KAAK,OAAO,CAAC;GACnD;GACA,IAAI,EAAE,wBAAwB,OAAO,aAAa,GAChD,SAAS,KACP,KACE,EAAE,iBACF,MAAM,+BACA;IACJ,MAAM,qBAAqB,SAAwC;KACjE,GAAG;KACH,kBAAkB;IACpB,EAAE;IACF,OAAO,UAAU;GACnB,GACA,CAAC,MAAM,aAAa,OAAO,GAC7B,CACF;GACF,IAAI,EAAE,cAAc;IAClB,SAAS,KACP,KACE,EAAE,WAAW,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,GACnD,MAAM,kBACA,OAAO,iBAAiB,KAAK,GACnC,CAAC,OAAO,WAAW,CACrB,CACF;IACA,SAAS,KACP,KACE,EAAE,eAAe,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,GACvD,MAAM,mBACA,MAAM,wBAAwB,IAAI,GACxC,CAAC,OAAO,OAAO,MAAM,gBAAgB,EAAE,MAAM,YAAY,CAAC,OAAO,CACnE,CACF;GACF;GAEA,MAAM,UAAU;IAAE;IAAQ,yBAAyB;IAAU;GAAM;GACnE,MAAM,SACJ,MAAM,UAAU,OAAO,KACvB,SAAS,yBAAyB,OAAO,KACzC,IAAI,+BAA+B,OAAO,KAC1C,EAAE,+BAA+B,OAAO;GAC1C,OAAO,EACL,MACA;IACE,kBAAkB;IAClB,UAAU;IACV,cAAc;IACd,GAAG;IACH,QAAQ,MAAM;IACd,UAAU,MAAM;GAClB,SACM,CACJ,EACE,SACA;IAAE,OAAO,YAAY,SAAS,EAAE;IAAe,WAAW;IAAM,cAAc;GAAK,SAEjF,EAAE,KAAK,QAAQ,YACb,EACE,YACA;IACE,cAAc,EAAE;IAChB,OAAO;IACP,MAAM;IACN,SAAS;IACT,GAAG;GACL,SACM,EAAE,MAAM,kBAAkB,EAAE,MAAM,OAAO,CAAC,CAClD,CACF,CACJ,GACA,EAAE,KAAK,UAAU,YAAY,UAAU,QAAQ,CACjD,CACF;EACF;CACF;AACF,CAAC;;;;AEpMD,IAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,MAAM;IAAE;IAAQ;GAAM;GAC5B,MAAM,gBAAgB;IACpB,GAAG,sBAAsB,MAAM,QAAQ,4BAA4B,GAAG;IACtE,GAAG,sBAAsB,OAAO,UAAU,4BAA4B,GAAG;IACzE,GAAG;GACL;GACA,MAAM,QAAQ,MAAM,QAAQ,aAAa,eAAe,QACtD,YACA,OAAO,OAAO,UAAU,MAAM,CAChC;GACA,MAAM,QAAQ,OAAO,eAAe;GACpC,OAAO,EACL,SACA;IAAE,OAAO,cAAc,SAAS;IAAO,WAAW;IAAM,cAAc;GAAK,SAEzE,EAAE,UAAU;IACV,SAAS,UAAU;IACnB,OAAO,KAAK,uBAAuB,kCAAQ,MAAM,cAAc,KAAK;IACpE,eAAe,UAAU,KAAA;IACzB,OAAO,cAAc,SAAS;IAC9B,MAAM,MAAM,SAAS,EAAE,YAAY,OAAO,OAAO;IACjD,GAAG;IACH,OAAO,KAAA;IACP,WAAW,MAAa;KACtB,OAAO,eACL,UAAU,KAAA,IAAY,SAAS,UAAU,SAAS,UAAU,KAAA,CAC9D;KACA,cAAc,WAAW,CAAC;IAC5B;IACA,UAAU,MAAkB;KAC1B,EAAE,gBAAgB;KAClB,cAAc,UAAU,CAAC;IAC3B;GACF,CAAQ,CACZ;EACF;CACF;AACF,CAAC;;;;;;;;;;AEpCD,IAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,kBAAkB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACrD,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,EAAE,WAAW,MAAM;EACzB,MAAM,EAAE,oBAAoB,MAAM,MAAM;EACxC,MAAM,MAAM,OAAO;EACnB,MAAM,UACJ,IAAI,kBAAkB,WACtB,IAAI,kBAAkB,gBACtB,MAAM,qBAAqB,KAAA;EAC7B,MAAM,UAAU,IAAI,kBAAkB;EACtC,MAAM,aACJ,UACM,OAAO,eAAe,KAAmB,CAAC,IAC5C,UACI,OAAO,eAAe,IAA2B,MAAM,qBAAsB,KAC9E,OAAO,eAAe,KAAK;EACpC,MAAM,cAAc,IAAS,KAAK,CAAC;EACnC,MAAM,CAAC,aAAa,kBAClB,aACA,MAAM,MAAM,QAAQ,kBAAkB,MAAM,GAC9C;EACA,MAAM,YAAY,UAAU;GAC1B,IAAI,SACF,OAAO,gBAAgB,QAA4B;IACjD,MAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;IACpD,KAAK,MAAM,oBAAqB;IAChC,OAAO;GACT,CAAC;QACE,OAAO,eAAe,SAAS,KAAA,CAAS;EAC/C,CAAC;EACD,YACQ,OAAO,eAAe,IAC3B,UAAU;GACT,YAAY,QACV,UAAU,KAAA,IACN,UACE,CAAC,IACD,KACF,UACI,QAAkB,MAAM,qBAAsB,KAChD;EACV,CACF;EACA,MAAM,aAAa,OAAY;GAC7B,MAAM,OAAQ,IAAI,KAAK,gBAAgB,OAAO,KAAK,IAAI,OAAO;GAC9D,IAAI,MAAM,gBAAgB,MAAM,GAAG,OAAO,GAAG,GAAG,MAAM,oBAAoB,OAAO;EACnF;EACA,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,IAAI,MAAM;GAChB,MAAM,MAAM;IAAE;IAAQ,kBAAkB,MAAM;IAAkB;GAAM;GACtE,MAAM,YAAY;IAChB,GAAG,sBAAsB,EAAE,6BAA6B,GAAG;IAC3D,GAAG,sBAAsB,IAAI,6BAA6B,GAAG;IAC7D,GAAG;GACL;GACA,MAAM,cAAc;IAClB,GAAG,sBAAsB,EAAE,0BAA0B,GAAG;IACxD,GAAG,sBAAsB,IAAI,0BAA0B,GAAG;GAC5D;GACA,MAAM,aAAa;IACjB,WAAW;IACX,GAAG,sBAAsB,EAAE,+BAA+B,GAAG;IAC7D,GAAG,sBAAsB,IAAI,+BAA+B,GAAG;GACjE;GACA,MAAM,YAAY;IAChB,GAAG,sBAAsB,EAAE,6BAA6B,GAAG;IAC3D,GAAG,sBAAsB,IAAI,6BAA6B,GAAG;GAC/D;GACA,MAAM,YAAY;IAChB,GAAG,sBAAsB,EAAE,gCAAgC,GAAG;IAC9D,GAAG,sBAAsB,IAAI,gCAAgC,GAAG;GAClE;GACA,MAAM,WAAW,IAAI,kBAAkB;GACvC,MAAM,SAAS,IAAI,kBAAkB,UAAU,IAAI,kBAAkB;GACrE,MAAM,SAAS,IAAI,kBAAkB;GACrC,MAAM,YAAY,CAAC,SAAS,UAAU,EAAE,SAAS,IAAI,SAAS,IAC1D,sBAAsB,EAAE,cAAc,IAAI,SAAS,IACnD;GACJ,MAAM,cAAc,CAAC,UAChB,UAAU,eACX,EAAE,aAAa,eAAe,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,IACpE,MAAM,qBAAqB,IACzB,EAAE,aAAa,MACf,EAAE,aAAa;GACrB,MAAM,WAAW,UAAU,QAAQ,YAAY,QAAQ,WAAW;GAClE,MAAM,UAAU,OAAO,uBAAuB;GAC9C,MAAM,WACJ,cACE,UAAU,YAAY,YAAY,UAChC,MAAM,KAAK,QAAQ,KAAK,CAAC,EACtB,QAAQ,MAAM,KAAK,IAAI,EACvB,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,cAAc,OAAO,CAAC,CAAC,CAAC,IACpD,CAAC,IACL,QAAQ,MAAe,KAAK,IAAI;GAClC,MAAM,cAAc;IAClB,IAAI,SAAS;KACX,YAAY,QAAQ,CAAC;KACrB,OAAO,eAAe,CAAC,CAAC;IAC1B,OAAO,IAAI,SAAS;KAClB,YAAY,QAAQ;KACpB,OAAO,gBAAgB,QAAe;MACpC,MAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;MACpD,KAAK,MAAM,oBAAqB,KAAA;MAChC,OAAO;KACT,CAAC;IACH,OAAO,IAAI,UAAU;KACnB,YAAY,QAAQ;KACpB,OAAO,eAAe,IAAI;IAC5B,OAAO;KACL,YAAY,QAAQ;KACpB,OAAO,eAAe,KAAA,CAAS;IACjC;GACF;GACA,MAAM,cAAc,YAAY,QAC5B,EACE,YACA;IACE,cAAc,EAAE,aAAa;IAC7B,OAAO;IACP,MAAM;IACN,OAAO,EAAE,aAAa;IACtB,SAAS;IACT,SAAS;GACX,SACM,EAAE,EAAE,MAAM,KAAK,CACvB,IACA;GACJ,MAAM,YAAY,KAChB,yBACA,mCAAQ,MACR,SACI,mCAAQ,iBACR,UACE,mCAAQ,kBACR,CAAC,aAAa,mCAAQ,kBAC9B;GACA,MAAM,SAA8B;IAClC,cAAc;IACd,UAAU,CAAC,CAAC;IACZ;IACA,OAAO;IACP,OAAO,WAAW,CAAC,MAAM,QAAQ,YAAY,KAAK,IAAI,CAAC,IAAI,YAAY;IACvE,SAAS;IACT,UAAU,MAAkB,EAAE,gBAAgB;GAChD;GACA,MAAM,SACJ,MAAM,UAAU;IACd;IACA,QAAQ,MAAM;IACd,kBAAkB,MAAM;IACxB;GACF,CAAC,KACD,IAAI,SAAS;IACX;IACA,QAAQ,MAAM;IACd,kBAAkB,MAAM;IACxB;GACF,CAAC;GACH,IAAI,QAAQ,OAAO;GACnB,IAAI,WACF,OAAO,EAAE,KAAK,YACZ,EACE,OACA;IACE,OAAO,mCAAQ;IACf,cAAc;IACd,MAAM;IACN,eAAe;KACb,MAAM;KACN,MAAM,oBAAoB,SAAS;MACjC,GAAG;OACF,MAAM,OAAO,MACX,IAAI,2BAA2B,EAAE,2BAA2B,MAAM;KACvE,EAAE;IACJ;GACF,SACM,SACR,CACF;GACF,IAAI,SACF,OAAO,EAAE,aAAa;IACpB,GAAG;IACH,YAAY;IACZ,GAAG;IACH,OAAO,KAAK,WAAW,WAAW,OAAO,WAAW,SAAS;IAC7D,MAAM;IACN,cACE,YAAY,OAAO,SAAS,GAAG,UAAU,WAAW,YAAY,cAAc,KAAA;IAChF,WAAW,UAAqB;KAC9B,YAAY,QAAQ;KACpB,WAAW,WAAW,KAAK;IAC7B;IACA,KAAK;GACP,CAAQ;GACV,IAAI,UACF,OAAO,EAAE,QAAQ;IACf,GAAG;IACH,WAAW;IACX,YAAY;IACZ,GAAG;IACH,OAAO,KAAK,WAAW,YAAY,OAAO,YAAY,SAAS;IAC/D,kBAAkB,EAAE,MAAM,KAAK;IAC/B,MAAM;IACN,WAAW,OAAgB,WAAoB;KAC7C,YAAY,QAAQ;KACpB,YAAY,WAAW,OAAO,MAAM;IACtC;IACA,KAAK;GACP,CAAQ;GACV,IAAI,QACF,OAAO,EAAE,WAAW;IAClB,GAAG;IACH,eAAe;IACf,WAAW;IACX,cAAc,EAAE,cAAc,EAAE,4BAA4B,UAAU;IACtE,GAAG;IACH,OAAO,KAAK,WAAW,UAAU,OAAO,UAAU,SAAS;IAC3D,WAAW,UAAmB;KAC5B,YAAY,QAAQ,SAAS;KAC7B,UAAU,WAAW,KAAK;IAC5B;IACA,KAAK;GACP,CAAQ;GACV,IAAI,QACF,OAAO,EAAE,cAAc;IACrB,GAAG;IACH,GAAG;IACH,OAAO,KAAK,WAAW,UAAU,OAAO,UAAU,SAAS;IAC3D,MAAM;IACN,cAAc,YAAY,OAAO,SAAS,GAAG,SAAS,cAAc,KAAA;IACpE,WAAW,UAAkB;KAC3B,YAAY,QAAQ;KACpB,UAAU,WAAW,KAAK;IAC5B;IACA,KAAK;GACP,CAAQ;GACV,OAAO,EAAE,WAAW;IAClB,GAAG;IACH,GAAG;IACH,OAAO,KAAK,WAAW,UAAU,OAAO,UAAU,SAAS;IAC3D,IAAI;IACJ,cAAc,YAAY,OAAO,SAAS,GAAG,SAAS,cAAc,KAAA;IACpE,UAAU,UAA0B;KAElC,YAAY,QADE,OAAO,UAAU,WAAW,QAAS,MAAM,OAA4B;KAErF,UAAU,WAAW,KAAK;IAC5B;IACA,KAAK;GACP,CAAQ;EACV;CACF;AACF,CAAC;;;;AE9QD,IAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aACE,EACE,KACA;GAAE,GAAG;GAAO,OAAO,KAAK,2BAA2B,qCAAQ,MAAM,MAAM,KAAK;EAAE,SACxE,CACJ,EAAE,qBAAqB;GAAE,QAAQ,MAAM;GAAQ,kBAAkB;GAAG,OAAO,MAAM;EAAM,CAAC,GACxF,EAAE,qBAAqB;GAAE,QAAQ,MAAM;GAAQ,kBAAkB;GAAG,OAAO,MAAM;EAAM,CAAC,CAC1F,CACF;CACJ;AACF,CAAC;;;;AElBD,IAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,gBAAgB;GACpB,MAAM,IAAI;IACR,GAAG,sBAAsB,MAAM,MAAM,QAAQ,+BAA+B;KAC1E,QAAQ,MAAM,OAAO;KACrB,OAAO,MAAM;IACf,CAAC;IACD,GAAG,sBAAsB,MAAM,OAAO,OAAO,UAAU,+BAA+B;KACpF,QAAQ,MAAM,OAAO;KACrB,OAAO,MAAM;IACf,CAAC;IACD,GAAG;GACL;GACA,IAAI,CAAC,KAAK,OACR,EAAE,QAAQ,KAAA,KAAa,EAAE,QAAQ,KAAA,IAC7B,CAAC,EAAE,KAAK,EAAE,GAAG,IACZ,MAAM,OAAO,OAAO,uBAAuB,KAAK,CAAC,GAAG,CAAC;GAC5D,IAAI,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI;GAClC,IAAI,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI;GAClC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;EAC5B;EACA,MAAM,SAAS,IACZ,MAAM,OAAO,OAAO,eAAe,KAA0B,QAAQ,CACxE;EACA,YACQ,MAAM,OAAO,OAAO,eAAe,IACxC,UAAU;GACT,OAAO,QAAQ,MAAM,QAAQ,KAAK,IAAK,QAA6B,QAAQ;EAC9E,CACF;EACA,aAAa;GACX,MAAM,CAAC,KAAK,OAAO,QAAQ;GAC3B,MAAM,EAAE,WAAW,MAAM;GACzB,MAAM,aAAa;IACjB,GAAG,sBAAsB,MAAM,MAAM,QAAQ,+BAA+B;KAC1E;KACA,OAAO,MAAM;IACf,CAAC;IACD,GAAG,sBAAsB,OAAO,UAAU,+BAA+B;KACvE;KACA,OAAO,MAAM;IACf,CAAC;IACD,GAAG;GACL;GACA,OAAO,EAAE,aAAa;IACpB,OAAO,KAAK,2BAA2B,qCAAQ,MAAM,WAAW,KAAK;IACrE;IACA;IACA,OAAO,OAAO;IACd,GAAG;IACH,WAAW,UAA4B;KACrC,OAAO,QAAQ;KACf,WAAW,WAAW,KAAK;IAC7B;IACA,cAAc,UAA4B;KACxC,OAAO,eAAe,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,KAAA,IAAY,KAAK;KAC5E,WAAW,cAAc,KAAK;IAChC;GACF,CAAQ;EACV;CACF;AACF,CAAC;;;;;;AEhED,IAAa,mCAAmC,gBAAgB;CAC9D,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,EAAE,WAAW;GACnB,MAAM,MAAM,OAAO;GACnB,MAAM,IAAI,MAAM;GAChB,MAAM,UAAU,IAAI,2BAA2B,EAAE;GACjD,MAAM,WACJ,EAAE,2BACF,IAAI,4BAA4B,UAC/B,YAAY,KAAA,KAAa,CAAC,CAAC,SAAS;GACvC,MAAM,QACJ,MAAM,UAAU;IAAE;IAAQ;IAAQ;GAAM,CAAC,MACxC,IAAI,kBAAkB,aACnB,EAAE,oBAAoB;IAAE;IAAQ;GAAM,CAAC,IACvC,IAAI,kBAAkB,iBACpB,EAAE,uBAAuB;IAAE;IAAQ;GAAM,CAAC,IAC1C,CAAC,cAAc,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,KACtD;IAAC;IAAW;IAAoB;GAAe,EAAE,SAAS,IAAI,SAAS,IACvE,EAAE,uBAAuB;IAAE;IAAQ;GAAM,CAAC,IAC1C,EAAE,qBAAqB;IAAE;IAAQ;GAAM,CAAC;GAClD,MAAM,WAAW,WACb,EAAE,MAAM,EAAE,cAAc,EAAE,4BAA4B,UAAU,SAAS,CACvE,EACE,SACA;IACE,OAAO,EAAE,aAAa;IACtB,UAAU;IACV,cAAc;GAChB,SAEE,EAAE,KAAK,QAAQ,YACb,EACE,YACA;IACE,cAAc,EAAE,aAAa;IAC7B,OAAO;IACP,MAAM;IACN,SAAS;GACX,SACM,EAAE,EAAE,MAAM,aAAa,CAC/B,CACF,CACJ,GACA,EAAE,sBAAsB;IACtB;IACA;IACA,gBACE,iBAAiB,MAAM,KAAK,gBAAgB,MAAM,GAAG,OAAO,GAAG,MAAM,MAAM,GAAG,GAAG;GACrF,CAAC,CACH,CAAC,IACD;GACJ,OAAO,EACL,UACA,EACE,UAAU,MAAM,SAAS,EAAE,qBAAqB,EAAE,4BAA4B,UAChF,SAEE,EAAE,MAAM;IAAE,WAAW;IAAU,GAAG;GAAM,SAAS,CAC/C,EAAE,MAAM,EAAE,OAAO,WAAW,SAAS,CAAC,OAAO,QAAQ,CAAC,GACtD,WACI,EACE,MACA;IAAE,GAAG;IAAU,OAAO,gDAAQ;IAAsB,WAAW;GAAQ,SAErE,EAAE,aAAa,WAAW,QACxB,gBACA,sBAAsB,EAAE,cAAc,IAAI,SAAS,CACrD,CACJ,IACA,IACN,CAAC,CACL;EACF;CACF;AACF,CAAC;;;;AEpFD,IAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GAAE,MAAM;GAA6C,UAAU;EAAK;EAC5E,OAAO;GAAE,MAAM;GAAoD,UAAU;EAAK;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,gBAAgB,IAAI,KAAK;EAC/B,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,EAAE,WAAW;GACnB,MAAM,MAAM,OAAO;GACnB,MAAM,IAAI,MAAM;GAChB,MAAM,QAAQ,OAAO,eAAe;GACpC,MAAM,SAAS,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC;GAC9D,MAAM,QACJ,IAAI,kBAAkB,WACtB,IAAI,kBAAkB,gBACtB;IAAC;IAAW;IAAoB;GAAe,EAAE,SAAS,IAAI,SAAS;GACzE,MAAM,SACJ,IAAI,0BAA0B,gBAAyB,OAAO,eAAe,EAAE;GACjF,MAAM,YAAY,MAAM,QAAQ,KAAK,IACjC,MACG,KAAK,UAAU,OAAO,KAAK,CAAC,EAC5B,KAAK,KAAK,QAAQ,EAAE,aAAa,MAAM,EAAE,aAAa,GAAG,GAAG,IAC/D,OAAO,KAAK;GAChB,MAAM,UACJ,EAAE,4BAA4B,aAAa,CAAC,SACxC,EAAE,aAAa,eAAe,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,IACpE,EAAE,aAAa,kBACZ,QAAQ,YAAY,OAAO,IAAI,MAAM,CAAC,EACtC,QAAQ,gBAAgB,sBAAsB,EAAE,cAAc,IAAI,SAAS,CAAC,EAC5E,QAAQ,iBAAiB,IAAI,UAAU,EAAE,EACzC,QAAQ,SAAO,EAAE;GAC1B,MAAM,WACJ,EAAE,4BAA4B,aAC7B,CAAC,CAAC,SAAS,CAAC,SACZ,UAAU,CAAC,CAAE,QAAsB,MAAM,CAAC,CAAE,QAAsB;GACrE,MAAM,SAAS,UAAsB;IACnC,MAAM,gBAAgB;IACtB,IAAI,EAAE,4BAA4B,WAAW,cAAc,QAAQ,CAAC,cAAc;SAC7E,MAAM,qBAAqB,IAAI;IACpC,iBAAiB;KACf,MAAM,QAAQ,MAAM,KAAK,gBAAgB,MAAM,GAAG,OAAO,GAAG;KAC5D,OAAO,MAAM;KACb,OAAO,OAAO;IAChB,GAAG,GAAG;GACR;GACA,OAAO,EACL,SACA;IACE,aAAa,IAAI,kBAAkB;IACnC,QAAQ,cAAc;IACtB,UAAU;IACV,QAAQ;IACR,OAAO;IACP,cAAc;IACd,WAAW,WAAoB;KAC7B,cAAc,QAAQ;IACxB;GACF,SACM,CACJ,EAAE,YAAY;IAAE,SAAS;IAAU,YAAY;GAAQ,SACrD,EAAE,QAAQ,QAAQ,YAChB,EACE,SACA;IACE,UAAU,cAAc;IACxB,OAAO;IACP,WAAW;IACX,GAAG,QAAQ,SAAS,KAAK,MAAM,KAAA;IAC/B,cAAc;GAChB,SAEE,EACE,YACA;IACE,cAAc;IACd,OAAO,KAAK,yCAAyC,4CAAQ,IAAI;IACjE,MAAM;IACN,GAAG,aAAa,UAAU,MAAM;IAChC,GAAG;IACH,SAAS;GACX,SACM,EAAE,EAAE,MAAM,YAAY,EAAE,MAAM,OAAO,CAAC,CAC9C,CACJ,CACF,CACF,GACA,EAAE,4BAA4B,YAC1B,EACE,QAAQ,UACR;IACE,UAAU,UAAsB,MAAM,gBAAgB;IACtD,YAAY,UAAyB;KACnC,IAAI,MAAM,QAAQ,SAAS,cAAc,QAAQ;IACnD;IACA,cAAc,UAAsB,MAAM,gBAAgB;GAC5D,SACM,EAAE,kCAAkC;IAAE;IAAQ;GAAM,CAAC,CAC7D,IACA,IACN,CACF;EACF;CACF;AACF,CAAC;;;AC7GD,IAAa,8BAA8B,gBAAgB;CACzD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GACN,MAAM;GACN,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;EACA,kBAAkB;GAChB,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,QAAQ,OAAO,qBAAqB;GAC5C,MAAM,EACJ,UACA,SAAS,EAAE,sBAAsB,gCACjC,gBACA,mBACA,qBACE;GACJ,MAAM,EAAE,cAAc;GAEtB,MAAM,MAAM;IAAE;IAAQ;GAAM;GAC5B,MAAM,kBAAkB;IACtB,GAAG,sBAAsB,8BAA8B,GAAG;IAC1D,GAAG,sBAAsB,UAAU,8BAA8B,GAAG;IACpE,GAAG;GACL;GAEA,MAAM,mBAAmB,UAAqB;IAC3C,iBAA0B,cAAc,KAAK;IAC9C,kBAAkB,MAAM;IACxB,MAAM,cAAc,aAAa,iBAAiB,OAAsB,GAAG,CAAC;GAC9E;GAEA,MAAM,iBAAiB,UAAqB;IACzC,iBAA0B,YAAY,KAAK;IAE5C,MAAM,EAAE,aAAa,gBAAgB,kBAAkB,SAAS;IAChE,IAAI,eAAe,OAAO,aACxB,OAAO,eAAe;SACjB,IACL,wBACA,iBACA,eAAe,OAAO,gBAAgB,IAEtC,eACE,cAAc,QAAQ,eAA0C,WAAW,CAC7E;IAEF,kBAAkB,IAAI;IACtB,iBAAiB,IAAI;GACvB;GAEA,OAAO,EAAE,sBAAsB;IAC7B;IACA,WAAW;IACX,aAAa;IACb;GACF,CAAQ;EACV;CACF;AACF,CAAC;;;;;;;;;AEnED,IAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GACN,MAAM;GACN,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,EACJ,UACA,SAAS,EAAE,uBAAuB,oBAClC,wBACE;GACJ,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,EAAE,WAAW;GACnB,MAAM,UAAU,OAAO,iBAAiB;GAExC,MAAM,SACJ,OAAO,cAAc,KAAK,qBAAqB,UAC3C,eACG,0BAA0B,QAAQ,KAAK,MACvC,SAAS,EAAE,iBAAiB,eAAe,GAC7C,OACD,KAAA;GAEN,OAAO,EAAE,KAAK;IACZ,kBAAkB;KAChB,qBAAqB,SAAS;MAC5B,GAAG;MACH,kBAAkB;KACpB,EAAE;KACF,OAAO,UAAU;IACnB;IACA,aAAa;IACb,cAAc;IACd,MAAM;IACN,GAAG;IACH,OAAO;KAAE,mBAAmB;KAAQ,GAAI,MAAc;IAAM;IAC5D,OAAO,KACL,qCACA,6CAAQ,MACR,6CAAQ,QAAQ,0BAChB,CAAC,OAAO,WAAW,UAAU,qBAAqB,cAAc,6CAAQ,cACxE,SACC,MAAc,KACjB;GACF,CAAQ;EACV;CACF;AACF,CAAC;;;;;;;;;AExDD,IAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,cAAc;CACd,OAAO;EACL,QAAQ;GACN,MAAM;GACN,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,QAAQ,UAAU;GAC1B,MAAM,EACJ,UACA,SAAS,EACP,OAAO,EAAE,gBAAgB,mBAAmB,sBAC5C,mBAEA;GACJ,MAAM,SAAS,OAAO;GACtB,MAAM,EAAE,cAAc;GACtB,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,SAAS,OAAO,YAAY;GAClC,MAAM,YAAY,OAAO,aAAa;GAEtC,MAAM,cAAc,SAChB,WAAW,SACT,aAAa,mBAAmB,QAAQ,YAAY,UAAU,MAAM,IACpE,aAAa,kBAAkB,QAAQ,YAAY,UAAU,MAAM,IACrE,OAAO,oBAAoB,MAAM,SAC/B,aAAa,iBAAiB,QAAQ,YAAY,UAAU,MAAM,IAClE,aAAa,gBAAgB,QAAQ,YAAY,UAAU,MAAM;GAEvE,MAAM,mBAAmB,EACvB,YACA;IACE,cAAc;IACd,GAAG,aAAa,UAAU,MAAM;IAChC,GAAG;IACH,OAAO,KAAK,8BAA8B,0CAAQ,cAAe,MAAc,KAAK;GACtF,SAEE,WAAW,SACP,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC,IACtC,WAAW,QACT,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC,IACrC,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC,CAC5C;GAEA,OAAO,EAAE,SAAS;IAAE,OAAO;IAAa,WAAW;IAAM,cAAc;GAAK,SAC1E,QAAQ,SAAS,KAAK,cAAc,KAChC,mBACA,EACE,WACA;IACE,YAAY,EACV,MAAM,KACJ,uCACA,0CAAQ,uBACV,EACF;IACA,QAAQ;IACR,OAAO,YAAY;IACnB,QAAQ;GACV,SACM,gBACR,CACN;EACF;CACF;AACF,CAAC;;;;;;;;;;;;;;;;;;;;;;AE9DD,IAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,QAAQ;GACN,MAAM;GACN,UAAU;EACZ;EACA,qBAAqB;GAAE,MAAM;GAAQ,SAAS;EAAE;EAChD,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,YAAY,aAAa;EAC/B,MAAM,QAAQ,gBAAgB;EAC9B,MAAM,oBAAoB,IAAI,KAAK;EACnC,MAAM,wBAAwB,IAAI,KAAK;EAEvC,aAAa;GACX,MAAM,EAAE,mBAAmB,QAAQ,qBAAqB,UAAU;GAClE,MAAM,EACJ,UACA,SAAS,EACP,yBACA,uBACA,kBACA,qBACA,sBACA,sBACA,qBACA,gBACA,gCACA,iBACA,YACA,6BAEF,MAAM,EAAE,qBACR,qBACE;GACJ,MAAM,EAAE,kBAAkB,gBAAgB,UAAU,kBAAkB,SAAS;GAC/E,MAAM,EAAE,WAAW;GACnB,MAAM,EAAE,cAAc;GACtB,MAAM,EAAE,kBAAkB;GAE1B,MAAM,MAAM;IAAE;IAAQ;GAAM;GAC5B,MAAM,iBAAiB;IACrB,GAAG,sBAAsB,2BAA2B,GAAG;IACvD,GAAG,sBAAsB,UAAU,2BAA2B,GAAG;IACjE,GAAG;GACL;GAEA,MAAM,cAA6B;IACjC,UAAU,yBAAyB,cACjC,QAAQ,EACV,EAAE,iBAAiB,UAAU,WAAW,GAAG;IAC3C,OAAO,qBAAqB,cAAc,OAAO,EAAE,EAAE;GACvD;GACA,IAAI,eAAe,QACjB,YAAY,OAAO,GACjB,CAAC,GAAG,KAAK,EAAE,SAAS,UAAU,IAAK,IAC/B,IACA,gBAAgB,cAAc,OAAO,EAAE,EAAE,QAC9C;QACI,IAAI,eAAe,gBACxB,YAAY,OAAO,GAAG,EAAE,UAAU,QAAQ,GAAG;GAG/C,MAAM,iBACJ,uBAAuB,UAAU,kBAAkB,WAAW,OAAO,YAAY;GAEnF,MAAM,mBAAmB,gBAAgB,OAAO,OAAO;GACvD,MAAM,kBAAkB,eAAe,OAAO,OAAO;GAErD,MAAM,wBACH,uBAAuB,UAAU,wBAClC,UAAU,wBAAwB;GAEpC,MAAM,oBACJ,CAAC,kCACD,sBAAsB,SACrB,kBAAkB,SACjB,CAAC,MAAM,sBAAsB,EAAE,MAAM,QAAQ,IAAI,cAAc,CAAC;GAEpE,MAAM,iBACJ,yBAAyB,SACzB,UAAU,yBAAyB,UAClC,wBACE,wBAAwB,UAAU,yBAAyB,SAC3D,kBACC,UAAU,mBAAmB,SAC7B,CAAC,SAAS,SAAS,OAAO,EAAE,MAChC;GAEF,IAAI,WAAW;GACf,IAAI,OAAO,WAAW,GAAG;GACzB,IAAI,sBAAsB,wBAAwB,iBAAiB,YAAY;GAC/E,IAAI,gBAAgB,YAAY;GAEhC,MAAM,mBAAmB,OAAkB;IACzC,MAAM,EAAE,gBAAgB,UAAU,eAAe,YAAY,SAAS;IACtE,IAAI,kBAAkB,SAAS,OAAO,aACpC,iBAAiB,IAAI;IAEvB,IAAI,wBAAwB,YAAY,kBAAkB,SACxD,iBAAiB,UAAU,yBAAyB,QAAQ,SAAS,IAAI;GAE7E;GAEA,MAAM,gBACJ,WAAW,kBAAkB,WACzB,WAAW,SAAS;IAAE;IAAQ;IAAQ;GAAM,CAAC,IAC5C,WAAW,UAAU,UAAU;GAEtC,MAAM,QACJ,kBAAkB,UAAU,WAAW,UAAU,IAAI,UAAU,QAAQ,UAAU;GAEnF,MAAM,QAAQ;IACZ,GAAG;IACH,yBACE,mBAAmB,SAAS,GAAG,OAAO,SAAS,cAAc,MAAM,KAAA;IACrE,0BACE,mBAAmB,UAAU,GAAG,OAAO,SAAS,cAAc,MAAM,KAAA;IACtE,GAAG,sBAAuB,gBAAwB,OAAO,KAAK;GAChE;GAEA,MAAM,EAAE,UAAU,cAAc,GAAG,kBAAkB;GAErD,MAAM,UAAU,OAAO,gBACnB,OACC,gBACD,EACE,MACA,EACE,OAAO,KACL,+BACA,iCAAQ,UACP,kBAAkB,WAAY,gBAAwB,UAAU,aAC/D,iCAAQ,mBACT,gBAAwB,UAAU,WAAW,iCAAQ,kBACtD,OAAO,aAAa,KAAK,iCAAQ,iBACnC,EACF,SACM;IACJ,EACE,MACA;KACE,OAAO,EACL,6CAA6C,GAAG,WAClD;KACA,OAAO,KACL,8BACA,iCAAQ,QACR,OAAO,WAAW,KAAK,kBAAkB,WAAW,iCAAQ,oBAC3D,gBAAwB,UAAU,UAC/B,iCAAQ,kBACP,gBAAwB,UAAU,YAAY,iCAAQ,kBAC3D,kBAAkB,UAAU,iCAAQ,cACtC;KACA,SAAS,OAAO,wBAAwB;IAC1C,SACM;KACJ,EACE,MACA,EACE,OAAO,KACL,uCACA,iCAAQ,oBACR,kBAAkB,UAAU,iCAAQ,qCACnC,UAAU,QAAQ,UAAU,KAAK,MAAM,iCAAQ,yBAClD,EACF,SACM,aACR;KACA,OAAO,aAAa,MACjB,OAAO,cAAc,KAAK,sBAC3B,EAAE,8BAA8B;MAAE;MAAQ;KAAM,CAAQ;KAC1D,OAAO,WAAW,MACf,OAAO,YAAY,KAAK,sBACzB,EAAE,4BAA4B;MAAE;MAAQ;KAAM,CAAQ;IAC1D,CACF;IACA,kBAAkB,WAChB,EACE,MACA,EACE,OAAO,KAAK,uCAAuC,iCAAQ,kBAAkB,EAC/E,SACM,CACJ,kBACE,EAAE,6BAA6B;KAC7B;KACA;KACA,kBAAkB,EAChB,OAAO,kBAAkB,MAAM,OAAO,IACxC;IACF,CAAQ,GACV,wBACE,qBACA,EAAE,sBAAsB;KACtB;KACA,WAAW,MAAe;MACxB,sBAAsB,QAAQ;KAChC;KACA,QAAQ,sBAAsB;KAC9B;IACF,CAAQ,CACZ,CACF;IACF,OAAO,aAAa,KAAK,EAAE,+BAA+B;KAAE;KAAQ;IAAM,CAAQ;GACpF,CACF;GAEJ,OAAO,EACL,SACA;IACE,SAAS,OAAO;IAChB,sBAAsB,kBAAkB,KAAA;IACxC,wBAAwB,oBAAoB,KAAA;IAC5C,2BACG,mBAAmB,WAAW,OAAO,iBAAiB,cAAc,KAAM,KAAA;IAC7E,8BAA8B,mBAAmB,KAAA;IACjD,cAAc;IACd,yBACG,mBAAmB,UAAU,OAAO,gBAAgB,cAAc,KAAM,KAAA;IAC3E,iBACG,qBAAqB,cACpB,kBAAkB,qBAAqB,OAAO,MAC9C,yBACF,KAAA;IACF,GAAG;IACH;IACA,OAAO,KACL,iCAAQ,MACR,YAAY,WAAW,MAAM,KAAK,iCAAQ,cAC1C,mBAAmB,OAAO,WAAW,KAAK,iCAAQ,mBAClD,qBAAqB,iCAAQ,qBAC5B,gBAAwB,KAC3B;IACA,aAAa;IACb,oBAAoB;KAClB,kBAAkB,QAAQ;IAC5B;IACA,oBAAoB;KAClB,kBAAkB,QAAQ;IAC5B;IACA,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,IAAI,MAAM;MACR,kBAAkB,MAAM,OAAO,MAAM;MACrC,IAAI,kBAAkB,SACpB,mBAAmB,iBAAiB,IAAI;KAE5C;IACF;IACA;GACF,SACM,CACJ,SACA,4BAA4B,eAC1B,OAAO,aAAa,KACpB,EAAE,kCAAkC;IAAE;IAAQ;GAAM,CAAQ,CAChE,CACF;EACF;CACF;AACF,CAAC;;;;;;;;AEnRD,IAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,aAAa;GACX,MAAM;GACN,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,mBAAmB,aAAa,UAAU;GAClD,MAAM,EACJ,UACA,SAAS,EAAE,oBAAoB,YAAY,+BACzC;GACJ,MAAM,EAAE,iBAAiB,SAAS;GAElC,MAAM,EAAE,gBAAgB,oBAAoB,wBAAwB,qBAAqB,CAAC;GAE1F,MAAM,gBAAgB;IACpB,GAAG,sBAAsB,0BAA0B;KACjD;KACA;IACF,CAAC;IACD,GAAG;GACL;GAEA,OAAO,EACL,SACA;IACE,GAAG;IACH,OAAO,KACL,gCAAQ,OACP,sBAAsB,iBAAiB,gCAAQ,QAChD,YAAY,WAAW,MAAM,KAAK,gCAAQ,qBACzC,eAAuB,KAC1B;GACF,SACM;IACJ,qBACI,EAAE,KAAK;KACL,WAAW;KACX,SAAS;KACT,GAAG;IACL,CAAQ,IACR;KACH,kBAAkB,YAAY,SAAS,KACrC,uBAAuB,wBAAwB;KAC9C,IAAI,SAAS;KACb,IAAI,QAAQ;KACZ,IAAI,mBAAmB;MACrB,QAAS,sBAA0C;MACnD,SAAS,YAAY,QAAQ;KAC/B;KACA,OAAO,EAAE,mBAAmB;MAC1B;MACA;MACA,KAAK,OAAO;MACZ,qBAAqB;MACrB;KACF,CAAQ;IACV,CACF;IACA,sBACI,EAAE,KAAK;KACL,WAAW;KACX,SAAS;KACT,GAAG;IACL,CAAQ,IACR;GACN,CACF;EACF;CACF;AACF,CAAC;;;;;;;;;;;;AEzFD,IAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,cAAc;CACd,OAAO;EACL,mBAAmB;GACjB,MAAM;GACN,SAAS,KAAA;EACX;EACA,OAAO;GACL,MAAM;GACN,UAAU;EACZ;CACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa;GACX,MAAM,EAAE,mBAAmB,UAAU;GACrC,MAAM,EACJ,iBACA,qBACA,UACA,SAAS,EACP,oBACA,YACA,uBACA,8BAEF,MAAM,EAAE,mBACN;GACJ,MAAM,EAAE,cAAc,oBAAoB,SAAS;GAEnD,MAAM,iBAAiB;IACrB,GAAG,sBAAsB,uBAAuB,EAAE,MAAM,CAAC;IACzD,GAAG;GACL;GAEA,MAAM,eAAe,sBAAsB;GAE3C,OAAO,EACL,YACA;IACE,GAAG;IACH,OAAO,KACL,6BAAQ,MACR,YAAY,WAAW,MAAM,IAAI,6BAAQ,eAAe,6BAAQ,yBAChE,gBAAgB,6BAAQ,gBACvB,gBAAwB,KAC3B;IACA,KAAK,gBAAgB,YAAY,WAAW,MAAM,IAAI,WAAW;IACjE,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,aAAa,QAAQ;KACrB,IAAK,gBAAwB,KAC1B,eAAwB,IAAI,QAAQ;IAEzC;GACF,SAEE,+BAA+B,mBAC9B,mBAAmB,oBAAoB,EAAE,KAAK,SAAS,KACpD,EACE,SACA,EACE,OAAO,KAAK,6BAAQ,cAAc,YAAY,WAAW,MAAM,KAAK,6BAAQ,IAAI,EAClF,SAEE,EACE,SACA;IACE,OAAO,KACL,6BAAQ,cACR,YAAY,WAAW,MAAM,KAAK,6BAAQ,IAC5C;IACA,SAAS,MAAM,sBAAsB,EAAE;GACzC,SACM,EAAE,wBAAwB,EAAE,MAAM,CAAQ,CAClD,CACJ,IACA,gBAAgB,EAAE,KAAK,gBACrB,EAAE,kBAAkB;IAClB;IACA;IACA,KAAK,YAAY;IACjB;GACF,CAAQ,CACV,CACR;EACF;CACF;AACF,CAAC;;;;;;;AErFD,IAAa,YAAY,gBAAgB;CACvC,MAAM;CACN,cAAc;CACd,OAAO,EACL,OAAO;EACL,MAAM;EACN,UAAU;CACZ,EACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,uBAAuB,yBAAyB,MAAM,KAAK;EACjE,MAAM,EAAE,gBAAgB,sBAAsB;EAE9C,aAAa;GACX,MAAM,EAAE,UAAU;GAElB,MAAM,oBAAoB,sBAAsB;GAChD,MAAM,EACJ,gBACA,SAAS,EAAE,mBAAmB,iBAAiB,YAAY,wBACzD;GAEJ,MAAM,aAAa;IACjB,kBAAkB;IAClB,mBAAmB,MAAM,SAAS,EAAE;IACpC,iBAAiB,MAAM,SAAS,EAAE;IAClC,GAAG,sBAAsB,mBAAmB,EAAE,MAAM,CAAC;IACrD,GAAG;GACL;GAEA,MAAM,wBAAgD;IACpD,MAAM,UAAU,eAAe;IAC/B,MAAM,WAAmC,CAAC;IAC1C,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;KACvC,MAAM,SAAS,QAAQ;KACvB,MAAM,UAAU,OAAO,QAAQ;KAC/B,SAAS,YAAY,cAAc,OAAO,EAAE,EAAE,UAAU;KACxD,SAAS,SAAS,cAAc,OAAO,OAAO,EAAE,EAAE,UAAU;IAC9D;IACA,OAAO;GACT,GAAG;GAEH,MAAM,eAAgB,WAAmB;GAEzC,MAAM,wBAAwB;IAAE;IAAmB;GAAM;GAEzD,OAAO,EACL,OACA;IACE,GAAG;IACH,OAAO,KACL,aACA,yBAAQ,MACR,YAAY,WAAW,MAAM,KAAK,yBAAQ,cACzC,WAAmB,KACtB;IACA,OAAO;KACL,GAAG;KACH,sCAAsC;KACtC,4CAA4C,eACxC,MAAM,WAAW,MAAM,SACrB,QAAQ,cAAc,GAAI,IAC1B,OAAO,cAAc,GAAI,IAC3B,KAAA;KACJ,GAAI,WAAmB;IACzB;GACF,SACM;IACJ,mBAAmB,EAAE,eAAe,qBAA4B;IAChE,EAAE,eAAe;KACf,GAAG;KACH;IACF,CAAQ;IACR,qBAAqB,EAAE,iBAAiB,qBAA4B;GACtE,CACF;EACF;CACF;AACF,CAAC;;;;;;;;AEjFD,IAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,cAAc;CACd,OAAO,EACL,OAAO;EACL,MAAM;EACN,UAAU;CACZ,EACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,qBAAqB,IAAI,CAAC;EAEhC,gBAAgB;GACd,MAAM,EAAE,kBAAkB,kBAAkB,MAAM,MAAM;GAGxD,mBAAmB,SAFM,cAAc,OAAO,gBAAgB,MAClC,iBAAiB,OAAO,gBAAgB;EAEtE,CAAC;EAED,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,EACJ,UACA,SAAS,EACP,mBACA,iBACA,oBACA,4BACA,8BAEF,MAAM,EAAE,wBACN;GACJ,MAAM,EAAE,aAAa,YAAY,cAAc,WAAW,uBAAuB,SAAS;GAE1F,MAAM,sBAAsB;IAC1B,GAAG,sBAAsB,4BAA4B,EAAE,MAAM,CAAC;IAC9D,GAAG;GACL;GACA,MAAM,sBAAsB,sBAAsB,4BAA4B,EAAE,MAAM,CAAC;GAEvF,MAAM,kBAAkB,sBAAsB,WAAW;GACzD,MAAM,gBAAgB,oBAAoB,WAAW;GAErD,OAAO,EACL,KACA;IACE,GAAG;IACH,OAAO;KACL,4BAA4B,GAAG,mBAAmB;KAClD,GAAI,qBAA6B;IACnC;IACA,OAAO,KACL,uBACA,kCAAQ,MACR,sBAAsB,kCAAQ,gBAC9B,gBAAgB,kCAAQ,oBACvB,qBAA6B,KAChC;IACA,MAAM,OAAY;KAChB,MAAM,OAAQ,IAAI,OAAO;KACzB,IAAI,MAAM;MACR,kBAAkB,QAAQ;MAC1B,IAAK,qBAA6B,KAC/B,oBAA6B,IAAI,QAAQ;KAE9C;IACF;GACF,SACM;IACJ,EAAE,gBAAgB;KAChB,SAAS,aAAa;KACtB,QAAQ;KACR,GAAG;IACL,CAAQ;IACR,EAAE,WAAW,EAAE,MAAM,CAAQ;KAC5B,mBAAmB,kBAAkB,EAAE,kBAAkB;KAAE,MAAM;KAAM;IAAM,CAAQ;GACxF,CACF;EACF;CACF;AACF,CAAC;;;;AE/ED,IAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,cAAc;CACd,OAAO,EACL,OAAO;EACL,MAAM;EACN,UAAU;CACZ,EACF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,QAAQ,gBAAgB;EAI9B,MAAM,qBAAqB,WAAoB;GAC7C,IAAI,OAAO,aAAa,aAAa;GACrC,SAAS,KAAK,MAAM,WAAW,SAAS,WAAW;EACrD;EAEA,YACQ,MAAM,MAAM,SAAS,EAAE,eAC5B,iBAAiB,kBAAkB,CAAC,CAAC,YAAY,CACpD;EAEA,sBAAsB,kBAAkB,KAAK,CAAC;EAE9C,aAAa;GACX,MAAM,EAAE,UAAU;GAClB,MAAM,EACJ,UACA,SAAS,EACP,qBACA,kBACA,mBACA,qBACA,oBAEF,MAAM,EAAE,oBACN;GACJ,MAAM,EAAE,iBAAiB,SAAS;GAElC,MAAM,kBAAkB;IACtB,GAAG,sBAAsB,mBAAmB,EAAE,MAAM,CAAC;IACrD,GAAG;GACL;GAEA,MAAM,QAAQ;IACZ,QAAQ,eAAe,MAAM,KAAA;IAC7B,GAAG,sBAAsB,iBAAiB,OAAc,KAAK;IAC7D,GAAI,eACA;KACE,QAAQ;KACR,cAAc;KACd,QAAQ;KACR,QAAQ;KACR,MAAM;KACN,QAAQ;KACR,WAAW;KACX,UAAU;KACV,SAAS;KACT,UAAU;KACV,OAAO;KACP,KAAK;KACL,OAAO;IACT,IACA;GACN;GAEA,MAAM,QAAQ,EACZ,OACA;IACE,QAAQ;IACR,YAAY;IACZ,GAAG;IACH,OAAO,KACL,mBACA,8BAAQ,MACR,gBAAgB,8BACf,iBAAyB,KAC5B;IACA,MAAM,OAAY;KAChB,cAAc,QAAS,IAAI,OAAO;KAClC,IAAK,iBAAyB,KAC3B,gBAAyB,IAAI,QAAQ,cAAc;IAExD;IACA;GACF,SACM;IACJ,qBACG,sBAAsB,kBAAkB,EAAE,MAAM,CAAC,KAChD,EAAE,gBAAgB,EAAE,MAAM,CAAQ;IACtC,EAAE,oBAAoB,EAAE,MAAM,CAAQ;IACtC,wBACG,sBAAsB,qBAAqB,EAAE,MAAM,CAAC,KACnD,EAAE,mBAAmB,EAAE,MAAM,CAAQ;GAC3C,CACF;GAOA,OAAO,EAAE,UAAU;IAAE,UAAU,CAAC;IAAc,IAAI;GAAO,GAAG,CAAC,KAAK,CAAC;EACrE;CACF;AACF,CAAC;;;ACjHD,IAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,cAAc;CACd,OAAO,EACL,OAAO;EACL,MAAM;EACN,SAAS,KAAA;CACX,EACF;CACA,OAAO;CACP,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,QACH,MAAM,SACP,mBAAmB,KAAiD;EAEtE,MAAM,WAAW;EACjB,iBAAiB,QAAQ;EAExB,MAAe,cAAc,QAAQ;EACtC,aAAa,EAAE,gBAAgB,EAAE,MAAM,CAAQ;CACjD;AACF,CAAC"}