@rebasepro/cms 0.0.1-canary.4d4fb3e

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 (746) hide show
  1. package/LICENSE +6 -0
  2. package/dist/CollectionEditorDialog-DiZYNmYV.js +4731 -0
  3. package/dist/CollectionEditorDialog-DiZYNmYV.js.map +1 -0
  4. package/dist/CollectionsStudioView-BHVTfAuK.js +224 -0
  5. package/dist/CollectionsStudioView-BHVTfAuK.js.map +1 -0
  6. package/dist/PropertyEditView-BC5GO9AI.js +7776 -0
  7. package/dist/PropertyEditView-BC5GO9AI.js.map +1 -0
  8. package/dist/collection_editor/CollectionEditorDialogsContext.d.ts +19 -0
  9. package/dist/collection_editor/ConfigControllerProvider.d.ts +45 -0
  10. package/dist/collection_editor/_cms_internals.d.ts +29 -0
  11. package/dist/collection_editor/api/generateCollectionApi.d.ts +77 -0
  12. package/dist/collection_editor/api/index.d.ts +1 -0
  13. package/dist/collection_editor/index.d.ts +16 -0
  14. package/dist/collection_editor/pgColumnToProperty.d.ts +6 -0
  15. package/dist/collection_editor/types/collection_editor_controller.d.ts +56 -0
  16. package/dist/collection_editor/types/collection_inference.d.ts +10 -0
  17. package/dist/collection_editor/types/config_controller.d.ts +91 -0
  18. package/dist/collection_editor/types/config_permissions.d.ts +19 -0
  19. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +11 -0
  20. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +10 -0
  21. package/dist/collection_editor/ui/EditorCollectionAction.d.ts +2 -0
  22. package/dist/collection_editor/ui/EditorCollectionActionStart.d.ts +2 -0
  23. package/dist/collection_editor/ui/EditorEntityAction.d.ts +2 -0
  24. package/dist/collection_editor/ui/HomePageEditorCollectionAction.d.ts +2 -0
  25. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +10 -0
  26. package/dist/collection_editor/ui/MissingReferenceWidget.d.ts +3 -0
  27. package/dist/collection_editor/ui/NewCollectionButton.d.ts +1 -0
  28. package/dist/collection_editor/ui/NewCollectionCard.d.ts +2 -0
  29. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +7 -0
  30. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +36 -0
  31. package/dist/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +20 -0
  32. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +11 -0
  33. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +72 -0
  34. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +19 -0
  35. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +7 -0
  36. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +17 -0
  37. package/dist/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +12 -0
  38. package/dist/collection_editor/ui/collection_editor/CollectionRelationsTab.d.ts +1 -0
  39. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +5 -0
  40. package/dist/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +14 -0
  41. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +5 -0
  42. package/dist/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +3 -0
  43. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +5 -0
  44. package/dist/collection_editor/ui/collection_editor/EntityActionsSelectDialog.d.ts +4 -0
  45. package/dist/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.d.ts +4 -0
  46. package/dist/collection_editor/ui/collection_editor/EnumForm.d.ts +12 -0
  47. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +7 -0
  48. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +6 -0
  49. package/dist/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +4 -0
  50. package/dist/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +5 -0
  51. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +47 -0
  52. package/dist/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +16 -0
  53. package/dist/collection_editor/ui/collection_editor/PropertyTree.d.ts +31 -0
  54. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +11 -0
  55. package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +8 -0
  56. package/dist/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +6 -0
  57. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +7 -0
  58. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +13 -0
  59. package/dist/collection_editor/ui/collection_editor/import/clean_import_data.d.ts +7 -0
  60. package/dist/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +7 -0
  61. package/dist/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +3 -0
  62. package/dist/collection_editor/ui/collection_editor/properties/CommonPropertyFields.d.ts +10 -0
  63. package/dist/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +3 -0
  64. package/dist/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +9 -0
  65. package/dist/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +3 -0
  66. package/dist/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +7 -0
  67. package/dist/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +4 -0
  68. package/dist/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +3 -0
  69. package/dist/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +14 -0
  70. package/dist/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +15 -0
  71. package/dist/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +9 -0
  72. package/dist/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +5 -0
  73. package/dist/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +5 -0
  74. package/dist/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +4 -0
  75. package/dist/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +3 -0
  76. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +10 -0
  77. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +3 -0
  78. package/dist/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +6 -0
  79. package/dist/collection_editor/ui/collection_editor/properties/conditions/index.d.ts +6 -0
  80. package/dist/collection_editor/ui/collection_editor/properties/conditions/property_paths.d.ts +19 -0
  81. package/dist/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +5 -0
  82. package/dist/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +4 -0
  83. package/dist/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +3 -0
  84. package/dist/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +11 -0
  85. package/dist/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +3 -0
  86. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -0
  87. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -0
  88. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -0
  89. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -0
  90. package/dist/collection_editor/ui/collection_editor/util.d.ts +5 -0
  91. package/dist/collection_editor/ui/collection_editor/utils/strings.d.ts +1 -0
  92. package/dist/collection_editor/ui/collection_editor/utils/supported_fields.d.ts +3 -0
  93. package/dist/collection_editor/ui/collection_editor/utils/update_property_for_widget.d.ts +2 -0
  94. package/dist/collection_editor/useCollectionEditorController.d.ts +6 -0
  95. package/dist/collection_editor/useCollectionsConfigController.d.ts +6 -0
  96. package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +6 -0
  97. package/dist/collection_editor/validateCollectionJson.d.ts +22 -0
  98. package/dist/collection_editor_ui.d.ts +8 -0
  99. package/dist/collection_editor_ui.js +11 -0
  100. package/dist/collection_editor_ui.js.map +1 -0
  101. package/dist/components/AdminModeSyncer.d.ts +17 -0
  102. package/dist/components/ArrayContainer.d.ts +59 -0
  103. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  104. package/dist/components/CollectionEditorDialogs.d.ts +15 -0
  105. package/dist/components/DefaultAppBar.d.ts +29 -0
  106. package/dist/components/DefaultDrawer.d.ts +29 -0
  107. package/dist/components/DeleteEntityDialog.d.ts +13 -0
  108. package/dist/components/DrawerNavigationGroup.d.ts +49 -0
  109. package/dist/components/DrawerNavigationItem.d.ts +10 -0
  110. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +39 -0
  111. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +27 -0
  112. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +129 -0
  113. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +26 -0
  114. package/dist/components/EntityCollectionTable/column_utils.d.ts +16 -0
  115. package/dist/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +21 -0
  116. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +22 -0
  117. package/dist/components/EntityCollectionTable/fields/TableRelationField.d.ts +22 -0
  118. package/dist/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +20 -0
  119. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +35 -0
  120. package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +12 -0
  121. package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +9 -0
  122. package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +8 -0
  123. package/dist/components/EntityCollectionTable/fields/VirtualTableSelect.d.ts +15 -0
  124. package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +7 -0
  125. package/dist/components/EntityCollectionTable/fields/VirtualTableUserSelect.d.ts +12 -0
  126. package/dist/components/EntityCollectionTable/index.d.ts +6 -0
  127. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +14 -0
  128. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +32 -0
  129. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  130. package/dist/components/EntityCollectionTable/internal/common.d.ts +5 -0
  131. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +27 -0
  132. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  133. package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  134. package/dist/components/EntityCollectionTable/table_bindings.d.ts +28 -0
  135. package/dist/components/EntityCollectionView/Board.d.ts +2 -0
  136. package/dist/components/EntityCollectionView/BoardColumn.d.ts +42 -0
  137. package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +9 -0
  138. package/dist/components/EntityCollectionView/BoardSortableList.d.ts +14 -0
  139. package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +27 -0
  140. package/dist/components/EntityCollectionView/EntityCard.d.ts +20 -0
  141. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +21 -0
  142. package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +32 -0
  143. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +54 -0
  144. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +15 -0
  145. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +17 -0
  146. package/dist/components/EntityCollectionView/FiltersDialog.d.ts +15 -0
  147. package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +44 -0
  148. package/dist/components/EntityCollectionView/board_types.d.ts +105 -0
  149. package/dist/components/EntityCollectionView/hooks/useCollectionInlineEditor.d.ts +12 -0
  150. package/dist/components/EntityCollectionView/hooks/useKanbanDragAndDrop.d.ts +20 -0
  151. package/dist/components/EntityCollectionView/useBoardDataController.d.ts +61 -0
  152. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  153. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  154. package/dist/components/EntityEditView.d.ts +48 -0
  155. package/dist/components/EntityEditViewFormActions.d.ts +2 -0
  156. package/dist/components/EntityJsonPreview.d.ts +3 -0
  157. package/dist/components/EntityPreview.d.ts +56 -0
  158. package/dist/components/EntitySidePanel.d.ts +10 -0
  159. package/dist/components/EntityView.d.ts +12 -0
  160. package/dist/components/FieldCaption.d.ts +5 -0
  161. package/dist/components/HomePage/ContentHomePage.d.ts +11 -0
  162. package/dist/components/HomePage/FavouritesView.d.ts +3 -0
  163. package/dist/components/HomePage/HomePageDnD.d.ts +77 -0
  164. package/dist/components/HomePage/NavigationCard.d.ts +10 -0
  165. package/dist/components/HomePage/NavigationCardBinding.d.ts +18 -0
  166. package/dist/components/HomePage/NavigationGroup.d.ts +11 -0
  167. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  168. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  169. package/dist/components/HomePage/index.d.ts +4 -0
  170. package/dist/components/PropertyCollectionView.d.ts +24 -0
  171. package/dist/components/PropertyConfigBadge.d.ts +6 -0
  172. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  173. package/dist/components/RebaseAuthGate.d.ts +21 -0
  174. package/dist/components/RebaseCMS.d.ts +10 -0
  175. package/dist/components/RebaseLayout.d.ts +32 -0
  176. package/dist/components/RebaseNavigation.d.ts +24 -0
  177. package/dist/components/RebaseRouteDefs.d.ts +30 -0
  178. package/dist/components/RebaseShell.d.ts +25 -0
  179. package/dist/components/ReferenceTable/EntitySelectionTable.d.ts +59 -0
  180. package/dist/components/ReferenceWidget.d.ts +30 -0
  181. package/dist/components/RelationSelector.d.ts +32 -0
  182. package/dist/components/SearchIconsView.d.ts +5 -0
  183. package/dist/components/SelectableTable/SelectableTable.d.ts +89 -0
  184. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  185. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +9 -0
  186. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +12 -0
  187. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +15 -0
  188. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +12 -0
  189. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +13 -0
  190. package/dist/components/SideDialogs.d.ts +25 -0
  191. package/dist/components/SideEntityProvider.d.ts +32 -0
  192. package/dist/components/admin/RoleChip.d.ts +4 -0
  193. package/dist/components/admin/RolesView.d.ts +4 -0
  194. package/dist/components/admin/UsersView.d.ts +4 -0
  195. package/dist/components/admin/index.d.ts +3 -0
  196. package/dist/components/app/AppBar.d.ts +12 -0
  197. package/dist/components/app/Drawer.d.ts +19 -0
  198. package/dist/components/app/Scaffold.d.ts +34 -0
  199. package/dist/components/app/index.d.ts +4 -0
  200. package/dist/components/app/useApp.d.ts +17 -0
  201. package/dist/components/common/default_entity_actions.d.ts +4 -0
  202. package/dist/components/common/index.d.ts +1 -0
  203. package/dist/components/field_configs.d.ts +7 -0
  204. package/dist/components/history/EntityHistoryEntry.d.ts +17 -0
  205. package/dist/components/history/EntityHistoryView.d.ts +6 -0
  206. package/dist/components/history/LastEditedByFormAction.d.ts +6 -0
  207. package/dist/components/history/LastEditedByIndicator.d.ts +10 -0
  208. package/dist/components/history/UserChip.d.ts +4 -0
  209. package/dist/components/history/index.d.ts +5 -0
  210. package/dist/components/index.d.ts +42 -0
  211. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  212. package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
  213. package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
  214. package/dist/data_export/export/BasicExportAction.d.ts +7 -0
  215. package/dist/data_export/export/ExportCollectionAction.d.ts +11 -0
  216. package/dist/data_export/export/export.d.ts +22 -0
  217. package/dist/data_export/export/index.d.ts +3 -0
  218. package/dist/data_export/index.d.ts +1 -0
  219. package/dist/data_import/components/DataNewPropertiesMapping.d.ts +13 -0
  220. package/dist/data_import/components/ImportFileUpload.d.ts +3 -0
  221. package/dist/data_import/components/ImportNewPropertyFieldPreview.d.ts +9 -0
  222. package/dist/data_import/components/ImportSaveInProgress.d.ts +8 -0
  223. package/dist/data_import/components/index.d.ts +4 -0
  224. package/dist/data_import/hooks/index.d.ts +1 -0
  225. package/dist/data_import/hooks/useImportConfig.d.ts +2 -0
  226. package/dist/data_import/import/ImportCollectionAction.d.ts +15 -0
  227. package/dist/data_import/import/index.d.ts +1 -0
  228. package/dist/data_import/index.d.ts +5 -0
  229. package/dist/data_import/types/column_mapping.d.ts +20 -0
  230. package/dist/data_import/types/index.d.ts +1 -0
  231. package/dist/data_import/utils/data.d.ts +4 -0
  232. package/dist/data_import/utils/file_headers.d.ts +1 -0
  233. package/dist/data_import/utils/file_to_json.d.ts +16 -0
  234. package/dist/data_import/utils/get_import_inference_type.d.ts +2 -0
  235. package/dist/data_import/utils/get_properties_mapping.d.ts +1 -0
  236. package/dist/data_import/utils/index.d.ts +3 -0
  237. package/dist/editor/components/SlashCommandMenu.d.ts +6 -0
  238. package/dist/editor/components/editor-bubble-item.d.ts +8 -0
  239. package/dist/editor/components/editor-bubble.d.ts +8 -0
  240. package/dist/editor/components/image-bubble.d.ts +5 -0
  241. package/dist/editor/components/index.d.ts +16 -0
  242. package/dist/editor/components/table-bubble.d.ts +5 -0
  243. package/dist/editor/editor.d.ts +30 -0
  244. package/dist/editor/extensions/HighlightDecorationExtension.d.ts +24 -0
  245. package/dist/editor/extensions/Image/index.d.ts +6 -0
  246. package/dist/editor/extensions/Image.d.ts +6 -0
  247. package/dist/editor/extensions/TextLoadingDecorationExtension.d.ts +16 -0
  248. package/dist/editor/extensions/clipboard.d.ts +7 -0
  249. package/dist/editor/extensions/custom-keymap.d.ts +1 -0
  250. package/dist/editor/extensions/drag-and-drop.d.ts +9 -0
  251. package/dist/editor/hooks/useProseMirror.d.ts +13 -0
  252. package/dist/editor/hooks/useProseMirrorContext.d.ts +9 -0
  253. package/dist/editor/index.d.ts +2 -0
  254. package/dist/editor/markdown.d.ts +5 -0
  255. package/dist/editor/nodeViews/ImageComponent.d.ts +3 -0
  256. package/dist/editor/nodeViews/ReactNodeView.d.ts +29 -0
  257. package/dist/editor/nodeViews/TaskItemComponent.d.ts +3 -0
  258. package/dist/editor/nodeViews/index.d.ts +6 -0
  259. package/dist/editor/plugins/index.d.ts +2 -0
  260. package/dist/editor/plugins/inputrules.d.ts +6 -0
  261. package/dist/editor/plugins/placeholderPlugin.d.ts +3 -0
  262. package/dist/editor/plugins/slashCommandPlugin.d.ts +12 -0
  263. package/dist/editor/schema.d.ts +2 -0
  264. package/dist/editor/selectors/ai-selector.d.ts +0 -0
  265. package/dist/editor/selectors/color-selector.d.ts +10 -0
  266. package/dist/editor/selectors/link-selector.d.ts +8 -0
  267. package/dist/editor/selectors/node-selector.d.ts +15 -0
  268. package/dist/editor/selectors/text-buttons.d.ts +1 -0
  269. package/dist/editor/types.d.ts +5 -0
  270. package/dist/editor/useProseMirror.d.ts +16 -0
  271. package/dist/editor/utils/prosemirror-utils.d.ts +7 -0
  272. package/dist/editor/utils/remove_classes.d.ts +1 -0
  273. package/dist/editor/utils/useDebouncedCallback.d.ts +1 -0
  274. package/dist/form/EntityForm.d.ts +10 -0
  275. package/dist/form/EntityFormActions.d.ts +2 -0
  276. package/dist/form/PropertyFieldBinding.d.ts +30 -0
  277. package/dist/form/components/ErrorFocus.d.ts +4 -0
  278. package/dist/form/components/FieldHelperText.d.ts +12 -0
  279. package/dist/form/components/FormEntry.d.ts +6 -0
  280. package/dist/form/components/FormLayout.d.ts +5 -0
  281. package/dist/form/components/LabelWithIcon.d.ts +14 -0
  282. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  283. package/dist/form/components/LocalChangesMenu.d.ts +11 -0
  284. package/dist/form/components/StorageItemPreview.d.ts +14 -0
  285. package/dist/form/components/StorageUploadProgress.d.ts +10 -0
  286. package/dist/form/components/index.d.ts +5 -0
  287. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +10 -0
  288. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +13 -0
  289. package/dist/form/field_bindings/BlockFieldBinding.d.ts +11 -0
  290. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +12 -0
  291. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +8 -0
  292. package/dist/form/field_bindings/MapFieldBinding.d.ts +10 -0
  293. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +12 -0
  294. package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +10 -0
  295. package/dist/form/field_bindings/MultipleRelationFieldBinding.d.ts +10 -0
  296. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +11 -0
  297. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +10 -0
  298. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +10 -0
  299. package/dist/form/field_bindings/RelationFieldBinding.d.ts +3 -0
  300. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +11 -0
  301. package/dist/form/field_bindings/SelectFieldBinding.d.ts +11 -0
  302. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +21 -0
  303. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +10 -0
  304. package/dist/form/field_bindings/TextFieldBinding.d.ts +9 -0
  305. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +13 -0
  306. package/dist/form/index.d.ts +20 -0
  307. package/dist/form/useClearRestoreValue.d.ts +13 -0
  308. package/dist/form/validation.d.ts +21 -0
  309. package/dist/hooks/index.d.ts +15 -0
  310. package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +5 -0
  311. package/dist/hooks/navigation/contexts/NavigationStateContext.d.ts +4 -0
  312. package/dist/hooks/navigation/contexts/UrlContext.d.ts +4 -0
  313. package/dist/hooks/navigation/contexts/index.d.ts +3 -0
  314. package/dist/hooks/navigation/useBuildCollectionRegistryController.d.ts +7 -0
  315. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +34 -0
  316. package/dist/hooks/navigation/useBuildUrlController.d.ts +7 -0
  317. package/dist/hooks/navigation/useNavigationRegistry.d.ts +11 -0
  318. package/dist/hooks/navigation/useNavigationResolution.d.ts +7 -0
  319. package/dist/hooks/navigation/useNavigationURLs.d.ts +11 -0
  320. package/dist/hooks/navigation/useResolvedCollections.d.ts +28 -0
  321. package/dist/hooks/navigation/useResolvedViews.d.ts +29 -0
  322. package/dist/hooks/navigation/useTopLevelNavigation.d.ts +27 -0
  323. package/dist/hooks/navigation/utils.d.ts +12 -0
  324. package/dist/hooks/useBreadcrumbsController.d.ts +42 -0
  325. package/dist/hooks/useBuildSideDialogsController.d.ts +2 -0
  326. package/dist/hooks/useBuildSideEntityController.d.ts +6 -0
  327. package/dist/hooks/useCMSContext.d.ts +27 -0
  328. package/dist/hooks/useEntityHistory.d.ts +30 -0
  329. package/dist/hooks/useEntitySelectionDialog.d.ts +18 -0
  330. package/dist/hooks/useResolvedNavigationFrom.d.ts +73 -0
  331. package/dist/hooks/useSideDialogsController.d.ts +19 -0
  332. package/dist/hooks/useSideEntityController.d.ts +11 -0
  333. package/dist/index.d.ts +12 -0
  334. package/dist/index.js +2885 -0
  335. package/dist/index.js.map +1 -0
  336. package/dist/preview/PropertyPreview.d.ts +7 -0
  337. package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
  338. package/dist/preview/components/BooleanPreview.d.ts +11 -0
  339. package/dist/preview/components/DatePreview.d.ts +17 -0
  340. package/dist/preview/components/EmptyValue.d.ts +6 -0
  341. package/dist/preview/components/EnumValuesChip.d.ts +13 -0
  342. package/dist/preview/components/ImagePreview.d.ts +16 -0
  343. package/dist/preview/components/ReferencePreview.d.ts +17 -0
  344. package/dist/preview/components/RelationPreview.d.ts +17 -0
  345. package/dist/preview/components/StorageThumbnail.d.ts +15 -0
  346. package/dist/preview/components/UrlComponentPreview.d.ts +14 -0
  347. package/dist/preview/components/UserPreview.d.ts +9 -0
  348. package/dist/preview/index.d.ts +23 -0
  349. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +6 -0
  350. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +6 -0
  351. package/dist/preview/property_previews/ArrayOfRelationsPreview.d.ts +6 -0
  352. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +6 -0
  353. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +6 -0
  354. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +6 -0
  355. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +6 -0
  356. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +6 -0
  357. package/dist/preview/property_previews/MapPropertyPreview.d.ts +9 -0
  358. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +7 -0
  359. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  360. package/dist/preview/property_previews/StringPropertyPreview.d.ts +7 -0
  361. package/dist/preview/util.d.ts +7 -0
  362. package/dist/routes/CustomViewRoute.d.ts +4 -0
  363. package/dist/routes/RebaseRoute.d.ts +1 -0
  364. package/dist/routes/index.d.ts +2 -0
  365. package/dist/types/components/EntityFormActionsProps.d.ts +19 -0
  366. package/dist/types/components/EntityFormProps.d.ts +48 -0
  367. package/dist/types/components/PropertyPreviewProps.d.ts +47 -0
  368. package/dist/types/components/formex.d.ts +40 -0
  369. package/dist/types/components/index.d.ts +3 -0
  370. package/dist/types/fields.d.ts +221 -0
  371. package/dist/types/index.d.ts +2 -0
  372. package/dist/util/entity_actions.d.ts +2 -0
  373. package/dist/util/index.d.ts +5 -0
  374. package/dist/util/navigation_utils.d.ts +32 -0
  375. package/dist/util/previews.d.ts +4 -0
  376. package/dist/util/property_utils.d.ts +24 -0
  377. package/dist/util/resolutions.d.ts +9 -0
  378. package/dist/util-W5Lh0Emr.js +32604 -0
  379. package/dist/util-W5Lh0Emr.js.map +1 -0
  380. package/package.json +170 -0
  381. package/src/collection_editor/CollectionEditorDialogsContext.tsx +25 -0
  382. package/src/collection_editor/ConfigControllerProvider.tsx +405 -0
  383. package/src/collection_editor/_cms_internals.ts +41 -0
  384. package/src/collection_editor/api/generateCollectionApi.ts +125 -0
  385. package/src/collection_editor/api/index.ts +1 -0
  386. package/src/collection_editor/index.ts +63 -0
  387. package/src/collection_editor/pgColumnToProperty.ts +274 -0
  388. package/src/collection_editor/types/collection_editor_controller.tsx +64 -0
  389. package/src/collection_editor/types/collection_inference.ts +17 -0
  390. package/src/collection_editor/types/config_controller.tsx +109 -0
  391. package/src/collection_editor/types/config_permissions.ts +20 -0
  392. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +195 -0
  393. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +49 -0
  394. package/src/collection_editor/ui/EditorCollectionAction.tsx +57 -0
  395. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +92 -0
  396. package/src/collection_editor/ui/EditorEntityAction.tsx +53 -0
  397. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +119 -0
  398. package/src/collection_editor/ui/KanbanSetupAction.tsx +40 -0
  399. package/src/collection_editor/ui/MissingReferenceWidget.tsx +40 -0
  400. package/src/collection_editor/ui/NewCollectionButton.tsx +26 -0
  401. package/src/collection_editor/ui/NewCollectionCard.tsx +52 -0
  402. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +52 -0
  403. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +253 -0
  404. package/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.tsx +88 -0
  405. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +437 -0
  406. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +991 -0
  407. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +291 -0
  408. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +171 -0
  409. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +600 -0
  410. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +331 -0
  411. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +224 -0
  412. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +103 -0
  413. package/src/collection_editor/ui/collection_editor/CollectionYupValidation.tsx +9 -0
  414. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +137 -0
  415. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +312 -0
  416. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +164 -0
  417. package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +40 -0
  418. package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +39 -0
  419. package/src/collection_editor/ui/collection_editor/EnumForm.tsx +370 -0
  420. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +277 -0
  421. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +142 -0
  422. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +195 -0
  423. package/src/collection_editor/ui/collection_editor/LayoutModeSwitch.tsx +35 -0
  424. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +790 -0
  425. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +159 -0
  426. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +360 -0
  427. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +255 -0
  428. package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +39 -0
  429. package/src/collection_editor/ui/collection_editor/ViewModeSwitch.tsx +41 -0
  430. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +66 -0
  431. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +296 -0
  432. package/src/collection_editor/ui/collection_editor/import/clean_import_data.ts +54 -0
  433. package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +146 -0
  434. package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +41 -0
  435. package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +111 -0
  436. package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +205 -0
  437. package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +124 -0
  438. package/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.tsx +20 -0
  439. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +150 -0
  440. package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +215 -0
  441. package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +115 -0
  442. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +162 -0
  443. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +344 -0
  444. package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +106 -0
  445. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +366 -0
  446. package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +146 -0
  447. package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +90 -0
  448. package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +47 -0
  449. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +853 -0
  450. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +28 -0
  451. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +593 -0
  452. package/src/collection_editor/ui/collection_editor/properties/conditions/index.ts +6 -0
  453. package/src/collection_editor/ui/collection_editor/properties/conditions/property_paths.ts +93 -0
  454. package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +50 -0
  455. package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +61 -0
  456. package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +115 -0
  457. package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +152 -0
  458. package/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.tsx +28 -0
  459. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +112 -0
  460. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +183 -0
  461. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +88 -0
  462. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +42 -0
  463. package/src/collection_editor/ui/collection_editor/util.ts +28 -0
  464. package/src/collection_editor/ui/collection_editor/utils/strings.ts +16 -0
  465. package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +33 -0
  466. package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +281 -0
  467. package/src/collection_editor/useCollectionEditorController.tsx +9 -0
  468. package/src/collection_editor/useCollectionsConfigController.tsx +9 -0
  469. package/src/collection_editor/useLocalCollectionsConfigController.tsx +111 -0
  470. package/src/collection_editor/validateCollectionJson.ts +379 -0
  471. package/src/collection_editor_ui.ts +15 -0
  472. package/src/components/AdminModeSyncer.tsx +56 -0
  473. package/src/components/ArrayContainer.tsx +551 -0
  474. package/src/components/ClearFilterSortButton.tsx +47 -0
  475. package/src/components/CollectionEditorDialogs.tsx +68 -0
  476. package/src/components/DefaultAppBar.tsx +280 -0
  477. package/src/components/DefaultDrawer.tsx +276 -0
  478. package/src/components/DeleteEntityDialog.tsx +182 -0
  479. package/src/components/DrawerNavigationGroup.tsx +128 -0
  480. package/src/components/DrawerNavigationItem.tsx +65 -0
  481. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +232 -0
  482. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +380 -0
  483. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +171 -0
  484. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +342 -0
  485. package/src/components/EntityCollectionTable/column_utils.tsx +75 -0
  486. package/src/components/EntityCollectionTable/fields/TableMultipleRelationField.tsx +130 -0
  487. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +172 -0
  488. package/src/components/EntityCollectionTable/fields/TableRelationField.tsx +181 -0
  489. package/src/components/EntityCollectionTable/fields/TableRelationSelectorField.tsx +42 -0
  490. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +320 -0
  491. package/src/components/EntityCollectionTable/fields/VirtualTableDateField.tsx +39 -0
  492. package/src/components/EntityCollectionTable/fields/VirtualTableInput.tsx +90 -0
  493. package/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.tsx +80 -0
  494. package/src/components/EntityCollectionTable/fields/VirtualTableSelect.tsx +133 -0
  495. package/src/components/EntityCollectionTable/fields/VirtualTableSwitch.tsx +32 -0
  496. package/src/components/EntityCollectionTable/fields/VirtualTableUserSelect.tsx +112 -0
  497. package/src/components/EntityCollectionTable/index.tsx +14 -0
  498. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +72 -0
  499. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +311 -0
  500. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +82 -0
  501. package/src/components/EntityCollectionTable/internal/common.tsx +73 -0
  502. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +418 -0
  503. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +96 -0
  504. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
  505. package/src/components/EntityCollectionTable/table_bindings.tsx +345 -0
  506. package/src/components/EntityCollectionView/Board.tsx +324 -0
  507. package/src/components/EntityCollectionView/BoardColumn.tsx +158 -0
  508. package/src/components/EntityCollectionView/BoardColumnTitle.tsx +45 -0
  509. package/src/components/EntityCollectionView/BoardSortableList.tsx +172 -0
  510. package/src/components/EntityCollectionView/EntityBoardCard.tsx +204 -0
  511. package/src/components/EntityCollectionView/EntityCard.tsx +219 -0
  512. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +609 -0
  513. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +249 -0
  514. package/src/components/EntityCollectionView/EntityCollectionView.tsx +1143 -0
  515. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +149 -0
  516. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +122 -0
  517. package/src/components/EntityCollectionView/FiltersDialog.tsx +249 -0
  518. package/src/components/EntityCollectionView/ViewModeToggle.tsx +197 -0
  519. package/src/components/EntityCollectionView/board_types.ts +113 -0
  520. package/src/components/EntityCollectionView/hooks/useCollectionInlineEditor.ts +79 -0
  521. package/src/components/EntityCollectionView/hooks/useKanbanDragAndDrop.ts +151 -0
  522. package/src/components/EntityCollectionView/useBoardDataController.tsx +510 -0
  523. package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
  524. package/src/components/EntityCollectionView/utils.ts +19 -0
  525. package/src/components/EntityEditView.tsx +576 -0
  526. package/src/components/EntityEditViewFormActions.tsx +345 -0
  527. package/src/components/EntityJsonPreview.tsx +66 -0
  528. package/src/components/EntityPreview.tsx +366 -0
  529. package/src/components/EntitySidePanel.tsx +159 -0
  530. package/src/components/EntityView.tsx +69 -0
  531. package/src/components/FieldCaption.tsx +14 -0
  532. package/src/components/HomePage/ContentHomePage.tsx +553 -0
  533. package/src/components/HomePage/FavouritesView.tsx +60 -0
  534. package/src/components/HomePage/HomePageDnD.tsx +703 -0
  535. package/src/components/HomePage/NavigationCard.tsx +79 -0
  536. package/src/components/HomePage/NavigationCardBinding.tsx +110 -0
  537. package/src/components/HomePage/NavigationGroup.tsx +156 -0
  538. package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
  539. package/src/components/HomePage/SmallNavigationCard.tsx +45 -0
  540. package/src/components/HomePage/index.tsx +5 -0
  541. package/src/components/PropertyCollectionView.tsx +335 -0
  542. package/src/components/PropertyConfigBadge.tsx +27 -0
  543. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  544. package/src/components/RebaseAuthGate.tsx +42 -0
  545. package/src/components/RebaseCMS.tsx +22 -0
  546. package/src/components/RebaseLayout.tsx +73 -0
  547. package/src/components/RebaseNavigation.tsx +197 -0
  548. package/src/components/RebaseRouteDefs.tsx +127 -0
  549. package/src/components/RebaseShell.tsx +70 -0
  550. package/src/components/ReferenceTable/EntitySelectionTable.tsx +358 -0
  551. package/src/components/ReferenceWidget.tsx +155 -0
  552. package/src/components/RelationSelector.tsx +612 -0
  553. package/src/components/SearchIconsView.tsx +80 -0
  554. package/src/components/SelectableTable/SelectableTable.tsx +340 -0
  555. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  556. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +51 -0
  557. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +125 -0
  558. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +208 -0
  559. package/src/components/SelectableTable/filters/RelationFilterField.tsx +138 -0
  560. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +224 -0
  561. package/src/components/SideDialogs.tsx +207 -0
  562. package/src/components/SideEntityProvider.tsx +76 -0
  563. package/src/components/admin/RoleChip.tsx +23 -0
  564. package/src/components/admin/RolesView.tsx +424 -0
  565. package/src/components/admin/UsersView.tsx +707 -0
  566. package/src/components/admin/index.ts +3 -0
  567. package/src/components/app/AppBar.tsx +17 -0
  568. package/src/components/app/Drawer.tsx +30 -0
  569. package/src/components/app/Scaffold.tsx +239 -0
  570. package/src/components/app/index.ts +4 -0
  571. package/src/components/app/useApp.tsx +36 -0
  572. package/src/components/common/default_entity_actions.tsx +155 -0
  573. package/src/components/common/index.ts +1 -0
  574. package/src/components/field_configs.tsx +442 -0
  575. package/src/components/history/EntityHistoryEntry.tsx +175 -0
  576. package/src/components/history/EntityHistoryView.tsx +197 -0
  577. package/src/components/history/LastEditedByFormAction.tsx +24 -0
  578. package/src/components/history/LastEditedByIndicator.tsx +98 -0
  579. package/src/components/history/UserChip.tsx +15 -0
  580. package/src/components/history/index.tsx +5 -0
  581. package/src/components/index.ts +52 -0
  582. package/src/contexts/BreacrumbsContext.tsx +45 -0
  583. package/src/contexts/SideDialogsControllerContext.tsx +5 -0
  584. package/src/contexts/SideEntityControllerContext.tsx +5 -0
  585. package/src/data_export/export/BasicExportAction.tsx +152 -0
  586. package/src/data_export/export/ExportCollectionAction.tsx +275 -0
  587. package/src/data_export/export/export.ts +244 -0
  588. package/src/data_export/export/index.ts +3 -0
  589. package/src/data_export/index.ts +1 -0
  590. package/src/data_import/components/DataNewPropertiesMapping.tsx +243 -0
  591. package/src/data_import/components/ImportFileUpload.tsx +42 -0
  592. package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +59 -0
  593. package/src/data_import/components/ImportSaveInProgress.tsx +121 -0
  594. package/src/data_import/components/index.ts +4 -0
  595. package/src/data_import/hooks/index.ts +1 -0
  596. package/src/data_import/hooks/useImportConfig.tsx +34 -0
  597. package/src/data_import/import/ImportCollectionAction.tsx +448 -0
  598. package/src/data_import/import/index.ts +1 -0
  599. package/src/data_import/index.ts +5 -0
  600. package/src/data_import/types/column_mapping.ts +32 -0
  601. package/src/data_import/types/index.ts +1 -0
  602. package/src/data_import/utils/data.ts +145 -0
  603. package/src/data_import/utils/file_headers.ts +90 -0
  604. package/src/data_import/utils/file_to_json.ts +106 -0
  605. package/src/data_import/utils/get_import_inference_type.ts +27 -0
  606. package/src/data_import/utils/get_properties_mapping.ts +67 -0
  607. package/src/data_import/utils/index.ts +3 -0
  608. package/src/editor/components/SlashCommandMenu.tsx +516 -0
  609. package/src/editor/components/editor-bubble-item.tsx +32 -0
  610. package/src/editor/components/editor-bubble.tsx +118 -0
  611. package/src/editor/components/image-bubble.tsx +158 -0
  612. package/src/editor/components/index.ts +14 -0
  613. package/src/editor/components/table-bubble.tsx +167 -0
  614. package/src/editor/editor.tsx +455 -0
  615. package/src/editor/extensions/HighlightDecorationExtension.ts +114 -0
  616. package/src/editor/extensions/Image/index.ts +133 -0
  617. package/src/editor/extensions/Image.ts +159 -0
  618. package/src/editor/extensions/TextLoadingDecorationExtension.tsx +107 -0
  619. package/src/editor/extensions/clipboard.ts +72 -0
  620. package/src/editor/extensions/custom-keymap.ts +25 -0
  621. package/src/editor/extensions/drag-and-drop.tsx +492 -0
  622. package/src/editor/hooks/useProseMirror.ts +124 -0
  623. package/src/editor/hooks/useProseMirrorContext.ts +15 -0
  624. package/src/editor/index.ts +2 -0
  625. package/src/editor/markdown.ts +172 -0
  626. package/src/editor/nodeViews/ImageComponent.tsx +20 -0
  627. package/src/editor/nodeViews/ReactNodeView.tsx +89 -0
  628. package/src/editor/nodeViews/TaskItemComponent.tsx +29 -0
  629. package/src/editor/nodeViews/index.ts +35 -0
  630. package/src/editor/plugins/index.ts +58 -0
  631. package/src/editor/plugins/inputrules.ts +82 -0
  632. package/src/editor/plugins/placeholderPlugin.ts +55 -0
  633. package/src/editor/plugins/slashCommandPlugin.ts +61 -0
  634. package/src/editor/schema.ts +240 -0
  635. package/src/editor/selectors/ai-selector.tsx +111 -0
  636. package/src/editor/selectors/color-selector.tsx +200 -0
  637. package/src/editor/selectors/link-selector.tsx +118 -0
  638. package/src/editor/selectors/node-selector.tsx +157 -0
  639. package/src/editor/selectors/text-buttons.tsx +86 -0
  640. package/src/editor/types.ts +6 -0
  641. package/src/editor/useProseMirror.ts +126 -0
  642. package/src/editor/utils/prosemirror-utils.ts +113 -0
  643. package/src/editor/utils/remove_classes.ts +17 -0
  644. package/src/editor/utils/useDebouncedCallback.ts +25 -0
  645. package/src/form/EntityForm.tsx +800 -0
  646. package/src/form/EntityFormActions.tsx +204 -0
  647. package/src/form/PropertyFieldBinding.tsx +344 -0
  648. package/src/form/components/ErrorFocus.tsx +44 -0
  649. package/src/form/components/FieldHelperText.tsx +45 -0
  650. package/src/form/components/FormEntry.tsx +22 -0
  651. package/src/form/components/FormLayout.tsx +16 -0
  652. package/src/form/components/LabelWithIcon.tsx +43 -0
  653. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  654. package/src/form/components/LocalChangesMenu.tsx +145 -0
  655. package/src/form/components/StorageItemPreview.tsx +81 -0
  656. package/src/form/components/StorageUploadProgress.tsx +105 -0
  657. package/src/form/components/index.tsx +5 -0
  658. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +107 -0
  659. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +169 -0
  660. package/src/form/field_bindings/BlockFieldBinding.tsx +274 -0
  661. package/src/form/field_bindings/DateTimeFieldBinding.tsx +72 -0
  662. package/src/form/field_bindings/KeyValueFieldBinding.tsx +567 -0
  663. package/src/form/field_bindings/MapFieldBinding.tsx +162 -0
  664. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +142 -0
  665. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +122 -0
  666. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +155 -0
  667. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +66 -0
  668. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +140 -0
  669. package/src/form/field_bindings/ReferenceFieldBinding.tsx +140 -0
  670. package/src/form/field_bindings/RelationFieldBinding.tsx +183 -0
  671. package/src/form/field_bindings/RepeatFieldBinding.tsx +139 -0
  672. package/src/form/field_bindings/SelectFieldBinding.tsx +109 -0
  673. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +493 -0
  674. package/src/form/field_bindings/SwitchFieldBinding.tsx +65 -0
  675. package/src/form/field_bindings/TextFieldBinding.tsx +155 -0
  676. package/src/form/field_bindings/UserSelectFieldBinding.tsx +98 -0
  677. package/src/form/index.tsx +27 -0
  678. package/src/form/useClearRestoreValue.tsx +36 -0
  679. package/src/form/validation.ts +592 -0
  680. package/src/hooks/index.ts +15 -0
  681. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +20 -0
  682. package/src/hooks/navigation/contexts/NavigationStateContext.tsx +16 -0
  683. package/src/hooks/navigation/contexts/UrlContext.tsx +25 -0
  684. package/src/hooks/navigation/contexts/index.ts +14 -0
  685. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +155 -0
  686. package/src/hooks/navigation/useBuildNavigationStateController.tsx +123 -0
  687. package/src/hooks/navigation/useBuildUrlController.tsx +66 -0
  688. package/src/hooks/navigation/useNavigationRegistry.ts +146 -0
  689. package/src/hooks/navigation/useNavigationResolution.ts +130 -0
  690. package/src/hooks/navigation/useNavigationURLs.ts +56 -0
  691. package/src/hooks/navigation/useResolvedCollections.ts +133 -0
  692. package/src/hooks/navigation/useResolvedViews.tsx +197 -0
  693. package/src/hooks/navigation/useTopLevelNavigation.ts +257 -0
  694. package/src/hooks/navigation/utils.ts +171 -0
  695. package/src/hooks/useBreadcrumbsController.tsx +49 -0
  696. package/src/hooks/useBuildSideDialogsController.tsx +145 -0
  697. package/src/hooks/useBuildSideEntityController.tsx +309 -0
  698. package/src/hooks/useCMSContext.tsx +77 -0
  699. package/src/hooks/useEntityHistory.ts +168 -0
  700. package/src/hooks/useEntitySelectionDialog.tsx +57 -0
  701. package/src/hooks/useResolvedNavigationFrom.tsx +155 -0
  702. package/src/hooks/useSideDialogsController.tsx +25 -0
  703. package/src/hooks/useSideEntityController.tsx +13 -0
  704. package/src/index.ts +95 -0
  705. package/src/preview/PropertyPreview.tsx +291 -0
  706. package/src/preview/components/ArrayEnumPreview.tsx +39 -0
  707. package/src/preview/components/BooleanPreview.tsx +25 -0
  708. package/src/preview/components/DatePreview.tsx +93 -0
  709. package/src/preview/components/EmptyValue.tsx +10 -0
  710. package/src/preview/components/EnumValuesChip.tsx +39 -0
  711. package/src/preview/components/ImagePreview.tsx +142 -0
  712. package/src/preview/components/ReferencePreview.tsx +166 -0
  713. package/src/preview/components/RelationPreview.tsx +158 -0
  714. package/src/preview/components/StorageThumbnail.tsx +90 -0
  715. package/src/preview/components/UrlComponentPreview.tsx +114 -0
  716. package/src/preview/components/UserPreview.tsx +29 -0
  717. package/src/preview/index.ts +25 -0
  718. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +73 -0
  719. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +44 -0
  720. package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +50 -0
  721. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +49 -0
  722. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +44 -0
  723. package/src/preview/property_previews/ArrayOneOfPreview.tsx +68 -0
  724. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +35 -0
  725. package/src/preview/property_previews/ArrayPropertyPreview.tsx +70 -0
  726. package/src/preview/property_previews/MapPropertyPreview.tsx +146 -0
  727. package/src/preview/property_previews/NumberPropertyPreview.tsx +29 -0
  728. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +277 -0
  729. package/src/preview/property_previews/StringPropertyPreview.tsx +59 -0
  730. package/src/preview/util.ts +30 -0
  731. package/src/routes/CustomViewRoute.tsx +24 -0
  732. package/src/routes/RebaseRoute.tsx +265 -0
  733. package/src/routes/index.ts +2 -0
  734. package/src/types/components/EntityFormActionsProps.tsx +20 -0
  735. package/src/types/components/EntityFormProps.tsx +54 -0
  736. package/src/types/components/PropertyPreviewProps.tsx +59 -0
  737. package/src/types/components/formex.tsx +46 -0
  738. package/src/types/components/index.ts +3 -0
  739. package/src/types/fields.tsx +299 -0
  740. package/src/types/index.ts +4 -0
  741. package/src/util/entity_actions.ts +28 -0
  742. package/src/util/index.ts +5 -0
  743. package/src/util/navigation_utils.ts +223 -0
  744. package/src/util/previews.ts +50 -0
  745. package/src/util/property_utils.tsx +215 -0
  746. package/src/util/resolutions.ts +69 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/hooks/useResolvedNavigationFrom.tsx","../src/data_export/export/BasicExportAction.tsx","../src/components/ReferenceWidget.tsx","../src/components/AdminModeSyncer.tsx","../src/components/HomePage/FavouritesView.tsx","../src/components/HomePage/NavigationGroup.tsx","../src/components/HomePage/NavigationCardBinding.tsx","../src/components/HomePage/HomePageDnD.tsx","../src/components/HomePage/RenameGroupDialog.tsx","../src/components/HomePage/ContentHomePage.tsx","../src/components/RebaseCMS.tsx","../src/components/RebaseAuthGate.tsx","../src/components/RebaseLayout.tsx","../src/routes/RebaseRoute.tsx","../src/routes/CustomViewRoute.tsx","../src/components/RebaseRouteDefs.tsx","../src/components/RebaseShell.tsx","../src/preview/property_previews/ArrayOfMapsPreview.tsx","../src/collection_editor/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import type { EntityCollection, EntityCustomView } from \"@rebasepro/types\";\nimport { Entity, RebaseContext, User } from \"@rebasepro/types\";\nimport { useEffect, useState } from \"react\";\nimport { getNavigationEntriesFromPath } from \"@rebasepro/common\";\nimport { useCMSContext } from \"./useCMSContext\";\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport type ResolvedNavigationEntry<M extends Record<string, unknown>> =\n | ResolvedNavigationEntity<M>\n | ResolvedNavigationCollection<M>\n | ResolvedNavigationEntityCustom<M>;\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationEntity<M extends Record<string, unknown>> {\n type: \"entity\";\n entity: Entity<M>;\n entityId: string | number;\n path: string;\n parentCollection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationCollection<M extends Record<string, unknown>> {\n type: \"collection\";\n path: string;\n collection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\ninterface ResolvedNavigationEntityCustom<M extends Record<string, unknown>> {\n type: \"custom_view\";\n path: string;\n view: EntityCustomView<M>;\n}\n\n/**\n * Use this function to retrieve an array of navigation entries (resolved\n * collection, entity or entity custom_view) for the given path. You need to pass the app context\n * that you receive in different callbacks, such as the save hooks.\n *\n * It will take into account the `navigation` provided at the `Rebase` level.\n *\n * @param path\n * @param context\n * @group Hooks and utilities\n */\nexport function resolveNavigationFrom<M extends Record<string, unknown>, USER extends User>({\n path,\n context\n}: {\n path: string,\n context: RebaseContext<USER>\n}): Promise<ResolvedNavigationEntry<M>[]> {\n\n const data = context.data;\n const { navigationStateController, collectionRegistryController } = context;\n\n if (!navigationStateController || !collectionRegistryController) {\n throw Error(\"Calling resolveNavigationFrom, but main navigation has not yet been initialised\");\n }\n\n const navigationEntries = getNavigationEntriesFromPath({\n path,\n collections: collectionRegistryController.collections ?? []\n });\n\n const resultPromises: Promise<ResolvedNavigationEntry<any>>[] = navigationEntries\n .map((entry) => {\n if (entry.type === \"collection\") {\n return Promise.resolve(entry);\n } else if (entry.type === \"entity\") {\n const collection = collectionRegistryController.getCollection(entry.slug);\n if (!collection) {\n throw Error(`No collection defined in the navigation for the entity with path ${entry.slug}`);\n }\n return data.collection(entry.slug).findById(entry.entityId)\n .then((entity) => {\n if (!entity) return undefined;\n return { ...entry, entity };\n });\n } else if (entry.type === \"custom_view\") {\n return Promise.resolve(entry);\n } else {\n throw Error(\"Unmapped element in useEntitiesFromPath\");\n }\n })\n .filter(v => Boolean(v)) as Promise<ResolvedNavigationEntry<any>>[];\n\n return Promise.all(resultPromises);\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFromProps {\n path: string;\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFrom<M extends Record<string, unknown>> {\n data?: ResolvedNavigationEntry<M>[]\n dataLoading: boolean,\n dataLoadingError?: Error\n}\n\n/**\n * Use this hook to retrieve an array of navigation entries (resolved\n * collection or entity) for the given path. You can use this hook\n * in any React component that lives under `Rebase`\n * @group Hooks and utilities\n */\nexport function useResolvedNavigationFrom<M extends Record<string, unknown>>(\n {\n path\n }: NavigationFromProps): NavigationFrom<M> {\n\n const context = useCMSContext();\n const { navigationStateController, collectionRegistryController } = context;\n\n const [data, setData] = useState<ResolvedNavigationEntry<M>[] | undefined>();\n const [dataLoading, setDataLoading] = useState<boolean>(false);\n const [dataLoadingError, setDataLoadingError] = useState<Error | undefined>();\n\n useEffect(() => {\n if (navigationStateController && collectionRegistryController) {\n setDataLoading(true);\n setDataLoadingError(undefined);\n resolveNavigationFrom<M, User>({ path, context })\n .then(setData)\n .catch((e) => setDataLoadingError(e))\n .finally(() => setDataLoading(false));\n }\n\n }, [path, context]);\n\n if (!navigationStateController) {\n return { dataLoading: true };\n }\n\n return { data, dataLoading, dataLoadingError };\n}\n","import React, { useCallback } from \"react\";\n\nimport { Entity, Properties } from \"@rebasepro/types\";\nimport {\n BooleanSwitchWithLabel,\n Button,\n cls,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DownloadIcon,\n IconButton,\n Tooltip\n} from \"@rebasepro/ui\";\nimport { downloadEntitiesExport } from \"./export\";\n\nexport type BasicExportActionProps = {\n data: Entity<any>[];\n properties: Properties;\n propertiesOrder?: string[];\n}\n\nexport function BasicExportAction({\n data,\n properties,\n propertiesOrder\n}: BasicExportActionProps) {\n\n const dateRef = React.useRef<Date>(new Date());\n const [flattenArrays, setFlattenArrays] = React.useState<boolean>(true);\n const [exportType, setExportType] = React.useState<\"csv\" | \"json\">(\"csv\");\n const [dateExportType, setDateExportType] = React.useState<\"timestamp\" | \"string\">(\"string\");\n\n const [open, setOpen] = React.useState(false);\n\n const handleClickOpen = useCallback(() => {\n setOpen(true);\n }, [setOpen]);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const onOkClicked = useCallback(() => {\n downloadEntitiesExport({\n data,\n additionalData: [],\n properties,\n propertiesOrder,\n name: \"export.csv\",\n flattenArrays,\n additionalHeaders: [],\n exportType,\n dateExportType\n });\n handleClose();\n }, []);\n\n return <>\n\n <Tooltip title={\"Export\"}\n asChild={true}>\n <IconButton\n size={\"small\"}\n color={\"primary\"} onClick={handleClickOpen}>\n <DownloadIcon\n size={\"small\"} />\n </IconButton>\n </Tooltip>\n\n <Dialog\n open={open}\n onOpenChange={setOpen}\n maxWidth={\"xl\"}>\n\n <DialogTitle variant={\"h6\"}>Export data</DialogTitle>\n\n <DialogContent className={\"flex flex-col gap-4 my-4\"}>\n\n <div>Download the the content of this table as a CSV</div>\n\n <div className={\"flex flex-row gap-4\"}>\n <div className={\"p-4 flex flex-col\"}>\n <div className=\"flex items-center\">\n <input id=\"radio-csv\" type=\"radio\" value=\"csv\" name=\"exportType\"\n checked={exportType === \"csv\"}\n onChange={() => setExportType(\"csv\")}\n className={cls(\"w-4 bg-surface-100 border-surface-300 dark:bg-surface-700 dark:border-surface-600\")} />\n <label htmlFor=\"radio-csv\"\n className=\"p-2 text-sm font-medium text-surface-900 dark:text-surface-accent-300\">CSV</label>\n </div>\n <div className=\"flex items-center\">\n <input id=\"radio-json\" type=\"radio\" value=\"json\" name=\"exportType\"\n checked={exportType === \"json\"}\n onChange={() => setExportType(\"json\")}\n className={cls(\"w-4 bg-surface-100 border-surface-300 dark:bg-surface-700 dark:border-surface-600\")} />\n <label htmlFor=\"radio-json\"\n className=\"p-2 text-sm font-medium text-surface-900 dark:text-surface-accent-300\">JSON</label>\n </div>\n </div>\n\n <div className={\"p-4 flex flex-col\"}>\n <div className=\"flex items-center\">\n <input id=\"radio-timestamp\" type=\"radio\" value=\"timestamp\" name=\"dateExportType\"\n checked={dateExportType === \"timestamp\"}\n onChange={() => setDateExportType(\"timestamp\")}\n className={cls(\"w-4 bg-surface-100 border-surface-300 dark:bg-surface-700 dark:border-surface-600\")} />\n <label htmlFor=\"radio-timestamp\"\n className=\"p-2 text-sm font-medium text-surface-900 dark:text-surface-accent-300\">Dates\n as\n timestamps ({dateRef.current.getTime()})</label>\n </div>\n <div className=\"flex items-center\">\n <input id=\"radio-string\" type=\"radio\" value=\"string\" name=\"dateExportType\"\n checked={dateExportType === \"string\"}\n onChange={() => setDateExportType(\"string\")}\n className={cls(\"w-4 bg-surface-100 border-surface-300 dark:bg-surface-700 dark:border-surface-600\")} />\n <label htmlFor=\"radio-string\"\n className=\"p-2 text-sm font-medium text-surface-900 dark:text-surface-accent-300\">Dates\n as\n strings ({dateRef.current.toISOString()})</label>\n </div>\n </div>\n </div>\n\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={exportType !== \"csv\"}\n value={flattenArrays}\n onValueChange={setFlattenArrays}\n label={\"Flatten arrays\"} />\n\n </DialogContent>\n\n <DialogActions>\n\n <Button onClick={handleClose}\n variant={\"text\"}>\n Cancel\n </Button>\n\n <Button onClick={onOkClicked}>\n Download\n </Button>\n\n </DialogActions>\n\n </Dialog>\n\n </>;\n}\n","import { useEntitySelectionDialog } from \"../hooks/useEntitySelectionDialog\";\nimport type { EntityCollection } from \"@rebasepro/types\";\nimport React, { useCallback, useMemo } from \"react\";\n\nimport { Entity, EntityReference, FilterValues } from \"@rebasepro/types\";\nimport type { PreviewSize } from \"../types/components/PropertyPreviewProps\";\nimport { getReferenceFrom } from \"@rebasepro/common\";\nimport { ReferencePreview } from \"../preview\";\nimport { Button, cls } from \"@rebasepro/ui\";\nimport { useCollectionRegistryController } from \"../index\";\n\nexport type ReferenceWidgetProps<M extends Record<string, unknown>> = {\n name?: string,\n multiselect?: boolean,\n value: EntityReference | EntityReference[] | null,\n onReferenceSelected?: (params: {\n reference: EntityReference | null,\n entity: Entity<M> | null\n }) => void,\n onMultipleReferenceSelected?: (params: {\n references: EntityReference[] | null,\n entities: Entity<M>[] | null\n }) => void,\n path: string,\n disabled?: boolean,\n previewProperties?: string[];\n /**\n * Allow selection of entities that pass the given filter only.\n */\n forceFilter?: FilterValues<string>;\n size: PreviewSize;\n className?: string;\n includeId?: boolean;\n includeEntityLink?: boolean;\n};\n\n/**\n * This field allows selecting reference/s.\n */\nexport function ReferenceWidget<M extends Record<string, unknown>>({\n name,\n multiselect = false,\n path,\n disabled,\n value,\n onReferenceSelected,\n onMultipleReferenceSelected,\n previewProperties,\n forceFilter,\n size,\n className,\n includeId,\n includeEntityLink\n}: ReferenceWidgetProps<M>) {\n\n const collectionRegistryController = useCollectionRegistryController();\n\n const collection: EntityCollection | undefined = useMemo(() => {\n return collectionRegistryController.getCollection(path);\n }, [path, collectionRegistryController.getCollection]);\n\n const onSingleEntitySelected = useCallback((entity: Entity<M> | null) => {\n if (disabled)\n return;\n if (onReferenceSelected) {\n const reference = entity ? getReferenceFrom(entity) : null;\n onReferenceSelected?.({\n reference,\n entity\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const onMultipleEntitiesSelected = useCallback((entities: Entity<M>[]) => {\n if (disabled)\n return;\n if (onMultipleReferenceSelected) {\n const references = entities ? entities.map(e => getReferenceFrom(e)) : null;\n onMultipleReferenceSelected({\n references,\n entities\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const referenceDialogController = useEntitySelectionDialog({\n multiselect,\n path,\n collection,\n onSingleEntitySelected,\n onMultipleEntitiesSelected,\n forceFilter\n }\n );\n\n const clearValue = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n if (multiselect) {\n onMultipleEntitiesSelected([]);\n } else {\n onSingleEntitySelected(null);\n }\n }, [onReferenceSelected]);\n\n let child: React.ReactNode;\n\n const onEntryClick = () => {\n if (disabled)\n return;\n referenceDialogController.open();\n };\n\n if (Array.isArray(value)) {\n child = <div className={\"flex flex-col gap-4\"}>\n {value.map((ref, index) => {\n return <ReferencePreview\n key={`reference_preview_${index}`}\n onClick={onEntryClick}\n reference={ref}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink} />\n })}\n </div>\n } else if (value?.isEntityReference && value?.isEntityReference()) {\n child = <ReferencePreview\n reference={value}\n onClick={onEntryClick}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink} />\n\n }\n return <div className={cls(\"text-sm font-medium\",\n \"min-w-80 flex flex-col gap-4\",\n \"relative transition-colors duration-200 ease-in rounded-xs font-medium\",\n disabled ? \"bg-opacity-50\" : \"hover:bg-opacity-75\",\n \"dark:text-white/50 text-text-primary/50 dark:text-text-primary-dark/50 dark:text-white/50\",\n className\n )}>\n\n {child}\n {!value && <div className=\"justify-center text-left\">\n <Button disabled={disabled}\n onClick={onEntryClick}>\n Edit {name}\n </Button>\n </div>}\n\n </div>;\n}\n","import type { AppView } from \"@rebasepro/types\";\nimport React, { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n;\nimport { useUrlController } from \"../hooks\";\nimport { useAdminModeController } from \"@rebasepro/core\";\nexport interface AdminModeSyncerProps {\n /**\n * Map of views designated as 'Studio' views.\n * Navigating to any of these views will automatically flag the admin mode as \"studio\".\n */\n devViews?: AppView[];\n}\n\n/**\n * A highly customizable utility component that observes react-router routes and\n * actively shifts the internal Rebase `adminModeController` context to match\n * the user's active window segment (e.g., Content vs Studio mode).\n * \n * Placing this anywhere safely inside the Rebase layout automatically triggers\n * UI mode synchronization.\n */\nexport function AdminModeSyncer({ devViews }: AdminModeSyncerProps) {\n const location = useLocation();\n const urlController = useUrlController();\n const adminModeController = useAdminModeController();\n\n // Keep track of the current mode using a ref to avoid adding it to the dependency array\n const currentModeRef = React.useRef(adminModeController.mode);\n currentModeRef.current = adminModeController.mode;\n\n // Stable ref for setMode so it doesn't trigger the effect\n const setModeRef = React.useRef(adminModeController.setMode);\n setModeRef.current = adminModeController.setMode;\n\n useEffect(() => {\n const path = location.pathname;\n const isContentRoute = urlController.isUrlCollectionPath(path) || path === urlController.basePath;\n\n // Check both devViews slugs AND the studio home path (/s or basePath/s)\n const studioHomePath = urlController.basePath === \"/\" ? \"/s\" : `${urlController.basePath}/s`;\n const isStudioRoute = path === studioHomePath || path.startsWith(studioHomePath + \"/\") || devViews?.some(view => {\n const viewPath = urlController.buildAppUrlPath(view.slug);\n return path.startsWith(`${viewPath}/`) || path === viewPath;\n });\n\n if (isStudioRoute && currentModeRef.current !== \"studio\") {\n setModeRef.current(\"studio\");\n } else if (isContentRoute && currentModeRef.current !== \"content\") {\n setModeRef.current(\"content\");\n }\n }, [location.pathname, urlController, devViews]);\n\n return null;\n}\n\n","import type { NavigationEntry } from \"@rebasepro/types\";\nimport { useNavigate } from \"react-router-dom\";\n;\nimport { Chip, Collapse, StarIcon } from \"@rebasepro/ui\";\nimport { useUserConfigurationPersistence } from \"@rebasepro/core\";\nimport { useNavigationStateController } from \"../../index\";\n\nfunction NavigationChip({ entry }: { entry: NavigationEntry }) {\n\n const navigate = useNavigate();\n const userConfigurationPersistence = useUserConfigurationPersistence();\n\n if (!userConfigurationPersistence)\n return null;\n\n const favourite = userConfigurationPersistence.favouritePaths.includes(entry.slug);\n const onIconClick = (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (favourite) {\n userConfigurationPersistence.setFavouritePaths(\n userConfigurationPersistence.favouritePaths.filter(p => p !== entry.slug)\n );\n } else {\n userConfigurationPersistence.setFavouritePaths(\n [...userConfigurationPersistence.favouritePaths, entry.slug]\n );\n }\n };\n return <Chip\n key={entry.slug}\n onClick={() => navigate(entry.url)}\n icon={<StarIcon\n onClick={onIconClick}\n size={18}\n className={favourite ? \"text-secondary\" : \"text-surface-400 dark:text-surface-500\"} />\n }>\n {entry.name}\n </Chip>;\n}\n\nexport function FavouritesView({ hidden }: { hidden: boolean }) {\n\n const navigationStateController = useNavigationStateController();\n const userConfigurationPersistence = useUserConfigurationPersistence();\n\n if (!userConfigurationPersistence)\n return null;\n\n const favouriteCollections = (userConfigurationPersistence?.favouritePaths ?? [])\n .map((path) => navigationStateController.topLevelNavigation?.navigationEntries.find((entry) => entry.slug === path))\n .filter(Boolean) as NavigationEntry[];\n\n return <Collapse in={favouriteCollections.length > 0}>\n <div className=\"flex flex-row flex-wrap gap-2 pb-2 min-h-[32px]\">\n {favouriteCollections.map((entry) => <NavigationChip key={entry.slug}\n entry={entry} />)}\n </div>\n </Collapse>;\n}\n","import React, { PropsWithChildren, useState } from \"react\";\nimport { cls, EditIcon, IconButton, Typography, ExpandablePanel } from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\n\nexport function NavigationGroup({\n children,\n group,\n minimised,\n isPreview,\n isPotentialCardDropTarget,\n onEditGroup,\n dndDisabled,\n collapsed,\n onToggleCollapsed\n}: PropsWithChildren<{\n group: string | undefined,\n minimised?: boolean,\n isPreview?: boolean,\n isPotentialCardDropTarget?: boolean,\n onEditGroup?: (groupName: string) => void;\n dndDisabled?: boolean;\n collapsed?: boolean;\n onToggleCollapsed?: () => void;\n}>) {\n\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const currentGroupName = group ?? t(\"views_group\");\n\n // Show caret only when not in preview and there is a toggle handler\n const showCaret = !isPreview && !!onToggleCollapsed;\n\n // Helper for the title content (left side)\n const TitleContent = (\n <div className={cls(\"flex items-center\", isPreview ? \"px-1 py-0.5\" : \"\")}\n >\n <Typography\n variant={isPreview ? \"body2\" : \"caption\"}\n component={\"h2\"}\n color=\"secondary\"\n className={cls(\n \"p-4 py-2 rounded\",\n \"font-medium uppercase text-sm text-surface-600 dark:text-surface-400\"\n )}\n >\n {currentGroupName}\n </Typography>\n {!isPreview && onEditGroup && !dndDisabled && (\n <IconButton\n size=\"smallest\"\n onClick={(e) => {\n e.stopPropagation(); // Prevent toggle on click\n onEditGroup(currentGroupName);\n }}\n className={cls(\"ml-2 \", isHovered ? \"opacity-100\" : \"opacity-0\", \"transition-opacity duration-100\")}\n >\n <EditIcon size=\"smallest\" />\n </IconButton>\n )}\n </div>\n );\n\n return (\n <div className={cls(\n !isPotentialCardDropTarget ? \"my-10\" : \"my-6\",\n \"transition-all duration-200 ease-in-out\"\n )}\n >\n {/* Preview: static header + content (no caret / no collapse) */}\n {isPreview && (\n <>\n <div\n className={cls(\n \"flex items-center justify-between w-full\",\n \"p-4 py-2\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {TitleContent}\n </div>\n {children}\n </>\n )}\n\n {/* Interactive collapsible version when a toggle handler is provided */}\n {!isPreview && showCaret && (\n <ExpandablePanel\n invisible\n expanded={!collapsed}\n onExpandedChange={(open) => {\n if (open !== !collapsed) {\n onToggleCollapsed?.();\n }\n }}\n className={cls(\"mt-6\")}\n titleClassName={cls(\n \"min-h-0 p-0 border-none\",\n \"rounded flex items-center justify-between w-full\",\n \"hover:bg-transparent\",\n \"cursor-pointer select-none\",\n collapsed && \"bg-surface-100 dark:bg-surface-800/50\"\n )}\n innerClassName={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}\n title={\n <div\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className=\"flex items-center\"\n >\n {TitleContent}\n </div>\n }\n >\n {minimised ? (\n <div className={cls(\"mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\")}\n style={{ minHeight: \"50px\" }}>\n </div>\n ) : (\n <div className={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}>\n {children}\n </div>\n )}\n </ExpandablePanel>\n )}\n\n {/* Non-collapsible (no caret) runtime, keep old behavior */}\n {!isPreview && !showCaret && (\n <>\n <div\n className={cls(\n \"flex items-center justify-between w-full\",\n \"mt-6\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {TitleContent}\n </div>\n\n {!collapsed && (\n minimised ? (\n <div className={cls(\"mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\")}\n style={{ minHeight: \"50px\" }}>\n </div>\n ) : (\n <div className={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}>\n {children}\n </div>\n )\n )}\n </>\n )}\n </div>\n );\n}\n","import type { NavigationEntry } from \"@rebasepro/types\";\nimport { useNavigate } from \"react-router-dom\";\n;\nimport { IconButton, StarIcon, Tooltip, WarningIcon } from \"@rebasepro/ui\";\nimport { NavigationCard } from \"./NavigationCard\";\nimport { SmallNavigationCard } from \"./SmallNavigationCard\";\nimport React from \"react\";\nimport { useRebaseContext, useSlot } from \"@rebasepro/core\";\nimport { IconForView } from \"@rebasepro/core\";\nimport { useUserConfigurationPersistence } from \"@rebasepro/core\";\n\n/**\n * This is the component used in the home page to render a card for each\n * collection or view.\n * @group Components\n * @param view\n * @param path\n * @param collection\n * @param url\n * @param name\n * @param description\n * @param onClick\n\n */\nexport function NavigationCardBinding({\n slug,\n collection,\n view,\n url,\n name,\n description,\n onClick,\n type,\n shrink\n}: NavigationEntry & {\n onClick?: () => void,\n shrink?: boolean // <-- add shrink prop type\n}) {\n\n const userConfigurationPersistence = useUserConfigurationPersistence();\n const collectionIcon = <IconForView collectionOrView={collection ?? view} />;\n\n const navigate = useNavigate();\n const context = useRebaseContext();\n\n const favourite = (userConfigurationPersistence?.favouritePaths ?? []).includes(slug);\n\n const actionsArray: React.ReactNode[] = userConfigurationPersistence\n ? [\n <IconButton\n key={\"favourite\"}\n size={\"small\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (favourite) {\n userConfigurationPersistence.setFavouritePaths(\n userConfigurationPersistence.favouritePaths.filter(p => p !== slug)\n );\n } else {\n userConfigurationPersistence.setFavouritePaths(\n [...userConfigurationPersistence.favouritePaths, slug]\n );\n }\n }}>\n <StarIcon\n size={\"small\"}\n className={favourite ? \"text-secondary\" : \"text-surface-400 dark:text-surface-500\"} />\n </IconButton>\n ]\n : [];\n\n const pluginCardActions = useSlot(\"home.collection.actions\", {\n slug: slug,\n collection: collection!,\n context\n });\n\n if ((collection as any)?.isTableMissing) {\n actionsArray.unshift(\n <Tooltip key=\"warning\" title={`Table mapped to \"${collection?.slug || collection?.name}\" is missing in the database. Run migrations.`}>\n <div>\n <WarningIcon size=\"small\" className=\"text-red-600 dark:text-red-400\" />\n </div>\n </Tooltip>\n );\n }\n\n const actions: React.ReactNode | undefined = <>\n {actionsArray}\n {pluginCardActions}\n </>\n\n return <NavigationCard\n icon={collectionIcon}\n name={name}\n description={description}\n actions={actions}\n onClick={() => {\n onClick?.();\n navigate(url);\n if (userConfigurationPersistence) {\n userConfigurationPersistence.setRecentlyVisitedPaths(\n [slug, ...(userConfigurationPersistence.recentlyVisitedPaths ?? []).filter(p => p !== slug)]\n );\n }\n }}\n shrink={shrink}\n />;\n}\n","import type { NavigationEntry } from \"@rebasepro/types\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Active,\n closestCenter,\n closestCorners,\n CollisionDetection,\n DropAnimation,\n getFirstCollision,\n KeyboardSensor,\n MouseSensor,\n pointerWithin,\n rectIntersection,\n TouchSensor,\n UniqueIdentifier,\n useDndMonitor,\n useDroppable,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n AnimateLayoutChanges,\n arrayMove,\n defaultAnimateLayoutChanges,\n rectSortingStrategy,\n SortableContext,\n useSortable\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\nimport { NavigationCardBinding } from \"./NavigationCardBinding\";\n;\nimport { cls } from \"@rebasepro/ui\";\n\nconst animateLayoutChanges: AnimateLayoutChanges = (args) =>\n defaultAnimateLayoutChanges({\n ...args,\n wasDragging: true\n });\n\nconst dropAnimationConfig: DropAnimation = {};\n\nconst cloneSerializableNavigationEntry = (entry: NavigationEntry): NavigationEntry => {\n const clonedEntry: Partial<NavigationEntry> = {\n id: entry.id,\n slug: entry.slug,\n url: entry.url,\n name: entry.name,\n type: entry.type,\n collection: entry.collection ? { ...entry.collection } : undefined,\n view: entry.view ? { ...entry.view } : undefined,\n ...(entry.group && { group: entry.group }),\n ...(entry.description && { description: entry.description })\n };\n return clonedEntry as NavigationEntry;\n};\n\nconst cloneItemsForDnd = (items: { name: string; entries: NavigationEntry[] }[]) =>\n items.map((g) => ({\n name: g.name,\n entries: g.entries.map(cloneSerializableNavigationEntry)\n }));\n\n/* ─────────────────────────────────────────────────────────── */\n/* Sortable card & group */\n\n/* ─────────────────────────────────────────────────────────── */\nexport function SortableNavigationCard({\n entry,\n onClick\n}: {\n entry: NavigationEntry;\n onClick?: () => void;\n}) {\n const {\n setNodeRef,\n listeners,\n attributes,\n transform,\n transition,\n isDragging\n } =\n useSortable({\n id: entry.url,\n animateLayoutChanges\n });\n\n const style = {\n transform: transform ? CSS.Transform.toString(transform) : undefined,\n transition,\n opacity: isDragging ? 0 : 1\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes} {...listeners}>\n <NavigationCardBinding {...entry} onClick={onClick} />\n </div>\n );\n}\n\nexport function NavigationGroupDroppable({\n id,\n itemIds,\n children,\n isPotentialCardDropTarget = false\n}: {\n id: UniqueIdentifier;\n itemIds: UniqueIdentifier[];\n children: React.ReactNode;\n isPotentialCardDropTarget?: boolean;\n}) {\n const { setNodeRef } = useDroppable({ id });\n\n return (\n <div\n ref={setNodeRef}\n className={cls(\n isPotentialCardDropTarget\n ? \"p-2 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\"\n : undefined,\n \"transition-all duration-200 ease-in-out\"\n )}\n >\n <SortableContext items={itemIds} strategy={rectSortingStrategy}>\n {children}\n </SortableContext>\n </div>\n );\n}\n\nexport function SortableNavigationGroup({\n groupName,\n children,\n disabled\n}: {\n groupName: string;\n children: React.ReactNode;\n disabled?: boolean;\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } =\n useSortable({\n id: groupName,\n animateLayoutChanges,\n disabled\n });\n\n const style = {\n transform: transform ? CSS.Transform.toString(transform) : undefined,\n transition,\n opacity: isDragging ? 0 : 1\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes} {...listeners}>\n {children}\n </div>\n );\n}\n\nexport function useHomePageDnd({\n items,\n setItems,\n disabled,\n onCardMovedBetweenGroups,\n onGroupMoved,\n onNewGroupDrop,\n onPersist\n}: {\n items: { name: string; entries: NavigationEntry[] }[];\n setItems: (\n newItemsOrUpdater:\n | { name: string; entries: NavigationEntry[] }[]\n | ((\n currentItems: { name: string; entries: NavigationEntry[] }[]\n ) => { name: string; entries: NavigationEntry[] }[])\n ) => void;\n disabled: boolean;\n onCardMovedBetweenGroups?: (card: NavigationEntry) => void;\n onGroupMoved?: (groupName: string, oldIndex: number, newIndex: number) => void;\n onNewGroupDrop?: () => void;\n onPersist?: (latest: { name: string; entries: NavigationEntry[] }[]) => void;\n}) {\n /* ---------------- local state ---------------- */\n const dndItems = items;\n const setDndItems = setItems;\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n const [activeIsGroup, setActiveIsGroup] = useState(false);\n const [currentDraggingGroupId, setCurrentDraggingGroupId] =\n useState<UniqueIdentifier | null>(null);\n const [dndKitActiveNode, setDndKitActiveNode] = useState<Active | null>(null);\n const [isDraggingCardOnly, setIsDraggingCardOnly] = useState(false);\n const [dialogOpenForGroup, setDialogOpenForGroup] = useState<string | null>(null);\n const [isHoveringNewGroupDropZone, setIsHoveringNewGroupDropZone] =\n useState(false);\n const [pendingNewGroupName, setPendingNewGroupName] = useState<string | null>(null);\n const [stateBeforeNewGroup, setStateBeforeNewGroup] = useState<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n\n /* store the original state before any drag modifications */\n const preDragItemsRef = useRef<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n\n /* store interim state for cross-group moves */\n const interimItemsRef = useRef<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n useEffect(() => {\n interimItemsRef.current = dndItems;\n }, [dndItems]);\n\n /* ---------------- sensors ---------------- */\n const mouseSensor = useSensor(MouseSensor, { activationConstraint: { distance: 10 } });\n const touchSensor = useSensor(TouchSensor, {\n activationConstraint: {\n delay: 150,\n tolerance: 5\n }\n });\n const keyboardSensor = useSensor(KeyboardSensor);\n const sensors = useSensors(mouseSensor, touchSensor, keyboardSensor);\n\n /* ---------------- helpers ---------------- */\n const dndContainers = dndItems.map((g) => g.name);\n\n const findDndContainer = useCallback(\n (id: UniqueIdentifier): string | undefined => {\n if (!id) return undefined;\n const group = dndItems.find((g) => g.name === id);\n if (group) return group.name;\n for (const g of dndItems) {\n if (g.entries.some((e) => e.url === id)) return g.name;\n }\n return undefined;\n },\n [dndItems]\n );\n\n /* ---------------- collision detection ---------------- */\n const lastOverId = useRef<UniqueIdentifier | null>(null);\n const recentlyMovedToNewContainer = useRef(false);\n\n const collisionDetection: CollisionDetection = useCallback(\n (args) => {\n if (disabled || !activeId) return [];\n if (activeIsGroup) {\n const groups = args.droppableContainers.filter((c) =>\n dndItems.some((g) => g.name === c.id)\n );\n if (!groups.length) return [];\n return closestCenter({\n ...args,\n droppableContainers: groups\n });\n }\n\n const pointer = pointerWithin(args);\n if (pointer.length) {\n const zone = pointer.find((c) => c.id === \"new-group-drop-zone\");\n if (zone) return [zone];\n\n const container = pointer.find((c) =>\n dndItems.some((g) => g.name === c.id)\n );\n if (container) {\n const itemsIn = dndItems.find((g) => g.name === container.id)\n ?.entries;\n if (itemsIn?.length) {\n const closest = closestCorners({\n ...args,\n droppableContainers: args.droppableContainers.filter(\n (c) => itemsIn.some((e) => e.url === c.id)\n )\n });\n if (closest.length) return closest;\n }\n return [container];\n }\n const first = getFirstCollision(pointer, \"id\");\n if (first) return [{ id: first }];\n }\n\n const rects = rectIntersection(args);\n const zoneRect = rects.find((c) => c.id === \"new-group-drop-zone\");\n if (zoneRect) return [zoneRect];\n\n let overId = getFirstCollision(rects, \"id\");\n if (overId != null) {\n const overIsContainer = dndItems.some((g) => g.name === overId);\n if (overIsContainer) {\n const itemsIn = dndItems.find((g) => g.name === overId)\n ?.entries;\n if (itemsIn?.length) {\n const closestItem = closestCorners({\n ...args,\n droppableContainers: args.droppableContainers.filter(\n (c) => itemsIn.some((e) => e.url === c.id)\n )\n })[0]?.id;\n if (closestItem) overId = closestItem;\n }\n }\n lastOverId.current = overId;\n return [{ id: overId }];\n }\n\n if (\n recentlyMovedToNewContainer.current &&\n lastOverId.current &&\n !activeIsGroup\n )\n return [{ id: lastOverId.current }];\n\n return [];\n },\n [activeId, dndItems, disabled, activeIsGroup]\n );\n\n /* ---------------- drag handlers ---------------- */\n const handleDragStart = ({ active }: { active: Active }) => {\n setDndKitActiveNode(active);\n if (disabled) return;\n\n // Capture the original state before any drag modifications\n preDragItemsRef.current = cloneItemsForDnd(dndItems);\n\n const isGroup = dndItems.some((g) => g.name === active.id);\n if (!active.data.current) active.data.current = {};\n active.data.current.type = isGroup ? \"group\" : \"item\";\n\n setActiveId(active.id);\n setActiveIsGroup(isGroup);\n setIsDraggingCardOnly(!isGroup);\n if (isGroup) setCurrentDraggingGroupId(active.id);\n recentlyMovedToNewContainer.current = false;\n };\n\n const handleDragOver = ({\n active,\n over\n }: { active: Active; over: any }) => {\n if (disabled || !over) return;\n\n const activeIdNow = active.id;\n const overIdNow = over.id;\n if (activeIdNow === overIdNow) return;\n if (activeIsGroup) return;\n\n const activeCont = findDndContainer(activeIdNow);\n const overCont = findDndContainer(overIdNow);\n if (!activeCont) return;\n\n if (overCont && activeCont !== overCont) {\n recentlyMovedToNewContainer.current = true;\n lastOverId.current = overIdNow;\n\n // Update state for visual feedback during drag\n setDndItems((current) => {\n const newState = cloneItemsForDnd(current);\n const srcIdx = newState.findIndex((g) => g.name === activeCont);\n const tgtIdx = newState.findIndex((g) => g.name === overCont);\n if (srcIdx === -1 || tgtIdx === -1) return current;\n const src = newState[srcIdx];\n const tgt = newState[tgtIdx];\n const idxInSrc = src.entries.findIndex((e) => e.url === activeIdNow);\n if (idxInSrc === -1) return current;\n const [moved] = src.entries.splice(idxInSrc, 1);\n\n // Calculate insertion position - SAME logic as handleDragEnd\n const overIsContainer = overIdNow === overCont;\n if (overIsContainer) {\n tgt.entries.push(moved);\n } else {\n const overIdx = tgt.entries.findIndex((e) => e.url === overIdNow);\n if (overIdx !== -1) {\n tgt.entries.splice(overIdx, 0, moved);\n } else {\n tgt.entries.push(moved);\n }\n }\n\n return newState;\n });\n } else if (activeCont === overCont) {\n recentlyMovedToNewContainer.current = false;\n }\n };\n\n const handleDragEnd = ({\n active,\n over\n }: { active: Active; over: any }) => {\n if (disabled || !over) {\n resetDragState();\n return;\n }\n\n const activeIdNow = active.id;\n const overIdNow = over.id;\n\n /* ─── group reorder ─── */\n if (activeIsGroup) {\n if (\n activeIdNow !== overIdNow &&\n dndItems.some((g) => g.name === overIdNow)\n ) {\n const from = dndItems.findIndex((g) => g.name === activeIdNow);\n const to = dndItems.findIndex((g) => g.name === overIdNow);\n if (from !== -1 && to !== -1) {\n const newState = arrayMove(dndItems, from, to);\n setDndItems(newState);\n onPersist?.(newState);\n onGroupMoved?.(activeIdNow as string, from, to);\n }\n }\n }\n /* ─── card move ─── */\n else {\n // CRITICAL: Find source container from ORIGINAL pre-drag state, not current (potentially stale) dndItems\n const findContainerInState = (id: string, state: { name: string; entries: NavigationEntry[] }[]): string | undefined => {\n const group = state.find((g) => g.name === id);\n if (group) return group.name;\n for (const g of state) {\n if (g.entries.some((e) => e.url === id)) return g.name;\n }\n return undefined;\n };\n\n const sourceState = preDragItemsRef.current || dndItems;\n const activeCont = findContainerInState(activeIdNow as string, sourceState);\n const overCont = findDndContainer(overIdNow);\n\n /* drop on new-group zone */\n if (overIdNow === \"new-group-drop-zone\") {\n if (activeCont) {\n // Save current state before making changes\n setStateBeforeNewGroup(cloneItemsForDnd(dndItems));\n\n const newState = cloneItemsForDnd(dndItems);\n const srcIdx = newState.findIndex((g) => g.name === activeCont);\n if (srcIdx !== -1) {\n const src = newState[srcIdx];\n const idxInSrc = src.entries.findIndex(\n (e) => e.url === activeIdNow\n );\n if (idxInSrc !== -1) {\n const [dragged] = src.entries.splice(idxInSrc, 1);\n if (src.entries.length === 0) newState.splice(srcIdx, 1);\n\n let tentative = \"New Group\";\n let counter = 1;\n while (newState.some((g) => g.name === tentative))\n tentative = `New Group ${counter++}`;\n\n newState.push({\n name: tentative,\n entries: [dragged]\n });\n\n // Update local state but DON'T persist yet\n setDndItems(newState);\n setPendingNewGroupName(tentative);\n setDialogOpenForGroup(tentative);\n onNewGroupDrop?.();\n }\n }\n }\n }\n /* reorder inside same container */\n else {\n const overCont = findDndContainer(overIdNow);\n if (activeCont === overCont) {\n const grpIdx = dndItems.findIndex((g) => g.name === activeCont);\n if (grpIdx !== -1) {\n const group = dndItems[grpIdx];\n const oldIdx = group.entries.findIndex(\n (e) => e.url === activeIdNow\n );\n let newIdx = group.entries.findIndex(\n (e) => e.url === overIdNow\n );\n if (newIdx === -1 && overIdNow === activeCont)\n newIdx = group.entries.length - 1;\n if (\n oldIdx !== -1 &&\n newIdx !== -1 &&\n oldIdx !== newIdx\n ) {\n const reordered = arrayMove(group.entries, oldIdx, newIdx);\n const newState = [...dndItems];\n newState[grpIdx] = {\n ...group,\n entries: reordered\n };\n setDndItems(newState);\n onPersist?.(newState);\n }\n }\n } else if (overCont && activeCont !== overCont) {\n // Card moved between different groups - use CLEAN pre-drag state\n const finalState = cloneItemsForDnd(sourceState);\n\n // Find target container from clean state too\n const finalOverId = lastOverId.current || overIdNow;\n const cleanOverCont = findContainerInState(finalOverId as string, sourceState) || overCont;\n\n const srcIdx = finalState.findIndex((g) => g.name === activeCont);\n const tgtIdx = finalState.findIndex((g) => g.name === cleanOverCont);\n\n if (srcIdx !== -1 && tgtIdx !== -1) {\n const src = finalState[srcIdx];\n const tgt = finalState[tgtIdx];\n const idxInSrc = src.entries.findIndex((e) => e.url === activeIdNow);\n\n if (idxInSrc !== -1) {\n // Remove from source\n const [moved] = src.entries.splice(idxInSrc, 1);\n\n // Calculate insertion position in target\n const overIsContainer = finalOverId === cleanOverCont;\n if (overIsContainer) {\n tgt.entries.push(moved);\n } else {\n const overIdx = tgt.entries.findIndex((e) => e.url === finalOverId);\n if (overIdx !== -1) {\n tgt.entries.splice(overIdx, 0, moved);\n } else {\n tgt.entries.push(moved);\n }\n }\n\n // Remove empty source group if needed\n if (src.entries.length === 0) {\n finalState.splice(srcIdx, 1);\n }\n\n setDndItems(finalState);\n onPersist?.(finalState);\n\n onCardMovedBetweenGroups?.(moved);\n }\n }\n } else if (recentlyMovedToNewContainer.current) {\n // This shouldn't happen but log it for debugging\n console.error(\"Move between containers detected but conditions not met\", {\n activeCont,\n overCont,\n activeIdNow,\n overIdNow\n });\n }\n }\n }\n\n resetDragState();\n };\n\n const resetDragState = () => {\n setDndKitActiveNode(null);\n setActiveId(null);\n setActiveIsGroup(false);\n setCurrentDraggingGroupId(null);\n setIsDraggingCardOnly(false);\n recentlyMovedToNewContainer.current = false;\n };\n\n const handleDragCancel = () => resetDragState();\n\n /* ---------------- group rename ---------------- */\n const handleRenameGroup = (oldName: string, newName: string) => {\n setDndItems((current) => {\n const idx = current.findIndex((g) => g.name === oldName);\n if (idx === -1) return current;\n if (current.some((g) => g.name === newName && g.name !== oldName))\n return current;\n\n const updated = [...current];\n updated[idx] = {\n ...updated[idx],\n name: newName\n };\n\n // Persist after successful rename\n onPersist?.(updated);\n return updated;\n });\n\n // Clear all pending state\n setPendingNewGroupName(null);\n setStateBeforeNewGroup(null);\n setDialogOpenForGroup(null);\n };\n\n /* Handle dialog close without renaming */\n const handleDialogClose = () => {\n // If there's a pending new group that wasn't renamed, restore previous state\n if (pendingNewGroupName && dialogOpenForGroup === pendingNewGroupName && stateBeforeNewGroup) {\n // Restore the state from before the new group was created\n setDndItems(stateBeforeNewGroup);\n }\n\n // Clear all pending state\n setPendingNewGroupName(null);\n setStateBeforeNewGroup(null);\n setDialogOpenForGroup(null);\n };\n\n /* ---------------- public API ---------------- */\n const activeItemForOverlay =\n disabled || !activeId || activeIsGroup\n ? null\n : dndItems.flatMap((g) => g.entries).find((e) => e.url === activeId) || null;\n\n const activeGroupData =\n disabled || !activeId || !activeIsGroup\n ? null\n : dndItems.find((g) => g.name === activeId) || null;\n\n return {\n sensors,\n collisionDetection,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragEnd: handleDragEnd,\n onDragCancel: handleDragCancel,\n dropAnimation: dropAnimationConfig,\n activeItemForOverlay,\n activeGroupData,\n draggingGroupId: currentDraggingGroupId,\n containers: dndContainers,\n dndKitActiveNode,\n isDraggingCardOnly,\n dialogOpenForGroup,\n setDialogOpenForGroup,\n handleRenameGroup,\n handleDialogClose,\n isHoveringNewGroupDropZone,\n setIsHoveringNewGroupDropZone\n };\n}\n\nexport function NewGroupDropZone({\n disabled,\n setIsHovering\n}: {\n disabled: boolean;\n setIsHovering: (v: boolean) => void;\n}) {\n const {\n setNodeRef,\n isOver\n } = useDroppable({\n id: \"new-group-drop-zone\",\n disabled\n });\n const [isVisible, setIsVisible] = useState(false);\n\n useDndMonitor({\n onDragStart({ active }) {\n if (disabled) return;\n const tp = active.data.current?.type;\n setIsVisible(tp === \"item\");\n },\n onDragEnd() {\n setIsVisible(false);\n },\n onDragCancel() {\n setIsVisible(false);\n }\n });\n\n useEffect(() => {\n setIsHovering(isOver && isVisible);\n }, [isOver, isVisible, setIsHovering]);\n\n if (!isVisible || disabled) return null;\n\n return (\n <div\n ref={setNodeRef}\n className={cls(\n \"fixed right-8 top-1/2 -translate-y-1/2 w-[200px] h-[120px] border border-dashed rounded-lg flex items-center justify-center transition-all\",\n isOver\n ? \"bg-surface-accent-100 dark:bg-surface-accent-800 border-surface-300 dark:border-surface-600\"\n : \"bg-surface-50 dark:bg-surface-900 border-surface-200 dark:border-surface-700\"\n )}>\n <div className=\"text-center p-4\">\n <span className=\"block font-medium text-sm\">\n Drop here to create a new group\n </span>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField } from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\n\ninterface RenameGroupDialogProps {\n open: boolean;\n initialName: string;\n existingGroupNames: string[]; // Names of other existing groups to check for duplicates\n onClose: () => void;\n onRename: (newName: string) => void;\n}\n\nexport function RenameGroupDialog({\n open,\n initialName,\n existingGroupNames,\n onClose,\n onRename\n}: RenameGroupDialogProps) {\n const { t } = useTranslation();\n const [name, setName] = useState(initialName);\n const [error, setError] = useState<string | null>(null);\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null); // Create a ref for the input\n\n useEffect(() => {\n if (open) {\n setName(initialName);\n setError(null);\n // Focus and select text when dialog opens\n setTimeout(() => { // setTimeout to ensure the input is rendered and focusable\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, 100);\n }\n }, [initialName, open]);\n\n const handleNameChange = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const newName = event.target.value;\n setName(newName);\n if (!newName.trim()) {\n setError(t(\"group_name_empty_error\"));\n } else if (existingGroupNames.includes(newName.trim())) {\n setError(t(\"group_name_exists_error\"));\n } else {\n setError(null);\n }\n };\n\n const handleSave = () => {\n const trimmedName = name.trim();\n if (!trimmedName) {\n setError(t(\"group_name_empty_error\"));\n return;\n }\n if (existingGroupNames.includes(trimmedName)) {\n setError(t(\"group_name_exists_error\"));\n return;\n }\n if (!error) {\n onRename(trimmedName);\n onClose();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault(); // Prevent default form submission behavior\n const trimmedName = name.trim();\n // We need to check the error state directly as well,\n // because the error state might not have updated if the user types and immediately hits enter.\n let currentError = null;\n if (!trimmedName) {\n currentError = t(\"group_name_empty_error\");\n } else if (existingGroupNames.includes(trimmedName)) {\n currentError = t(\"group_name_exists_error\");\n }\n\n if (!currentError && trimmedName) {\n handleSave();\n } else if (currentError) {\n setError(currentError); // Ensure error is displayed if trying to submit with Enter\n }\n }\n };\n\n const handleClose = () => {\n setName(initialName);\n setError(null);\n onClose();\n };\n\n if (!open) return null;\n\n return (\n <Dialog open={open}>\n <DialogTitle>{t(\"rename_group\")}</DialogTitle>\n <DialogContent>\n <TextField\n inputRef={inputRef} // Pass the ref to the TextField\n label={t(\"group_name_label\")}\n value={name}\n onChange={handleNameChange}\n onKeyDown={handleKeyDown} // Added onKeyDown handler\n error={!!error}\n aria-describedby={error ? \"group-name-error\" : undefined}\n />\n {error && <p id=\"group-name-error\" style={{ display: \"none\" }}>{error}</p>}\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}\n variant=\"text\">\n {t(\"cancel\")}\n </Button>\n <Button onClick={handleSave}\n disabled={!!error || !name.trim()}>\n {t(\"save\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import type { HomePageSection, NavigationEntry, NavigationGroupMapping, PluginGenericProps } from \"@rebasepro/types\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport Fuse from \"fuse.js\";\nimport { Container, SearchBar } from \"@rebasepro/ui\";\nimport { AnalyticsEvent } from \"@rebasepro/types\";\nimport { FavouritesView } from \"./FavouritesView\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\nimport { NavigationGroup } from \"./NavigationGroup\";\nimport {\n NavigationGroupDroppable,\n NewGroupDropZone,\n SortableNavigationCard,\n SortableNavigationGroup,\n useHomePageDnd\n} from \"./HomePageDnD\";\nimport { DndContext, DragOverlay, MeasuringStrategy } from \"@dnd-kit/core\";\nimport { NavigationCardBinding } from \"./NavigationCardBinding\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis, restrictToWindowEdges } from \"@dnd-kit/modifiers\";\nimport { RenameGroupDialog } from \"./RenameGroupDialog\";\nimport { toArray } from \"@rebasepro/utils\";\nimport { useCollapsedGroups, useCustomizationController, useTranslation, useSlot } from \"@rebasepro/core\";\nimport { useRestoreScroll } from \"@rebasepro/core\";\nimport { useBreadcrumbsController, useCMSContext } from \"../../index\";\n\nexport const DEFAULT_GROUP_NAME = \"Views\";\nexport const ADMIN_GROUP_NAME = \"Admin\";\n\nexport function ContentHomePage({\n additionalActions,\n additionalChildrenStart,\n additionalChildrenEnd,\n sections,\n hiddenGroups\n}: {\n additionalActions?: React.ReactNode;\n additionalChildrenStart?: React.ReactNode;\n additionalChildrenEnd?: React.ReactNode;\n sections?: HomePageSection[];\n hiddenGroups?: string[];\n}) {\n\n const context = useCMSContext();\n const { navigationStateController } = context;\n const customizationController = useCustomizationController();\n const { resolvedSlots } = customizationController;\n const breadcrumbs = useBreadcrumbsController();\n const { t } = useTranslation();\n\n useEffect(() => {\n breadcrumbs.set({ breadcrumbs: [] });\n }, [breadcrumbs.set]);\n\n const {\n allowDragAndDrop = false,\n navigationEntries: rawNavigationEntries = [],\n groups: groupOrderFromNavController = [],\n onNavigationEntriesUpdate = () => {}\n } = navigationStateController.topLevelNavigation || {};\n\n const fuse = useRef<Fuse<NavigationEntry> | null>(null);\n const [filteredUrls, setFilteredUrls] = useState<string[] | null>(null);\n const performingSearch = Boolean(filteredUrls);\n\n // Memoize filtered navigation entries to prevent unnecessary recalculations\n const filteredNavigationEntries = useMemo(() => {\n return filteredUrls\n ? rawNavigationEntries.filter((e) => filteredUrls.includes(e.url))\n : rawNavigationEntries;\n }, [filteredUrls, rawNavigationEntries]);\n\n useEffect(() => {\n fuse.current = new Fuse(rawNavigationEntries, {\n keys: [\"name\", \"description\", \"group\", \"path\"]\n });\n }, [rawNavigationEntries]);\n\n const updateSearch = useCallback((v?: string) => {\n if (!v?.trim()) {\n setFilteredUrls(null);\n return;\n }\n const results = fuse.current?.search(v.trim());\n setFilteredUrls(results ? results.map((x) => x.item.url) : []);\n }, []);\n\n /* ───────────────────────────────────────────────────────────────\n Build groups (all items) + isolate Admin\n ─────────────────────────────────────────────────────────────── */\n const [items, setItems] = useState<\n { name: string; entries: NavigationEntry[] }[]\n >([]);\n const [adminGroupData, setAdminGroupData] = useState<{\n name: string;\n entries: NavigationEntry[];\n } | null>(null);\n\n // Flag to prevent useEffect from overwriting local DnD state\n const isDndDirtyRef = useRef(false);\n const dndDirtyTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Memoize the processed groups to avoid unnecessary recalculations\n const processedGroups = useMemo(() => {\n const src = filteredNavigationEntries;\n const entriesByGroup: Record<string, NavigationEntry[]> = {};\n\n src.forEach((e) => {\n const g =\n e.type === \"admin\"\n ? ADMIN_GROUP_NAME\n : e.group ?? DEFAULT_GROUP_NAME;\n (entriesByGroup[g] ??= []).push(e);\n });\n\n // Check if there are custom additional card components from plugins\n const hasPluginAdditionalCards = customizationController.resolvedSlots.some(s => s.slot === \"home.cards\");\n\n let allProcessed: { name: string; entries: NavigationEntry[] }[];\n\n if (performingSearch) {\n const ordered = [\n ...new Set(src.map((e) => e.group ?? DEFAULT_GROUP_NAME))\n ];\n allProcessed = ordered\n .filter(g => g === DEFAULT_GROUP_NAME || g === ADMIN_GROUP_NAME)\n .map((name) => ({\n name,\n entries: entriesByGroup[name] || []\n }))\n .filter((g) => g.entries.length);\n } else {\n const filteredGroupOrder: string[] = groupOrderFromNavController.filter(g => g === DEFAULT_GROUP_NAME || g === ADMIN_GROUP_NAME);\n\n allProcessed = filteredGroupOrder.map((g) => ({\n name: g,\n entries: entriesByGroup[g] || []\n }));\n Object.keys(entriesByGroup).forEach((g) => {\n const shouldInclude = g === DEFAULT_GROUP_NAME || g === ADMIN_GROUP_NAME;\n if (!filteredGroupOrder.includes(g) && shouldInclude)\n allProcessed.push({\n name: g,\n entries: entriesByGroup[g]\n });\n });\n\n // Ensure default group exists if there are plugin additional cards but no collections\n if (hasPluginAdditionalCards && !allProcessed.some(g => g.name === DEFAULT_GROUP_NAME)) {\n allProcessed.push({\n name: DEFAULT_GROUP_NAME,\n entries: []\n });\n }\n\n allProcessed = allProcessed.filter(\n (g) =>\n g.entries.length ||\n (g.name === DEFAULT_GROUP_NAME && hasPluginAdditionalCards)\n );\n }\n\n const admin = allProcessed.find((g) => g.name === ADMIN_GROUP_NAME);\n return {\n adminGroupData: admin || null,\n items: allProcessed.filter((g) => g.name !== ADMIN_GROUP_NAME && !hiddenGroups?.includes(g.name))\n };\n }, [filteredNavigationEntries, performingSearch, groupOrderFromNavController, customizationController.resolvedSlots, hiddenGroups]);\n\n // Update state only when processedGroups actually changes\n // Skip update if DnD just made a local change (dirty flag is set)\n useEffect(() => {\n if (isDndDirtyRef.current) {\n // DnD just updated the state, skip this sync\n return;\n }\n setAdminGroupData(processedGroups.adminGroupData);\n setItems(processedGroups.items);\n }, [processedGroups]);\n\n /* ───────────────────────────────────────────────────────────────\n Local update vs. persistence helpers\n ─────────────────────────────────────────────────────────────── */\n const updateItems = (\n updater:\n | { name: string; entries: NavigationEntry[] }[]\n | ((\n prev: { name: string; entries: NavigationEntry[] }[]\n ) => { name: string; entries: NavigationEntry[] }[])\n ) => {\n setItems(updater); // local only\n };\n\n const persistNavigationGroups = (\n latest: { name: string; entries: NavigationEntry[] }[]\n ) => {\n // Set dirty flag to prevent useEffect from overwriting local state\n isDndDirtyRef.current = true;\n\n // Clear any existing timeout\n if (dndDirtyTimeoutRef.current) {\n clearTimeout(dndDirtyTimeoutRef.current);\n }\n\n // Clear dirty flag after a delay to allow navigation to update\n dndDirtyTimeoutRef.current = setTimeout(() => {\n isDndDirtyRef.current = false;\n }, 1000);\n\n // Map ALL groups including \"Views\"\n const draggable: NavigationGroupMapping[] = latest.map((g) => ({\n name: g.name,\n entries: g.entries.map((e) => e.slug)\n }));\n\n const all: NavigationGroupMapping[] = adminGroupData\n ? [\n ...draggable,\n {\n name: adminGroupData.name,\n entries: adminGroupData.entries.map((e) => e.slug)\n }\n ]\n : draggable;\n\n onNavigationEntriesUpdate(all);\n };\n\n // Use custom hook for collapsed groups with localStorage persistence\n const groupNames = useMemo(() => [\n ...items.map(item => item.name),\n ...(adminGroupData ? [adminGroupData.name] : [])\n ], [items, adminGroupData]);\n\n const { isGroupCollapsed, toggleGroupCollapsed } = useCollapsedGroups(groupNames, \"home\");\n\n const {\n sensors,\n collisionDetection,\n onDragStart,\n onDragOver,\n onDragEnd,\n dropAnimation,\n activeItemForOverlay,\n activeGroupData,\n draggingGroupId,\n containers,\n dndKitActiveNode,\n onDragCancel,\n isDraggingCardOnly,\n dialogOpenForGroup,\n setDialogOpenForGroup,\n handleRenameGroup,\n handleDialogClose,\n isHoveringNewGroupDropZone,\n setIsHoveringNewGroupDropZone\n } = useHomePageDnd({\n items,\n setItems: updateItems,\n disabled: !allowDragAndDrop || performingSearch,\n onPersist: persistNavigationGroups,\n onGroupMoved: (g) =>\n context.analyticsController?.onAnalyticsEvent?.(\"home_move_group\", {\n name: g\n }),\n onCardMovedBetweenGroups: (card) =>\n context.analyticsController?.onAnalyticsEvent?.(\"home_move_card\", {\n id: card.id\n }),\n onNewGroupDrop: () =>\n context.analyticsController?.onAnalyticsEvent?.(\n \"home_drop_new_group\"\n )\n });\n\n const {\n containerRef,\n direction\n } = useRestoreScroll();\n\n const dndDisabled = !allowDragAndDrop || performingSearch;\n\n const dndModifiers = dndKitActiveNode?.data.current?.type === \"group\"\n ? [restrictToVerticalAxis, restrictToWindowEdges]\n : [restrictToWindowEdges];\n\n const sectionProps: PluginGenericProps = { context };\n const additionalPluginChildrenStart = useSlot(\"home.children.start\", sectionProps);\n const additionalPluginChildrenEnd = useSlot(\"home.children.end\", sectionProps);\n const additionalPluginActions = useSlot(\"home.actions\", sectionProps);\n\n // Pre-compute home.cards slot contributions (cannot call useSlot inside .map loop)\n const homeCardContributions = useMemo(() => {\n return resolvedSlots\n .filter(s => s.slot === \"home.cards\")\n .sort((a, b) => (a.order ?? 50) - (b.order ?? 50));\n }, [resolvedSlots]);\n\n /* ───────────────────────────────────────────────────────────────\n Render\n ─────────────────────────────────────────────────────────────── */\n return (\n <div ref={containerRef} className=\"py-2 overflow-auto h-full w-full\">\n <Container maxWidth=\"6xl\">\n {/* search & actions */}\n <div\n className=\"w-full sticky py-4 transition-all duration-400 ease-in-out top-0 z-10 flex flex-row gap-4\"\n style={{ top: direction === \"down\" ? -84 : 0 }}\n >\n <SearchBar\n onTextSearch={updateSearch}\n placeholder={t(\"search_collections\")}\n autoFocus\n innerClassName=\"w-full\"\n className=\"w-full grow\"\n />\n {additionalActions}\n {additionalPluginActions}\n </div>\n\n <FavouritesView hidden={performingSearch} />\n\n {additionalChildrenStart}\n {additionalPluginChildrenStart}\n\n {/* ─────── DND context ─────── */}\n <DndContext\n sensors={sensors}\n collisionDetection={collisionDetection}\n measuring={{\n droppable: {\n strategy: MeasuringStrategy.Always,\n frequency: 500\n }\n }}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n onDragEnd={onDragEnd}\n onDragCancel={onDragCancel}\n modifiers={dndModifiers}\n >\n <SortableContext\n key={JSON.stringify(containers)}\n items={containers}\n strategy={verticalListSortingStrategy}\n >\n {items.map((groupData, groupIndex) => {\n const groupKey = groupData.name;\n const entriesInGroup = groupData.entries;\n\n const homeCardsProps = {\n group:\n groupKey === DEFAULT_GROUP_NAME\n ? undefined\n : groupKey,\n context\n };\n // Render home.cards contributions inline (no hook call inside loop)\n const additionalCards = homeCardContributions.map((s, i) => (\n <ErrorBoundary key={`home_cards_${groupKey}_${i}`}>\n <s.Component {...homeCardsProps} {...(s.props ?? {})} />\n </ErrorBoundary>\n ));\n\n if (\n entriesInGroup.length === 0 &&\n (additionalCards.length === 0 || performingSearch)\n )\n return null;\n\n return (\n <SortableNavigationGroup\n key={`group-${groupIndex}`}\n groupName={groupKey}\n disabled={dndDisabled}\n >\n <NavigationGroup\n group={\n groupKey === DEFAULT_GROUP_NAME\n ? undefined\n : groupKey\n }\n minimised={\n draggingGroupId === groupKey &&\n !isDraggingCardOnly\n }\n isPotentialCardDropTarget={\n isDraggingCardOnly\n }\n dndDisabled={dndDisabled}\n onEditGroup={() => {\n if (dndDisabled) return;\n setDialogOpenForGroup(groupKey);\n }}\n collapsed={isGroupCollapsed(groupKey)}\n onToggleCollapsed={() => toggleGroupCollapsed(groupKey)}\n >\n <NavigationGroupDroppable\n id={groupKey}\n itemIds={entriesInGroup.map(\n (e) => e.url\n )}\n isPotentialCardDropTarget={\n isDraggingCardOnly\n }\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 \">\n {entriesInGroup.map(\n (entry) => (\n <SortableNavigationCard\n key={entry.url}\n entry={entry}\n onClick={() => {\n let event: AnalyticsEvent =\n \"unmapped_event\";\n if (\n entry.type ===\n \"collection\"\n )\n event =\n \"home_navigate_to_collection\";\n else if (\n entry.type ===\n \"view\"\n )\n event =\n \"home_navigate_to_view\";\n else if (\n entry.type ===\n \"admin\"\n )\n event =\n \"home_navigate_to_admin_view\";\n\n context.analyticsController?.onAnalyticsEvent?.(\n event,\n {\n path: entry.slug\n }\n );\n }}\n />\n )\n )}\n {!performingSearch &&\n groupKey.toLowerCase() !==\n ADMIN_GROUP_NAME.toLowerCase() &&\n additionalCards}\n </div>\n </NavigationGroupDroppable>\n </NavigationGroup>\n </SortableNavigationGroup>\n );\n })}\n </SortableContext>\n\n <NewGroupDropZone\n disabled={dndDisabled}\n setIsHovering={setIsHoveringNewGroupDropZone}\n />\n\n <DragOverlay adjustScale={false} dropAnimation={dropAnimation}>\n {activeGroupData &&\n draggingGroupId === activeGroupData.name ? (\n <div\n className=\"rounded-lg bg-transparent\"\n style={{\n padding: 0,\n margin: 0\n }}\n >\n <NavigationGroup\n group={\n activeGroupData.name ===\n DEFAULT_GROUP_NAME\n ? undefined\n : activeGroupData.name\n }\n isPreview={false}\n minimised\n />\n </div>\n ) : activeItemForOverlay ? (\n <NavigationCardBinding\n {...activeItemForOverlay}\n shrink={isHoveringNewGroupDropZone}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n\n {!performingSearch && adminGroupData && (\n <NavigationGroup\n group={adminGroupData.name}\n collapsed={isGroupCollapsed(adminGroupData.name)}\n onToggleCollapsed={() => toggleGroupCollapsed(adminGroupData.name)}\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 \">\n {adminGroupData.entries.map((entry) => (\n <NavigationCardBinding\n key={entry.url}\n {...entry}\n onClick={() => {\n let event: AnalyticsEvent =\n \"unmapped_event\";\n if (entry.type === \"collection\")\n event =\n \"home_navigate_to_collection\";\n else if (entry.type === \"view\")\n event = \"home_navigate_to_view\";\n else if (entry.type === \"admin\")\n event =\n \"home_navigate_to_admin_view\";\n\n context.analyticsController?.onAnalyticsEvent?.(\n event,\n { path: entry.slug }\n );\n }}\n />\n ))}\n </div>\n </NavigationGroup>\n )}\n\n {sections && sections.map((section) => (\n <NavigationGroup\n key={section.key}\n group={section.title}\n >\n {section.children}\n </NavigationGroup>\n ))}\n\n {additionalPluginChildrenEnd}\n {additionalChildrenEnd}\n </Container>\n\n {dialogOpenForGroup && (\n <RenameGroupDialog\n open\n initialName={dialogOpenForGroup}\n existingGroupNames={items\n .map((g) => g.name)\n .filter((n) => n !== dialogOpenForGroup)}\n onClose={handleDialogClose}\n onRename={(newName) => {\n handleRenameGroup(dialogOpenForGroup, newName);\n }}\n />\n )}\n </div>\n );\n}\n","import React, { useLayoutEffect } from \"react\";\nimport { useRebaseRegistryDispatch } from \"@rebasepro/core\";\nimport type { RebaseCMSConfig } from \"@rebasepro/types\";\n\n/**\n * Declarative component to configure the CMS in Rebase.\n * Renders nothing — purely registers config into the RebaseRegistry.\n *\n * When `collectionEditor` is provided, the built-in visual schema editor\n * is auto-wired as a native feature (slots, provider, Studio view) without\n * needing any external plugin.\n */\nexport function RebaseCMS({ collections, homePage, entityViews, entityActions, plugins, collectionEditor }: RebaseCMSConfig) {\n const dispatch = useRebaseRegistryDispatch();\n\n useLayoutEffect(() => {\n dispatch.registerCMS({ collections, homePage, entityViews, entityActions, plugins, collectionEditor });\n return () => dispatch.unregisterCMS();\n }, [dispatch, collections, homePage, entityViews, entityActions, plugins, collectionEditor]);\n\n return null;\n}\n","import React from \"react\";\nimport {\n useRebaseRegistry,\n useAuthController,\n} from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\nimport { LoginView } from \"@rebasepro/core\";\n\n/**\n * Auth gate component that handles the authentication flow.\n *\n * - Shows a loading spinner while `authController.initialLoading` is true.\n * - Shows the login view when no user is authenticated.\n * - Renders `children` when a user is authenticated.\n *\n * **Independently usable**: Use this alone when you want auth gating\n * without the full CMS layout or navigation.\n *\n * @example\n * ```tsx\n * <RebaseAuthGate>\n * <MyCustomApp />\n * </RebaseAuthGate>\n * ```\n */\nexport function RebaseAuthGate({ children }: { children: React.ReactNode }) {\n const registry = useRebaseRegistry();\n const authController = useAuthController();\n\n if (authController?.initialLoading) {\n return <CircularProgressCenter size={\"large\"} />;\n }\n\n if (!authController?.user) {\n const ActiveLoginView = registry.authConfig?.loginView ?? (\n <LoginView authController={authController as any} />\n );\n return <>{ActiveLoginView}</>;\n }\n\n return <>{children}</>;\n}\n","import React from \"react\";\nimport { Outlet } from \"react-router-dom\";\nimport {\n useAdminModeController,\n useRebaseRegistry,\n} from \"@rebasepro/core\";\n\nimport { Scaffold } from \"./app/Scaffold\";\nimport { AppBar } from \"./app/AppBar\";\nimport { Drawer } from \"./app/Drawer\";\nimport { SideDialogs } from \"./SideDialogs\";\nimport { AdminModeSyncer } from \"./AdminModeSyncer\";\nimport type { AppView } from \"@rebasepro/types\";\n\nexport interface RebaseLayoutProps {\n /** Title shown in the drawer. */\n title?: string;\n /** Custom AppBar to override the default. */\n appBar?: React.ReactNode;\n /** Custom Drawer to override the default. */\n drawer?: React.ReactNode;\n /** Whether to auto-open the drawer on load. */\n autoOpenDrawer?: boolean;\n /** Dev views passed to AdminModeSyncer (resolved from RebaseNavigation). */\n devViews?: AppView[];\n}\n\n/**\n * Layout layer — provides the Scaffold, AppBar, Drawer, and SideDialogs.\n *\n * Wraps the route outlet with the standard Rebase admin layout.\n * Override individual pieces (appBar, drawer) via props.\n *\n * **Independently usable**: Use this when you want the Rebase layout\n * without its default route definitions.\n *\n * @example\n * ```tsx\n * <RebaseLayout title=\"My Admin\">\n * <Route path=\"/\" element={<MyHomePage />} />\n * <Route path=\"/custom\" element={<CustomView />} />\n * </RebaseLayout>\n * ```\n */\nexport function RebaseLayout(props: RebaseLayoutProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n devViews = [],\n } = props;\n\n const adminModeController = useAdminModeController();\n\n const ActiveAppBar = appBar ?? <AppBar />;\n const ActiveDrawer = drawer ?? (\n <Drawer\n title={title}\n logoDestination={adminModeController.mode === \"studio\" ? \"/s\" : \"/\"}\n />\n );\n\n return (\n <Scaffold autoOpenDrawer={autoOpenDrawer}>\n <AdminModeSyncer devViews={devViews} />\n {ActiveAppBar}\n {ActiveDrawer}\n <Outlet />\n <SideDialogs />\n </Scaffold>\n );\n}\n","import type { EntityCollection } from \"@rebasepro/types\";\nimport { Blocker, useBlocker, useLocation } from \"react-router\";\nimport { EntityEditView } from \"../components/EntityEditView\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { EntityCollectionView } from \"../components\";\nimport { NotFoundPage } from \"@rebasepro/core\";\nimport { UnsavedChangesDialog } from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\nimport { getNavigationEntriesFromPath, NavigationViewCollectionInternal, NavigationViewEntityCustomInternal, NavigationViewInternal } from \"@rebasepro/common\";\nimport { toArray } from \"@rebasepro/utils\";\nimport { useCollectionRegistryController, useUrlController } from \"../index\";\nimport { useBreadcrumbsController } from \"../index\";\n\nexport function RebaseRoute() {\n\n const location = useLocation();\n const collectionRegistry = useCollectionRegistryController();\n const urlController = useUrlController();\n const breadcrumbs = useBreadcrumbsController();\n\n const hash = location.hash;\n const isSidePanel = hash.includes(\"#side\");\n const isNew = hash.includes(\"#new\") || hash.includes(\"#new_side\");\n const isCopy = hash.includes(\"#copy\");\n\n const pathname = location.pathname;\n const navigationPath = urlController.urlPathToDataPath(pathname);\n\n const navigationEntries = getNavigationEntriesFromPath({\n path: navigationPath,\n collections: collectionRegistry.collections ?? []\n });\n\n useEffect(() => {\n const lastEntry = navigationEntries[navigationEntries.length - 1];\n const isViewingCollection = lastEntry?.type === \"collection\";\n\n breadcrumbs.set({\n breadcrumbs: navigationEntries.map((entry, index) => {\n const isLastEntry = index === navigationEntries.length - 1;\n\n if (entry.type === \"entity\") {\n return ({\n title: String(entry.entityId),\n url: urlController.buildUrlCollectionPath(entry.path)\n // count: undefined (not applicable for entities)\n });\n } else if (entry.type === \"custom_view\") {\n return ({\n title: String(entry.view.name ?? entry.view.key),\n url: urlController.buildUrlCollectionPath(entry.path)\n // count: undefined (not applicable for custom views)\n });\n } else if (entry.type === \"collection\") {\n // Only show count badge (loading state) when viewing this collection directly\n // Don't show count for parent collections when viewing an entity\n const showCount = isLastEntry && isViewingCollection;\n return ({\n title: entry.collection.name,\n url: urlController.buildUrlCollectionPath(entry.path),\n id: entry.path,\n ...(showCount ? { count: null } : {}) // null = loading, undefined = no badge\n });\n } else {\n throw new Error(\"Unexpected navigation entry type\");\n }\n })\n });\n }, [navigationEntries.map(entry => entry.path).join(\",\")]);\n\n if (isNew) {\n return <EntityFullScreenRoute\n pathname={pathname}\n navigationEntries={navigationEntries}\n isNew={true}\n isCopy={false}\n />;\n }\n\n if (navigationEntries.length === 1 && navigationEntries[0].type === \"collection\") {\n let collection: EntityCollection<any> | undefined;\n collection = collectionRegistry.getCollection(navigationEntries[0].id);\n if (!collection)\n collection = collectionRegistry.getCollection(navigationEntries[0].slug);\n if (!collection) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter />;\n }\n return null;\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n parentCollectionIds={[]}\n path={collection.slug}\n updateUrl={true}\n {...collection}\n Actions={toArray(collection.Actions)} />\n }\n\n if (isSidePanel) {\n const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"collection\");\n if (lastCollectionEntry) {\n let collection: EntityCollection<any> | undefined;\n const firstEntry = navigationEntries[0] as NavigationViewCollectionInternal<any>;\n collection = collectionRegistry.getCollection(firstEntry.id);\n if (!collection)\n collection = collectionRegistry.getCollection(firstEntry.slug);\n if (!collection) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter />;\n }\n return null;\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n parentCollectionIds={[]}\n path={collection.slug}\n updateUrl={true}\n {...collection}\n Actions={toArray(collection.Actions)} />;\n }\n }\n\n return <EntityFullScreenRoute\n pathname={pathname}\n navigationEntries={navigationEntries}\n isNew={isNew}\n isCopy={isCopy}\n />;\n\n}\n\nfunction getSelectedTabFromUrl(isNew: boolean, lastCustomView: NavigationViewCollectionInternal<any> | NavigationViewEntityCustomInternal<any> | undefined) {\n if (isNew) {\n return undefined;\n } else if (lastCustomView) {\n if (lastCustomView.type === \"custom_view\") {\n return lastCustomView.view.key;\n } else if (lastCustomView.type === \"collection\") {\n return lastCustomView.id ?? lastCustomView.slug;\n }\n }\n return undefined;\n}\n\nfunction EntityFullScreenRoute({\n pathname,\n navigationEntries,\n isNew,\n isCopy\n}: {\n pathname: string;\n navigationEntries: NavigationViewInternal[],\n isNew: boolean,\n isCopy: boolean\n}) {\n\n const collectionRegistry = useCollectionRegistryController();\n const urlController = useUrlController();\n const navigate = useNavigate();\n\n const navigationPath = urlController.urlPathToDataPath(pathname);\n\n // is navigating away blocked\n const blocked = useRef(false);\n\n const lastEntityEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"entity\");\n const navigationEntriesAfterEntity = lastEntityEntry ? navigationEntries.slice(navigationEntries.indexOf(lastEntityEntry) + 1) : [];\n\n const lastCustomView = [...navigationEntriesAfterEntity].reverse().find(\n (entry) => entry.type === \"custom_view\" || entry.type === \"collection\"\n ) as NavigationViewCollectionInternal<any> | NavigationViewEntityCustomInternal<any> | undefined;\n\n const entityId = lastEntityEntry && \"entityId\" in lastEntityEntry ? lastEntityEntry.entityId : undefined;\n\n const urlTab = getSelectedTabFromUrl(isNew, lastCustomView);\n const [selectedTab, setSelectedTab] = useState<string | undefined>(urlTab);\n\n const parentCollectionIds = collectionRegistry.getParentCollectionIds(navigationPath);\n useEffect(() => {\n if (urlTab !== selectedTab) {\n setSelectedTab(urlTab);\n }\n }, [urlTab]);\n\n const basePath = !entityId || isNew\n ? pathname\n : pathname.substring(0, pathname.lastIndexOf(`/${entityId}`));\n\n const entityPath = basePath + `/${entityId}`;\n\n let blocker: Blocker | undefined = undefined;\n try {\n blocker = useBlocker(({\n nextLocation\n }) => {\n if (nextLocation.pathname.startsWith(entityPath))\n return false;\n return blocked.current;\n });\n } catch (e) {\n // console.warn(\"Blocker not available, navigation will not be blocked\");\n }\n\n const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"collection\");\n\n if (isNew && !lastCollectionEntry) {\n throw new Error(\"INTERNAL: No collection found in the navigation\");\n }\n\n if (!isNew && !lastEntityEntry) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter />;\n }\n return <NotFoundPage />;\n }\n\n const collection = isNew\n ? (lastCollectionEntry && \"collection\" in lastCollectionEntry ? lastCollectionEntry.collection : undefined)!\n : (lastEntityEntry && \"parentCollection\" in lastEntityEntry ? lastEntityEntry.parentCollection : undefined)!;\n const fullIdPath = isNew ? lastCollectionEntry!.slug : lastEntityEntry!.slug;\n const collectionPath = urlController.resolveDatabasePathsFrom(fullIdPath);\n return <>\n <EntityEditView\n key={collection.slug + \"_\" + (isNew ? \"new\" : (isCopy ? entityId + \"_copy\" : entityId))}\n entityId={isNew ? undefined : entityId}\n collection={collection}\n layout={\"full_screen\"}\n path={collectionPath}\n copy={isCopy}\n selectedTab={selectedTab ?? undefined}\n onValuesModified={(modified) => blocked.current = modified}\n onSaved={(params) => {\n const newSelectedTab = params.selectedTab;\n const newEntityId = params.entityId;\n if (newSelectedTab) {\n navigate(`${basePath}/${newEntityId}/${newSelectedTab}`, { replace: true });\n } else {\n navigate(`${basePath}/${newEntityId}`, { replace: true });\n }\n }}\n onTabChange={(params) => {\n setSelectedTab(params.selectedTab);\n if (isNew) {\n return;\n }\n const newSelectedTab = params.selectedTab;\n if (newSelectedTab) {\n navigate(`${basePath}/${entityId}/${newSelectedTab}`, { replace: true });\n } else {\n navigate(`${basePath}/${entityId}`, { replace: true });\n }\n }}\n parentCollectionIds={parentCollectionIds}\n />\n\n <UnsavedChangesDialog\n open={blocker?.state === \"blocked\"}\n handleOk={() => blocker?.proceed?.()}\n handleCancel={() => blocker?.reset?.()}\n body={\"You have unsaved changes in this entity.\"} />\n\n </>;\n}\n","import type { AppView } from \"@rebasepro/types\";\n;\nimport { useEffect } from \"react\";\nimport { useBreadcrumbsController } from \"../index\";\nimport { useUrlController } from \"../index\";\n\nexport function CustomViewRoute({ view }: {\n view: AppView\n}) {\n\n const breadcrumbs = useBreadcrumbsController();\n const urlController = useUrlController();\n\n useEffect(() => {\n breadcrumbs.set({\n breadcrumbs: [{\n title: view.name,\n url: urlController.buildAppUrlPath(view.slug)\n }]\n });\n }, [view.slug, urlController]);\n\n return view.view;\n}\n","import React, { useMemo } from \"react\";\nimport { Route } from \"react-router-dom\";\nimport {\n useRebaseRegistry,\n RebaseRoutes,\n UserSettingsView,\n UIReferenceView,\n NotFoundPage,\n useInternalUserManagementController,\n} from \"@rebasepro/core\";\n\nimport { ContentHomePage } from \"./HomePage/ContentHomePage\";\nimport { UsersView } from \"./admin/UsersView\";\nimport { RolesView } from \"./admin/RolesView\";\nimport { RebaseRoute } from \"../routes/RebaseRoute\";\nimport { CustomViewRoute } from \"../routes/CustomViewRoute\";\nimport { useNavigationStateController } from \"../hooks/navigation/contexts/NavigationStateContext\";\nimport { CollectionEditorDialogs } from \"./CollectionEditorDialogs\";\nimport { useEffect } from \"react\";\nimport { useTranslation } from \"@rebasepro/core\";\nimport { useBreadcrumbsController } from \"../index\";\n\nfunction SettingsView() {\n const { t } = useTranslation();\n const breadcrumbs = useBreadcrumbsController();\n useEffect(() => {\n breadcrumbs.set({\n breadcrumbs: [{ title: t(\"project_settings\"), url: \"/settings\" }]\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return <UserSettingsView />;\n}\n\nexport interface RebaseRouteDefsProps {\n /** User-provided custom routes to include. */\n children?: React.ReactNode;\n /**\n * Wrap function — receives the route tree and lets you wrap it in a layout.\n * If provided, the routes are rendered inside this wrapper.\n * If not provided, routes are rendered directly inside <RebaseRoutes>.\n */\n layout?: React.ReactElement;\n}\n\n/**\n * Route definitions for the CMS.\n *\n * Defines all standard routes: home, studio home, collection view,\n * settings, users, roles, debug, custom views, and a catch-all 404.\n *\n * **Independently usable**: Use this when you want Rebase routes\n * inside your own layout/navigation setup.\n *\n * @example\n * ```tsx\n * <RebaseNavigation>\n * <RebaseRouteDefs layout={<MyCustomLayout />}>\n * <Route path=\"/my-custom\" element={<MyView />} />\n * </RebaseRouteDefs>\n * </RebaseNavigation>\n * ```\n */\nexport function RebaseRouteDefs({ children, layout }: RebaseRouteDefsProps) {\n const registry = useRebaseRegistry();\n const userManagement = useInternalUserManagementController();\n const navigationStateController = useNavigationStateController();\n\n const cmsHomePage = registry.cmsConfig?.homePage ?? <ContentHomePage />;\n const studioHomePage = registry.studioConfig?.homePage;\n\n const combinedViews = useMemo(() => [\n ...(navigationStateController.views ?? []),\n ...(navigationStateController.adminViews ?? [])\n ], [navigationStateController.views, navigationStateController.adminViews]);\n\n const routeContents = (\n <>\n {/* Core CMS Routes */}\n <Route path={\"/\"} element={cmsHomePage} />\n {registry.studioConfig && (\n <Route path={\"/s\"} element={studioHomePage} />\n )}\n\n <Route path={\"/c/*\"} element={<RebaseRoute />} />\n <Route path={\"/settings\"} element={<SettingsView />} />\n {userManagement && <Route path={\"/roles\"} element={<RolesView userManagement={userManagement} />} />}\n {userManagement && <Route path={\"/users\"} element={<UsersView userManagement={userManagement} />} />}\n\n {/* Hidden debug route */}\n <Route path={\"/debug/ui\"} element={<UIReferenceView />} />\n\n {/* Custom Registered Views */}\n {combinedViews.map(view => {\n const slugs = Array.isArray(view.slug) ? view.slug : [view.slug];\n return slugs.flatMap(slug => {\n const routes = [\n <Route key={slug} path={slug} element={<CustomViewRoute view={view} />} />\n ];\n if (view.nestedRoutes) {\n routes.push(\n <Route key={slug + \"/*\"} path={slug + \"/*\"} element={<CustomViewRoute view={view} />} />\n );\n }\n return routes;\n });\n })}\n\n {/* User Provided Custom Routes */}\n {children}\n\n <Route path={\"*\"} element={<NotFoundPage />} />\n </>\n );\n\n return (\n <>\n <RebaseRoutes>\n {layout\n ? <Route element={layout}>{routeContents}</Route>\n : <Route element={<>{routeContents}</>}>{routeContents}</Route>\n }\n </RebaseRoutes>\n <CollectionEditorDialogs />\n </>\n );\n}\n","import React, { useMemo } from \"react\";\nimport {\n useRebaseRegistry,\n} from \"@rebasepro/core\";\n\nimport { RebaseAuthGate } from \"./RebaseAuthGate\";\nimport { RebaseNavigation } from \"./RebaseNavigation\";\nimport { RebaseLayout } from \"./RebaseLayout\";\nimport { RebaseRouteDefs } from \"./RebaseRouteDefs\";\n\nexport interface RebaseShellProps {\n title?: string;\n appBar?: React.ReactNode;\n drawer?: React.ReactNode;\n autoOpenDrawer?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Convenience component that composes all four CMS layers:\n *\n * ```\n * <RebaseAuthGate>\n * <RebaseNavigation>\n * <RebaseRouteDefs layout={<RebaseLayout>}>\n * {children}\n * </RebaseRouteDefs>\n * </RebaseNavigation>\n * </RebaseAuthGate>\n * ```\n *\n * Each layer is independently usable — see their individual docs.\n * RebaseShell is sugar that composes them all with sensible defaults.\n */\nexport function RebaseShell(props: RebaseShellProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n children\n } = props;\n\n const registry = useRebaseRegistry();\n\n // Compute devViews for the layout's AdminModeSyncer\n const devViews = useMemo(() => {\n return registry.studioConfig?.devViews ?? [];\n }, [registry.studioConfig?.devViews]);\n\n return (\n <RebaseAuthGate>\n <RebaseNavigation>\n <RebaseRouteDefs\n layout={\n <RebaseLayout\n title={title}\n appBar={appBar}\n drawer={drawer}\n autoOpenDrawer={autoOpenDrawer}\n devViews={devViews}\n />\n }\n >\n {children}\n </RebaseRouteDefs>\n </RebaseNavigation>\n </RebaseAuthGate>\n );\n}\n","import type { ArrayProperty, Property } from \"@rebasepro/types\";\nimport React from \"react\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\nimport type { PropertyPreviewProps } from \"../../types/components/PropertyPreviewProps\";\nimport { PropertyPreview } from \"../PropertyPreview\";\n\n/**\n * @group Preview components\n */\nexport function ArrayOfMapsPreview({\n propertyKey,\n value,\n property,\n size,\n // entity\n}: PropertyPreviewProps<ArrayProperty>) {\n\n if (Array.isArray(property?.of)) {\n throw Error(\"Using array properties instead of single one in `of` in ArrayProperty\");\n }\n\n if (property?.type !== \"array\" || !property.of || property.of.type !== \"map\")\n throw Error(\"Picked wrong preview component ArrayOfMapsPreview\");\n\n const mapProperty = property.of;\n const properties = mapProperty.properties;\n if (!properties) {\n throw Error(`You need to specify a 'properties' prop (or specify a custom field) in your map property ${propertyKey}`);\n }\n const values = value;\n const previewProperties: string[] | undefined = mapProperty.previewProperties;\n\n if (!values) return null;\n\n let mapProperties = previewProperties;\n if (!mapProperties || !mapProperties.length) {\n mapProperties = Object.keys(properties);\n if (size)\n mapProperties = mapProperties.slice(0, 3);\n }\n\n return (\n <div className=\"table-auto text-xs\">\n <div>\n {values &&\n values.map((v: any, index: number) => {\n return (\n <div key={`table_${v}_${index}`}\n className=\"border-b last:border-b-0 py-2\">\n {mapProperties && mapProperties.map(\n (key) => (\n <div\n key={`table-cell-${key as string}`}\n className=\"table-cell\"\n >\n <ErrorBoundary>\n <PropertyPreview\n propertyKey={key as string}\n value={(v)[key]}\n property={properties[key as string] as Property}\n // entity={entity}\n size={\"small\"} />\n </ErrorBoundary>\n </div>\n )\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useCollectionRegistryController } from \"../_cms_internals\";\nimport { ErrorView, useTranslation } from \"@rebasepro/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@rebasepro/ui\";\nimport { prettifyIdentifier } from \"@rebasepro/utils\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const registry = useCollectionRegistryController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = registry.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n const { t } = useTranslation();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={t(\"studio_missing_reference_error\", { path })} />\n <Button className={\"mx-2\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: prettifyIdentifier(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n {t(\"studio_missing_reference_create\")}\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["resolveNavigationFrom","path","context","data","navigationStateController","collectionRegistryController","Error","navigationEntries","getNavigationEntriesFromPath","collections","resultPromises","map","entry","type","Promise","resolve","collection","getCollection","slug","findById","entityId","then","entity","undefined","filter","v","Boolean","all","useResolvedNavigationFrom","t0","$","_c","useCMSContext","setData","useState","dataLoading","setDataLoading","dataLoadingError","setDataLoadingError","t1","catch","e","finally","t2","useEffect","t3","Symbol","for","BasicExportAction","properties","propertiesOrder","dateRef","React","useRef","Date","flattenArrays","setFlattenArrays","exportType","setExportType","dateExportType","setDateExportType","open","setOpen","handleClickOpen","useCallback","handleClose","onOkClicked","downloadEntitiesExport","additionalData","name","additionalHeaders","cls","current","getTime","toISOString","ReferenceWidget","multiselect","disabled","value","onReferenceSelected","onMultipleReferenceSelected","previewProperties","forceFilter","size","className","includeId","includeEntityLink","useCollectionRegistryController","useMemo","onSingleEntitySelected","reference","getReferenceFrom","onMultipleEntitiesSelected","entities","references","referenceDialogController","useEntitySelectionDialog","stopPropagation","child","onEntryClick","Array","isArray","ref","index","isEntityReference","AdminModeSyncer","devViews","location","useLocation","urlController","useUrlController","adminModeController","useAdminModeController","currentModeRef","mode","setModeRef","setMode","pathname","isContentRoute","isUrlCollectionPath","basePath","studioHomePath","isStudioRoute","startsWith","some","view","viewPath","buildAppUrlPath","NavigationChip","navigate","useNavigate","userConfigurationPersistence","useUserConfigurationPersistence","favouritePaths","includes","favourite","preventDefault","setFavouritePaths","p","onIconClick","url","t4","t5","t6","FavouritesView","useNavigationStateController","T0","topLevelNavigation","find","favouriteCollections","Collapse","length","_temp","entry_0","NavigationGroup","children","group","minimised","isPreview","isPotentialCardDropTarget","onEditGroup","dndDisabled","collapsed","onToggleCollapsed","t","useTranslation","isHovered","setIsHovered","currentGroupName","showCaret","t7","t8","TitleContent","t9","t10","t11","t12","minHeight","t13","t14","NavigationCardBinding","description","onClick","shrink","collectionIcon","useRebaseContext","actionsArray","pluginCardActions","useSlot","isTableMissing","unshift","actions","setRecentlyVisitedPaths","recentlyVisitedPaths","p_0","animateLayoutChanges","args","defaultAnimateLayoutChanges","wasDragging","dropAnimationConfig","cloneSerializableNavigationEntry","clonedEntry","id","cloneItemsForDnd","items","g","entries","SortableNavigationCard","setNodeRef","listeners","attributes","transform","transition","isDragging","useSortable","CSS","Transform","toString","opacity","style","NavigationGroupDroppable","itemIds","useDroppable","rectSortingStrategy","SortableNavigationGroup","groupName","useHomePageDnd","setItems","onCardMovedBetweenGroups","onGroupMoved","onNewGroupDrop","onPersist","dndItems","setDndItems","activeId","setActiveId","activeIsGroup","setActiveIsGroup","currentDraggingGroupId","setCurrentDraggingGroupId","dndKitActiveNode","setDndKitActiveNode","isDraggingCardOnly","setIsDraggingCardOnly","dialogOpenForGroup","setDialogOpenForGroup","isHoveringNewGroupDropZone","setIsHoveringNewGroupDropZone","pendingNewGroupName","setPendingNewGroupName","stateBeforeNewGroup","setStateBeforeNewGroup","preDragItemsRef","interimItemsRef","mouseSensor","useSensor","MouseSensor","activationConstraint","distance","touchSensor","TouchSensor","delay","tolerance","keyboardSensor","KeyboardSensor","sensors","useSensors","dndContainers","findDndContainer","lastOverId","recentlyMovedToNewContainer","collisionDetection","groups","droppableContainers","c","closestCenter","pointer","pointerWithin","zone","container","itemsIn","closest","closestCorners","first","getFirstCollision","rects","rectIntersection","zoneRect","overId","overIsContainer","closestItem","handleDragStart","active","isGroup","handleDragOver","over","activeIdNow","overIdNow","activeCont","overCont","newState","srcIdx","findIndex","tgtIdx","src","tgt","idxInSrc","moved","splice","push","overIdx","handleDragEnd","resetDragState","from","to","arrayMove","findContainerInState","state","sourceState","dragged","tentative","counter","grpIdx","oldIdx","newIdx","reordered","finalState","finalOverId","cleanOverCont","console","error","handleDragCancel","handleRenameGroup","oldName","newName","idx","updated","handleDialogClose","activeItemForOverlay","flatMap","activeGroupData","onDragStart","onDragOver","onDragEnd","onDragCancel","dropAnimation","draggingGroupId","containers","NewGroupDropZone","setIsHovering","isOver","isVisible","setIsVisible","tp","useDndMonitor","RenameGroupDialog","initialName","existingGroupNames","onClose","onRename","setName","setError","inputRef","setTimeout","focus","select","event","target","trim","handleNameChange","trimmedName","handleSave","event_0","key","trimmedName_0","currentError","handleKeyDown","display","t15","t16","t17","t18","t19","t20","DEFAULT_GROUP_NAME","ADMIN_GROUP_NAME","ContentHomePage","additionalActions","additionalChildrenStart","additionalChildrenEnd","sections","hiddenGroups","customizationController","useCustomizationController","resolvedSlots","breadcrumbs","useBreadcrumbsController","set","allowDragAndDrop","rawNavigationEntries","groupOrderFromNavController","onNavigationEntriesUpdate","fuse","filteredUrls","setFilteredUrls","performingSearch","filteredNavigationEntries","Fuse","keys","updateSearch","results","search","x","item","adminGroupData","setAdminGroupData","isDndDirtyRef","dndDirtyTimeoutRef","processedGroups","entriesByGroup","forEach","hasPluginAdditionalCards","s","slot","allProcessed","ordered","Set","filteredGroupOrder","Object","shouldInclude","admin","updateItems","updater","persistNavigationGroups","latest","clearTimeout","draggable","groupNames","isGroupCollapsed","toggleGroupCollapsed","useCollapsedGroups","analyticsController","onAnalyticsEvent","card","containerRef","direction","useRestoreScroll","dndModifiers","restrictToVerticalAxis","restrictToWindowEdges","sectionProps","additionalPluginChildrenStart","additionalPluginChildrenEnd","additionalPluginActions","homeCardContributions","sort","a","b","order","top","droppable","strategy","MeasuringStrategy","Always","frequency","verticalListSortingStrategy","groupData","groupIndex","groupKey","entriesInGroup","homeCardsProps","additionalCards","i","props","toLowerCase","JSON","stringify","padding","margin","section","title","n","RebaseCMS","homePage","entityViews","entityActions","plugins","collectionEditor","dispatch","useRebaseRegistryDispatch","registerCMS","unregisterCMS","useLayoutEffect","RebaseAuthGate","registry","useRebaseRegistry","authController","useAuthController","initialLoading","user","authConfig","loginView","ActiveLoginView","RebaseLayout","appBar","drawer","autoOpenDrawer","ActiveAppBar","ActiveDrawer","RebaseRoute","collectionRegistry","hash","isSidePanel","isNew","isCopy","navigationPath","urlPathToDataPath","lastEntry","isViewingCollection","isLastEntry","String","buildUrlCollectionPath","showCount","count","join","bb0","initialised","toArray","Actions","lastCollectionEntry","reverse","_temp2","bb1","firstEntry","entry_1","getSelectedTabFromUrl","lastCustomView","EntityFullScreenRoute","blocked","lastEntityEntry","navigationEntriesAfterEntity","slice","indexOf","urlTab","selectedTab","setSelectedTab","parentCollectionIds","getParentCollectionIds","substring","lastIndexOf","entityPath","blocker","useBlocker","nextLocation","parentCollection","fullIdPath","collectionPath","resolveDatabasePathsFrom","modified","params","newSelectedTab","newEntityId","replace","proceed","reset","CustomViewRoute","SettingsView","RebaseRouteDefs","layout","userManagement","useInternalUserManagementController","cmsHomePage","cmsConfig","studioHomePage","studioConfig","combinedViews","views","adminViews","routeContents","slugs","routes","nestedRoutes","RebaseShell","ArrayOfMapsPreview","propertyKey","property","of","mapProperty","values","mapProperties","MissingReferenceWidget","pathProp","getLastSegment","useCollectionEditorController","ErrorView","createCollection","initialValues","prettifyIdentifier","redirect","sourceClick","segments","split"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DO,SAASA,sBAA4E;AAAA,EACxFC;AAAAA,EACAC;AAIJ,GAA0C;AAEtC,QAAMC,OAAOD,QAAQC;AACrB,QAAM;AAAA,IAAEC;AAAAA,IAA2BC;AAAAA,EAAAA,IAAiCH;AAEpE,MAAI,CAACE,6BAA6B,CAACC,8BAA8B;AAC7D,UAAMC,MAAM,iFAAiF;AAAA,EACjG;AAEA,QAAMC,oBAAoBC,6BAA6B;AAAA,IACnDP;AAAAA,IACAQ,aAAaJ,6BAA6BI,eAAe,CAAA;AAAA,EAAA,CAC5D;AAED,QAAMC,iBAA0DH,kBAC3DI,IAAKC,CAAAA,UAAU;AACZ,QAAIA,MAAMC,SAAS,cAAc;AAC7B,aAAOC,QAAQC,QAAQH,KAAK;AAAA,IAChC,WAAWA,MAAMC,SAAS,UAAU;AAChC,YAAMG,aAAaX,6BAA6BY,cAAcL,MAAMM,IAAI;AACxE,UAAI,CAACF,YAAY;AACb,cAAMV,MAAM,oEAAoEM,MAAMM,IAAI,EAAE;AAAA,MAChG;AACA,aAAOf,KAAKa,WAAWJ,MAAMM,IAAI,EAAEC,SAASP,MAAMQ,QAAQ,EACrDC,KAAMC,CAAAA,WAAW;AACd,YAAI,CAACA,OAAQ,QAAOC;AACpB,eAAO;AAAA,UAAE,GAAGX;AAAAA,UAAOU;AAAAA,QAAAA;AAAAA,MACvB,CAAC;AAAA,IACT,WAAWV,MAAMC,SAAS,eAAe;AACrC,aAAOC,QAAQC,QAAQH,KAAK;AAAA,IAChC,OAAO;AACH,YAAMN,MAAM,yCAAyC;AAAA,IACzD;AAAA,EACJ,CAAC,EACAkB,OAAOC,CAAAA,OAAKC,QAAQD,EAAC,CAAC;AAE3B,SAAOX,QAAQa,IAAIjB,cAAc;AACrC;AAwBO,SAAAkB,0BAAAC,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AACH,QAAA;AAAA,IAAA9B;AAAAA,EAAAA,IAAA4B;AAIA,QAAA3B,UAAgB8B,cAAAA;AAChB,QAAA;AAAA,IAAA5B;AAAAA,IAAAC;AAAAA,EAAAA,IAAoEH;AAEpE,QAAA,CAAAC,MAAA8B,OAAA,IAAwBC,SAAAA;AACxB,QAAA,CAAAC,aAAAC,cAAA,IAAsCF,cAAuB;AAC7D,QAAA,CAAAG,kBAAAC,mBAAA,IAAgDJ,SAAAA;AAA8B,MAAAK;AAAA,MAAAT,GAAA,CAAA,MAAAzB,gCAAAyB,GAAA,CAAA,MAAA5B,WAAA4B,GAAA,CAAA,MAAA1B,6BAAA0B,UAAA7B,MAAA;AAEpEsC,SAAAA,MAAA;AAAA,UACFnC,6BAA6BC,8BAA4B;AACzD+B,2BAAmB;AACnBE,4BAAmBf,MAAU;AAC7BvB,8BAAA;AAAA,UAAAC;AAAAA,UAAAC;AAAAA,QAAAA,CAAgD,EAACmB,KACvCY,OAAO,EAACO,MAAAC,CAAAA,MACAH,oBAAoBG,CAAC,CAAC,EAACC,QAAA,MACtBN,eAAc,KAAM,CAAC;AAAA,MAAC;AAAA,IAAA;AAGhDN,IAAAA,QAAAzB;AAAAyB,IAAAA,QAAA5B;AAAA4B,IAAAA,QAAA1B;AAAA0B,IAAAA,QAAA7B;AAAA6B,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAa;AAAA,MAAAb,GAAA,CAAA,MAAA5B,WAAA4B,UAAA7B,MAAA;AAAE0C,SAAA,CAAC1C,MAAMC,OAAO;AAAC4B,IAAAA,QAAA5B;AAAA4B,IAAAA,QAAA7B;AAAA6B,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAVlBc,YAAUL,IAUPI,EAAe;AAAC,MAAA,CAEdvC,2BAAyB;AAAA,QAAAyC;AAAA,QAAAf,GAAA,CAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AACnBF,YAAA;AAAA,QAAAV,aAAA;AAAA,MAAA;AAAqBL,MAAAA,QAAAe;AAAAA,IAAA,OAAA;AAAAA,YAAAf,GAAA,CAAA;AAAA,IAAA;AAAA,WAArBe;AAAAA,EAAqB;AAAA,MAAAA;AAAA,MAAAf,GAAA,CAAA,MAAA3B,QAAA2B,WAAAK,eAAAL,GAAA,EAAA,MAAAO,kBAAA;AAGzBQ,SAAA;AAAA,MAAA1C;AAAAA,MAAAgC;AAAAA,MAAAE;AAAAA,IAAAA;AAAuCP,IAAAA,QAAA3B;AAAA2B,IAAAA,SAAAK;AAAAL,IAAAA,SAAAO;AAAAP,IAAAA,SAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,EAAA;AAAA,EAAA;AAAA,SAAvCe;AAAuC;AClI3C,SAASG,kBAAkB;AAAA,EAC9B7C;AAAAA,EACA8C;AAAAA,EACAC;AACoB,GAAG;AAEvB,QAAMC,UAAUC,eAAMC,OAAa,oBAAIC,MAAM;AAC7C,QAAM,CAACC,eAAeC,gBAAgB,IAAIJ,eAAMlB,SAAkB,IAAI;AACtE,QAAM,CAACuB,YAAYC,aAAa,IAAIN,eAAMlB,SAAyB,KAAK;AACxE,QAAM,CAACyB,gBAAgBC,iBAAiB,IAAIR,eAAMlB,SAAiC,QAAQ;AAE3F,QAAM,CAAC2B,MAAMC,OAAO,IAAIV,eAAMlB,SAAS,KAAK;AAE5C,QAAM6B,kBAAkBC,YAAY,MAAM;AACtCF,YAAQ,IAAI;AAAA,EAChB,GAAG,CAACA,OAAO,CAAC;AAEZ,QAAMG,cAAcD,YAAY,MAAM;AAClCF,YAAQ,KAAK;AAAA,EACjB,GAAG,CAACA,OAAO,CAAC;AAEZ,QAAMI,cAAcF,YAAY,MAAM;AAClCG,2BAAuB;AAAA,MACnBhE;AAAAA,MACAiE,gBAAgB,CAAA;AAAA,MAChBnB;AAAAA,MACAC;AAAAA,MACAmB,MAAM;AAAA,MACNd;AAAAA,MACAe,mBAAmB,CAAA;AAAA,MACnBb;AAAAA,MACAE;AAAAA,IAAAA,CACH;AACDM,gBAAAA;AAAAA,EACJ,GAAG,CAAA,CAAE;AAEL,SAAO,qBAAA,UAAA,EAEH,UAAA;AAAA,IAAA,oBAAC,WAAQ,OAAO,UACZ,SAAS,MACT,UAAA,oBAAC,cACG,MAAM,SACN,OAAO,WAAW,SAASF,iBAC3B,UAAA,oBAAC,gBACG,MAAM,SAAQ,GACtB,EAAA,CACJ;AAAA,yBAEC,QAAA,EACG,MACA,cAAcD,SACd,UAAU,MAEV,UAAA;AAAA,MAAA,oBAAC,aAAA,EAAY,SAAS,MAAM,UAAA,eAAW;AAAA,MAEvC,qBAAC,eAAA,EAAc,WAAW,4BAEtB,UAAA;AAAA,QAAA,oBAAC,SAAI,UAAA,kDAAA,CAA+C;AAAA,QAEpD,qBAAC,OAAA,EAAI,WAAW,uBACZ,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAW,qBACZ,UAAA;AAAA,YAAA,qBAAC,OAAA,EAAI,WAAU,qBACX,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAM,IAAG,aAAY,MAAK,SAAQ,OAAM,OAAM,MAAK,cAChD,SAASL,eAAe,OACxB,UAAU,MAAMC,cAAc,KAAK,GACnC,WAAWa,IAAI,mFAAmF,GAAE;AAAA,kCACvG,SAAA,EAAM,SAAQ,aACX,WAAU,yEAAwE,UAAA,MAAA,CAAG;AAAA,YAAA,GAC7F;AAAA,YACA,qBAAC,OAAA,EAAI,WAAU,qBACX,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAM,IAAG,cAAa,MAAK,SAAQ,OAAM,QAAO,MAAK,cAClD,SAASd,eAAe,QACxB,UAAU,MAAMC,cAAc,MAAM,GACpC,WAAWa,IAAI,mFAAmF,GAAE;AAAA,kCACvG,SAAA,EAAM,SAAQ,cACX,WAAU,yEAAwE,UAAA,OAAA,CAAI;AAAA,YAAA,EAAA,CAC9F;AAAA,UAAA,GACJ;AAAA,UAEA,qBAAC,OAAA,EAAI,WAAW,qBACZ,UAAA;AAAA,YAAA,qBAAC,OAAA,EAAI,WAAU,qBACX,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAM,IAAG,mBAAkB,MAAK,SAAQ,OAAM,aAAY,MAAK,kBAC5D,SAASZ,mBAAmB,aAC5B,UAAU,MAAMC,kBAAkB,WAAW,GAC7C,WAAWW,IAAI,mFAAmF,GAAE;AAAA,cACxG,qBAAC,SAAA,EAAM,SAAQ,mBACX,WAAU,yEAAwE,UAAA;AAAA,gBAAA;AAAA,gBAErEpB,QAAQqB,QAAQC,QAAAA;AAAAA,gBAAU;AAAA,cAAA,EAAA,CAAC;AAAA,YAAA,GAChD;AAAA,YACA,qBAAC,OAAA,EAAI,WAAU,qBACX,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAM,IAAG,gBAAe,MAAK,SAAQ,OAAM,UAAS,MAAK,kBACtD,SAASd,mBAAmB,UAC5B,UAAU,MAAMC,kBAAkB,QAAQ,GAC1C,WAAWW,IAAI,mFAAmF,GAAE;AAAA,cACxG,qBAAC,SAAA,EAAM,SAAQ,gBACX,WAAU,yEAAwE,UAAA;AAAA,gBAAA;AAAA,gBAExEpB,QAAQqB,QAAQE,YAAAA;AAAAA,gBAAc;AAAA,cAAA,EAAA,CAAC;AAAA,YAAA,EAAA,CACjD;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,GACJ;AAAA,QAEA,oBAAC,wBAAA,EACG,MAAM,SACN,UAAUjB,eAAe,OACzB,OAAOF,eACP,eAAeC,kBACf,OAAO,iBAAA,CAAiB;AAAA,MAAA,GAEhC;AAAA,2BAEC,eAAA,EAEG,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAO,SAASS,aACb,SAAS,QAAO,UAAA,UAEpB;AAAA,QAEA,oBAAC,QAAA,EAAO,SAASC,aAAY,UAAA,WAAA,CAE7B;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,GAEJ;AACJ;AChHO,SAASS,gBAAmD;AAAA,EAC/DN;AAAAA,EACAO,cAAc;AAAA,EACd3E;AAAAA,EACA4E;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AACqB,GAAG;AAExB,QAAMjF,+BAA+BkF,gCAAAA;AAErC,QAAMvE,aAA2CwE,QAAQ,MAAM;AAC3D,WAAOnF,6BAA6BY,cAAchB,IAAI;AAAA,EAC1D,GAAG,CAACA,MAAMI,6BAA6BY,aAAa,CAAC;AAErD,QAAMwE,yBAAyBzB,YAAY,CAAC1C,WAA6B;AACrE,QAAIuD,SACA;AACJ,QAAIE,qBAAqB;AACrB,YAAMW,YAAYpE,SAASqE,iBAAiBrE,MAAM,IAAI;AACtDyD,4BAAsB;AAAA,QAClBW;AAAAA,QACApE;AAAAA,MAAAA,CACH;AAAA,IACL;AAAA,EACJ,GAAG,CAACuD,UAAUE,mBAAmB,CAAC;AAElC,QAAMa,6BAA6B5B,YAAY,CAAC6B,aAA0B;AACtE,QAAIhB,SACA;AACJ,QAAIG,6BAA6B;AAC7B,YAAMc,aAAaD,WAAWA,SAASlF,IAAI8B,OAAKkD,iBAAiBlD,CAAC,CAAC,IAAI;AACvEuC,kCAA4B;AAAA,QACxBc;AAAAA,QACAD;AAAAA,MAAAA,CACH;AAAA,IACL;AAAA,EACJ,GAAG,CAAChB,UAAUE,mBAAmB,CAAC;AAElC,QAAMgB,4BAA4BC,yBAAyB;AAAA,IACvDpB;AAAAA,IACA3E;AAAAA,IACAe;AAAAA,IACAyE;AAAAA,IACAG;AAAAA,IACAV;AAAAA,EAAAA,CAEJ;AAEmBlB,cAAY,CAACvB,QAAwB;AACpDA,QAAEwD,gBAAAA;AACF,QAAIrB,aAAa;AACbgB,iCAA2B,CAAA,CAAE;AAAA,IACjC,OAAO;AACHH,6BAAuB,IAAI;AAAA,IAC/B;AAAA,EACJ,GAAG,CAACV,mBAAmB,CAAC;AAExB,MAAImB;AAEJ,QAAMC,eAAeA,MAAM;AACvB,QAAItB,SACA;AACJkB,8BAA0BlC,KAAAA;AAAAA,EAC9B;AAEA,MAAIuC,MAAMC,QAAQvB,KAAK,GAAG;AACtBoB,YAAQ,oBAAC,SAAI,WAAW,uBACnBpB,gBAAMnE,IAAI,CAAC2F,KAAKC,UAAU;AACvB,aAAO,oBAAC,kBAAA,EAEJ,SAASJ,cACT,WAAWG,KACX,UACA,mBACA,MACA,WACA,kBAAA,GAPK,qBAAqBC,KAAK,EAOM;AAAA,IAC7C,CAAC,EAAA,CACL;AAAA,EACJ,WAAWzB,OAAO0B,qBAAqB1B,OAAO0B,qBAAqB;AAC/DN,YAAQ,oBAAC,kBAAA,EACL,WAAWpB,OACX,SAASqB,cACT,UACA,mBACA,MACA,WACA,kBAAA,CAAqC;AAAA,EAE7C;AACA,SAAO,qBAAC,OAAA,EAAI,WAAW5B,IAAI,uBACvB,gCACA,0EACAM,WAAW,kBAAkB,uBAC7B,6FACAO,SACJ,GAEKc,UAAAA;AAAAA,IAAAA;AAAAA,IACA,CAACpB,SAAS,oBAAC,OAAA,EAAI,WAAU,4BACtB,UAAA,qBAAC,QAAA,EAAO,UACJ,SAASqB,cAAa,UAAA;AAAA,MAAA;AAAA,MAChB9B;AAAAA,IAAAA,EAAAA,CACV,EAAA,CACJ;AAAA,EAAA,GAEJ;AACJ;ACpIO,SAASoC,gBAAgB;AAAA,EAAEC;AAA+B,GAAG;AAChE,QAAMC,WAAWC,YAAAA;AACjB,QAAMC,gBAAgBC,iBAAAA;AACtB,QAAMC,sBAAsBC,uBAAAA;AAG5B,QAAMC,iBAAiB7D,eAAMC,OAAO0D,oBAAoBG,IAAI;AAC5DD,iBAAezC,UAAUuC,oBAAoBG;AAG7C,QAAMC,aAAa/D,eAAMC,OAAO0D,oBAAoBK,OAAO;AAC3DD,aAAW3C,UAAUuC,oBAAoBK;AAEzCxE,YAAU,MAAM;AACZ,UAAM3C,OAAO0G,SAASU;AACtB,UAAMC,iBAAiBT,cAAcU,oBAAoBtH,IAAI,KAAKA,SAAS4G,cAAcW;AAGzF,UAAMC,iBAAiBZ,cAAcW,aAAa,MAAM,OAAO,GAAGX,cAAcW,QAAQ;AACxF,UAAME,gBAAgBzH,SAASwH,kBAAkBxH,KAAK0H,WAAWF,iBAAiB,GAAG,KAAKf,UAAUkB,KAAKC,CAAAA,SAAQ;AAC7G,YAAMC,WAAWjB,cAAckB,gBAAgBF,KAAK3G,IAAI;AACxD,aAAOjB,KAAK0H,WAAW,GAAGG,QAAQ,GAAG,KAAK7H,SAAS6H;AAAAA,IACvD,CAAC;AAED,QAAIJ,iBAAiBT,eAAezC,YAAY,UAAU;AACtD2C,iBAAW3C,QAAQ,QAAQ;AAAA,IAC/B,WAAW8C,kBAAkBL,eAAezC,YAAY,WAAW;AAC/D2C,iBAAW3C,QAAQ,SAAS;AAAA,IAChC;AAAA,EACJ,GAAG,CAACmC,SAASU,UAAUR,eAAeH,QAAQ,CAAC;AAE/C,SAAO;AACX;AC/CA,SAAAsB,eAAAnG,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAAwB,QAAA;AAAA,IAAAnB;AAAAA,EAAAA,IAAAiB;AAEpB,QAAAoG,WAAiBC,YAAAA;AACjB,QAAAC,+BAAqCC,gCAAAA;AAAkC,MAAA,CAElED,8BAA4B;AAAA,WAAA;AAAA,EAAA;AAAA,MAAA5F;AAAA,MAAAT,GAAA,CAAA,MAAAlB,MAAAM,QAAAY,GAAA,CAAA,MAAAqG,6BAAAE,gBAAA;AAGf9F,SAAA4F,6BAA4BE,eAAAC,SAAyB1H,MAAKM,IAAK;AAACY,IAAAA,GAAA,CAAA,IAAAlB,MAAAM;AAAAY,IAAAA,GAAA,CAAA,IAAAqG,6BAAAE;AAAAvG,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAlF,QAAAyG,YAAkBhG;AAAiE,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAAlB,MAAAM,QAAAY,GAAA,CAAA,MAAAyG,aAAAzG,GAAA,CAAA,MAAAqG,8BAAA;AAC/DxF,SAAAF,CAAAA,MAAA;AAChBA,QAAC+F,eAAAA;AACD/F,QAACwD,gBAAAA;AAAkB,UACfsC,WAAS;AACTJ,qCAA4BM,kBACxBN,6BAA4BE,eAAA7G,OAAAkH,QAA4BA,OAAM9H,MAAKM,IAAK,CAC5E;AAAA,MAAC,OAAA;AAEDiH,qCAA4BM,kBAAA,CAAA,GACpBN,6BAA4BE,gBAAiBzH,MAAKM,IAAA,CAC1D;AAAA,MAAC;AAAA,IAAA;AAERY,IAAAA,GAAA,CAAA,IAAAlB,MAAAM;AAAAY,IAAAA,QAAAyG;AAAAzG,IAAAA,QAAAqG;AAAArG,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAZD,QAAA6G,cAAoBhG;AAYlB,MAAAE;AAAA,MAAAf,UAAAlB,MAAAgI,OAAA9G,UAAAmG,UAAA;AAGWpF,SAAAA,MAAMoF,SAASrH,MAAKgI,GAAI;AAAC9G,IAAAA,GAAA,CAAA,IAAAlB,MAAAgI;AAAA9G,IAAAA,QAAAmG;AAAAnG,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAInB,QAAA+G,KAAAN,YAAY,mBAAmB;AAAwC,MAAAO;AAAA,MAAAhH,GAAA,EAAA,MAAA6G,eAAA7G,WAAA+G,IAAA;AAHhFC,6BAAC,UAAA,EACMH,SAAAA,aACH,MAAA,IACK,WAAAE,IAAuE;AAAI/G,IAAAA,SAAA6G;AAAA7G,IAAAA,SAAA+G;AAAA/G,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,EAAA,MAAAlB,MAAAyD,QAAAvC,GAAA,EAAA,MAAAlB,MAAAM,QAAAY,GAAA,EAAA,MAAAe,MAAAf,WAAAgH,IAAA;AANvFC,SAAA,oBAAC,QAEK,SAAAlG,IACH,MAAAiG,IAKLlI,UAAAA,MAAKyD,KAAAA,GAPDzD,MAAKM,IAQd;AAAOY,IAAAA,GAAA,EAAA,IAAAlB,MAAAyD;AAAAvC,IAAAA,GAAA,EAAA,IAAAlB,MAAAM;AAAAY,IAAAA,SAAAe;AAAAf,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,SATAiH;AASA;AAGJ,SAAAC,eAAAnH,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAEH,QAAA3B,4BAAkC6I,6BAAAA;AAClC,QAAAd,+BAAqCC,gCAAAA;AAAkC,MAAA,CAElED,8BAA4B;AAAA,WAAA;AAAA,EAAA;AAAA,MAAA5F;AAAA,MAAAT,GAAA,CAAA,MAAAqG,8BAAAE,gBAAA;AAGH9F,SAAA4F,8BAA4BE,kBAAA,CAAA;AAAsBvG,IAAAA,GAAA,CAAA,IAAAqG,8BAAAE;AAAAvG,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAoH;AAAA,MAAAvG;AAAA,MAAAE;AAAA,MAAAgG;AAAA,MAAA/G,GAAA,CAAA,MAAA1B,6BAAA0B,UAAAS,IAAA;AAAA,QAAAuG;AAAA,QAAAhH,UAAA1B,2BAAA;AACvE0I,YAAA7I,UAAUG,0BAAyB+I,oBAAA5I,kBAAA6I,KAAAxI,CAAAA,UAAuDA,MAAKM,SAAUjB,IAAI;AAAC6B,MAAAA,QAAA1B;AAAA0B,MAAAA,QAAAgH;AAAAA,IAAA,OAAA;AAAAA,YAAAhH,GAAA,CAAA;AAAA,IAAA;AADvH,UAAAuH,uBAA8B9G,GAAkD5B,IACvEmI,GAA8G,EAACtH,OAAAE,OACrG;AAEXwH,SAAAI;AAAaT,SAAAQ,qBAAoBE,SAAA;AACtB5G,SAAA;AACVE,SAAAwG,qBAAoB1I,IAAA6I,OACD;AAAC1H,IAAAA,QAAA1B;AAAA0B,IAAAA,QAAAS;AAAAT,IAAAA,QAAAoH;AAAApH,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAf,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAK,SAAApH,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAAe,SAAAf,GAAA,CAAA;AAAA+G,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,EAAA,MAAAa,MAAAb,WAAAe,IAAA;AAFzBiG,SAAA,oBAAA,OAAA,EAAe,WAAAnG,IACVE,UAAAA,IAEL;AAAMf,IAAAA,SAAAa;AAAAb,IAAAA,SAAAe;AAAAf,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,EAAA,MAAAoH,MAAApH,WAAA+G,MAAA/G,GAAA,EAAA,MAAAgH,IAAA;AAJHC,SAAA,oBAAC,IAAA,EAAa,IAAAF,IACjBC,UAAAA,IAIJ;AAAWhH,IAAAA,SAAAoH;AAAApH,IAAAA,SAAA+G;AAAA/G,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,SALJiH;AAKI;AAjBR,SAAAS,QAAAC,SAAA;AAAA,SAc0C,oBAAC,gBAAA,EAC3B7I,OAAAA,QAAAA,GAD+CA,QAAKM,IAC/C;AAAI;ACpDzB,SAAAwI,gBAAA7H,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAAyB,QAAA;AAAA,IAAA4H;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAAtI;AAqB5B,QAAA;AAAA,IAAAuI,GAAAA;AAAAA,EAAAA,IAAcC,eAAAA;AACd,QAAA,CAAAC,WAAAC,YAAA,IAAkCrI,cAAc;AAAE,MAAAK;AAAA,MAAAT,GAAA,CAAA,MAAA8H,SAAA9H,UAAAsI,IAAA;AACzB7H,SAAAqH,SAASQ,GAAE,aAAa;AAACtI,IAAAA,QAAA8H;AAAA9H,IAAAA,QAAAsI;AAAAtI,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAlD,QAAA0I,mBAAyBjI;AAGzB,QAAAkI,YAAkB,CAACX,eAAeK;AAIW,QAAAxH,MAAAmH,YAAY,gBAAgB;AAAE,MAAAjH;AAAA,MAAAf,UAAAa,KAAA;AAAvDE,SAAA0B,IAAI,qBAAqB5B,GAA8B;AAACb,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAGvD,QAAA+G,KAAAiB,YAAY,UAAU;AAAS,MAAAhB;AAAA,MAAAhH,GAAA,CAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AAG7B+F,SAAAvE,IACP,oBACA,sEACJ;AAACzC,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,CAAA,MAAA0I,oBAAA1I,UAAA+G,IAAA;AAPLE,SAAA,oBAAC,YAAA,EACY,SAAAF,IACE,WAAA,MACL,OAAA,aACK,WAAAC,IAKV0B,UAAAA,iBAAAA,CACL;AAAa1I,IAAAA,QAAA0I;AAAA1I,IAAAA,QAAA+G;AAAA/G,IAAAA,QAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA4I;AAAA,MAAA5I,GAAA,CAAA,MAAA0I,oBAAA1I,GAAA,EAAA,MAAAmI,eAAAnI,GAAA,EAAA,MAAAwI,aAAAxI,GAAA,EAAA,MAAAgI,aAAAhI,WAAAkI,aAAA;AACZU,UAACZ,aAAaE,eAAW,CAAKC,mCAC1B,YAAA,EACQ,MAAA,YACI,SAAAxH,CAAAA,MAAA;AACLA,QAACwD,gBAAAA;AACD+D,kBAAYQ,gBAAgB;AAAA,IAAC,GAEtB,WAAAjG,IAAI,SAAS+F,YAAY,gBAAgB,aAAa,iCAAiC,GAElG,UAAA,oBAAC,UAAA,EAAc,MAAA,YAAU,GAC7B;AACHxI,IAAAA,QAAA0I;AAAA1I,IAAAA,SAAAmI;AAAAnI,IAAAA,SAAAwI;AAAAxI,IAAAA,SAAAgI;AAAAhI,IAAAA,SAAAkI;AAAAlI,IAAAA,SAAA4I;AAAAA,EAAA,OAAA;AAAAA,SAAA5I,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA6I;AAAA,MAAA7I,GAAA,EAAA,MAAAe,MAAAf,WAAAiH,MAAAjH,GAAA,EAAA,MAAA4I,IAAA;AAxBLC,SAAA,qBAAA,OAAA,EAAgB,WAAA9H,IAEZkG,UAAAA;AAAAA,MAAAA;AAAAA,MAWC2B;AAAAA,IAAAA,GAYL;AAAM5I,IAAAA,SAAAe;AAAAf,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAA4I;AAAA5I,IAAAA,SAAA6I;AAAAA,EAAA,OAAA;AAAAA,SAAA7I,GAAA,EAAA;AAAA,EAAA;AA1BV,QAAA8I,eACID;AA8BI,QAAAE,KAAA,CAACd,4BAA4B,UAAU;AAAM,MAAAe;AAAA,MAAAhJ,WAAA+I,IAAA;AADjCC,UAAAvG,IACZsG,IACA,yCACJ;AAAC/I,IAAAA,SAAA+I;AAAA/I,IAAAA,SAAAgJ;AAAAA,EAAA,OAAA;AAAAA,UAAAhJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiJ;AAAA,MAAAjJ,GAAA,EAAA,MAAA8I,gBAAA9I,WAAA6H,YAAA7H,GAAA,EAAA,MAAAgI,WAAA;AAGIiB,UAAAjB,aAAS,qBAAA,UAAA,EAEF,UAAA;AAAA,MAAA,oBAAA,SACe,WAAAvF,IACP,4CACA,UACJ,GACc,cAAA,MAAMgG,aAAY,IAAK,GACvB,cAAA,MAAMA,aAAY,KAAM,GAErCK,UAAAA,cACL;AAAA,MACCjB;AAAAA,IAAAA,GAAQ;AAEhB7H,IAAAA,SAAA8I;AAAA9I,IAAAA,SAAA6H;AAAA7H,IAAAA,SAAAgI;AAAAhI,IAAAA,SAAAiJ;AAAAA,EAAA,OAAA;AAAAA,UAAAjJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkJ;AAAA,MAAAlJ,GAAA,EAAA,MAAA8I,gBAAA9I,GAAA,EAAA,MAAA6H,YAAA7H,GAAA,EAAA,MAAAoI,aAAApI,WAAAgI,aAAAhI,GAAA,EAAA,MAAA+H,aAAA/H,GAAA,EAAA,MAAAqI,qBAAArI,GAAA,EAAA,MAAA2I,WAAA;AAGAO,UAAA,CAAClB,aAAaW,aACX,oBAAC,iBAAA,EACG,WAAA,MACU,UAAA,CAACP,WACO,kBAAArG,CAAAA,SAAA;AAAA,UACVA,UAAUqG,WAAS;AACnBC,4BAAAA;AAAAA,MAAiB;AAAA,IAAA,GAGd,WAAA5F,IAAI,MAAM,GACL,gBAAAA,IACZ,2BACA,oDACA,wBACA,8BACA2F,aAAa,uCACjB,GACgB,gBAAA3F,IAAI,QAAQ,CAACsF,YAAY,SAAS,EAAE,GAEhD,oCACkB,cAAA,MAAMU,iBAAiB,GACvB,oBAAMA,aAAY,KAAM,GAC5B,WAAA,qBAETK,UAAAA,aAAAA,CACL,GAGHf,UAAAA,YACG,oBAAA,SAAgB,WAAAtF,IAAI,sEAAsE,GAC/E,OAAA;AAAA,MAAA0G,WAAa;AAAA,IAAA,EAAM,CAAE,IAGhC,oBAAA,OAAA,EAAgB,WAAA1G,IAAI,QAAQ,CAACsF,YAAY,SAAS,EAAE,GAC/CF,UACL,EAAA,CAER;AACH7H,IAAAA,SAAA8I;AAAA9I,IAAAA,SAAA6H;AAAA7H,IAAAA,SAAAoI;AAAApI,IAAAA,SAAAgI;AAAAhI,IAAAA,SAAA+H;AAAA/H,IAAAA,SAAAqI;AAAArI,IAAAA,SAAA2I;AAAA3I,IAAAA,SAAAkJ;AAAAA,EAAA,OAAA;AAAAA,UAAAlJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAoJ;AAAA,MAAApJ,WAAA8I,gBAAA9I,GAAA,EAAA,MAAA6H,YAAA7H,GAAA,EAAA,MAAAoI,aAAApI,GAAA,EAAA,MAAAgI,aAAAhI,WAAA+H,aAAA/H,GAAA,EAAA,MAAA2I,WAAA;AAGAS,UAAA,CAACpB,aAAS,CAAKW,aAAS,qBAAA,UAAA,EAEjB,UAAA;AAAA,MAAA,6BACe,WAAAlG,IACP,4CACA,MACJ,GACc,oBAAMgG,aAAY,IAAK,GACvB,oBAAMA,aAAY,KAAM,GAErCK,UAAAA,cACL;AAAA,MAEC,CAACV,cACEL,YACI,oBAAA,SAAgB,WAAAtF,IAAI,sEAAsE,GAC/E,OAAA;AAAA,QAAA0G,WAAa;AAAA,MAAA,EAAM,CAAE,IAGhC,oBAAA,OAAA,EAAgB,WAAA1G,IAAI,QAAQ,CAACsF,YAAY,SAAS,EAAE,GAC/CF,SAAAA,CACL;AAAA,IAAA,GAEP;AAER7H,IAAAA,SAAA8I;AAAA9I,IAAAA,SAAA6H;AAAA7H,IAAAA,SAAAoI;AAAApI,IAAAA,SAAAgI;AAAAhI,IAAAA,SAAA+H;AAAA/H,IAAAA,SAAA2I;AAAA3I,IAAAA,SAAAoJ;AAAAA,EAAA,OAAA;AAAAA,UAAApJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAqJ;AAAA,MAAArJ,GAAA,EAAA,MAAAgJ,OAAAhJ,GAAA,EAAA,MAAAiJ,OAAAjJ,GAAA,EAAA,MAAAkJ,OAAAlJ,WAAAoJ,KAAA;AAzFLC,wCAAgB,WAAAL,KAMXC,UAAAA;AAAAA,MAAAA;AAAAA,MAiBAC;AAAAA,MAyCAE;AAAAA,IAAAA,GA0BL;AAAMpJ,IAAAA,SAAAgJ;AAAAhJ,IAAAA,SAAAiJ;AAAAjJ,IAAAA,SAAAkJ;AAAAlJ,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAAqJ;AAAAA,EAAA,OAAA;AAAAA,UAAArJ,GAAA,EAAA;AAAA,EAAA;AAAA,SA1FNqJ;AA0FM;ACjIP,SAAAC,sBAAAvJ,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAA+B,QAAA;AAAA,IAAAb;AAAAA,IAAAF;AAAAA,IAAA6G;AAAAA,IAAAe;AAAAA,IAAAvE;AAAAA,IAAAgH;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAA1J;AAelC,QAAAsG,+BAAqCC,gCAAAA;AACiB,QAAA7F,KAAAvB,cAAc6G;AAAI,MAAAlF;AAAA,MAAAb,UAAAS,IAAA;AAAjDI,SAAA,oBAAC,aAAA,EAA8B,kBAAAJ,GAAAA,CAAkB;AAAIT,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAA5E,QAAA0J,iBAAuB7I;AAEvB,QAAAsF,WAAiBC,YAAAA;AACjB,QAAAhI,UAAgBuL,iBAAAA;AAAmB,MAAA5I;AAAA,MAAAf,GAAA,CAAA,MAAAqG,8BAAAE,gBAAA;AAEhBxF,SAAAsF,8BAA4BE,kBAAA,CAAA;AAAsBvG,IAAAA,GAAA,CAAA,IAAAqG,8BAAAE;AAAAvG,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA+G;AAAA,MAAA/G,GAAA,CAAA,MAAAZ,QAAAY,UAAAe,IAAA;AAAnDgG,SAAChG,GAAkDyF,SAAWpH,IAAI;AAACY,IAAAA,QAAAZ;AAAAY,IAAAA,QAAAe;AAAAf,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAArF,QAAAyG,YAAkBM;AAElB,QAAA6C,eAAwCvD,gCAEhC,oBAAC,cAES,MAAA,SACG,SAAA1F,CAAAA,MAAA;AACLA,MAAC+F,eAAAA;AACD/F,MAACwD,gBAAAA;AAAkB,QACfsC,WAAS;AACTJ,mCAA4BM,kBACxBN,6BAA4BE,eAAA7G,OAAAkH,CAAAA,OAA4BA,OAAMxH,IAAI,CACtE;AAAA,IAAC,OAAA;AAEDiH,mCAA4BM,kBAAA,CAAA,GACpBN,6BAA4BE,gBAAiBnH,IAAI,CACzD;AAAA,IAAC;AAAA,EAAA,GAGT,UAAA,oBAAC,UAAA,EACS,MAAA,SACK,WAAAqH,YAAY,mBAAmB,yCAAA,CAAwC,EAAA,GAjBjF,WAkBT,CAAa,IAAA,CAAA;AAEZ,MAAAO;AAAA,MAAAhH,GAAA,CAAA,MAAAd,cAAAc,UAAA5B,WAAA4B,GAAA,CAAA,MAAAZ,MAAA;AAEoD4H,SAAA;AAAA,MAAA5H;AAAAA,MAAAF;AAAAA,MAAAd;AAAAA,IAAAA;AAI5D4B,IAAAA,QAAAd;AAAAc,IAAAA,QAAA5B;AAAA4B,IAAAA,QAAAZ;AAAAY,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAJD,QAAA6J,oBAA0BC,QAAQ,2BAA2B9C,EAI5D;AAAE,MAEE9H,YAAiB6K,gBAAA;AAEgB,UAAA9C,0BAAoB/H,YAAUE,QAAUF,YAAUqD,IAAM;AAA+C,QAAAqG;AAAA,QAAA5I,GAAA,EAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AACjI2H,gCAAA,OAAA,EACI,UAAA,oBAAC,eAAiB,MAAA,SAAkB,WAAA,iCAAA,CAAgC,EAAA,CACxE;AAAM5I,MAAAA,SAAA4I;AAAAA,IAAA,OAAA;AAAAA,YAAA5I,GAAA,EAAA;AAAA,IAAA;AAAA,QAAA6I;AAAA,QAAA7I,WAAAiH,KAAA;AAHV4B,gCAAC,SAAA,EAA6B,OAAA5B,KAC1B2B,UAAAA,OADS,SAIb;AAAU5I,MAAAA,SAAAiH;AAAAjH,MAAAA,SAAA6I;AAAAA,IAAA,OAAA;AAAAA,YAAA7I,GAAA,EAAA;AAAA,IAAA;AALd4J,iBAAYI,QACRnB,GAKJ;AAAA,EAAC;AAAA,MAAA5B;AAAA,MAAAjH,GAAA,EAAA,MAAA4J,gBAAA5J,WAAA6J,mBAAA;AAGwC5C,SAAA,qBAAA,UAAA,EACxC2C,UAAAA;AAAAA,MAAAA;AAAAA,MACAC;AAAAA,IAAAA,GAAiB;AACnB7J,IAAAA,SAAA4J;AAAA5J,IAAAA,SAAA6J;AAAA7J,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAHH,QAAAiK,UAA6ChD;AAG1C,MAAA2B;AAAA,MAAA5I,GAAA,EAAA,MAAAmG,YAAAnG,GAAA,EAAA,MAAAwJ,WAAAxJ,GAAA,EAAA,MAAAZ,QAAAY,GAAA,EAAA,MAAA8G,OAAA9G,WAAAqG,8BAAA;AAOUuC,SAAAA,MAAA;AACLY,gBAAAA;AACArD,eAASW,GAAG;AAAC,UACTT,8BAA4B;AAC5BA,qCAA4B6D,wBAAA,CACvB9K,UAAUiH,6BAA4B8D,wBAAA,CAAA,GAA2BzK,OAAA0K,CAAAA,QAAcxD,QAAMxH,IAAI,CAAC,CAC/F;AAAA,MAAC;AAAA,IAAA;AAERY,IAAAA,SAAAmG;AAAAnG,IAAAA,SAAAwJ;AAAAxJ,IAAAA,SAAAZ;AAAAY,IAAAA,SAAA8G;AAAA9G,IAAAA,SAAAqG;AAAArG,IAAAA,SAAA4I;AAAAA,EAAA,OAAA;AAAAA,SAAA5I,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA6I;AAAA,MAAA7I,WAAAiK,WAAAjK,GAAA,EAAA,MAAA0J,kBAAA1J,GAAA,EAAA,MAAAuJ,eAAAvJ,GAAA,EAAA,MAAAuC,QAAAvC,WAAAyJ,UAAAzJ,GAAA,EAAA,MAAA4I,IAAA;AAbEC,SAAA,oBAAC,kBACEa,MAAAA,gBACAnH,MACOgH,aACJU,SACA,SAAArB,IASDa,OAAAA,CAAM;AAChBzJ,IAAAA,SAAAiK;AAAAjK,IAAAA,SAAA0J;AAAA1J,IAAAA,SAAAuJ;AAAAvJ,IAAAA,SAAAuC;AAAAvC,IAAAA,SAAAyJ;AAAAzJ,IAAAA,SAAA4I;AAAA5I,IAAAA,SAAA6I;AAAAA,EAAA,OAAA;AAAAA,SAAA7I,GAAA,EAAA;AAAA,EAAA;AAAA,SAfK6I;AAeL;AC1EN,MAAMwB,uBAA8CC,UAChDC,4BAA4B;AAAA,EACxB,GAAGD;AAAAA,EACHE,aAAa;AACjB,CAAC;AAEL,MAAMC,sBAAqC,CAAA;AAE3C,MAAMC,mCAAmCA,CAAC5L,UAA4C;AAClF,QAAM6L,cAAwC;AAAA,IAC1CC,IAAI9L,MAAM8L;AAAAA,IACVxL,MAAMN,MAAMM;AAAAA,IACZ0H,KAAKhI,MAAMgI;AAAAA,IACXvE,MAAMzD,MAAMyD;AAAAA,IACZxD,MAAMD,MAAMC;AAAAA,IACZG,YAAYJ,MAAMI,aAAa;AAAA,MAAE,GAAGJ,MAAMI;AAAAA,IAAAA,IAAeO;AAAAA,IACzDsG,MAAMjH,MAAMiH,OAAO;AAAA,MAAE,GAAGjH,MAAMiH;AAAAA,IAAAA,IAAStG;AAAAA,IACvC,GAAIX,MAAMgJ,SAAS;AAAA,MAAEA,OAAOhJ,MAAMgJ;AAAAA,IAAAA;AAAAA,IAClC,GAAIhJ,MAAMyK,eAAe;AAAA,MAAEA,aAAazK,MAAMyK;AAAAA,IAAAA;AAAAA,EAAY;AAE9D,SAAOoB;AACX;AAEA,MAAME,mBAAmBA,CAACC,UACtBA,MAAMjM,IAAKkM,CAAAA,OAAO;AAAA,EACdxI,MAAMwI,EAAExI;AAAAA,EACRyI,SAASD,EAAEC,QAAQnM,IAAI6L,gCAAgC;AAC3D,EAAE;AAMC,SAAAO,uBAAAlL,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAAgC,QAAA;AAAA,IAAAnB;AAAAA,IAAA0K;AAAAA,EAAAA,IAAAzJ;AAMtC,MAAAU;AAAA,MAAAT,GAAA,CAAA,MAAAlB,MAAAgI,KAAA;AASmBrG,SAAA;AAAA,MAAAmK,IACJ9L,MAAKgI;AAAAA,MAAAuD;AAAAA,IAAAA;AAEZrK,IAAAA,GAAA,CAAA,IAAAlB,MAAAgI;AAAA9G,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAXL,QAAA;AAAA,IAAAkL;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAQIC,YAAY/K,EAGX;AAAE,MAAAI;AAAA,MAAAb,UAAAqL,WAAA;AAGQxK,SAAAwK,YAAYI,IAAAC,UAAAC,SAAuBN,SAAS,IAAC5L;AAAYO,IAAAA,QAAAqL;AAAArL,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAE3D,QAAAe,KAAAwK,aAAU,IAAA;AAAQ,MAAAxE;AAAA,MAAA/G,GAAA,CAAA,MAAAa,MAAAb,UAAAe,MAAAf,GAAA,CAAA,MAAAsL,YAAA;AAHjBvE,SAAA;AAAA,MAAAsE,WACCxK;AAAAA,MAAyDyK;AAAAA,MAAAM,SAE3D7K;AAAAA,IAAAA;AACZf,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAf,IAAAA,QAAAsL;AAAAtL,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAJD,QAAA6L,QAAc9E;AAIZ,MAAAC;AAAA,MAAAhH,GAAA,CAAA,MAAAlB,SAAAkB,UAAAwJ,SAAA;AAIMxC,SAAA,oBAAC,uBAAA,EAAqB,GAAKlI,OAAgB0K,QAAAA,CAAO;AAAIxJ,IAAAA,QAAAlB;AAAAkB,IAAAA,QAAAwJ;AAAAxJ,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,EAAA,MAAAoL,cAAApL,GAAA,EAAA,MAAAmL,aAAAnL,GAAA,EAAA,MAAAkL,cAAAlL,GAAA,EAAA,MAAA6L,SAAA7L,WAAAgH,IAAA;AAD1DC,SAAA,oBAAA,SAAUiE,iBAAmBW,OAAK,GAAMT,eAAgBD,WACpDnE,UAAAA,GAAAA,CACJ;AAAMhH,IAAAA,SAAAoL;AAAApL,IAAAA,SAAAmL;AAAAnL,IAAAA,SAAAkL;AAAAlL,IAAAA,SAAA6L;AAAA7L,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,SAFNiH;AAEM;AAIP,SAAA6E,yBAAA/L,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAAkC,QAAA;AAAA,IAAA2K;AAAAA,IAAAmB;AAAAA,IAAAlE;AAAAA,IAAAI,2BAAAxH;AAAAA,EAAAA,IAAAV;AAIrC,QAAAkI,4BAAAxH,OAAiChB,iBAAjCgB;AAAiC,MAAAI;AAAA,MAAAb,UAAA4K,IAAA;AAOG/J,SAAA;AAAA,MAAA+J;AAAAA,IAAAA;AAAM5K,IAAAA,QAAA4K;AAAA5K,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAA1C,QAAA;AAAA,IAAAkL;AAAAA,EAAAA,IAAuBc,aAAanL,EAAM;AAM9B,QAAAE,KAAAkH,4BACM,oEAAiExI;AACxD,MAAAsH;AAAA,MAAA/G,UAAAe,IAAA;AAHRgG,SAAAtE,IACP1B,IAGA,yCACJ;AAACf,IAAAA,QAAAe;AAAAf,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,CAAA,MAAA6H,YAAA7H,UAAA+L,SAAA;AAED/E,6BAAC,iBAAA,EAAuB+E,gBAAmBE,yCAE3C;AAAkBjM,IAAAA,QAAA6H;AAAA7H,IAAAA,QAAA+L;AAAA/L,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,CAAA,MAAAkL,cAAAlL,UAAA+G,MAAA/G,GAAA,CAAA,MAAAgH,IAAA;AAXtBC,sCACSiE,KAAAA,YACM,WAAAnE,IAOXC,UAAAA,IAGJ;AAAMhH,IAAAA,QAAAkL;AAAAlL,IAAAA,QAAA+G;AAAA/G,IAAAA,QAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,SAZNiH;AAYM;AAIP,SAAAiF,wBAAAnM,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAAiC,QAAA;AAAA,IAAAkM;AAAAA,IAAAtE;AAAAA,IAAA9E;AAAAA,EAAAA,IAAAhD;AAQvC,MAAAU;AAAA,MAAAT,GAAA,CAAA,MAAA+C,YAAA/C,UAAAmM,WAAA;AASmB1L,SAAA;AAAA,MAAAmK,IACJuB;AAAAA,MAAS9B;AAAAA,MAAAtH;AAAAA,IAAAA;AAGhB/C,IAAAA,QAAA+C;AAAA/C,IAAAA,QAAAmM;AAAAnM,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAZL,QAAA;AAAA,IAAAoL;AAAAA,IAAAD;AAAAA,IAAAD;AAAAA,IAAAG;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAQIC,YAAY/K,EAIX;AAAE,MAAAI;AAAA,MAAAb,UAAAqL,WAAA;AAGQxK,SAAAwK,YAAYI,IAAAC,UAAAC,SAAuBN,SAAS,IAAC5L;AAAYO,IAAAA,QAAAqL;AAAArL,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAE3D,QAAAe,KAAAwK,aAAU,IAAA;AAAQ,MAAAxE;AAAA,MAAA/G,GAAA,CAAA,MAAAa,MAAAb,UAAAe,MAAAf,GAAA,CAAA,MAAAsL,YAAA;AAHjBvE,SAAA;AAAA,MAAAsE,WACCxK;AAAAA,MAAyDyK;AAAAA,MAAAM,SAE3D7K;AAAAA,IAAAA;AACZf,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAf,IAAAA,QAAAsL;AAAAtL,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAJD,QAAA6L,QAAc9E;AAIZ,MAAAC;AAAA,MAAAhH,GAAA,CAAA,MAAAoL,cAAApL,GAAA,EAAA,MAAA6H,YAAA7H,GAAA,EAAA,MAAAmL,aAAAnL,GAAA,EAAA,MAAAkL,cAAAlL,WAAA6L,OAAA;AAGE7E,sCAAUkE,KAAAA,YAAmBW,OAAK,GAAMT,YAAU,GAAMD,WACnDtD,SAAAA,CACL;AAAM7H,IAAAA,QAAAoL;AAAApL,IAAAA,SAAA6H;AAAA7H,IAAAA,SAAAmL;AAAAnL,IAAAA,SAAAkL;AAAAlL,IAAAA,SAAA6L;AAAA7L,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,SAFNgH;AAEM;AAIP,SAASoF,eAAe;AAAA,EAC3BtB;AAAAA,EACAuB;AAAAA,EACAtJ;AAAAA,EACAuJ;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAeJ,GAAG;AAEC,QAAMC,WAAW5B;AACjB,QAAM6B,cAAcN;AAEpB,QAAM,CAACO,UAAUC,WAAW,IAAIzM,SAAkC,IAAI;AACtE,QAAM,CAAC0M,eAAeC,gBAAgB,IAAI3M,SAAS,KAAK;AACxD,QAAM,CAAC4M,wBAAwBC,yBAAyB,IACpD7M,SAAkC,IAAI;AAC1C,QAAM,CAAC8M,kBAAkBC,mBAAmB,IAAI/M,SAAwB,IAAI;AAC5E,QAAM,CAACgN,oBAAoBC,qBAAqB,IAAIjN,SAAS,KAAK;AAClE,QAAM,CAACkN,oBAAoBC,qBAAqB,IAAInN,SAAwB,IAAI;AAChF,QAAM,CAACoN,4BAA4BC,6BAA6B,IAC5DrN,SAAS,KAAK;AAClB,QAAM,CAACsN,qBAAqBC,sBAAsB,IAAIvN,SAAwB,IAAI;AAClF,QAAM,CAACwN,qBAAqBC,sBAAsB,IAAIzN,SAEpD,IAAI;AAGN,QAAM0N,kBAAkBvM,OAEtB,IAAI;AAGN,QAAMwM,kBAAkBxM,OAEtB,IAAI;AACNT,YAAU,MAAM;AACZiN,oBAAgBrL,UAAUgK;AAAAA,EAC9B,GAAG,CAACA,QAAQ,CAAC;AAGb,QAAMsB,cAAcC,UAAUC,aAAa;AAAA,IAAEC,sBAAsB;AAAA,MAAEC,UAAU;AAAA,IAAA;AAAA,EAAG,CAAG;AACrF,QAAMC,cAAcJ,UAAUK,aAAa;AAAA,IACvCH,sBAAsB;AAAA,MAClBI,OAAO;AAAA,MACPC,WAAW;AAAA,IAAA;AAAA,EACf,CACH;AACD,QAAMC,iBAAiBR,UAAUS,cAAc;AAC/C,QAAMC,UAAUC,WAAWZ,aAAaK,aAAaI,cAAc;AAGnE,QAAMI,gBAAgBnC,SAAS7N,IAAKkM,CAAAA,MAAMA,EAAExI,IAAI;AAEhD,QAAMuM,mBAAmB5M,YACrB,CAAC0I,OAA6C;AAC1C,QAAI,CAACA,GAAI,QAAOnL;AAChB,UAAMqI,QAAQ4E,SAASpF,KAAMyD,CAAAA,QAAMA,IAAExI,SAASqI,EAAE;AAChD,QAAI9C,cAAcA,MAAMvF;AACxB,eAAWwI,OAAK2B,UAAU;AACtB,UAAI3B,IAAEC,QAAQlF,KAAMnF,CAAAA,MAAMA,EAAEmG,QAAQ8D,EAAE,EAAG,QAAOG,IAAExI;AAAAA,IACtD;AACA,WAAO9C;AAAAA,EACX,GACA,CAACiN,QAAQ,CACb;AAGA,QAAMqC,aAAaxN,OAAgC,IAAI;AACvD,QAAMyN,8BAA8BzN,OAAO,KAAK;AAEhD,QAAM0N,qBAAyC/M,YAC1CoI,CAAAA,SAAS;AACN,QAAIvH,YAAY,CAAC6J,SAAU,QAAO,CAAA;AAClC,QAAIE,eAAe;AACf,YAAMoC,SAAS5E,KAAK6E,oBAAoBzP,OAAQ0P,CAAAA,OAC5C1C,SAAS5G,KAAMiF,CAAAA,QAAMA,IAAExI,SAAS6M,GAAExE,EAAE,CACxC;AACA,UAAI,CAACsE,OAAOzH,OAAQ,QAAO,CAAA;AAC3B,aAAO4H,cAAc;AAAA,QACjB,GAAG/E;AAAAA,QACH6E,qBAAqBD;AAAAA,MAAAA,CACxB;AAAA,IACL;AAEA,UAAMI,UAAUC,cAAcjF,IAAI;AAClC,QAAIgF,QAAQ7H,QAAQ;AAChB,YAAM+H,OAAOF,QAAQhI,KAAM8H,CAAAA,QAAMA,IAAExE,OAAO,qBAAqB;AAC/D,UAAI4E,KAAM,QAAO,CAACA,IAAI;AAEtB,YAAMC,YAAYH,QAAQhI,KAAM8H,CAAAA,QAC5B1C,SAAS5G,KAAMiF,CAAAA,QAAMA,IAAExI,SAAS6M,IAAExE,EAAE,CACxC;AACA,UAAI6E,WAAW;AACX,cAAMC,UAAUhD,SAASpF,KAAMyD,CAAAA,QAAMA,IAAExI,SAASkN,UAAU7E,EAAE,GACtDI;AACN,YAAI0E,SAASjI,QAAQ;AACjB,gBAAMkI,UAAUC,eAAe;AAAA,YAC3B,GAAGtF;AAAAA,YACH6E,qBAAqB7E,KAAK6E,oBAAoBzP,OACzC0P,CAAAA,QAAMM,QAAQ5J,KAAMnF,CAAAA,QAAMA,IAAEmG,QAAQsI,IAAExE,EAAE,CAC7C;AAAA,UAAA,CACH;AACD,cAAI+E,QAAQlI,OAAQ,QAAOkI;AAAAA,QAC/B;AACA,eAAO,CAACF,SAAS;AAAA,MACrB;AACA,YAAMI,QAAQC,kBAAkBR,SAAS,IAAI;AAC7C,UAAIO,cAAc,CAAC;AAAA,QAAEjF,IAAIiF;AAAAA,MAAAA,CAAO;AAAA,IACpC;AAEA,UAAME,QAAQC,iBAAiB1F,IAAI;AACnC,UAAM2F,WAAWF,MAAMzI,KAAM8H,CAAAA,QAAMA,IAAExE,OAAO,qBAAqB;AACjE,QAAIqF,SAAU,QAAO,CAACA,QAAQ;AAE9B,QAAIC,SAASJ,kBAAkBC,OAAO,IAAI;AAC1C,QAAIG,UAAU,MAAM;AAChB,YAAMC,kBAAkBzD,SAAS5G,KAAMiF,CAAAA,QAAMA,IAAExI,SAAS2N,MAAM;AAC9D,UAAIC,iBAAiB;AACjB,cAAMT,YAAUhD,SAASpF,KAAMyD,SAAMA,IAAExI,SAAS2N,MAAM,GAChDlF;AACN,YAAI0E,WAASjI,QAAQ;AACjB,gBAAM2I,cAAcR,eAAe;AAAA,YAC/B,GAAGtF;AAAAA,YACH6E,qBAAqB7E,KAAK6E,oBAAoBzP,OACzC0P,CAAAA,QAAMM,UAAQ5J,KAAMnF,CAAAA,QAAMA,IAAEmG,QAAQsI,IAAExE,EAAE,CAC7C;AAAA,UAAA,CACH,EAAE,CAAC,GAAGA;AACP,cAAIwF,YAAaF,UAASE;AAAAA,QAC9B;AAAA,MACJ;AACArB,iBAAWrM,UAAUwN;AACrB,aAAO,CAAC;AAAA,QAAEtF,IAAIsF;AAAAA,MAAAA,CAAQ;AAAA,IAC1B;AAEA,QACIlB,4BAA4BtM,WAC5BqM,WAAWrM,WACX,CAACoK,sBAEM,CAAC;AAAA,MAAElC,IAAImE,WAAWrM;AAAAA,IAAAA,CAAS;AAEtC,WAAO,CAAA;AAAA,EACX,GACA,CAACkK,UAAUF,UAAU3J,UAAU+J,aAAa,CAChD;AAGA,QAAMuD,kBAAkBA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAiC;AACxDnD,wBAAoBmD,MAAM;AAC1B,QAAIvN,SAAU;AAGd+K,oBAAgBpL,UAAUmI,iBAAiB6B,QAAQ;AAEnD,UAAM6D,UAAU7D,SAAS5G,KAAMiF,SAAMA,IAAExI,SAAS+N,OAAO1F,EAAE;AACzD,QAAI,CAAC0F,OAAOjS,KAAKqE,QAAS4N,QAAOjS,KAAKqE,UAAU,CAAA;AAChD4N,WAAOjS,KAAKqE,QAAQ3D,OAAOwR,UAAU,UAAU;AAE/C1D,gBAAYyD,OAAO1F,EAAE;AACrBmC,qBAAiBwD,OAAO;AACxBlD,0BAAsB,CAACkD,OAAO;AAC9B,QAAIA,QAAStD,2BAA0BqD,OAAO1F,EAAE;AAChDoE,gCAA4BtM,UAAU;AAAA,EAC1C;AAEA,QAAM8N,iBAAiBA,CAAC;AAAA,IACpBF,QAAAA;AAAAA,IACAG;AAAAA,EAAAA,MACiC;AACjC,QAAI1N,YAAY,CAAC0N,KAAM;AAEvB,UAAMC,cAAcJ,SAAO1F;AAC3B,UAAM+F,YAAYF,KAAK7F;AACvB,QAAI8F,gBAAgBC,UAAW;AAC/B,QAAI7D,cAAe;AAEnB,UAAM8D,aAAa9B,iBAAiB4B,WAAW;AAC/C,UAAMG,WAAW/B,iBAAiB6B,SAAS;AAC3C,QAAI,CAACC,WAAY;AAEjB,QAAIC,YAAYD,eAAeC,UAAU;AACrC7B,kCAA4BtM,UAAU;AACtCqM,iBAAWrM,UAAUiO;AAGrBhE,kBAAajK,CAAAA,YAAY;AACrB,cAAMoO,WAAWjG,iBAAiBnI,OAAO;AACzC,cAAMqO,SAASD,SAASE,UAAWjG,CAAAA,QAAMA,IAAExI,SAASqO,UAAU;AAC9D,cAAMK,SAASH,SAASE,UAAWjG,CAAAA,QAAMA,IAAExI,SAASsO,QAAQ;AAC5D,YAAIE,WAAW,MAAME,WAAW,GAAI,QAAOvO;AAC3C,cAAMwO,MAAMJ,SAASC,MAAM;AAC3B,cAAMI,MAAML,SAASG,MAAM;AAC3B,cAAMG,WAAWF,IAAIlG,QAAQgG,UAAWrQ,CAAAA,QAAMA,IAAEmG,QAAQ4J,WAAW;AACnE,YAAIU,aAAa,GAAI,QAAO1O;AAC5B,cAAM,CAAC2O,KAAK,IAAIH,IAAIlG,QAAQsG,OAAOF,UAAU,CAAC;AAG9C,cAAMjB,oBAAkBQ,cAAcE;AACtC,YAAIV,mBAAiB;AACjBgB,cAAInG,QAAQuG,KAAKF,KAAK;AAAA,QAC1B,OAAO;AACH,gBAAMG,UAAUL,IAAInG,QAAQgG,UAAWrQ,CAAAA,QAAMA,IAAEmG,QAAQ6J,SAAS;AAChE,cAAIa,YAAY,IAAI;AAChBL,gBAAInG,QAAQsG,OAAOE,SAAS,GAAGH,KAAK;AAAA,UACxC,OAAO;AACHF,gBAAInG,QAAQuG,KAAKF,KAAK;AAAA,UAC1B;AAAA,QACJ;AAEA,eAAOP;AAAAA,MACX,CAAC;AAAA,IACL,WAAWF,eAAeC,UAAU;AAChC7B,kCAA4BtM,UAAU;AAAA,IAC1C;AAAA,EACJ;AAEA,QAAM+O,gBAAgBA,CAAC;AAAA,IACnBnB,QAAAA;AAAAA,IACAG,MAAAA;AAAAA,EAAAA,MACiC;AACjC,QAAI1N,YAAY,CAAC0N,QAAM;AACnBiB,qBAAAA;AACA;AAAA,IACJ;AAEA,UAAMhB,gBAAcJ,SAAO1F;AAC3B,UAAM+F,cAAYF,OAAK7F;AAGvB,QAAIkC,eAAe;AACf,UACI4D,kBAAgBC,eAChBjE,SAAS5G,KAAMiF,UAAMA,KAAExI,SAASoO,WAAS,GAC3C;AACE,cAAMgB,OAAOjF,SAASsE,UAAWjG,CAAAA,SAAMA,KAAExI,SAASmO,aAAW;AAC7D,cAAMkB,KAAKlF,SAASsE,UAAWjG,CAAAA,SAAMA,KAAExI,SAASoO,WAAS;AACzD,YAAIgB,SAAS,MAAMC,OAAO,IAAI;AAC1B,gBAAMd,aAAWe,UAAUnF,UAAUiF,MAAMC,EAAE;AAC7CjF,sBAAYmE,UAAQ;AACpBrE,sBAAYqE,UAAQ;AACpBvE,yBAAemE,eAAuBiB,MAAMC,EAAE;AAAA,QAClD;AAAA,MACJ;AAAA,IACJ,OAEK;AAED,YAAME,uBAAuBA,CAAClH,MAAYmH,UAA8E;AACpH,cAAMjK,UAAQiK,MAAMzK,KAAMyD,CAAAA,SAAMA,KAAExI,SAASqI,IAAE;AAC7C,YAAI9C,gBAAcA,QAAMvF;AACxB,mBAAWwI,QAAKgH,OAAO;AACnB,cAAIhH,KAAEC,QAAQlF,KAAMnF,CAAAA,QAAMA,IAAEmG,QAAQ8D,IAAE,EAAG,QAAOG,KAAExI;AAAAA,QACtD;AACA,eAAO9C;AAAAA,MACX;AAEA,YAAMuS,cAAclE,gBAAgBpL,WAAWgK;AAC/C,YAAMkE,eAAakB,qBAAqBpB,eAAuBsB,WAAW;AACzDlD,uBAAiB6B,WAAS;AAG3C,UAAIA,gBAAc,uBAAuB;AACrC,YAAIC,cAAY;AAEZ/C,iCAAuBhD,iBAAiB6B,QAAQ,CAAC;AAEjD,gBAAMoE,aAAWjG,iBAAiB6B,QAAQ;AAC1C,gBAAMqE,WAASD,WAASE,UAAWjG,CAAAA,SAAMA,KAAExI,SAASqO,YAAU;AAC9D,cAAIG,aAAW,IAAI;AACf,kBAAMG,QAAMJ,WAASC,QAAM;AAC3B,kBAAMK,aAAWF,MAAIlG,QAAQgG,UACxBrQ,CAAAA,QAAMA,IAAEmG,QAAQ4J,aACrB;AACA,gBAAIU,eAAa,IAAI;AACjB,oBAAM,CAACa,OAAO,IAAIf,MAAIlG,QAAQsG,OAAOF,YAAU,CAAC;AAChD,kBAAIF,MAAIlG,QAAQvD,WAAW,EAAGqJ,YAASQ,OAAOP,UAAQ,CAAC;AAEvD,kBAAImB,YAAY;AAChB,kBAAIC,UAAU;AACd,qBAAOrB,WAAShL,KAAMiF,CAAAA,SAAMA,KAAExI,SAAS2P,SAAS,EAC5CA,aAAY,aAAaC,SAAS;AAEtCrB,yBAASS,KAAK;AAAA,gBACVhP,MAAM2P;AAAAA,gBACNlH,SAAS,CAACiH,OAAO;AAAA,cAAA,CACpB;AAGDtF,0BAAYmE,UAAQ;AACpBnD,qCAAuBuE,SAAS;AAChC3E,oCAAsB2E,SAAS;AAC/B1F,+BAAAA;AAAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,OAEK;AACD,cAAMqE,aAAW/B,iBAAiB6B,WAAS;AAC3C,YAAIC,iBAAeC,YAAU;AACzB,gBAAMuB,SAAS1F,SAASsE,UAAWjG,CAAAA,SAAMA,KAAExI,SAASqO,YAAU;AAC9D,cAAIwB,WAAW,IAAI;AACf,kBAAMtK,UAAQ4E,SAAS0F,MAAM;AAC7B,kBAAMC,SAASvK,QAAMkD,QAAQgG,UACxBrQ,CAAAA,QAAMA,IAAEmG,QAAQ4J,aACrB;AACA,gBAAI4B,SAASxK,QAAMkD,QAAQgG,UACtBrQ,CAAAA,QAAMA,IAAEmG,QAAQ6J,WACrB;AACA,gBAAI2B,WAAW,MAAM3B,gBAAcC,aAC/B0B,UAASxK,QAAMkD,QAAQvD,SAAS;AACpC,gBACI4K,WAAW,MACXC,WAAW,MACXD,WAAWC,QACb;AACE,oBAAMC,YAAYV,UAAU/J,QAAMkD,SAASqH,QAAQC,MAAM;AACzD,oBAAMxB,aAAW,CAAC,GAAGpE,QAAQ;AAC7BoE,yBAASsB,MAAM,IAAI;AAAA,gBACf,GAAGtK;AAAAA,gBACHkD,SAASuH;AAAAA,cAAAA;AAEb5F,0BAAYmE,UAAQ;AACpBrE,0BAAYqE,UAAQ;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ,WAAWD,cAAYD,iBAAeC,YAAU;AAE5C,gBAAM2B,aAAa3H,iBAAiBmH,WAAW;AAG/C,gBAAMS,cAAc1D,WAAWrM,WAAWiO;AAC1C,gBAAM+B,gBAAgBZ,qBAAqBW,aAAuBT,WAAW,KAAKnB;AAElF,gBAAME,WAASyB,WAAWxB,UAAWjG,CAAAA,SAAMA,KAAExI,SAASqO,YAAU;AAChE,gBAAMK,WAASuB,WAAWxB,UAAWjG,CAAAA,SAAMA,KAAExI,SAASmQ,aAAa;AAEnE,cAAI3B,aAAW,MAAME,aAAW,IAAI;AAChC,kBAAMC,QAAMsB,WAAWzB,QAAM;AAC7B,kBAAMI,QAAMqB,WAAWvB,QAAM;AAC7B,kBAAMG,aAAWF,MAAIlG,QAAQgG,UAAWrQ,CAAAA,QAAMA,IAAEmG,QAAQ4J,aAAW;AAEnE,gBAAIU,eAAa,IAAI;AAEjB,oBAAM,CAACC,OAAK,IAAIH,MAAIlG,QAAQsG,OAAOF,YAAU,CAAC;AAG9C,oBAAMjB,oBAAkBsC,gBAAgBC;AACxC,kBAAIvC,mBAAiB;AACjBgB,sBAAInG,QAAQuG,KAAKF,OAAK;AAAA,cAC1B,OAAO;AACH,sBAAMG,YAAUL,MAAInG,QAAQgG,UAAWrQ,CAAAA,QAAMA,IAAEmG,QAAQ2L,WAAW;AAClE,oBAAIjB,cAAY,IAAI;AAChBL,wBAAInG,QAAQsG,OAAOE,WAAS,GAAGH,OAAK;AAAA,gBACxC,OAAO;AACHF,wBAAInG,QAAQuG,KAAKF,OAAK;AAAA,gBAC1B;AAAA,cACJ;AAGA,kBAAIH,MAAIlG,QAAQvD,WAAW,GAAG;AAC1B+K,2BAAWlB,OAAOP,UAAQ,CAAC;AAAA,cAC/B;AAEApE,0BAAY6F,UAAU;AACtB/F,0BAAY+F,UAAU;AAEtBlG,yCAA2B+E,OAAK;AAAA,YACpC;AAAA,UACJ;AAAA,QACJ,WAAWrC,4BAA4BtM,SAAS;AAE5CiQ,kBAAQC,MAAM,2DAA2D;AAAA,YACrEhC,YAAAA;AAAAA,YACAC,UAAAA;AAAAA,YACAH,aAAAA;AAAAA,YACAC,WAAAA;AAAAA,UAAAA,CACH;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEAe,mBAAAA;AAAAA,EACJ;AAEA,QAAMA,iBAAiBA,MAAM;AACzBvE,wBAAoB,IAAI;AACxBN,gBAAY,IAAI;AAChBE,qBAAiB,KAAK;AACtBE,8BAA0B,IAAI;AAC9BI,0BAAsB,KAAK;AAC3B2B,gCAA4BtM,UAAU;AAAA,EAC1C;AAEA,QAAMmQ,mBAAmBA,MAAMnB,eAAAA;AAG/B,QAAMoB,oBAAoBA,CAACC,SAAiBC,YAAoB;AAC5DrG,gBAAajK,CAAAA,cAAY;AACrB,YAAMuQ,MAAMvQ,UAAQsO,UAAWjG,CAAAA,SAAMA,KAAExI,SAASwQ,OAAO;AACvD,UAAIE,QAAQ,GAAI,QAAOvQ;AACvB,UAAIA,UAAQoD,KAAMiF,CAAAA,SAAMA,KAAExI,SAASyQ,WAAWjI,KAAExI,SAASwQ,OAAO,EAC5D,QAAOrQ;AAEX,YAAMwQ,UAAU,CAAC,GAAGxQ,SAAO;AAC3BwQ,cAAQD,GAAG,IAAI;AAAA,QACX,GAAGC,QAAQD,GAAG;AAAA,QACd1Q,MAAMyQ;AAAAA,MAAAA;AAIVvG,kBAAYyG,OAAO;AACnB,aAAOA;AAAAA,IACX,CAAC;AAGDvF,2BAAuB,IAAI;AAC3BE,2BAAuB,IAAI;AAC3BN,0BAAsB,IAAI;AAAA,EAC9B;AAGA,QAAM4F,oBAAoBA,MAAM;AAE5B,QAAIzF,uBAAuBJ,uBAAuBI,uBAAuBE,qBAAqB;AAE1FjB,kBAAYiB,mBAAmB;AAAA,IACnC;AAGAD,2BAAuB,IAAI;AAC3BE,2BAAuB,IAAI;AAC3BN,0BAAsB,IAAI;AAAA,EAC9B;AAGA,QAAM6F,uBACFrQ,YAAY,CAAC6J,YAAYE,gBACnB,OACAJ,SAAS2G,QAAStI,CAAAA,SAAMA,KAAEC,OAAO,EAAE1D,KAAM3G,UAAMA,KAAEmG,QAAQ8F,QAAQ,KAAK;AAEhF,QAAM0G,kBACFvQ,YAAY,CAAC6J,YAAY,CAACE,gBACpB,OACAJ,SAASpF,KAAMyD,CAAAA,SAAMA,KAAExI,SAASqK,QAAQ,KAAK;AAEvD,SAAO;AAAA,IACH+B;AAAAA,IACAM;AAAAA,IACAsE,aAAalD;AAAAA,IACbmD,YAAYhD;AAAAA,IACZiD,WAAWhC;AAAAA,IACXiC,cAAcb;AAAAA,IACdc,eAAelJ;AAAAA,IACf2I;AAAAA,IACAE;AAAAA,IACAM,iBAAiB5G;AAAAA,IACjB6G,YAAYhF;AAAAA,IACZ3B;AAAAA,IACAE;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAuF;AAAAA,IACAK;AAAAA,IACA3F;AAAAA,IACAC;AAAAA,EAAAA;AAER;AAEO,SAAAqG,iBAAA/T,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAA0B,QAAA;AAAA,IAAA8C;AAAAA,IAAAgR;AAAAA,EAAAA,IAAAhU;AAMhC,MAAAU;AAAA,MAAAT,UAAA+C,UAAA;AAIoBtC,SAAA;AAAA,MAAAmK,IACT;AAAA,MAAqB7H;AAAAA,IAAAA;AAE5B/C,IAAAA,QAAA+C;AAAA/C,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAND,QAAA;AAAA,IAAAkL;AAAAA,IAAA8I;AAAAA,EAAAA,IAGIhI,aAAavL,EAGhB;AACD,QAAA,CAAAwT,WAAAC,YAAA,IAAkC9T,cAAc;AAAE,MAAAS;AAAA,MAAAb,UAAA+C,UAAA;AAEpClC,SAAA;AAAA,MAAA0S,YAAAxS,KAAA;AACE,cAAA;AAAA,UAAAuP;AAAAA,QAAAA,IAAAvP;AAAU,YACdgC,UAAQ;AAAA;AAAA,QAAA;AACZ,cAAAoR,KAAW7D,OAAMjS,KAAAqE,SAAA3D;AACjBmV,qBAAaC,OAAO,MAAM;AAAA,MAAC;AAAA,MAAAV,YAAA;AAG3BS,0BAAkB;AAAA,MAAC;AAAA,MAAAR,eAAA;AAGnBQ,0BAAkB;AAAA,MAAC;AAAA,IAAA;AAE1BlU,IAAAA,QAAA+C;AAAA/C,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAZDoU,gBAAcvT,EAYb;AAAC,MAAAE;AAAA,MAAAgG;AAAA,MAAA/G,GAAA,CAAA,MAAAgU,UAAAhU,UAAAiU,aAAAjU,GAAA,CAAA,MAAA+T,eAAA;AAEQhT,SAAAA,MAAA;AACNgT,oBAAcC,UAAUC,SAAS;AAAA,IAAC;AACnClN,SAAA,CAACiN,QAAQC,WAAWF,aAAa;AAAC/T,IAAAA,QAAAgU;AAAAhU,IAAAA,QAAAiU;AAAAjU,IAAAA,QAAA+T;AAAA/T,IAAAA,QAAAe;AAAAf,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAhG,SAAAf,GAAA,CAAA;AAAA+G,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAFrCc,YAAUC,IAEPgG,EAAkC;AAAC,MAElC,CAACkN,aAAalR,UAAQ;AAAA,WAAA;AAAA,EAAA;AAOd,QAAAiE,KAAAgN,SACM,gGACA;AAA8E,MAAA/M;AAAA,MAAAjH,UAAAgH,IAAA;AAJ7EC,SAAAxE,IACP,8IACAuE,EAGJ;AAAChH,IAAAA,QAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA4I;AAAA,MAAA5I,GAAA,EAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AACD2H,sCAAe,WAAA,mBACX,8BAAA,QAAA,EAAgB,WAAA,6BAA4B,UAAA,kCAAA,CAE5C,EAAA,CACJ;AAAM5I,IAAAA,SAAA4I;AAAAA,EAAA,OAAA;AAAAA,SAAA5I,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA6I;AAAA,MAAA7I,GAAA,EAAA,MAAAkL,cAAAlL,WAAAiH,IAAA;AAZV4B,sCACSqC,KAAAA,YACM,WAAAjE,IAMX2B,UAAAA,IAKJ;AAAM5I,IAAAA,SAAAkL;AAAAlL,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAA6I;AAAAA,EAAA,OAAA;AAAAA,SAAA7I,GAAA,EAAA;AAAA,EAAA;AAAA,SAbN6I;AAaM;AChrBP,SAAAwL,kBAAAtU,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAA2B,QAAA;AAAA,IAAA8B;AAAAA,IAAAuS;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAA1U;AAO9B,QAAA;AAAA,IAAAuI,GAAAA;AAAAA,EAAAA,IAAcC,eAAAA;AACd,QAAA,CAAAhG,MAAAmS,OAAA,IAAwBtU,SAASkU,WAAW;AAC5C,QAAA,CAAA1B,OAAA+B,QAAA,IAA0BvU,aAA4B;AACtD,QAAAwU,WAAiBrT,OAAA,IAA0D;AAAE,MAAAd;AAAA,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAAsU,eAAAtU,UAAA+B,MAAA;AAEnEtB,SAAAA,MAAA;AAAA,UACFsB,MAAI;AACJ2S,gBAAQJ,WAAW;AACnBK,qBAAa;AAEbE,mBAAA,MAAA;AAAA,cACQD,SAAQlS,SAAA;AACRkS,qBAAQlS,QAAAoS,MAAAA;AACRF,qBAAQlS,QAAAqS,OAAAA;AAAAA,UAAiB;AAAA,QAAA,GAAA,GAE3B;AAAA,MAAC;AAAA,IAAA;AAEZlU,IAAAA,MAAA,CAACyT,aAAavS,IAAI;AAAC/B,IAAAA,QAAAsU;AAAAtU,IAAAA,QAAA+B;AAAA/B,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAJ,SAAAT,GAAA,CAAA;AAAAa,IAAAA,MAAAb,GAAA,CAAA;AAAA,EAAA;AAZtBc,YAAUL,IAYPI,GAAmB;AAAC,MAAAE;AAAA,MAAAf,GAAA,CAAA,MAAAuU,sBAAAvU,UAAAsI,IAAA;AAEEvH,SAAAiU,CAAAA,UAAA;AACrB,YAAAhC,UAAgBgC,MAAKC,OAAAjS;AACrB0R,cAAQ1B,OAAO;AAAC,UAAA,CACXA,QAAOkC,QAAO;AACfP,iBAASrM,GAAE,wBAAwB,CAAC;AAAA,MAAC,OAAA;AAAA,YAC9BiM,mBAAkB/N,SAAUwM,QAAOkC,KAAAA,CAAO,GAAC;AAClDP,mBAASrM,GAAE,yBAAyB,CAAC;AAAA,QAAC,OAAA;AAEtCqM,uBAAa;AAAA,QAAC;AAAA,MAAA;AAAA,IAAA;AAErB3U,IAAAA,QAAAuU;AAAAvU,IAAAA,QAAAsI;AAAAtI,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAVD,QAAAmV,mBAAyBpU;AAUvB,MAAAgG;AAAA,MAAA/G,UAAA4S,SAAA5S,GAAA,CAAA,MAAAuU,sBAAAvU,GAAA,CAAA,MAAAuC,QAAAvC,GAAA,EAAA,MAAAwU,WAAAxU,WAAAyU,YAAAzU,GAAA,EAAA,MAAAsI,IAAA;AAEiBvB,SAAAA,MAAA;AACf,YAAAqO,cAAoB7S,KAAI2S,KAAAA;AAAQ,UAAA,CAC3BE,aAAW;AACZT,iBAASrM,GAAE,wBAAwB,CAAC;AAAC;AAAA,MAAA;AAAA,UAGrCiM,mBAAkB/N,SAAU4O,WAAW,GAAC;AACxCT,iBAASrM,GAAE,yBAAyB,CAAC;AAAC;AAAA,MAAA;AAAA,UAAA,CAGrCsK,OAAK;AACN6B,iBAASW,WAAW;AACpBZ,gBAAAA;AAAAA,MAAS;AAAA,IAAA;AAEhBxU,IAAAA,QAAA4S;AAAA5S,IAAAA,QAAAuU;AAAAvU,IAAAA,QAAAuC;AAAAvC,IAAAA,SAAAwU;AAAAxU,IAAAA,SAAAyU;AAAAzU,IAAAA,SAAAsI;AAAAtI,IAAAA,SAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,EAAA;AAAA,EAAA;AAdD,QAAAqV,aAAmBtO;AAcjB,MAAAC;AAAA,MAAAhH,GAAA,EAAA,MAAAuU,sBAAAvU,GAAA,EAAA,MAAAqV,cAAArV,GAAA,EAAA,MAAAuC,QAAAvC,WAAAsI,IAAA;AAEoBtB,SAAAsO,CAAAA,YAAA;AAAA,UACdN,QAAKO,QAAS,SAAO;AACrBP,gBAAKtO,eAAAA;AACL,cAAA8O,gBAAoBjT,KAAI2S,KAAAA;AAGxB,YAAAO,eAAA;AAAwB,YAAA,CACnBL,eAAW;AACZK,yBAAenN,GAAE,wBAAwB;AAAA,QAA7B,OAAA;AAAA,cACLiM,mBAAkB/N,SAAU4O,aAAW,GAAC;AAC/CK,2BAAenN,GAAE,yBAAyB;AAAA,UAA9B;AAAA,QAAA;AAAA,YAGZ,CAACmN,gBAAgBL,eAAW;AAC5BC,qBAAAA;AAAAA,QAAY,OAAA;AAAA,cACLI,cAAY;AACnBd,qBAASc,YAAY;AAAA,UAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAGjCzV,IAAAA,SAAAuU;AAAAvU,IAAAA,SAAAqV;AAAArV,IAAAA,SAAAuC;AAAAvC,IAAAA,SAAAsI;AAAAtI,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAnBD,QAAA0V,gBAAsB1O;AAmBpB,MAAA,CAQGjF,MAAI;AAAA,WAAA;AAAA,EAAA;AAAA,MAAAkF;AAAA,MAAAjH,WAAAsI,IAAA;AAIarB,SAAAqB,GAAE,cAAc;AAACtI,IAAAA,SAAAsI;AAAAtI,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA4I;AAAA,MAAA5I,WAAAiH,IAAA;AAA/B2B,SAAA,oBAAC,eAAa3B,UAAAA,GAAAA,CAAkB;AAAcjH,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAA4I;AAAAA,EAAA,OAAA;AAAAA,SAAA5I,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA6I;AAAA,MAAA7I,WAAAsI,IAAA;AAI/BO,SAAAP,GAAE,kBAAkB;AAACtI,IAAAA,SAAAsI;AAAAtI,IAAAA,SAAA6I;AAAAA,EAAA,OAAA;AAAAA,SAAA7I,GAAA,EAAA;AAAA,EAAA;AAIrB,QAAA+I,OAAE6J;AACS,QAAA5J,MAAA4J,QAAQ,qBAAkBnT;AAAY,MAAAwJ;AAAA,MAAAjJ,WAAA0V,iBAAA1V,GAAA,EAAA,MAAAmV,oBAAAnV,GAAA,EAAA,MAAAuC,QAAAvC,GAAA,EAAA,MAAAgJ,OAAAhJ,WAAA6I,MAAA7I,GAAA,EAAA,MAAA+I,IAAA;AAP5DE,8BAAC,WAAA,EACa2L,UACH,OAAA/L,IACAtG,OAAAA,MACG4S,UAAAA,kBACCO,WAAAA,eACJ,OAAA3M,IACW,oBAAAC,KAAsC;AAC1DhJ,IAAAA,SAAA0V;AAAA1V,IAAAA,SAAAmV;AAAAnV,IAAAA,SAAAuC;AAAAvC,IAAAA,SAAAgJ;AAAAhJ,IAAAA,SAAA6I;AAAA7I,IAAAA,SAAA+I;AAAA/I,IAAAA,SAAAiJ;AAAAA,EAAA,OAAA;AAAAA,UAAAjJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkJ;AAAA,MAAAlJ,WAAA4S,OAAA;AACD1J,UAAA0J,SAAS,oBAAA,KAAA,EAAM,IAAA,oBAA0B,OAAA;AAAA,MAAA+C,SAAW;AAAA,IAAA,GAAW/C,UAAAA,OAAM;AAAI5S,IAAAA,SAAA4S;AAAA5S,IAAAA,SAAAkJ;AAAAA,EAAA,OAAA;AAAAA,UAAAlJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAoJ;AAAA,MAAApJ,GAAA,EAAA,MAAAiJ,OAAAjJ,WAAAkJ,KAAA;AAV9EE,+BAAC,eAAA,EACGH,UAAAA;AAAAA,MAAAA;AAAAA,MASCC;AAAAA,IAAAA,GACL;AAAgBlJ,IAAAA,SAAAiJ;AAAAjJ,IAAAA,SAAAkJ;AAAAlJ,IAAAA,SAAAoJ;AAAAA,EAAA,OAAA;AAAAA,UAAApJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAqJ;AAAA,MAAArJ,WAAAsI,IAAA;AAIPe,UAAAf,GAAE,QAAQ;AAACtI,IAAAA,SAAAsI;AAAAtI,IAAAA,SAAAqJ;AAAAA,EAAA,OAAA;AAAAA,UAAArJ,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA4V;AAAA,MAAA5V,GAAA,EAAA,MAAAwU,WAAAxU,WAAAqJ,KAAA;AAFhBuM,8BAAC,QAAA,EAAgBpB,kBACL,SAAA,QACPnL,UAAAA,KACL;AAASrJ,IAAAA,SAAAwU;AAAAxU,IAAAA,SAAAqJ;AAAArJ,IAAAA,SAAA4V;AAAAA,EAAA,OAAA;AAAAA,UAAA5V,GAAA,EAAA;AAAA,EAAA;AAEK,QAAA6V,QAAEjD,SAAK,CAAKrQ,KAAI2S,KAAAA;AAAO,MAAAY;AAAA,MAAA9V,WAAAsI,IAAA;AAChCwN,UAAAxN,GAAE,MAAM;AAACtI,IAAAA,SAAAsI;AAAAtI,IAAAA,SAAA8V;AAAAA,EAAA,OAAA;AAAAA,UAAA9V,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA+V;AAAA,MAAA/V,GAAA,EAAA,MAAAqV,cAAArV,WAAA6V,OAAA7V,GAAA,EAAA,MAAA8V,KAAA;AAFdC,8BAAC,QAAA,EAAgBV,SAAAA,YACH,UAAAQ,KACTC,UAAAA,KACL;AAAS9V,IAAAA,SAAAqV;AAAArV,IAAAA,SAAA6V;AAAA7V,IAAAA,SAAA8V;AAAA9V,IAAAA,SAAA+V;AAAAA,EAAA,OAAA;AAAAA,UAAA/V,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAgW;AAAA,MAAAhW,GAAA,EAAA,MAAA4V,OAAA5V,WAAA+V,KAAA;AARbC,+BAAC,eAAA,EACGJ,UAAAA;AAAAA,MAAAA;AAAAA,MAIAG;AAAAA,IAAAA,GAIJ;AAAgB/V,IAAAA,SAAA4V;AAAA5V,IAAAA,SAAA+V;AAAA/V,IAAAA,SAAAgW;AAAAA,EAAA,OAAA;AAAAA,UAAAhW,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiW;AAAA,MAAAjW,GAAA,EAAA,MAAA+B,QAAA/B,GAAA,EAAA,MAAAoJ,OAAApJ,GAAA,EAAA,MAAAgW,OAAAhW,WAAA4I,IAAA;AAvBpBqN,+BAAC,UAAalU,MACV6G,UAAAA;AAAAA,MAAAA;AAAAA,MACAQ;AAAAA,MAYA4M;AAAAA,IAAAA,GAUJ;AAAShW,IAAAA,SAAA+B;AAAA/B,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAAgW;AAAAhW,IAAAA,SAAA4I;AAAA5I,IAAAA,SAAAiW;AAAAA,EAAA,OAAA;AAAAA,UAAAjW,GAAA,EAAA;AAAA,EAAA;AAAA,SAxBTiW;AAwBS;AC/FV,MAAMC,qBAAqB;AAC3B,MAAMC,mBAAmB;AAEzB,SAASC,gBAAgB;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAOJ,GAAG;AAEC,QAAMrY,UAAU8B,cAAAA;AAChB,QAAM;AAAA,IAAE5B;AAAAA,EAAAA,IAA8BF;AACtC,QAAMsY,0BAA0BC,2BAAAA;AAChC,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAkBF;AAC1B,QAAMG,cAAcC,yBAAAA;AACpB,QAAM;AAAA,IAAExO,GAAAA;AAAAA,EAAAA,IAAMC,eAAAA;AAEdzH,YAAU,MAAM;AACZ+V,gBAAYE,IAAI;AAAA,MAAEF,aAAa,CAAA;AAAA,IAAA,CAAI;AAAA,EACvC,GAAG,CAACA,YAAYE,GAAG,CAAC;AAEpB,QAAM;AAAA,IACFC,mBAAmB;AAAA,IACnBvY,mBAAmBwY,uBAAuB,CAAA;AAAA,IAC1C/H,QAAQgI,8BAA8B,CAAA;AAAA,IACtCC,4BAA4BA,MAAM;AAAA,IAAC;AAAA,EAAA,IACnC7Y,0BAA0B+I,sBAAsB,CAAA;AAEpD,QAAM+P,OAAO7V,OAAqC,IAAI;AACtD,QAAM,CAAC8V,cAAcC,eAAe,IAAIlX,SAA0B,IAAI;AACtE,QAAMmX,mBAAmB3X,QAAQyX,YAAY;AAG7C,QAAMG,4BAA4B9T,QAAQ,MAAM;AAC5C,WAAO2T,eACDJ,qBAAqBvX,OAAQiB,CAAAA,MAAM0W,aAAa7Q,SAAS7F,EAAEmG,GAAG,CAAC,IAC/DmQ;AAAAA,EACV,GAAG,CAACI,cAAcJ,oBAAoB,CAAC;AAEvCnW,YAAU,MAAM;AACZsW,SAAK1U,UAAU,IAAI+U,KAAKR,sBAAsB;AAAA,MAC1CS,MAAM,CAAC,QAAQ,eAAe,SAAS,MAAM;AAAA,IAAA,CAChD;AAAA,EACL,GAAG,CAACT,oBAAoB,CAAC;AAEzB,QAAMU,eAAezV,YAAY,CAACvC,OAAe;AAC7C,QAAI,CAACA,IAAGuV,QAAQ;AACZoC,sBAAgB,IAAI;AACpB;AAAA,IACJ;AACA,UAAMM,UAAUR,KAAK1U,SAASmV,OAAOlY,GAAEuV,MAAM;AAC7CoC,oBAAgBM,UAAUA,QAAQ/Y,IAAKiZ,CAAAA,OAAMA,GAAEC,KAAKjR,GAAG,IAAI,EAAE;AAAA,EACjE,GAAG,CAAA,CAAE;AAKL,QAAM,CAACgE,OAAOuB,QAAQ,IAAIjM,SAExB,CAAA,CAAE;AACJ,QAAM,CAAC4X,gBAAgBC,iBAAiB,IAAI7X,SAGlC,IAAI;AAGd,QAAM8X,gBAAgB3W,OAAO,KAAK;AAClC,QAAM4W,qBAAqB5W,OAA6C,IAAI;AAG5E,QAAM6W,kBAAkB1U,QAAQ,MAAM;AAClC,UAAMwN,MAAMsG;AACZ,UAAMa,iBAAoD,CAAA;AAE1DnH,QAAIoH,QAAS3X,CAAAA,QAAM;AACf,YAAMoK,IACFpK,IAAE5B,SAAS,UACLoX,mBACAxV,IAAEmH,SAASoO;AACrB,OAACmC,eAAetN,CAAC,MAAM,CAAA,GAAIwG,KAAK5Q,GAAC;AAAA,IACrC,CAAC;AAGD,UAAM4X,2BAA2B7B,wBAAwBE,cAAc9Q,KAAK0S,CAAAA,OAAKA,GAAEC,SAAS,YAAY;AAExG,QAAIC;AAEJ,QAAInB,kBAAkB;AAClB,YAAMoB,UAAU,CACZ,GAAG,IAAIC,IAAI1H,IAAIrS,IAAK8B,CAAAA,QAAMA,IAAEmH,SAASoO,kBAAkB,CAAC,CAAC;AAE7DwC,qBAAeC,QACVjZ,OAAOqL,CAAAA,QAAKA,QAAMmL,sBAAsBnL,QAAMoL,gBAAgB,EAC9DtX,IAAK0D,CAAAA,UAAU;AAAA,QACZA;AAAAA,QACAyI,SAASqN,eAAe9V,IAAI,KAAK,CAAA;AAAA,MAAA,EACnC,EACD7C,OAAQqL,CAAAA,QAAMA,IAAEC,QAAQvD,MAAM;AAAA,IACvC,OAAO;AACH,YAAMoR,qBAA+B3B,4BAA4BxX,OAAOqL,SAAKA,QAAMmL,sBAAsBnL,QAAMoL,gBAAgB;AAE/HuC,qBAAeG,mBAAmBha,IAAKkM,CAAAA,SAAO;AAAA,QAC1CxI,MAAMwI;AAAAA,QACNC,SAASqN,eAAetN,GAAC,KAAK,CAAA;AAAA,MAAA,EAChC;AACF+N,aAAOpB,KAAKW,cAAc,EAAEC,QAASvN,CAAAA,QAAM;AACvC,cAAMgO,gBAAgBhO,QAAMmL,sBAAsBnL,QAAMoL;AACxD,YAAI,CAAC0C,mBAAmBrS,SAASuE,GAAC,KAAKgO,4BACtBxH,KAAK;AAAA,UACdhP,MAAMwI;AAAAA,UACNC,SAASqN,eAAetN,GAAC;AAAA,QAAA,CAC5B;AAAA,MACT,CAAC;AAGD,UAAIwN,4BAA4B,CAACG,aAAa5S,KAAKiF,SAAKA,IAAExI,SAAS2T,kBAAkB,GAAG;AACpFwC,qBAAanH,KAAK;AAAA,UACdhP,MAAM2T;AAAAA,UACNlL,SAAS,CAAA;AAAA,QAAA,CACZ;AAAA,MACL;AAEA0N,qBAAeA,aAAahZ,OACvBqL,CAAAA,QACGA,IAAEC,QAAQvD,UACTsD,IAAExI,SAAS2T,sBAAsBqC,wBAC1C;AAAA,IACJ;AAEA,UAAMS,QAAQN,aAAapR,KAAMyD,CAAAA,QAAMA,IAAExI,SAAS4T,gBAAgB;AAClE,WAAO;AAAA,MACH6B,gBAAgBgB,SAAS;AAAA,MACzBlO,OAAO4N,aAAahZ,OAAQqL,CAAAA,QAAMA,IAAExI,SAAS4T,oBAAoB,CAACM,cAAcjQ,SAASuE,IAAExI,IAAI,CAAC;AAAA,IAAA;AAAA,EAExG,GAAG,CAACiV,2BAA2BD,kBAAkBL,6BAA6BR,wBAAwBE,eAAeH,YAAY,CAAC;AAIlI3V,YAAU,MAAM;AACZ,QAAIoX,cAAcxV,SAAS;AAEvB;AAAA,IACJ;AACAuV,sBAAkBG,gBAAgBJ,cAAc;AAChD3L,aAAS+L,gBAAgBtN,KAAK;AAAA,EAClC,GAAG,CAACsN,eAAe,CAAC;AAKpB,QAAMa,cAAcA,CAChBC,YAKC;AACD7M,aAAS6M,OAAO;AAAA,EACpB;AAEA,QAAMC,0BAA0BA,CAC5BC,WACC;AAEDlB,kBAAcxV,UAAU;AAGxB,QAAIyV,mBAAmBzV,SAAS;AAC5B2W,mBAAalB,mBAAmBzV,OAAO;AAAA,IAC3C;AAGAyV,uBAAmBzV,UAAUmS,WAAW,MAAM;AAC1CqD,oBAAcxV,UAAU;AAAA,IAC5B,GAAG,GAAI;AAGP,UAAM4W,YAAsCF,OAAOva,IAAKkM,CAAAA,SAAO;AAAA,MAC3DxI,MAAMwI,IAAExI;AAAAA,MACRyI,SAASD,IAAEC,QAAQnM,IAAK8B,CAAAA,QAAMA,IAAEvB,IAAI;AAAA,IAAA,EACtC;AAEF,UAAMS,MAAgCmY,iBAChC,CACE,GAAGsB,WACH;AAAA,MACI/W,MAAMyV,eAAezV;AAAAA,MACrByI,SAASgN,eAAehN,QAAQnM,IAAK8B,CAAAA,QAAMA,IAAEvB,IAAI;AAAA,IAAA,CACpD,IAEHka;AAENnC,8BAA0BtX,GAAG;AAAA,EACjC;AAGA,QAAM0Z,aAAa7V,QAAQ,MAAM,CAC7B,GAAGoH,MAAMjM,IAAIkZ,CAAAA,SAAQA,KAAKxV,IAAI,GAC9B,GAAIyV,iBAAiB,CAACA,eAAezV,IAAI,IAAI,CAAA,CAAG,GACjD,CAACuI,OAAOkN,cAAc,CAAC;AAE1B,QAAM;AAAA,IAAEwB;AAAAA,IAAkBC;AAAAA,EAAAA,IAAyBC,mBAAmBH,YAAY,MAAM;AAExF,QAAM;AAAA,IACF5K;AAAAA,IACAM;AAAAA,IACAsE;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAP;AAAAA,IACAE;AAAAA,IACAM;AAAAA,IACAC;AAAAA,IACA3G;AAAAA,IACAwG;AAAAA,IACAtG;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAuF;AAAAA,IACAK;AAAAA,IACA3F;AAAAA,IACAC;AAAAA,EAAAA,IACArB,eAAe;AAAA,IACftB;AAAAA,IACAuB,UAAU4M;AAAAA,IACVlW,UAAU,CAACiU,oBAAoBO;AAAAA,IAC/B9K,WAAW0M;AAAAA,IACX5M,cAAexB,CAAAA,SACX3M,QAAQub,qBAAqBC,mBAAmB,mBAAmB;AAAA,MAC/DrX,MAAMwI;AAAAA,IAAAA,CACT;AAAA,IACLuB,0BAA2BuN,CAAAA,SACvBzb,QAAQub,qBAAqBC,mBAAmB,kBAAkB;AAAA,MAC9DhP,IAAIiP,KAAKjP;AAAAA,IAAAA,CACZ;AAAA,IACL4B,gBAAgBA,MACZpO,QAAQub,qBAAqBC,mBACzB,qBACJ;AAAA,EAAA,CACP;AAED,QAAM;AAAA,IACFE;AAAAA,IACAC;AAAAA,EAAAA,IACAC,iBAAAA;AAEJ,QAAM7R,cAAc,CAAC6O,oBAAoBO;AAEzC,QAAM0C,eAAe/M,kBAAkB7O,KAAKqE,SAAS3D,SAAS,UACxD,CAACmb,wBAAwBC,qBAAqB,IAC9C,CAACA,qBAAqB;AAE5B,QAAMC,eAAmC;AAAA,IAAEhc;AAAAA,EAAAA;AAC3C,QAAMic,gCAAgCvQ,QAAQ,uBAAuBsQ,YAAY;AACjF,QAAME,8BAA8BxQ,QAAQ,qBAAqBsQ,YAAY;AAC7E,QAAMG,0BAA0BzQ,QAAQ,gBAAgBsQ,YAAY;AAGpE,QAAMI,wBAAwB9W,QAAQ,MAAM;AACxC,WAAOkT,cACFlX,OAAO8Y,CAAAA,QAAKA,IAAEC,SAAS,YAAY,EACnCgC,KAAK,CAACC,GAAGC,OAAOD,EAAEE,SAAS,OAAOD,EAAEC,SAAS,GAAG;AAAA,EACzD,GAAG,CAAChE,aAAa,CAAC;AAKlB,SACI,qBAAC,OAAA,EAAI,KAAKkD,cAAc,WAAU,oCAC9B,UAAA;AAAA,IAAA,qBAAC,WAAA,EAAU,UAAS,OAEhB,UAAA;AAAA,MAAA,qBAAC,OAAA,EACG,WAAU,6FACV,OAAO;AAAA,QAAEe,KAAKd,cAAc,SAAS,MAAM;AAAA,MAAA,GAE3C,UAAA;AAAA,QAAA,oBAAC,WAAA,EACG,cAAcpC,cACd,aAAarP,GAAE,oBAAoB,GACnC,WAAS,MACT,gBAAe,UACf,WAAU,cAAA,CAAa;AAAA,QAE1B+N;AAAAA,QACAkE;AAAAA,MAAAA,GACL;AAAA,MAEA,oBAAC,gBAAA,EAAe,QAAQhD,iBAAAA,CAAiB;AAAA,MAExCjB;AAAAA,MACA+D;AAAAA,MAGD,qBAAC,YAAA,EACG,SACA,oBACA,WAAW;AAAA,QACPS,WAAW;AAAA,UACPC,UAAUC,kBAAkBC;AAAAA,UAC5BC,WAAW;AAAA,QAAA;AAAA,MACf,GAEJ,aACA,YACA,WACA,cACA,WAAWjB,cAEX,UAAA;AAAA,QAAA,oBAAC,iBAAA,EAEG,OAAOpG,YACP,UAAUsH,6BAETrQ,UAAAA,MAAMjM,IAAI,CAACuc,WAAWC,eAAe;AAClC,gBAAMC,WAAWF,UAAU7Y;AAC3B,gBAAMgZ,iBAAiBH,UAAUpQ;AAEjC,gBAAMwQ,iBAAiB;AAAA,YACnB1T,OACIwT,aAAapF,qBACPzW,SACA6b;AAAAA,YACVld;AAAAA,UAAAA;AAGJ,gBAAMqd,kBAAkBjB,sBAAsB3b,IAAI,CAAC2Z,KAAGkD,MAClD,oBAAC,eAAA,EACG,UAAA,oBAAC,IAAE,WAAF,KAAgBF,gBAAgB,GAAKhD,IAAEmD,SAAS,CAAA,EAAC,CAAG,EAAA,GADrC,cAAcL,QAAQ,IAAII,CAAC,EAE/C,CACH;AAED,cACIH,eAAe9T,WAAW,MACzBgU,gBAAgBhU,WAAW,KAAK8P,kBAEjC,QAAO;AAEX,iBACI,oBAAC,2BAEG,WAAW+D,UACX,UAAUnT,aAEV,UAAA,oBAAC,iBAAA,EACG,OACImT,aAAapF,qBACPzW,SACA6b,UAEV,WACI1H,oBAAoB0H,YACpB,CAAClO,oBAEL,2BACIA,oBAEJ,aACA,aAAa,MAAM;AACf,gBAAIjF,YAAa;AACjBoF,kCAAsB+N,QAAQ;AAAA,UAClC,GACA,WAAW9B,iBAAiB8B,QAAQ,GACpC,mBAAmB,MAAM7B,qBAAqB6B,QAAQ,GAEtD,UAAA,oBAAC,0BAAA,EACG,IAAIA,UACJ,SAASC,eAAe1c,IACnB8B,CAAAA,QAAMA,IAAEmG,GACb,GACA,2BACIsG,oBAGJ,UAAA,qBAAC,OAAA,EAAI,WAAU,yDACVmO,UAAAA;AAAAA,YAAAA,eAAe1c,IACXC,CAAAA,UACG,oBAAC,wBAAA,EAEG,OACA,SAAS,MAAM;AACX,kBAAIkW,QACA;AACJ,kBACIlW,MAAMC,SACN,aAEAiW,SACI;AAAA,uBAEJlW,MAAMC,SACN,OAEAiW,SACI;AAAA,uBAEJlW,MAAMC,SACN,QAEAiW,SACI;AAER5W,sBAAQub,qBAAqBC,mBACzB5E,OACA;AAAA,gBACI7W,MAAMW,MAAMM;AAAAA,cAAAA,CAEpB;AAAA,YACJ,EAAA,GA9BKN,MAAMgI,IAiCvB;AAAA,YACC,CAACyQ,oBACE+D,SAASM,kBACTzF,iBAAiByF,iBACjBH;AAAAA,UAAAA,EAAAA,CACR,EAAA,CACJ,GACJ,EAAA,GA9EK,SAASJ,UAAU,EA+E5B;AAAA,QAER,CAAC,EAAA,GA/GIQ,KAAKC,UAAUjI,UAAU,CAgHlC;AAAA,QAEA,oBAAC,kBAAA,EACG,UAAU1L,aACV,eAAesF,+BAA8B;AAAA,QAGjD,oBAAC,aAAA,EAAY,aAAa,OAAO,eAC5B6F,UAAAA,mBACGM,oBAAoBN,gBAAgB/Q,OACpC,oBAAC,OAAA,EACG,WAAU,6BACV,OAAO;AAAA,UACHwZ,SAAS;AAAA,UACTC,QAAQ;AAAA,QAAA,GAGZ,UAAA,oBAAC,iBAAA,EACG,OACI1I,gBAAgB/Q,SACZ2T,qBACEzW,SACA6T,gBAAgB/Q,MAE1B,WAAW,OACX,WAAS,KAAA,CAAA,EAAA,CAEjB,IACA6Q,uBACA,oBAAC,uBAAA,EACG,GAAIA,sBACJ,QAAQ5F,2BAAAA,CAA2B,IAEvC,KAAA,CACR;AAAA,MAAA,GACJ;AAAA,MAEC,CAAC+J,oBAAoBS,kBAClB,oBAAC,mBACG,OAAOA,eAAezV,MACtB,WAAWiX,iBAAiBxB,eAAezV,IAAI,GAC/C,mBAAmB,MAAMkX,qBAAqBzB,eAAezV,IAAI,GAEjE,UAAA,oBAAC,OAAA,EAAI,WAAU,yDACVyV,UAAAA,eAAehN,QAAQnM,IAAKC,CAAAA,YACzB,oBAAC,uBAAA,EAEG,GAAIA,SACJ,SAAS,MAAM;AACX,YAAIkW,UACA;AACJ,YAAIlW,QAAMC,SAAS,aACfiW,WACI;AAAA,iBACClW,QAAMC,SAAS,OACpBiW,WAAQ;AAAA,iBACHlW,QAAMC,SAAS,QACpBiW,WACI;AAER5W,gBAAQub,qBAAqBC,mBACzB5E,SACA;AAAA,UAAE7W,MAAMW,QAAMM;AAAAA,QAAAA,CAClB;AAAA,MACJ,EAAA,GAlBKN,QAAMgI,IAoBlB,GACL,EAAA,CACJ;AAAA,MAGH0P,YAAYA,SAAS3X,IAAKod,CAAAA,YACvB,oBAAC,iBAAA,EAEG,OAAOA,QAAQC,OAEdD,UAAAA,QAAQpU,SAAAA,GAHJoU,QAAQ1G,GAIjB,CACH;AAAA,MAEA+E;AAAAA,MACA/D;AAAAA,IAAAA,GACL;AAAA,IAECjJ,0CACI,mBAAA,EACG,MAAI,MACJ,aAAaA,oBACb,oBAAoBxC,MACfjM,IAAKkM,CAAAA,SAAMA,KAAExI,IAAI,EACjB7C,OAAQyc,CAAAA,OAAMA,OAAM7O,kBAAkB,GAC3C,SAAS6F,mBACT,UAAWH,CAAAA,YAAY;AACnBF,wBAAkBxF,oBAAoB0F,OAAO;AAAA,IACjD,EAAA,CAAE;AAAA,EAAA,GAGd;AAER;AC5hBO,SAAAoJ,UAAArc,IAAA;AAAA,QAAAC,KAAAC,EAAA,CAAA;AAAmB,QAAA;AAAA,IAAAtB;AAAAA,IAAA0d;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAA1c;AACtB,QAAA2c,WAAiBC,0BAAAA;AAA4B,MAAAlc;AAAA,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAAyc,oBAAAzc,GAAA,CAAA,MAAArB,eAAAqB,GAAA,CAAA,MAAA0c,YAAA1c,UAAAuc,iBAAAvc,GAAA,CAAA,MAAAsc,eAAAtc,GAAA,CAAA,MAAAqc,YAAArc,GAAA,CAAA,MAAAwc,SAAA;AAE7B/b,SAAAA,MAAA;AACZic,eAAQE,YAAA;AAAA,QAAAje;AAAAA,QAAA0d;AAAAA,QAAAC;AAAAA,QAAAC;AAAAA,QAAAC;AAAAA,QAAAC;AAAAA,MAAAA,CAA6F;AAAC,aAAA,MACzFC,SAAQG,cAAAA;AAAAA,IAAgB;AACtChc,SAAA,CAAC6b,UAAU/d,aAAa0d,UAAUC,aAAaC,eAAeC,SAASC,gBAAgB;AAACzc,IAAAA,QAAAyc;AAAAzc,IAAAA,QAAArB;AAAAqB,IAAAA,QAAA0c;AAAA1c,IAAAA,QAAAuc;AAAAvc,IAAAA,QAAAsc;AAAAtc,IAAAA,QAAAqc;AAAArc,IAAAA,QAAAwc;AAAAxc,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAJ,SAAAT,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAA,EAAA;AAH3F8c,kBAAgBrc,IAGbI,EAAwF;AAAC,SAAA;AAAA;ACOzF,SAAAkc,eAAAhd,IAAA;AAAA,QAAAC,KAAAC,EAAA,CAAA;AAAwB,QAAA;AAAA,IAAA4H;AAAAA,EAAAA,IAAA9H;AAC3B,QAAAid,WAAiBC,kBAAAA;AACjB,QAAAC,iBAAuBC,kBAAAA;AAAoB,MAEvCD,gBAAcE,gBAAA;AAAA,QAAA3c;AAAA,QAAAT,GAAA,CAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AACPR,gCAAC,wBAAA,EAA6B,MAAA,QAAA,CAAO;AAAIT,MAAAA,QAAAS;AAAAA,IAAA,OAAA;AAAAA,YAAAT,GAAA,CAAA;AAAA,IAAA;AAAA,WAAzCS;AAAAA,EAAyC;AAAA,MAAA,CAG/Cyc,gBAAcG,MAAA;AAAA,QAAA5c;AAAA,QAAAT,GAAA,CAAA,MAAAkd,kBAAAld,UAAAgd,SAAAM,YAAAC,WAAA;AACS9c,YAAAuc,SAAQM,YAAAC,aAC5B,oBAAC,aAA0B,gBAAqB;AACnDvd,MAAAA,QAAAkd;AAAAld,MAAAA,GAAA,CAAA,IAAAgd,SAAAM,YAAAC;AAAAvd,MAAAA,QAAAS;AAAAA,IAAA,OAAA;AAAAA,YAAAT,GAAA,CAAA;AAAA,IAAA;AAFD,UAAAwd,kBAAwB/c;AAEtB,QAAAI;AAAA,QAAAb,UAAAwd,iBAAA;AACK3c,sEAAkB;AAAIb,MAAAA,QAAAwd;AAAAxd,MAAAA,QAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,GAAA,CAAA;AAAA,IAAA;AAAA,WAAtBa;AAAAA,EAAsB;AAAA,MAAAJ;AAAA,MAAAT,UAAA6H,UAAA;AAG1BpH,mDAAW;AAAIT,IAAAA,QAAA6H;AAAA7H,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,SAAfS;AAAe;ACInB,SAAAgd,aAAA9B,OAAA;AAAA,QAAA3b,KAAAC,EAAA,EAAA;AACH,QAAA;AAAA,IAAAic,OAAAnc;AAAAA,IAAA2d;AAAAA,IAAAC;AAAAA,IAAAC,gBAAAnd;AAAAA,IAAAmE,UAAA/D;AAAAA,EAAAA,IAMI8a;AALA,QAAAO,QAAAnc,OAAgBN,SAAR,WAARM;AAGA,QAAA6d,iBAAAnd,OAAsBhB,iBAAtBgB;AAAsB,MAAAM;AAAA,MAAAf,UAAAa,IAAA;AACtBE,SAAAF,OAAapB,cAAboB;AAAab,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAAb,QAAA4E,WAAA7D;AAGJ,QAAAkE,sBAA4BC,uBAAAA;AAAyB,MAAA6B;AAAA,MAAA/G,UAAA0d,QAAA;AAEhC3W,SAAA2W,8BAAW,QAAA,CAAA,CAAM;AAAG1d,IAAAA,QAAA0d;AAAA1d,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAAzC,QAAA6d,eAAqB9W;AAAqB,MAAAC;AAAA,MAAAhH,GAAA,CAAA,MAAAiF,uBAAAjF,UAAA2d,UAAA3d,GAAA,CAAA,MAAAkc,OAAA;AACrBlV,SAAA2W,8BAChB,QAAA,EACUzB,OACU,iBAAAjX,oBAAmBG,SAAU,WAAW,OAAO,IAAA,CAAG;AAE1EpF,IAAAA,QAAAiF;AAAAjF,IAAAA,QAAA2d;AAAA3d,IAAAA,QAAAkc;AAAAlc,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AALD,QAAA8d,eAAqB9W;AAKnB,MAAAC;AAAA,MAAAjH,UAAA4E,UAAA;AAIMqC,6BAAC,mBAA0BrC,SAAAA,CAAQ;AAAI5E,IAAAA,QAAA4E;AAAA5E,IAAAA,QAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA4I;AAAA,MAAAC;AAAA,MAAA7I,GAAA,EAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AAGvC2H,6BAAC,QAAA,EAAM;AACPC,6BAAC,aAAA,EAAW;AAAG7I,IAAAA,SAAA4I;AAAA5I,IAAAA,SAAA6I;AAAAA,EAAA,OAAA;AAAAD,SAAA5I,GAAA,EAAA;AAAA6I,SAAA7I,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA+I;AAAA,MAAA/I,GAAA,EAAA,MAAA6d,gBAAA7d,GAAA,EAAA,MAAA8d,gBAAA9d,GAAA,EAAA,MAAA4d,kBAAA5d,WAAAiH,IAAA;AALnB8B,SAAA,qBAAC,YAAyB6U,gBACtB3W,UAAAA;AAAAA,MAAAA;AAAAA;MAEC6W;AAAAA,MACDlV;AAAAA,MACAC;AAAAA,IAAAA,GACJ;AAAW7I,IAAAA,SAAA6d;AAAA7d,IAAAA,SAAA8d;AAAA9d,IAAAA,SAAA4d;AAAA5d,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAA+I;AAAAA,EAAA,OAAA;AAAAA,SAAA/I,GAAA,EAAA;AAAA,EAAA;AAAA,SANX+I;AAMW;ACxDZ,SAAAgV,cAAA;AAAA,QAAA/d,KAAAC,EAAA,EAAA;AAEH,QAAA4E,WAAiBC,cAAAA;AACjB,QAAAkZ,qBAA2Bva,gCAAAA;AAC3B,QAAAsB,gBAAsBC,iBAAAA;AACtB,QAAA6R,cAAoBC,yBAAAA;AAEpB,QAAAmH,OAAapZ,SAAQoZ;AACrB,QAAAC,cAAoBD,KAAIzX,SAAU,OAAO;AAAE,MAAAzG;AAAA,MAAAC,UAAAie,MAAA;AAC7Ble,SAAAke,KAAIzX,SAAU,MAAM,KAAKyX,KAAIzX,SAAU,WAAW;AAACxG,IAAAA,QAAAie;AAAAje,IAAAA,QAAAD;AAAAA,EAAA,OAAA;AAAAA,SAAAC,GAAA,CAAA;AAAA,EAAA;AAAjE,QAAAme,QAAcpe;AAAoD,MAAAU;AAAA,MAAAT,UAAAie,MAAA;AACnDxd,SAAAwd,KAAIzX,SAAU,OAAO;AAACxG,IAAAA,QAAAie;AAAAje,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAArC,QAAAoe,SAAe3d;AAEf,QAAA8E,WAAiBV,SAAQU;AAAU,MAAA9G;AAAA,MAAAoC;AAAA,MAAAE;AAAA,MAAAgG;AAAA,MAAA/G,GAAA,CAAA,MAAA6W,eAAA7W,UAAAge,mBAAArf,eAAAqB,GAAA,CAAA,MAAAuF,YAAAvF,UAAA+E,eAAA;AACnC,UAAAsZ,iBAAuBtZ,cAAauZ,kBAAmB/Y,QAAQ;AAAE,QAAAyB;AAAA,QAAAhH,GAAA,EAAA,MAAAge,mBAAArf,aAAA;AAIhDqI,YAAAgX,mBAAkBrf,eAAA,CAAA;AAAkBqB,MAAAA,GAAA,EAAA,IAAAge,mBAAArf;AAAAqB,MAAAA,SAAAgH;AAAAA,IAAA,OAAA;AAAAA,YAAAhH,GAAA,EAAA;AAAA,IAAA;AAFrDvB,wBAA0BC,6BAAA;AAAA,MAAAP,MAChBkgB;AAAAA,MAAc1f,aACPqI;AAAAA,IAAAA,CAChB;AAEDlG,SAAAA;AAAUiG,SAAAA,MAAA;AACN,YAAAwX,YAAkB9f,kBAAkBA,kBAAiBgJ,SAAA,CAAW;AAChE,YAAA+W,sBAA4BD,WAASxf,SAAW;AAEhD8X,kBAAWE,IAAA;AAAA,QAAAF,aACMpY,kBAAiBI,IAAA,CAAAC,OAAA2F,UAAA;AAC1B,gBAAAga,cAAoBha,UAAUhG,kBAAiBgJ,SAAA;AAAY,cAEvD3I,MAAKC,SAAU,UAAQ;AAAA,mBAAA;AAAA,cAAAmd,OAEZwC,OAAO5f,MAAKQ,QAAS;AAAA,cAACwH,KACxB/B,cAAa4Z,uBAAwB7f,MAAKX,IAAK;AAAA,YAAA;AAAA,UAAC,OAAA;AAAA,gBAGlDW,MAAKC,SAAU,eAAa;AAAA,qBAAA;AAAA,gBAAAmd,OAExBwC,OAAO5f,MAAKiH,KAAAxD,QAAczD,MAAKiH,KAAAwP,GAAS;AAAA,gBAACzO,KAC3C/B,cAAa4Z,uBAAwB7f,MAAKX,IAAK;AAAA,cAAA;AAAA,YAAC,OAAA;AAAA,kBAGlDW,MAAKC,SAAU,cAAY;AAGlC,sBAAA6f,YAAkBH,eAAeD;AAAoB,uBAAA;AAAA,kBAAAtC,OAE1Cpd,MAAKI,WAAAqD;AAAAA,kBAAAuE,KACP/B,cAAa4Z,uBAAwB7f,MAAKX,IAAK;AAAA,kBAACyM,IACjD9L,MAAKX;AAAAA,kBAAA,GACLygB,YAAS;AAAA,oBAAAC,OAAA;AAAA,kBAAA,IAAA,CAAA;AAAA,gBAAA;AAAA,cAAuB,OAAA;AAAA,sBAAA,IAAArgB,MAGxB,kCAAkC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,CAEzD;AAAA,MAAA,CACJ;AAAA,IAAC;AACFqC,SAAApC,kBAAiBI,IAAA6I,KAAwB,EAACoX,KAAM,GAAG;AAAC9e,IAAAA,QAAA6W;AAAA7W,IAAAA,GAAA,CAAA,IAAAge,mBAAArf;AAAAqB,IAAAA,QAAAuF;AAAAvF,IAAAA,QAAA+E;AAAA/E,IAAAA,QAAAvB;AAAAuB,IAAAA,QAAAa;AAAAb,IAAAA,SAAAe;AAAAf,IAAAA,SAAA+G;AAAAA,EAAA,OAAA;AAAAtI,wBAAAuB,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAAe,SAAAf,GAAA,EAAA;AAAA+G,SAAA/G,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,WAAAa,IAAA;AAArDmG,UAACnG,EAAoD;AAACb,IAAAA,SAAAa;AAAAb,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAnCzDc,KAAUiG,IAmCPC,EAAsD;AAAC,MAEtDmX,OAAK;AAAA,QAAAlX;AAAA,QAAAjH,GAAA,EAAA,MAAAvB,qBAAAuB,WAAAuF,UAAA;AACE0B,gCAAC,uBAAA,EACM1B,UACS9G,mBACZ,OAAA,MACC,QAAA,OAAK;AACfuB,MAAAA,SAAAvB;AAAAuB,MAAAA,SAAAuF;AAAAvF,MAAAA,SAAAiH;AAAAA,IAAA,OAAA;AAAAA,YAAAjH,GAAA,EAAA;AAAA,IAAA;AAAA,WALKiH;AAAAA,EAKL;AAAA,MAGFxI,kBAAiBgJ,WAAA,KAAiBhJ,kBAAiB,CAAA,EAAAM,SAAa,cAAY;AAAA,QAAAkI;AAAA,QAAA2B;AAAA,QAAA5I,GAAA,EAAA,MAAAge,sBAAAhe,GAAA,EAAA,MAAAvB,kBAAA,CAAA,EAAAmM,MAAA5K,GAAA,EAAA,MAAAvB,qBAAAW,MAAA;AAO7DwJ,WAAA5H,uBAAAC,iCAAyB;AAAC8d,WAAA;AANrC7f,YAAAA;AACJA,qBAAa8e,mBAAkB7e,cAAeV,kBAAiB,CAAA,EAAAmM,EAAM;AAA3D,YAAA,CACL1L,YAAU;AACXA,uBAAa8e,mBAAkB7e,cAAeV,kBAAiB,CAAA,EAAAW,IAAQ;AAAA,QAA7D;AAAA,YAAA,CACTF,YAAU;AAAA,cAAA,CACN8e,mBAAkBgB,aAAA;AAAA,gBAAAnW;AAAA,gBAAA7I,GAAA,EAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AACZ4H,wCAAC,wBAAA,EAAsB;AAAG7I,cAAAA,SAAA6I;AAAAA,YAAA,OAAA;AAAAA,oBAAA7I,GAAA,EAAA;AAAA,YAAA;AAA1B4I,iBAAAC;AAA0B,kBAAAkW;AAAAA,UAAA;AAE9BnW,eAAA;AAAI,gBAAAmW;AAAAA,QAAA;AAAA,YAAAlW;AAAA,YAAA7I,GAAA,EAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AAIU4H,eAAA,CAAA;AAAE7I,UAAAA,SAAA6I;AAAAA,QAAA,OAAA;AAAAA,eAAA7I,GAAA,EAAA;AAAA,QAAA;AAFpBiH,kCAAC,sBAAA,EAEiB,qBAAA4B,IACf,MAAA3J,WAAUE,MACL,WAAA,MAAI,GACXF,YACK,SAAA+f,QAAQ/f,WAAUggB,OAAQ,KAL9B,mBAAmBhgB,WAAUE,IAAA,EAKE;AAAA,MAAI;AAAAY,MAAAA,SAAAge;AAAAhe,MAAAA,GAAA,EAAA,IAAAvB,kBAAA,CAAA,EAAAmM;AAAA5K,MAAAA,GAAA,EAAA,IAAAvB,kBAAA,CAAA,EAAAW;AAAAY,MAAAA,SAAAiH;AAAAjH,MAAAA,SAAA4I;AAAAA,IAAA,OAAA;AAAA3B,YAAAjH,GAAA,EAAA;AAAA4I,WAAA5I,GAAA,EAAA;AAAA,IAAA;AAAA,QAAA4I,OAAA5H,uBAAAC,IAAA,6BAAA,GAAA;AAAA,aAAA2H;AAAAA,IAAA;AAAA,WANrC3B;AAAAA,EAMqC;AAAA,MAG5CiX,aAAW;AACX,UAAAiB,sBAA4B,CAAA,GAAI1gB,iBAAiB,EAAA2gB,QAAAA,EAAW9X,KAAA+X,MAA4C;AAAE,QACtGF,qBAAmB;AAAA,UAAAlY;AAAA,UAAA2B;AAAA,UAAA5I,GAAA,EAAA,MAAAge,sBAAAhe,WAAAvB,kBAAA,CAAA,GAAA;AAQJmK,aAAA5H,uBAAAC,iCAAyB;AAACqe,aAAA;AAPrCpgB,cAAAA;AACJ,gBAAAqgB,aAAmB9gB;AACnBS,yBAAa8e,mBAAkB7e,cAAeogB,WAAU3U,EAAG;AAAjD,cAAA,CACL1L,cAAU;AACXA,2BAAa8e,mBAAkB7e,cAAeogB,WAAUngB,IAAK;AAAA,UAAnD;AAAA,cAAA,CACTF,cAAU;AAAA,gBAAA,CACN8e,mBAAkBgB,aAAA;AAAA,kBAAAnW;AAAA,kBAAA7I,GAAA,EAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AACZ4H,0CAAC,wBAAA,EAAsB;AAAG7I,gBAAAA,SAAA6I;AAAAA,cAAA,OAAA;AAAAA,sBAAA7I,GAAA,EAAA;AAAA,cAAA;AAA1B4I,mBAAAC;AAA0B,oBAAAyW;AAAAA,YAAA;AAE9B1W,iBAAA;AAAI,kBAAA0W;AAAAA,UAAA;AAAA,cAAAzW;AAAA,cAAA7I,GAAA,EAAA,MAAAgB,uBAAAC,IAAA,2BAAA,GAAA;AAIU4H,iBAAA,CAAA;AAAE7I,YAAAA,SAAA6I;AAAAA,UAAA,OAAA;AAAAA,iBAAA7I,GAAA,EAAA;AAAA,UAAA;AAFpBiH,oCAAC,sBAAA,EAEiB,qBAAA4B,IACf,MAAA3J,aAAUE,MACL,WAAA,MAAI,GACXF,cACK,SAAA+f,QAAQ/f,aAAUggB,OAAQ,KAL9B,mBAAmBhgB,aAAUE,IAAA,EAKE;AAAA,QAAI;AAAAY,QAAAA,SAAAge;AAAAhe,QAAAA,SAAAvB,kBAAA,CAAA;AAAAuB,QAAAA,SAAAiH;AAAAjH,QAAAA,SAAA4I;AAAAA,MAAA,OAAA;AAAA3B,cAAAjH,GAAA,EAAA;AAAA4I,aAAA5I,GAAA,EAAA;AAAA,MAAA;AAAA,UAAA4I,OAAA5H,uBAAAC,IAAA,6BAAA,GAAA;AAAA,eAAA2H;AAAAA,MAAA;AAAA,aANrC3B;AAAAA,IAMqC;AAAA,EAAA;AAAA,MAAAA;AAAA,MAAAjH,GAAA,EAAA,MAAAoe,UAAApe,GAAA,EAAA,MAAAme,SAAAne,GAAA,EAAA,MAAAvB,qBAAAuB,WAAAuF,UAAA;AAI7C0B,SAAA,oBAAC,uBAAA,EACM1B,UACS9G,mBACZ0f,OACCC,QAAM;AAChBpe,IAAAA,SAAAoe;AAAApe,IAAAA,SAAAme;AAAAne,IAAAA,SAAAvB;AAAAuB,IAAAA,SAAAuF;AAAAvF,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,SALKiH;AAKL;AAnHC,SAAAoY,OAAAG,SAAA;AAAA,SAuF8E1gB,QAAKC,SAAU;AAAY;AAvFzG,SAAA2I,MAAAC,SAAA;AAAA,SAuDgC7I,QAAKX;AAAA;AAgE5C,SAASshB,sBAAsBtB,OAAgBuB,gBAA6G;AACxJ,MAAIvB,OAAO;AACP,WAAO1e;AAAAA,EACX,WAAWigB,gBAAgB;AACvB,QAAIA,eAAe3gB,SAAS,eAAe;AACvC,aAAO2gB,eAAe3Z,KAAKwP;AAAAA,IAC/B,WAAWmK,eAAe3gB,SAAS,cAAc;AAC7C,aAAO2gB,eAAe9U,MAAM8U,eAAetgB;AAAAA,IAC/C;AAAA,EACJ;AACA,SAAOK;AACX;AAEA,SAASkgB,sBAAsB;AAAA,EAC3Bpa;AAAAA,EACA9G;AAAAA,EACA0f;AAAAA,EACAC;AAMJ,GAAG;AAEC,QAAMJ,qBAAqBva,gCAAAA;AAC3B,QAAMsB,gBAAgBC,iBAAAA;AACtB,QAAMmB,WAAWC,YAAAA;AAEjB,QAAMiY,iBAAiBtZ,cAAcuZ,kBAAkB/Y,QAAQ;AAG/D,QAAMqa,UAAUre,OAAO,KAAK;AAE5B,QAAMse,kBAAkB,CAAC,GAAGphB,iBAAiB,EAAE2gB,QAAAA,EAAU9X,KAAMxI,CAAAA,UAAUA,MAAMC,SAAS,QAAQ;AAChG,QAAM+gB,+BAA+BD,kBAAkBphB,kBAAkBshB,MAAMthB,kBAAkBuhB,QAAQH,eAAe,IAAI,CAAC,IAAI,CAAA;AAEjI,QAAMH,iBAAiB,CAAC,GAAGI,4BAA4B,EAAEV,QAAAA,EAAU9X,KAC9DxI,CAAAA,YAAUA,QAAMC,SAAS,iBAAiBD,QAAMC,SAAS,YAC9D;AAEA,QAAMO,WAAWugB,mBAAmB,cAAcA,kBAAkBA,gBAAgBvgB,WAAWG;AAE/F,QAAMwgB,SAASR,sBAAsBtB,OAAOuB,cAAc;AAC1D,QAAM,CAACQ,aAAaC,cAAc,IAAI/f,SAA6B6f,MAAM;AAEzE,QAAMG,sBAAsBpC,mBAAmBqC,uBAAuBhC,cAAc;AACpFvd,YAAU,MAAM;AACZ,QAAImf,WAAWC,aAAa;AACxBC,qBAAeF,MAAM;AAAA,IACzB;AAAA,EACJ,GAAG,CAACA,MAAM,CAAC;AAEX,QAAMva,WAAW,CAACpG,YAAY6e,QACxB5Y,WACAA,SAAS+a,UAAU,GAAG/a,SAASgb,YAAY,IAAIjhB,QAAQ,EAAE,CAAC;AAEhE,QAAMkhB,aAAa9a,WAAW,IAAIpG,QAAQ;AAE1C,MAAImhB,UAA+BhhB;AACnC,MAAI;AACAghB,cAAUC,WAAW,CAAC;AAAA,MAClBC;AAAAA,IAAAA,MACE;AACF,UAAIA,aAAapb,SAASM,WAAW2a,UAAU,EAC3C,QAAO;AACX,aAAOZ,QAAQld;AAAAA,IACnB,CAAC;AAAA,EACL,SAAS/B,GAAG;AAAA,EACR;AAGJ,QAAMwe,sBAAsB,CAAC,GAAG1gB,iBAAiB,EAAE2gB,QAAAA,EAAU9X,KAAMxI,CAAAA,YAAUA,QAAMC,SAAS,YAAY;AAExG,MAAIof,SAAS,CAACgB,qBAAqB;AAC/B,UAAM,IAAI3gB,MAAM,iDAAiD;AAAA,EACrE;AAEA,MAAI,CAAC2f,SAAS,CAAC0B,iBAAiB;AAC5B,QAAI,CAAC7B,mBAAmBgB,aAAa;AACjC,iCAAQ,wBAAA,EAAsB;AAAA,IAClC;AACA,+BAAQ,cAAA,EAAY;AAAA,EACxB;AAEA,QAAM9f,aAAaif,QACZgB,uBAAuB,gBAAgBA,sBAAsBA,oBAAoBjgB,aAAaO,SAC9FogB,mBAAmB,sBAAsBA,kBAAkBA,gBAAgBe,mBAAmBnhB;AACrG,QAAMohB,aAAa1C,QAAQgB,oBAAqB/f,OAAOygB,gBAAiBzgB;AACxE,QAAM0hB,iBAAiB/b,cAAcgc,yBAAyBF,UAAU;AACxE,SAAO,qBAAA,UAAA,EACH,UAAA;AAAA,IAAA,oBAAC,gBAAA,EAEG,UAAU1C,QAAQ1e,SAAYH,UAC9B,YACA,QAAQ,eACR,MAAMwhB,gBACN,MAAM1C,QACN,aAAa8B,eAAezgB,QAC5B,kBAAmBuhB,cAAapB,QAAQld,UAAUse,UAClD,SAAUC,CAAAA,WAAW;AACjB,YAAMC,iBAAiBD,OAAOf;AAC9B,YAAMiB,cAAcF,OAAO3hB;AAC3B,UAAI4hB,gBAAgB;AAChB/a,iBAAS,GAAGT,QAAQ,IAAIyb,WAAW,IAAID,cAAc,IAAI;AAAA,UAAEE,SAAS;AAAA,QAAA,CAAM;AAAA,MAC9E,OAAO;AACHjb,iBAAS,GAAGT,QAAQ,IAAIyb,WAAW,IAAI;AAAA,UAAEC,SAAS;AAAA,QAAA,CAAM;AAAA,MAC5D;AAAA,IACJ,GACA,aAAcH,CAAAA,aAAW;AACrBd,qBAAec,SAAOf,WAAW;AACjC,UAAI/B,OAAO;AACP;AAAA,MACJ;AACA,YAAM+C,mBAAiBD,SAAOf;AAC9B,UAAIgB,kBAAgB;AAChB/a,iBAAS,GAAGT,QAAQ,IAAIpG,QAAQ,IAAI4hB,gBAAc,IAAI;AAAA,UAAEE,SAAS;AAAA,QAAA,CAAM;AAAA,MAC3E,OAAO;AACHjb,iBAAS,GAAGT,QAAQ,IAAIpG,QAAQ,IAAI;AAAA,UAAE8hB,SAAS;AAAA,QAAA,CAAM;AAAA,MACzD;AAAA,IACJ,GACA,oBAAA,GA7BKliB,WAAWE,OAAO,OAAO+e,QAAQ,QAASC,SAAS9e,WAAW,UAAUA,SA6BpC;AAAA,wBAG5C,sBAAA,EACG,MAAMmhB,SAAS1O,UAAU,WACzB,UAAU,MAAM0O,SAASY,UAAAA,GACzB,cAAc,MAAMZ,SAASa,QAAAA,GAC7B,MAAM,2CAAA,CAA2C;AAAA,EAAA,GAEzD;AACJ;AClQO,SAAAC,gBAAAxhB,IAAA;AAAA,QAAAC,KAAAC,EAAA,CAAA;AAAyB,QAAA;AAAA,IAAA8F;AAAAA,EAAAA,IAAAhG;AAI5B,QAAA8W,cAAoBC,yBAAAA;AACpB,QAAA/R,gBAAsBC,iBAAAA;AAAmB,MAAAvE;AAAA,MAAAT,GAAA,CAAA,MAAA6W,eAAA7W,GAAA,CAAA,MAAA+E,iBAAA/E,GAAA,CAAA,MAAA+F,KAAAxD,QAAAvC,GAAA,CAAA,MAAA+F,KAAA3G,MAAA;AAE/BqB,SAAAA,MAAA;AACNoW,kBAAWE,IAAA;AAAA,QAAAF,aAAA,CAAA;AAAA,UAAAqF,OAEInW,KAAIxD;AAAAA,UAAAuE,KACN/B,cAAakB,gBAAiBF,KAAI3G,IAAK;AAAA,QAAA,CAAC;AAAA,MAAA,CAEpD;AAAA,IAAC;AACLY,IAAAA,QAAA6W;AAAA7W,IAAAA,QAAA+E;AAAA/E,IAAAA,GAAA,CAAA,IAAA+F,KAAAxD;AAAAvC,IAAAA,GAAA,CAAA,IAAA+F,KAAA3G;AAAAY,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAa;AAAA,MAAAb,UAAA+E,iBAAA/E,GAAA,CAAA,MAAA+F,KAAA3G,MAAA;AAAEyB,SAAA,CAACkF,KAAI3G,MAAO2F,aAAa;AAAC/E,IAAAA,QAAA+E;AAAA/E,IAAAA,GAAA,CAAA,IAAA+F,KAAA3G;AAAAY,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAP7Bc,YAAUL,IAOPI,EAA0B;AAAC,SAEvBkF,KAAIA;AAAA;ACAf,SAASyb,eAAe;AACpB,QAAM;AAAA,IAAElZ,GAAAA;AAAAA,EAAAA,IAAMC,eAAAA;AACd,QAAMsO,cAAcC,yBAAAA;AACpBhW,YAAU,MAAM;AACZ+V,gBAAYE,IAAI;AAAA,MACZF,aAAa,CAAC;AAAA,QAAEqF,OAAO5T,GAAE,kBAAkB;AAAA,QAAGxB,KAAK;AAAA,MAAA,CAAa;AAAA,IAAA,CACnE;AAAA,EAEL,GAAG,CAAA,CAAE;AACL,6BAAQ,kBAAA,EAAgB;AAC5B;AA+BO,SAAS2a,gBAAgB;AAAA,EAAE5Z;AAAAA,EAAU6Z;AAA6B,GAAG;AACxE,QAAM1E,WAAWC,kBAAAA;AACjB,QAAM0E,iBAAiBC,oCAAAA;AACvB,QAAMtjB,4BAA4B6I,6BAAAA;AAElC,QAAM0a,cAAc7E,SAAS8E,WAAWzF,gCAAa,iBAAA,EAAe;AACpE,QAAM0F,iBAAiB/E,SAASgF,cAAc3F;AAE9C,QAAM4F,gBAAgBve,QAAQ,MAAM,CAChC,GAAIpF,0BAA0B4jB,SAAS,IACvC,GAAI5jB,0BAA0B6jB,cAAc,CAAA,CAAG,GAChD,CAAC7jB,0BAA0B4jB,OAAO5jB,0BAA0B6jB,UAAU,CAAC;AAE1E,QAAMC,gBACF,qBAAA,UAAA,EAEI,UAAA;AAAA,IAAA,oBAAC,OAAA,EAAM,MAAM,KAAK,SAASP,aAAY;AAAA,IACtC7E,SAASgF,gBACN,oBAAC,SAAM,MAAM,MAAM,SAASD,gBAAe;AAAA,wBAG9C,OAAA,EAAM,MAAM,QAAQ,SAAS,oBAAC,kBAAe;AAAA,wBAC7C,OAAA,EAAM,MAAM,aAAa,SAAS,oBAAC,mBAAgB;AAAA,IACnDJ,sCAAmB,OAAA,EAAM,MAAM,UAAU,SAAS,oBAAC,WAAA,EAAU,eAAA,CAA+B,EAAA,CAAI;AAAA,IAChGA,sCAAmB,OAAA,EAAM,MAAM,UAAU,SAAS,oBAAC,WAAA,EAAU,eAAA,CAA+B,EAAA,CAAI;AAAA,wBAGhG,OAAA,EAAM,MAAM,aAAa,SAAS,oBAAC,sBAAmB;AAAA,IAGtDM,cAAcpjB,IAAIkH,CAAAA,SAAQ;AACvB,YAAMsc,QAAQ/d,MAAMC,QAAQwB,KAAK3G,IAAI,IAAI2G,KAAK3G,OAAO,CAAC2G,KAAK3G,IAAI;AAC/D,aAAOijB,MAAMhP,QAAQjU,CAAAA,SAAQ;AACzB,cAAMkjB,SAAS,CACX,oBAAC,OAAA,EAAiB,MAAMljB,MAAM,SAAS,oBAAC,iBAAA,EAAgB,KAAA,CAAW,EAAA,GAAvDA,KAA8D;AAE9E,YAAI2G,KAAKwc,cAAc;AACnBD,iBAAO/Q,KACH,oBAAC,OAAA,EAAwB,MAAMnS,OAAO,MAAM,SAAS,oBAAC,iBAAA,EAAgB,KAAA,CAAW,EAAA,GAArEA,OAAO,KACvB;AAAA,QACJ;AACA,eAAOkjB;AAAAA,MACX,CAAC;AAAA,IACL,CAAC;AAAA,IAGAza;AAAAA,wBAEA,OAAA,EAAM,MAAM,KAAK,SAAS,oBAAC,mBAAgB;AAAA,EAAA,GAChD;AAGJ,SACI,qBAAA,UAAA,EACI,UAAA;AAAA,IAAA,oBAAC,cAAA,EACI6Z,UAAAA,SACK,oBAAC,OAAA,EAAM,SAASA,QAASU,UAAAA,cAAAA,CAAc,IACvC,oBAAC,SAAM,SAAS,oBAAA,UAAA,EAAGA,UAAAA,cAAAA,CAAc,GAAMA,yBAAc,EAAA,CAE/D;AAAA,wBACC,yBAAA,CAAA,CAAuB;AAAA,EAAA,GAC5B;AAER;AC5FO,SAAAI,YAAA7G,OAAA;AAAA,QAAA3b,KAAAC,EAAA,EAAA;AACH,QAAA;AAAA,IAAAic,OAAAnc;AAAAA,IAAA2d;AAAAA,IAAAC;AAAAA,IAAAC,gBAAAnd;AAAAA,IAAAoH;AAAAA,EAAAA,IAMI8T;AALA,QAAAO,QAAAnc,OAAgBN,SAAR,WAARM;AAGA,QAAA6d,iBAAAnd,OAAsBhB,iBAAtBgB;AAIJ,QAAAuc,WAAiBC,kBAAAA;AAKbD,WAAQgF,cAAApd;AAAA,MAAA/D;AAAA,MAAAE;AAAA,MAAAf,GAAA,CAAA,MAAAgd,SAAAgF,cAAApd,UAAA;AADD7D,SAAAic,SAAQgF,cAAApd,YAAA,CAAA;AAA6B5E,IAAAA,GAAA,CAAA,IAAAgd,SAAAgF,cAAApd;AAAA5E,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAA5Ca,OAAOE;AADX,QAAA6D,WAAiB/D;AAEqB,MAAAkG;AAAA,MAAA/G,GAAA,CAAA,MAAA0d,UAAA1d,GAAA,CAAA,MAAA4d,kBAAA5d,GAAA,CAAA,MAAA4E,YAAA5E,GAAA,CAAA,MAAA2d,UAAA3d,UAAAkc,OAAA;AAOlBnV,6BAAC,cAAA,EACUmV,OACCwB,QACAC,QACQC,gBACNhZ,UAAQ;AACpB5E,IAAAA,QAAA0d;AAAA1d,IAAAA,QAAA4d;AAAA5d,IAAAA,QAAA4E;AAAA5E,IAAAA,QAAA2d;AAAA3d,IAAAA,QAAAkc;AAAAlc,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,CAAA,MAAA6H,YAAA7H,UAAA+G,IAAA;AAVlBC,SAAA,oBAAC,gBAAA,EACG,UAAA,oBAAC,kBAAA,EACG,UAAA,oBAAC,mBAEO,QAAAD,IASHc,SAAAA,CACL,EAAA,CACJ,GACJ;AAAiB7H,IAAAA,QAAA6H;AAAA7H,IAAAA,QAAA+G;AAAA/G,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,SAhBjBgH;AAgBiB;AC1DlB,SAAAyb,mBAAA1iB,IAAA;AAAA,QAAAC,KAAAC,EAAA,CAAA;AAAA,MAAAQ;AAAA,MAAAI;AAAA,MAAAE;AAAA,MAAAf,UAAAD,IAAA;AAuBiBgB,SAAAC,uBAAAC,iCAAG;AAAC8d,SAAA;AAvBO,YAAA;AAAA,QAAA2D;AAAAA,QAAA1f;AAAAA,QAAA2f;AAAAA,QAAAtf;AAAAA,MAAAA,IAAAtD;AAMG,UAE9BuE,MAAAC,QAAcoe,UAAQC,EAAI,GAAC;AAAA,cACrBpkB,MAAM,uEAAuE;AAAA,MAAC;AAAA,UAGpFmkB,UAAQ5jB,SAAW,YAAY4jB,SAAQC,MAAOD,SAAQC,GAAA7jB,SAAa,OAAK;AAAA,cAClEP,MAAM,mDAAmD;AAAA,MAAC;AAEpE,YAAAqkB,cAAoBF,SAAQC;AAC5B,YAAAzhB,aAAmB0hB,YAAW1hB;AAAY,UAAA,CACrCA,YAAU;AAAA,cACL3C,MAAM,4FAA4FkkB,WAAW,EAAE;AAAA,MAAC;AAE1H,YAAAI,SAAe9f;AACf,YAAAG,oBAAgD0f,YAAW1f;AAAmB,UAAA,CAEzE2f,QAAM;AAAS/hB,aAAA;AAAI,cAAAge;AAAAA,MAAA;AAExB,UAAAgE;AAAAA,sBAAoB5f;AAAkB,UAClC,CAAC4f,iBAAa,CAAKA,cAAatb,QAAO;AACvCsb,wBAAgBA,OAAAA,KAAY5hB,UAAU;AAAzB,YACTkC,MAAI;AACJ0f,0BAAgBA,cAAahD,UAAW;AAAA,QAA3B;AAAA,MAAA;AAIFlf,WAAA;AAENJ,WAAAqiB,UACGA,OAAMjkB,IAAA,CAAAc,IAAA8E,UAEE,oBAAA,SACc,WAAA,iCACTse,2BAAiBA,cAAalkB,IAAA0W,SAEvB,oBAAA,OAAA,EAEc,WAAA,cAEV,UAAA,oBAAC,eAAA,EACG,UAAA,oBAAC,iBAAA,EACgB,aAAAA,KACN,OAAC5V,GAAG4V,GAAG,GACJ,UAAApU,WAAWoU,GAAa,GAE5B,MAAA,QAAA,IACd,mBAVmBA,GAAa,EAWpC,CAER,EAAA,GAlBM,SAAS5V,EAAC,IAAI8E,KAAK,EAmB7B,CAEP;AAAA,IAAC;AAAAzE,IAAAA,QAAAD;AAAAC,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAN,SAAAT,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAAe,SAAAf,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAe,OAAAC,uBAAAC,IAAA,6BAAA,GAAA;AAAA,WAAAF;AAAAA,EAAA;AAAA,MAAAgG;AAAA,MAAA/G,UAAAS,IAAA;AAzBVsG,sCACKtG,UAAAA,GAAAA,CAyBL;AAAMT,IAAAA,QAAAS;AAAAT,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,CAAA,MAAAa,MAAAb,UAAA+G,IAAA;AA3BVC,SAAA,oBAAA,OAAA,EAAe,WAAAnG,IACXkG,UAAAA,IA2BJ;AAAM/G,IAAAA,QAAAa;AAAAb,IAAAA,QAAA+G;AAAA/G,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AAAA,SA5BNgH;AA4BM;AChEP,SAAAgc,uBAAAjjB,IAAA;AAAA,QAAAC,KAAAC,EAAA,EAAA;AAAgC,QAAA;AAAA,IAAA9B,MAAA8kB;AAAAA,EAAAA,IAAAljB;AAGnC,QAAAid,WAAiBvZ,gCAAAA;AACjB,QAAAtF,OAAa+kB,eAAeD,QAAQ;AAAE,MAAAxiB;AAAA,MAAAT,GAAA,CAAA,MAAAijB,YAAAjjB,UAAAgd,UAAA;AACVvc,SAAAuc,SAAQqD,uBAAwB4C,QAAQ;AAACjjB,IAAAA,QAAAijB;AAAAjjB,IAAAA,QAAAgd;AAAAhd,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAArE,QAAAogB,sBAA4B3f;AAC5B,QAAAgc,mBAAyB0G,8BAAAA;AACzB,QAAA;AAAA,IAAA7a,GAAAA;AAAAA,EAAAA,IAAcC,eAAAA;AACS,QAAA1H,MAAA;AAClB,QAAAuG,KAAAgc;AAAiB,QAAAriB,KAAAuH,GAAE,kCAAgC;AAAA,IAAAnK;AAAAA,EAAAA,CAAU;AAAC,MAAA4I;AAAA,MAAA/G,GAAA,CAAA,MAAAoH,MAAApH,UAAAe,IAAA;AAA/DgG,SAAA,oBAAC,IAAA,EAAiB,OAAAhG,GAAAA,CAA6C;AAAIf,IAAAA,QAAAoH;AAAApH,IAAAA,QAAAe;AAAAf,IAAAA,QAAA+G;AAAAA,EAAA,OAAA;AAAAA,SAAA/G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,CAAA,MAAAyc,oBAAAzc,UAAAogB,uBAAApgB,GAAA,CAAA,MAAA7B,MAAA;AAGtD6I,SAAAA,MAAA;AACLyV,uBAAgB4G,iBAAA;AAAA,QAAAC,eAAA;AAAA,UAAAnlB;AAAAA,UAAAoE,MACiBghB,mBAAmBplB,IAAI;AAAA,QAAA;AAAA,QAACiiB;AAAAA,QAAAoD,UAAA;AAAA,QAAAC,aAGxC;AAAA,MAAA,CAChB;AAAA,IAAC;AACLzjB,IAAAA,QAAAyc;AAAAzc,IAAAA,QAAAogB;AAAApgB,IAAAA,QAAA7B;AAAA6B,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,WAAAsI,IAAA;AACArB,SAAAqB,GAAE,iCAAiC;AAACtI,IAAAA,SAAAsI;AAAAtI,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA4I;AAAA,MAAA5I,GAAA,EAAA,MAAAgH,MAAAhH,WAAAiH,IAAA;AAVzC2B,SAAA,oBAAC,UAAkB,WAAA,QACT,MAAA,SACG,SAAA5B,IAQRC,UAAAA,GAAAA,CACL;AAASjH,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAA4I;AAAAA,EAAA,OAAA;AAAAA,SAAA5I,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA6I;AAAA,MAAA7I,GAAA,EAAA,MAAA+G,MAAA/G,WAAA4I,IAAA;AAbNC,SAAA,qBAAA,OAAA,EAAgB,WAAAhI,KACnBkG,UAAAA;AAAAA,MAAAA;AAAAA,MACA6B;AAAAA,IAAAA,GAYJ;AAAM5I,IAAAA,SAAA+G;AAAA/G,IAAAA,SAAA4I;AAAA5I,IAAAA,SAAA6I;AAAAA,EAAA,OAAA;AAAAA,SAAA7I,GAAA,EAAA;AAAA,EAAA;AAAA,SAdC6I;AAcD;AAQV,SAASqa,eAAe/kB,MAAsB;AAC1C,QAAMulB,WAAWvlB,KAAKwlB,MAAM,GAAG;AAC/B,SAAOD,SAASA,SAASjc,SAAS,CAAC;AACvC;"}
@@ -0,0 +1,7 @@
1
+ import type { Property } from "@rebasepro/types";
2
+ import React from "react";
3
+ import type { PropertyPreviewProps } from "../types/components/PropertyPreviewProps";
4
+ /**
5
+ * @group Preview components
6
+ */
7
+ export declare const PropertyPreview: React.MemoExoticComponent<(<P extends Property>(props: PropertyPreviewProps<P>) => any)>;
@@ -0,0 +1,11 @@
1
+ import { EnumValueConfig } from "@rebasepro/types";
2
+ import type { PreviewSize } from "../../types/components/PropertyPreviewProps";
3
+ /**
4
+ * @group Preview components
5
+ */
6
+ export declare function ArrayEnumPreview({ name, value, enumValues, size }: {
7
+ value: string[] | number[];
8
+ name: string | undefined;
9
+ enumValues: EnumValueConfig[];
10
+ size: PreviewSize;
11
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import type { Property } from "@rebasepro/types";
2
+ import React from "react";
3
+ import { PreviewSize } from "../../types/components/PropertyPreviewProps";
4
+ /**
5
+ * @group Preview components
6
+ */
7
+ export declare function BooleanPreview({ value, size, property }: {
8
+ value: boolean;
9
+ size: PreviewSize;
10
+ property: Property;
11
+ }): React.ReactElement;
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ export interface DatePreviewProps {
3
+ date: Date;
4
+ /**
5
+ * Display mode: "date" for date-only, "date_time" for date and time
6
+ */
7
+ mode?: "date" | "date_time";
8
+ /**
9
+ * IANA timezone identifier (e.g., "America/New_York")
10
+ * When specified, the date will be displayed in this timezone
11
+ */
12
+ timezone?: string;
13
+ }
14
+ /**
15
+ * @group Preview components
16
+ */
17
+ export declare function DatePreview({ date, mode, timezone }: DatePreviewProps): React.ReactElement;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @group Preview components
3
+ */
4
+ export declare function EmptyValue({ className }: {
5
+ className?: string;
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { EnumValues } from "@rebasepro/types";
3
+ export interface EnumValuesChipProps {
4
+ enumValues?: EnumValues;
5
+ enumKey: string | number;
6
+ size: "small" | "medium" | "large";
7
+ className?: string;
8
+ children?: React.ReactNode;
9
+ }
10
+ /**
11
+ * @group Preview components
12
+ */
13
+ export declare function EnumValuesChip({ enumValues, enumKey, size, className, children }: EnumValuesChipProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,16 @@
1
+ import { PreviewSize } from "../../types/components/PropertyPreviewProps";
2
+ /**
3
+ * @group Preview components
4
+ */
5
+ export interface ImagePreviewProps {
6
+ size: PreviewSize;
7
+ url: string;
8
+ /**
9
+ * If true, image fills its container completely with object-fit cover
10
+ */
11
+ fill?: boolean;
12
+ }
13
+ /**
14
+ * @group Preview components
15
+ */
16
+ export declare function ImagePreview({ size, url, fill }: ImagePreviewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { EntityReference } from "@rebasepro/types";
3
+ import type { PreviewSize } from "../../types/components/PropertyPreviewProps";
4
+ export type ReferencePreviewProps = {
5
+ disabled?: boolean;
6
+ reference: EntityReference;
7
+ size?: PreviewSize;
8
+ previewProperties?: string[];
9
+ onClick?: (e: React.SyntheticEvent) => void;
10
+ hover?: boolean;
11
+ includeEntityLink?: boolean;
12
+ includeId?: boolean;
13
+ };
14
+ /**
15
+ * @group Preview components
16
+ */
17
+ export declare const ReferencePreview: (props: ReferencePreviewProps) => import("react/jsx-runtime").JSX.Element;