@rxdrag/website-studio 0.0.2

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 (155) hide show
  1. package/README.md +1 -0
  2. package/dist/WebsiteStudio.d.ts +4 -0
  3. package/dist/components/CanvasPanel/BgColorButton.d.ts +4 -0
  4. package/dist/components/CanvasPanel/CanvasDrawer.d.ts +11 -0
  5. package/dist/components/CanvasPanel/CanvasNavbar.d.ts +2 -0
  6. package/dist/components/CanvasPanel/CanvasToolbar.d.ts +5 -0
  7. package/dist/components/CanvasPanel/CanvasToolbarButton.d.ts +5 -0
  8. package/dist/components/CanvasPanel/CanvasTools.d.ts +1 -0
  9. package/dist/components/CanvasPanel/ResizableWrapper.d.ts +4 -0
  10. package/dist/components/CanvasPanel/ResizeHandler.d.ts +2 -0
  11. package/dist/components/CanvasPanel/Viewport.d.ts +6 -0
  12. package/dist/components/CanvasPanel/index.d.ts +6 -0
  13. package/dist/components/DocCanvas/DocCanvas.d.ts +10 -0
  14. package/dist/components/DocCanvas/DocFrame.d.ts +12 -0
  15. package/dist/components/DocCanvas/DocTreeView.d.ts +6 -0
  16. package/dist/components/DocCanvas/FrameRoutePage.d.ts +1 -0
  17. package/dist/components/DocCanvas/colors.d.ts +292 -0
  18. package/dist/components/DocCanvas/index.d.ts +5 -0
  19. package/dist/components/DocCanvas/useFrameInitialHTML.d.ts +5 -0
  20. package/dist/components/DocCanvas/useSetIFrameClasses.d.ts +1 -0
  21. package/dist/components/DocPreview/SchemaPreview.d.ts +8 -0
  22. package/dist/components/DocPreview/index.d.ts +5 -0
  23. package/dist/components/EditorScope/index.d.ts +11 -0
  24. package/dist/components/LeftDrawer/ComponentSchemaPanel/PropsConfig.d.ts +11 -0
  25. package/dist/components/LeftDrawer/ComponentSchemaPanel/index.d.ts +6 -0
  26. package/dist/components/LeftDrawer/ComponentTestPanel/PropsTest.d.ts +5 -0
  27. package/dist/components/LeftDrawer/ComponentTestPanel/index.d.ts +6 -0
  28. package/dist/components/LeftDrawer/InsertPanel/ComponentsRootNode.d.ts +7 -0
  29. package/dist/components/LeftDrawer/InsertPanel/SectionsNode.d.ts +8 -0
  30. package/dist/components/LeftDrawer/InsertPanel/index.d.ts +3 -0
  31. package/dist/components/LeftDrawer/LayersPanel/index.d.ts +3 -0
  32. package/dist/components/LeftDrawer/LeftPanel.d.ts +6 -0
  33. package/dist/components/LeftDrawer/SEMPanel/index.d.ts +3 -0
  34. package/dist/components/LeftDrawer/SEOPanel/index.d.ts +3 -0
  35. package/dist/components/LeftDrawer/SNSPanel/index.d.ts +3 -0
  36. package/dist/components/LeftDrawer/index.d.ts +7 -0
  37. package/dist/components/Leftbar/LeftbarButtion.d.ts +9 -0
  38. package/dist/components/Leftbar/ThemeSettingsDrawer/CssPanel.d.ts +2 -0
  39. package/dist/components/Leftbar/ThemeSettingsDrawer/ExtendsPanel.d.ts +1 -0
  40. package/dist/components/Leftbar/ThemeSettingsDrawer/ExtendsTable.d.ts +11 -0
  41. package/dist/components/Leftbar/ThemeSettingsDrawer/PostPanel.d.ts +5 -0
  42. package/dist/components/Leftbar/ThemeSettingsDrawer/ProductPanel.d.ts +5 -0
  43. package/dist/components/Leftbar/ThemeSettingsDrawer/RatioSelect.d.ts +2 -0
  44. package/dist/components/Leftbar/ThemeSettingsDrawer/TailwindPanel.d.ts +2 -0
  45. package/dist/components/Leftbar/ThemeSettingsDrawer/index.d.ts +1 -0
  46. package/dist/components/Leftbar/index.d.ts +17 -0
  47. package/dist/components/NodeNavs/NodeTag.d.ts +8 -0
  48. package/dist/components/NodeNavs/index.d.ts +6 -0
  49. package/dist/components/NodeNavs/useNodesOnPath.d.ts +2 -0
  50. package/dist/components/OutlineTree/OutlineNode.d.ts +5 -0
  51. package/dist/components/OutlineTree/index.d.ts +2 -0
  52. package/dist/components/PropsPanel/PromptInput.d.ts +4 -0
  53. package/dist/components/PropsPanel/index.d.ts +3 -0
  54. package/dist/components/SettingsForm/SettingsForm.d.ts +2 -0
  55. package/dist/components/SettingsForm/index.d.ts +2 -0
  56. package/dist/components/SettingsForm/locales.d.ts +188 -0
  57. package/dist/components/Sheet.d.ts +3 -0
  58. package/dist/components/StudioCore/ThemeSetup.d.ts +1 -0
  59. package/dist/components/StudioCore/Welcome.d.ts +1 -0
  60. package/dist/components/StudioCore/index.d.ts +6 -0
  61. package/dist/components/StudioCore/useMetaFilters.d.ts +2 -0
  62. package/dist/components/StudioRoot/StudioRoot.d.ts +5 -0
  63. package/dist/components/StudioRoot/contexts.d.ts +19 -0
  64. package/dist/components/StudioRoot/index.d.ts +2 -0
  65. package/dist/components/Toolbar/MenuContent/PagesNode.d.ts +6 -0
  66. package/dist/components/Toolbar/MenuContent/PredefinedPageNode.d.ts +11 -0
  67. package/dist/components/Toolbar/MenuContent/PredefinedPages.d.ts +6 -0
  68. package/dist/components/Toolbar/MenuContent/index.d.ts +6 -0
  69. package/dist/components/Toolbar/index.d.ts +2 -0
  70. package/dist/components/actions/CollectComponentButton.d.ts +1 -0
  71. package/dist/components/actions/CollectTemplateIconButton.d.ts +3 -0
  72. package/dist/components/actions/ComponentSaveButton.d.ts +1 -0
  73. package/dist/components/actions/FrameSaveButton.d.ts +1 -0
  74. package/dist/components/actions/PageSaveButton.d.ts +1 -0
  75. package/dist/components/actions/SaveAlertDialog.d.ts +6 -0
  76. package/dist/components/actions/SlotSettingButton.d.ts +1 -0
  77. package/dist/components/actions/TemplateSaveButton.d.ts +1 -0
  78. package/dist/components/common/ComponentCategoryList/ComponentCategoryModal.d.ts +4 -0
  79. package/dist/components/common/ComponentCategoryList/ComponentCategoryNode.d.ts +9 -0
  80. package/dist/components/common/ComponentCategoryList/ComponentList.d.ts +13 -0
  81. package/dist/components/common/ComponentCategoryList/ComponentModal.d.ts +9 -0
  82. package/dist/components/common/ComponentCategoryList/ComponentNode.d.ts +8 -0
  83. package/dist/components/common/ComponentCategoryList/index.d.ts +5 -0
  84. package/dist/components/common/ComponentCategoryListScope/index.d.ts +5 -0
  85. package/dist/components/common/MaterialNodeView.d.ts +4 -0
  86. package/dist/components/common/PageList/PageModal.d.ts +7 -0
  87. package/dist/components/common/PageList/PageNode.d.ts +7 -0
  88. package/dist/components/common/PageList/index.d.ts +6 -0
  89. package/dist/components/common/PageScope/index.d.ts +5 -0
  90. package/dist/components/common/TemplateCategoryList/TemplateCategoryModal.d.ts +6 -0
  91. package/dist/components/common/TemplateCategoryList/TemplateCategoryNode.d.ts +10 -0
  92. package/dist/components/common/TemplateCategoryList/TemplateList.d.ts +14 -0
  93. package/dist/components/common/TemplateCategoryList/TemplateModal.d.ts +10 -0
  94. package/dist/components/common/TemplateCategoryList/TemplateNode.d.ts +9 -0
  95. package/dist/components/common/TemplateCategoryList/index.d.ts +6 -0
  96. package/dist/components/common/TemplateCategoryListScope/index.d.ts +6 -0
  97. package/dist/components/common/WebComponents/index.d.ts +1 -0
  98. package/dist/components/common/WebComponents/useOrRegisterRecouceNode.d.ts +3 -0
  99. package/dist/components/common/index.d.ts +8 -0
  100. package/dist/components/common/utils.d.ts +5 -0
  101. package/dist/components/views/CodeViewport/consts.d.ts +1 -0
  102. package/dist/components/views/CodeViewport/index.d.ts +2 -0
  103. package/dist/components/views/CodeViewport/useTransCodeToJson.d.ts +4 -0
  104. package/dist/components/views/CodeViewport/useTransJsonToCode.d.ts +4 -0
  105. package/dist/components/views/DesignViewport.d.ts +7 -0
  106. package/dist/components/views/PreviewViewport.d.ts +4 -0
  107. package/dist/customize/consts.d.ts +2 -0
  108. package/dist/customize/designer/index.d.ts +7 -0
  109. package/dist/customize/funcs.d.ts +6 -0
  110. package/dist/customize/hooks/index.d.ts +2 -0
  111. package/dist/customize/hooks/useCustomizedMaterials.d.ts +2 -0
  112. package/dist/customize/hooks/useFrontComponent.d.ts +1 -0
  113. package/dist/customize/index.d.ts +1 -0
  114. package/dist/customize/preview.d.ts +7 -0
  115. package/dist/customize/setter/CustomizedComponentPropsSetter/InputControl.d.ts +7 -0
  116. package/dist/customize/setter/CustomizedComponentPropsSetter/index.d.ts +6 -0
  117. package/dist/customize/setter/index.d.ts +1 -0
  118. package/dist/decorators/SlotDecorator.d.ts +8 -0
  119. package/dist/hooks/useCheckSlotName.d.ts +1 -0
  120. package/dist/hooks/useFrameSchema.d.ts +16 -0
  121. package/dist/hooks/useIsSlotable.d.ts +1 -0
  122. package/dist/hooks/useMergeComponentSchema.d.ts +3 -0
  123. package/dist/hooks/useSchema.d.ts +19 -0
  124. package/dist/hooks/useSplitComponentSchema.d.ts +5 -0
  125. package/dist/index.d.ts +1 -0
  126. package/dist/index.mjs +15544 -0
  127. package/dist/index.mjs.map +1 -0
  128. package/dist/plugins/ContentEditor/controls/AbstractMiniButton.d.ts +10 -0
  129. package/dist/plugins/ContentEditor/controls/MarkButton.d.ts +15 -0
  130. package/dist/plugins/ContentEditor/getClildrenNodes.d.ts +3 -0
  131. package/dist/plugins/ContentEditor/index.d.ts +30 -0
  132. package/dist/plugins/index.d.ts +1 -0
  133. package/dist/preview/ComponentView.d.ts +19 -0
  134. package/dist/preview/PreviewRender.d.ts +10 -0
  135. package/dist/preview/contexts.d.ts +3 -0
  136. package/dist/preview/hooks/defualtProductRichText.d.ts +82 -0
  137. package/dist/preview/hooks/index.d.ts +2 -0
  138. package/dist/preview/hooks/useMotionProps.d.ts +3 -0
  139. package/dist/preview/hooks/usePreviewComponent.d.ts +45 -0
  140. package/dist/preview/hooks/usePreviewComponents.d.ts +1 -0
  141. package/dist/preview/hooks/useValue.d.ts +10 -0
  142. package/dist/preview/index.d.ts +5 -0
  143. package/dist/preview/transform.d.ts +4 -0
  144. package/dist/recoil/atoms.d.ts +21 -0
  145. package/dist/recoil/selectors.d.ts +1 -0
  146. package/dist/resources/data/fields.d.ts +8 -0
  147. package/dist/resources/data/index.d.ts +2 -0
  148. package/dist/resources/data/roots.d.ts +4 -0
  149. package/dist/resources/index.d.ts +2 -0
  150. package/dist/resources/resourceTreeNodes.d.ts +2 -0
  151. package/dist/resources/types.d.ts +7 -0
  152. package/dist/setters/index.d.ts +2 -0
  153. package/dist/style.css +21 -0
  154. package/dist/types.d.ts +31 -0
  155. package/package.json +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../src/plugins/ContentEditor/getClildrenNodes.ts","../src/plugins/ContentEditor/controls/AbstractMiniButton.ts","../src/plugins/ContentEditor/controls/MarkButton.ts","../src/plugins/ContentEditor/index.ts","../src/components/StudioRoot/contexts.ts","../src/components/StudioRoot/StudioRoot.tsx","../src/customize/hooks/useFrontComponent.ts","../src/customize/consts.ts","../src/customize/funcs.ts","../src/customize/preview.tsx","../src/customize/designer/index.tsx","../src/customize/setter/CustomizedComponentPropsSetter/InputControl.tsx","../src/customize/setter/CustomizedComponentPropsSetter/index.tsx","../src/customize/hooks/useCustomizedMaterials.tsx","../src/setters/index.ts","../src/components/EditorScope/index.tsx","../src/types.ts","../src/components/Sheet.tsx","../../../node_modules/.pnpm/@nextui-org+theme@2.2.11_tailwindcss@3.4.6/node_modules/@nextui-org/theme/dist/chunk-BZCSOIUI.mjs","../../../node_modules/.pnpm/@nextui-org+theme@2.2.11_tailwindcss@3.4.6/node_modules/@nextui-org/theme/dist/chunk-BYWORP66.mjs","../../../node_modules/.pnpm/tailwind-variants@0.1.20_tailwindcss@3.4.6/node_modules/tailwind-variants/dist/chunk-JXBJZR5A.js","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/tw-join.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/class-utils.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/lru-cache.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/modifier-utils.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/config-utils.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/merge-classlist.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/create-tailwind-merge.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/from-theme.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/validators.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/default-config.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/merge-configs.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/extend-tailwind-merge.mjs","../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/tw-merge.mjs","../../../node_modules/.pnpm/tailwind-variants@0.1.20_tailwindcss@3.4.6/node_modules/tailwind-variants/dist/index.js","../../../node_modules/.pnpm/@nextui-org+theme@2.2.11_tailwindcss@3.4.6/node_modules/@nextui-org/theme/dist/chunk-N2KXC5ZE.mjs","../../../node_modules/.pnpm/@nextui-org+theme@2.2.11_tailwindcss@3.4.6/node_modules/@nextui-org/theme/dist/chunk-XHQUSKIE.mjs","../../../node_modules/.pnpm/@nextui-org+theme@2.2.11_tailwindcss@3.4.6/node_modules/@nextui-org/theme/dist/chunk-AXXUQWWC.mjs","../../../node_modules/.pnpm/@nextui-org+theme@2.2.11_tailwindcss@3.4.6/node_modules/@nextui-org/theme/dist/chunk-XXQSA25O.mjs","../../../node_modules/.pnpm/@nextui-org+react-utils@2.0.17_react@18.3.1/node_modules/@nextui-org/react-utils/dist/chunk-3XT5V4LF.mjs","../../../node_modules/.pnpm/@nextui-org+react-utils@2.0.17_react@18.3.1/node_modules/@nextui-org/react-utils/dist/chunk-RQNQ5XFG.mjs","../../../node_modules/.pnpm/@nextui-org+shared-utils@2.0.8/node_modules/@nextui-org/shared-utils/dist/chunk-MCFSCOSB.mjs","../../../node_modules/.pnpm/@nextui-org+shared-utils@2.0.8/node_modules/@nextui-org/shared-utils/dist/chunk-6BQDBGF4.mjs","../../../node_modules/.pnpm/@nextui-org+shared-utils@2.0.8/node_modules/@nextui-org/shared-utils/dist/chunk-SOU6N57Y.mjs","../../../node_modules/.pnpm/@nextui-org+shared-utils@2.0.8/node_modules/@nextui-org/shared-utils/dist/chunk-MNNRULGA.mjs","../../../node_modules/.pnpm/@nextui-org+react-rsc-utils@2.0.14_react@18.3.1/node_modules/@nextui-org/react-rsc-utils/dist/chunk-RFWDHYLZ.mjs","../../../node_modules/.pnpm/@nextui-org+react-rsc-utils@2.0.14_react@18.3.1/node_modules/@nextui-org/react-rsc-utils/dist/chunk-RJKRL3AU.mjs","../../../node_modules/.pnpm/@nextui-org+system@2.2.6_@nextui-org+theme@2.2.11_tailwindcss@3.4.6__framer-motion@11.3.17_@e_llr6ae5aatq4gqkniddgcpkfhi/node_modules/@nextui-org/system/dist/chunk-Q66YAGZJ.mjs","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_check_private_redeclaration.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_init.js","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/useLayoutEffect.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/useEffectEvent.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/useId.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/chain.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/domHelpers.mjs","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/mergeProps.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/focusWithoutScrolling.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/platform.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/openLink.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/runAfterTransition.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/useSyncRef.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.25.3_react@18.3.1/node_modules/@react-aria/utils/dist/isVirtualEvent.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.24.1_react@18.3.1/node_modules/@react-aria/utils/dist/useId.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.24.1_react@18.3.1/node_modules/@react-aria/utils/dist/chain.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.24.1_react@18.3.1/node_modules/@react-aria/utils/dist/mergeProps.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.24.1_react@18.3.1/node_modules/@react-aria/utils/dist/filterDOMProps.mjs","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_get.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_set.js","../../../node_modules/.pnpm/@react-aria+interactions@3.22.4_react@18.3.1/node_modules/@react-aria/interactions/dist/utils.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.22.4_react@18.3.1/node_modules/@react-aria/interactions/dist/useFocus.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.22.4_react@18.3.1/node_modules/@react-aria/interactions/dist/useFocusVisible.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.22.4_react@18.3.1/node_modules/@react-aria/interactions/dist/useFocusWithin.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.22.4_react@18.3.1/node_modules/@react-aria/interactions/dist/createEventHandler.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.22.4_react@18.3.1/node_modules/@react-aria/interactions/dist/useKeyboard.mjs","../../../node_modules/.pnpm/@nextui-org+system-rsc@2.1.6_@nextui-org+theme@2.2.11_tailwindcss@3.4.6__react@18.3.1/node_modules/@nextui-org/system-rsc/dist/chunk-DRE2DOBH.mjs","../../../node_modules/.pnpm/@nextui-org+button@2.0.38_@nextui-org+system@2.2.6_@nextui-org+theme@2.2.11_tailwindcss@3.4.6_f5ge3euxbralohgzavgvh4ukqm/node_modules/@nextui-org/button/dist/chunk-BOMWXXSL.mjs","../../../node_modules/.pnpm/@react-aria+focus@3.17.1_react@18.3.1/node_modules/@react-aria/focus/dist/focusSafely.mjs","../../../node_modules/.pnpm/@react-aria+focus@3.17.1_react@18.3.1/node_modules/@react-aria/focus/dist/useFocusRing.mjs","../../../node_modules/.pnpm/@react-aria+focus@3.17.1_react@18.3.1/node_modules/@react-aria/focus/dist/useFocusable.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.21.3_react@18.3.1/node_modules/@react-aria/interactions/dist/textSelection.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.21.3_react@18.3.1/node_modules/@react-aria/interactions/dist/context.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.21.3_react@18.3.1/node_modules/@react-aria/interactions/dist/usePress.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.21.3_react@18.3.1/node_modules/@react-aria/interactions/dist/useHover.mjs","../../../node_modules/.pnpm/@nextui-org+use-aria-button@2.0.10_react@18.3.1/node_modules/@nextui-org/use-aria-button/dist/index.mjs","../../../node_modules/.pnpm/@nextui-org+ripple@2.0.33_@nextui-org+system@2.2.6_@nextui-org+theme@2.2.11_tailwindcss@3.4.6_nsyeuepzdoauyafqig64x4zvhu/node_modules/@nextui-org/ripple/dist/chunk-SC6YC33A.mjs","../../../node_modules/.pnpm/@nextui-org+ripple@2.0.33_@nextui-org+system@2.2.6_@nextui-org+theme@2.2.11_tailwindcss@3.4.6_nsyeuepzdoauyafqig64x4zvhu/node_modules/@nextui-org/ripple/dist/chunk-6NL67ZRH.mjs","../../../node_modules/.pnpm/@nextui-org+button@2.0.38_@nextui-org+system@2.2.6_@nextui-org+theme@2.2.11_tailwindcss@3.4.6_f5ge3euxbralohgzavgvh4ukqm/node_modules/@nextui-org/button/dist/chunk-P5GIOWF5.mjs","../../../node_modules/.pnpm/@nextui-org+spinner@2.0.34_@nextui-org+theme@2.2.11_tailwindcss@3.4.6__react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@nextui-org/spinner/dist/chunk-GF2IUMUE.mjs","../../../node_modules/.pnpm/@nextui-org+spinner@2.0.34_@nextui-org+theme@2.2.11_tailwindcss@3.4.6__react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@nextui-org/spinner/dist/chunk-TDOFO53L.mjs","../../../node_modules/.pnpm/@nextui-org+button@2.0.38_@nextui-org+system@2.2.6_@nextui-org+theme@2.2.11_tailwindcss@3.4.6_f5ge3euxbralohgzavgvh4ukqm/node_modules/@nextui-org/button/dist/chunk-DBLREEYE.mjs","../src/components/CanvasPanel/CanvasToolbarButton.tsx","../src/recoil/atoms.ts","../src/recoil/selectors.ts","../src/hooks/useSplitComponentSchema.ts","../src/components/actions/ComponentSaveButton.tsx","../src/components/actions/TemplateSaveButton.tsx","../src/components/actions/PageSaveButton.tsx","../src/components/common/TemplateCategoryList/TemplateModal.tsx","../src/components/actions/CollectTemplateIconButton.tsx","../src/hooks/useCheckSlotName.ts","../src/hooks/useIsSlotable.ts","../src/components/actions/SlotSettingButton.tsx","../src/components/actions/FrameSaveButton.tsx","../src/components/common/ComponentCategoryList/ComponentModal.tsx","../src/components/actions/CollectComponentButton.tsx","../src/components/CanvasPanel/CanvasToolbar.tsx","../src/components/actions/SaveAlertDialog.tsx","../src/decorators/SlotDecorator.ts","../src/components/CanvasPanel/index.tsx","../src/components/Leftbar/LeftbarButtion.tsx","../src/components/Leftbar/ThemeSettingsDrawer/TailwindPanel.tsx","../src/components/Leftbar/ThemeSettingsDrawer/CssPanel.tsx","../src/components/Leftbar/ThemeSettingsDrawer/RatioSelect.tsx","../src/components/Leftbar/ThemeSettingsDrawer/ExtendsTable.tsx","../src/components/Leftbar/ThemeSettingsDrawer/PostPanel.tsx","../src/components/Leftbar/ThemeSettingsDrawer/ProductPanel.tsx","../src/components/Leftbar/ThemeSettingsDrawer/ExtendsPanel.tsx","../src/components/Leftbar/ThemeSettingsDrawer/index.tsx","../src/components/Leftbar/index.tsx","../src/components/PropsPanel/PromptInput.tsx","../src/components/SettingsForm/SettingsForm.tsx","../src/components/PropsPanel/index.tsx","../src/components/CanvasPanel/CanvasDrawer.tsx","../src/components/LeftDrawer/LeftPanel.tsx","../src/components/LeftDrawer/ComponentSchemaPanel/PropsConfig.tsx","../src/components/LeftDrawer/ComponentSchemaPanel/index.tsx","../src/components/LeftDrawer/ComponentTestPanel/PropsTest.tsx","../src/components/LeftDrawer/ComponentTestPanel/index.tsx","../src/components/common/utils.tsx","../src/components/common/ComponentCategoryList/ComponentNode.tsx","../src/components/common/ComponentCategoryList/ComponentList.tsx","../src/components/common/ComponentCategoryList/ComponentCategoryNode.tsx","../src/components/common/ComponentCategoryList/index.tsx","../src/components/common/ComponentCategoryListScope/index.tsx","../src/resources/data/fields.ts","../src/resources/data/roots.ts","../../website-materials/src/materials/XText/locales.ts","../../website-materials/src/shared/transSlotSchemas.ts","../../website-materials/src/shared/createSchema.ts","../../website-materials/src/materials/XText/schema.ts","../../website-materials/src/materials/XText/index.ts","../src/resources/resourceTreeNodes.ts","../src/components/common/WebComponents/useOrRegisterRecouceNode.ts","../src/components/common/MaterialNodeView.tsx","../src/components/common/WebComponents/index.tsx","../src/components/common/PageList/PageModal.tsx","../src/components/common/PageList/PageNode.tsx","../src/components/common/PageList/index.tsx","../src/components/common/TemplateCategoryList/TemplateNode.tsx","../src/components/common/TemplateCategoryList/TemplateList.tsx","../src/components/common/TemplateCategoryList/TemplateCategoryNode.tsx","../src/components/common/TemplateCategoryList/index.tsx","../src/components/common/TemplateCategoryListScope/index.tsx","../src/components/common/ComponentCategoryList/ComponentCategoryModal.tsx","../src/components/LeftDrawer/InsertPanel/ComponentsRootNode.tsx","../src/components/common/TemplateCategoryList/TemplateCategoryModal.tsx","../src/components/LeftDrawer/InsertPanel/SectionsNode.tsx","../src/components/LeftDrawer/InsertPanel/index.tsx","../src/components/OutlineTree/OutlineNode.tsx","../src/components/OutlineTree/index.tsx","../src/components/LeftDrawer/LayersPanel/index.tsx","../src/components/LeftDrawer/SEOPanel/index.tsx","../src/components/LeftDrawer/SEMPanel/index.tsx","../src/components/LeftDrawer/SNSPanel/index.tsx","../src/hooks/useMergeComponentSchema.ts","../src/hooks/useSchema.ts","../src/components/CanvasPanel/BgColorButton.tsx","../src/components/CanvasPanel/CanvasTools.tsx","../src/components/CanvasPanel/ResizeHandler.tsx","../src/components/CanvasPanel/ResizableWrapper.tsx","../src/components/CanvasPanel/Viewport.tsx","../src/components/DocCanvas/colors.ts","../src/components/DocCanvas/useFrameInitialHTML.ts","../src/components/DocCanvas/useSetIFrameClasses.ts","../src/preview/contexts.ts","../src/preview/hooks/usePreviewComponents.ts","../src/preview/hooks/usePreviewComponent.ts","../src/preview/hooks/defualtProductRichText.ts","../src/preview/hooks/useValue.ts","../src/preview/hooks/useMotionProps.ts","../src/preview/ComponentView.tsx","../src/preview/transform.ts","../src/preview/PreviewRender.tsx","../src/components/DocPreview/SchemaPreview.tsx","../src/hooks/useFrameSchema.ts","../src/components/DocCanvas/FrameRoutePage.tsx","../src/components/DocCanvas/DocFrame.tsx","../src/components/DocCanvas/DocTreeView.tsx","../src/components/DocCanvas/DocCanvas.tsx","../src/components/NodeNavs/NodeTag.tsx","../src/components/NodeNavs/useNodesOnPath.ts","../src/components/NodeNavs/index.tsx","../src/components/CanvasPanel/CanvasNavbar.tsx","../src/components/views/DesignViewport.tsx","../src/components/views/CodeViewport/consts.ts","../src/components/views/CodeViewport/useTransJsonToCode.ts","../src/components/views/CodeViewport/useTransCodeToJson.ts","../src/components/views/CodeViewport/index.tsx","../src/components/DocPreview/index.tsx","../src/components/views/PreviewViewport.tsx","../src/components/StudioCore/ThemeSetup.tsx","../src/components/StudioCore/Welcome.tsx","../src/components/Toolbar/MenuContent/PagesNode.tsx","../src/components/Toolbar/MenuContent/PredefinedPageNode.tsx","../src/components/Toolbar/MenuContent/PredefinedPages.tsx","../src/components/Toolbar/MenuContent/index.tsx","../src/components/Toolbar/index.tsx","../src/components/StudioCore/useMetaFilters.ts","../src/components/StudioCore/index.tsx","../src/WebsiteStudio.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { IDesignerEngine, RXID_ATTR_NAME } from \"@rxdrag/core-pro\";\r\nimport { INodeSchema, TextNodeName } from \"@rxdrag/schema-pro\";\r\n\r\nexport function getClildrenNodes(element: HTMLElement, engine: IDesignerEngine) {\r\n const nodes: INodeSchema[] = []\r\n element.childNodes.forEach(node => {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n nodes.push({\r\n componentName: TextNodeName,\r\n text: node.textContent || \"\",\r\n })\r\n } else {\r\n const htmlNode = node as HTMLElement\r\n const rxNode = findOuterRxIdElement(htmlNode)\r\n if (rxNode) {\r\n const rxId = rxNode.getAttribute(RXID_ATTR_NAME)\r\n const treeNode = engine.getMonitor().getNode(rxId || \"\")\r\n if (treeNode && rxId) {\r\n const doc = engine.getNodeDocument(rxId)\r\n const schema = doc?.getNodeSchema(rxId)\r\n if (schema) {\r\n nodes.push(schema)\r\n }\r\n }\r\n //这里添加粗体、斜体、br等处理\r\n } else if (htmlNode.tagName) {\r\n const children = getClildrenNodes(htmlNode, engine)\r\n nodes.push({\r\n componentName: htmlNode.tagName.toLowerCase(),\r\n children: children,\r\n })\r\n } else {\r\n console.warn(\"未知节点\", node)\r\n }\r\n }\r\n })\r\n return nodes\r\n}\r\n\r\nfunction findOuterRxIdElement(element: HTMLElement): HTMLElement | null {\r\n // 检查当前元素是否有 rx-id 属性\r\n if (element.hasAttribute(RXID_ATTR_NAME)) {\r\n return element; // 返回当前元素\r\n }\r\n\r\n // 遍历所有子节点\r\n for (let i = 0; i < element.children.length; i++) {\r\n const child = element.children[i];\r\n const result = findOuterRxIdElement(child as HTMLElement); // 递归查找子节点\r\n\r\n if (result) {\r\n return result; // 如果找到带有 rx-id 的元素,返回\r\n }\r\n }\r\n\r\n return null; // 如果没有找到,返回 null\r\n}","import { IDesignerEngine, ITreeNode, TOOLBAR_HEIGHT } from \"@rxdrag/core-pro\"\r\n\r\n\r\nexport abstract class AbstractMiniButton {\r\n protected htmlElement: HTMLElement | null = null\r\n constructor(public name:string, protected engine: IDesignerEngine){\r\n }\r\n\r\n abstract onRender(node: ITreeNode): HTMLElement | null\r\n\r\n teardown(): void {\r\n if (this.htmlElement) {\r\n this.htmlElement.remove()\r\n }\r\n }\r\n \r\n protected createHtmlElement(){\r\n if(this.htmlElement){\r\n this.htmlElement.remove()\r\n }\r\n const htmlDiv = document.createElement('div')\r\n //htmlDiv.style.backgroundColor = AUX_BACKGROUND_COLOR\r\n htmlDiv.style.color = \"#c2c2c2\"\r\n htmlDiv.style.borderRadius = \"2px\"\r\n htmlDiv.style.cursor = \"pointer\"\r\n htmlDiv.style.position = \"relative\"\r\n htmlDiv.style.display = \"flex\"\r\n htmlDiv.style.alignItems = \"center\"\r\n htmlDiv.style.justifyContent = \"center\"\r\n htmlDiv.style.marginLeft = \"2px\"\r\n htmlDiv.style.height = TOOLBAR_HEIGHT + \"px\"\r\n htmlDiv.style.width = TOOLBAR_HEIGHT + \"px\"\r\n htmlDiv.innerHTML = \"?\"\r\n this.htmlElement = htmlDiv\r\n return htmlDiv\r\n }\r\n}","import { IDesignerEngine, ITreeNode, Unsubscribe } from \"@rxdrag/core-pro\";\r\nimport { AbstractMiniButton } from \"./AbstractMiniButton\";\r\n\r\nexport class MarkButton extends AbstractMiniButton {\r\n private unsubscribe: Unsubscribe;\r\n private nodeId: string | null = null\r\n public changed = false;\r\n\r\n constructor(protected engine: IDesignerEngine, protected mark: string, protected innerHtml: string) {\r\n super(\"mini-editor.mark-button\", engine)\r\n this.unsubscribe = engine.getMonitor().subscribeToTextEditingNodeChange(this.handleEditingChange)\r\n }\r\n\r\n handleEditingChange = (nodeId: string | null) => {\r\n this.nodeId = nodeId\r\n }\r\n\r\n handleClick = (e: MouseEvent) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n if (!this.nodeId) {\r\n console.warn(\"没有可编辑节点\", this.nodeId)\r\n return\r\n }\r\n const elements = this.engine.getShell().getElements(this.nodeId)\r\n const doc = (elements?.[0])?.ownerDocument\r\n const selection = doc?.getSelection();\r\n if (doc && selection && selection?.rangeCount > 0) {\r\n const range = selection.getRangeAt(0);\r\n const markElement = doc.createElement(this.mark);\r\n range.surroundContents(markElement);\r\n this.changed = true;\r\n }\r\n }\r\n\r\n onRender(node: ITreeNode): HTMLElement | null {\r\n const behavior = this.engine.getBehaviorManager().getNodeBehavior(node.id)\r\n if (!behavior.cloneable() || node.isSlot) {\r\n this.teardown()\r\n return null\r\n }\r\n const htmlEl = this.createHtmlElement()\r\n htmlEl.innerHTML = this.innerHtml\r\n htmlEl.addEventListener(\"mousedown\", this.handleClick)\r\n return htmlEl\r\n }\r\n\r\n teardown(): void {\r\n if (this.htmlElement) {\r\n this.htmlElement.removeEventListener(\"click\", this.handleClick)\r\n }\r\n this.unsubscribe()\r\n super.teardown()\r\n }\r\n\r\n}","import { IPlugin, ID, IDesignerEngine, CanvasResizeEvent, DraggingNodesState, DraggingResourceState, RXID_ATTR_NAME, numbToPx, getMaxZIndex, CanvasScrollEvent, HistoryableActionType } from \"@rxdrag/core-pro\";\r\nimport { Unsubscribe } from \"redux\";\r\nimport { getClildrenNodes } from \"./getClildrenNodes\";\r\nimport { MarkButton } from \"./controls/MarkButton\";\r\n\r\n\r\n//选中时的轮廓线\r\nexport class ContentEditorImpl implements IPlugin {\r\n name = \"joyui.html-content-editor\";\r\n private toolbarHtml: HTMLElement | null = null\r\n private controls: MarkButton[] = [];\r\n resizeObserver: ResizeObserver\r\n private unsubscribe: Unsubscribe;\r\n\r\n //private nodeChangeUnsubscribe: Unsubscribe;\r\n private editingNodeId: ID | null = null\r\n private refreshedFlag = false\r\n //private nodeChangeUnsubscribe: Unsubscribe;\r\n private unCanvasScroll: Unsubscribe\r\n private unCanvasResize: Unsubscribe\r\n private draggingNodesOff: Unsubscribe\r\n private draggingResourceOff: Unsubscribe\r\n //private unMouseDbClick: Unsubscribe\r\n\r\n\r\n constructor(protected engine: IDesignerEngine) {\r\n if (!engine.getShell().getContainer) {\r\n console.error(\"Html 5 driver rootElement is undefined\")\r\n }\r\n this.controls = [\r\n new MarkButton(engine, \"b\", \"<b>B<b>\"),\r\n new MarkButton(engine, \"em\", \"<em>I</em>\"),\r\n new MarkButton(engine, \"u\", \"<u>U</u>\"),\r\n new MarkButton(engine, \"del\", \"<del>S</del>\"),\r\n ]\r\n this.resizeObserver = new ResizeObserver(this.onResize)\r\n this.unsubscribe = engine.getMonitor().subscribeToTextEditingNodeChange(this.handleEditingChange)\r\n //this.nodeChangeUnsubscribe = engine.getMonitor().subscribeToHasNodeChanged(this.handleSelectionChange)\r\n //this.nodeChangeUnsubscribe = engine.getMonitor().subscribeToHasNodeChanged(this.refresh)\r\n this.unCanvasScroll = this.engine.getShell().subscribeTo<CanvasScrollEvent>(CanvasScrollEvent.Key, this.refresh)\r\n this.unCanvasResize = this.engine.getShell().subscribeTo<CanvasResizeEvent>(CanvasResizeEvent.Key, this.onResize)\r\n this.draggingNodesOff = this.engine.getMonitor().subscribeToDraggingNodes(this.handleDraggingNodes)\r\n this.draggingResourceOff = this.engine.getMonitor().subscribeToDraggingResource(this.handleDraggingResource)\r\n //this.unMouseDbClick = this.engine.getShell().subscribeTo<MouseDownEvent>(MouseDownEvent.Key, this.onDbClick)\r\n }\r\n\r\n //20毫秒之内的事件,只刷新一次\r\n private refresh = () => {\r\n this.refreshedFlag = true\r\n setTimeout(() => {\r\n if (this.refreshedFlag) {\r\n this.render()\r\n this.refreshedFlag = false\r\n }\r\n }, 20)\r\n }\r\n\r\n onResize = () => {\r\n //this.refresh()\r\n }\r\n\r\n onMutation = () => {\r\n //this.refresh()\r\n }\r\n\r\n\r\n handleEditingChange = (nodeId: string | null) => {\r\n const shell = this.engine.getShell()\r\n this.resetButtons()\r\n this.editingNodeId = nodeId\r\n const node = this.engine.getMonitor().getNode(nodeId || \"\")\r\n const propOfValue = (node?.meta[\"xData\"] as any)?.params?.propOfValue\r\n const isBoundToChildren = (propOfValue === \"children\" || !propOfValue) && !!(node?.meta[\"xData\"] as any)?.field\r\n //TODO:这个代码有点反向类型依赖,需要优化\r\n if (nodeId && !isBoundToChildren) {\r\n const elements = shell.getElements(nodeId)\r\n\r\n if (elements?.length === 1) {\r\n this.render()\r\n const orElement = elements?.[0]\r\n const element = orElement.cloneNode(true) as HTMLElement\r\n orElement.parentNode?.append(element)\r\n //替换用于编辑的节点\r\n orElement.parentNode?.replaceChild(element, orElement)\r\n // const rect = orElement.getBoundingClientRect();\r\n // element.style.position = \"fixed\"\r\n // element.style.left = numbToPx(rect.left)\r\n // element.style.top = numbToPx(rect.top)\r\n // element.style.width = numbToPx(rect.width)\r\n // element.style.height = numbToPx(rect.height)\r\n element.setAttribute(\"contentEditable\", \"true\")\r\n const chilrenElements = element.querySelectorAll(`[${RXID_ATTR_NAME}]`)\r\n //所有子节点禁止编辑\r\n chilrenElements.forEach(ele => {\r\n ele.setAttribute(\"contentEditable\", \"false\")\r\n })\r\n let changed = false\r\n const handleInput = () => {\r\n changed = true\r\n }\r\n\r\n element.addEventListener(\"input\", handleInput)\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n if (event.key === 'Enter') {\r\n event.preventDefault(); // 阻止默认的回车行为\r\n\r\n // 创建一个新的 <br> 元素\r\n const br = document.createElement('br');\r\n const selection = element.ownerDocument.getSelection();\r\n if (selection) {\r\n const range = selection.getRangeAt(0);\r\n\r\n // 在当前光标位置插入 <br>\r\n range.deleteContents(); // 删除选中的内容(如果有)\r\n range.insertNode(br); // 插入 <br>\r\n\r\n // 将光标移动到 <br> 后面\r\n range.setStartAfter(br);\r\n range.collapse(true);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n changed = true\r\n }\r\n }\r\n }\r\n\r\n element.addEventListener('keydown', handleKeydown);\r\n const handleBlur = () => {\r\n if (changed || this.buttonChanged()) {\r\n const childrenSchemas = getClildrenNodes(element, this.engine)\r\n const doc = this.engine.getNodeDocument(nodeId)\r\n doc?.backup(HistoryableActionType.SetChildren)\r\n doc?.setChildren(nodeId, childrenSchemas)\r\n //防止闪烁\r\n // const oldOpacity = orElement.style.opacity\r\n // orElement.style.opacity = \"0\"\r\n // setTimeout(() => {\r\n // orElement.style.opacity = oldOpacity\r\n // }, 0)\r\n }\r\n element.removeEventListener(\"input\", handleInput)\r\n element.removeEventListener(\"blur\", handleBlur)\r\n element.removeEventListener(\"keydown\", handleKeydown)\r\n //换回节点,把更新权交给react\r\n element.parentNode?.replaceChild(orElement, element)\r\n element.remove()\r\n this.engine.getActions().editNodeText(null)\r\n }\r\n\r\n element.addEventListener(\"blur\", handleBlur)\r\n\r\n // 创建一个 Range 对象\r\n const range = element.ownerDocument.createRange();\r\n const selection = element.ownerDocument.getSelection();\r\n\r\n if (selection) {\r\n // 清除当前选区\r\n selection.removeAllRanges();\r\n\r\n // 设置 Range 的起始位置为 editableDiv 的最后\r\n range.selectNodeContents(element);\r\n range.collapse(false); // false 表示光标在最后\r\n\r\n // 将新的 Range 添加到选区\r\n selection.addRange(range);\r\n }\r\n\r\n element.focus()\r\n }\r\n } else {\r\n this.clear()\r\n }\r\n }\r\n\r\n render = () => {\r\n if (!this.editingNodeId) {\r\n this.clear()\r\n return\r\n }\r\n\r\n const node = this.engine.getMonitor().getCurrentNode()\r\n const divEl = this.toolbarHtml\r\n const shell = this.engine.getShell()\r\n const canvas = shell.getCanvas(this.engine.getMonitor().getNodeDocumentId(node?.id || \"\") || \"\")\r\n divEl && divEl.remove()\r\n this.toolbarHtml = null\r\n if (!node) {\r\n if (divEl) {\r\n divEl.remove()\r\n }\r\n return\r\n }\r\n\r\n const elements = node.id && shell.getElements(node.id)\r\n const positionLimit = this.positionLimit(node.documentId)\r\n\r\n const rect = shell.getNodeRect(node.id);\r\n if (elements && positionLimit && rect) {\r\n const htmlDiv = canvas?.getRootElement()?.ownerDocument.createElement('div')\r\n if (!htmlDiv) {\r\n console.warn(\"no canvas root element \")\r\n return\r\n }\r\n htmlDiv.style.display = \"flex\"\r\n htmlDiv.style.gap = \"8px\"\r\n htmlDiv.style.alignItems = \"center\"\r\n for (const ctrl of this.controls) {\r\n const ctrlHtmlEl = ctrl.onRender(node)\r\n if (ctrlHtmlEl) {\r\n htmlDiv.appendChild(ctrlHtmlEl)\r\n }\r\n }\r\n const barHeight = htmlDiv.getBoundingClientRect().height || 16\r\n let top = rect.y - barHeight - 24;\r\n if (top < positionLimit.top) {\r\n top = rect.y + rect.height + 2\r\n if (top > (positionLimit.bottom - barHeight)) {\r\n top = rect.y + 2\r\n }\r\n }\r\n\r\n const left = rect.x;\r\n htmlDiv.style.position = \"fixed\"\r\n htmlDiv.style.left = numbToPx(left)\r\n htmlDiv.style.top = numbToPx(top)\r\n htmlDiv.style.fontSize = \"14px\"\r\n htmlDiv.style.padding = \"8px\"\r\n htmlDiv.style.backgroundColor = \"#313131\"\r\n htmlDiv.style.borderRadius = \"4px\"\r\n htmlDiv.style.zIndex = (getMaxZIndex(elements?.[elements.length - 1]) + 5).toString()\r\n htmlDiv.style.userSelect = \"none\"\r\n htmlDiv.style.boxShadow = \"0 2px 8px rgba(0, 0, 0, 0.2)\"\r\n\r\n canvas?.appendAux(htmlDiv)\r\n htmlDiv.addEventListener(\"mousedown\", (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n })\r\n\r\n const divRect = htmlDiv.getBoundingClientRect()\r\n if ((rect.x + rect.width - divRect.width) < positionLimit.left) {\r\n htmlDiv.style.right = \"auto\"\r\n htmlDiv.style.left = numbToPx(positionLimit.left)\r\n }\r\n\r\n this.toolbarHtml = htmlDiv\r\n for (const element of elements) {\r\n this.resizeObserver.observe(element)\r\n }\r\n }\r\n }\r\n\r\n\r\n handleDraggingNodes = (dragging: DraggingNodesState | null) => {\r\n //this.hideWhenDragging(!!dragging)\r\n }\r\n\r\n handleDraggingResource = (dragging: DraggingResourceState | null) => {\r\n // this.hideWhenDragging(!!dragging)\r\n }\r\n\r\n\r\n onViewportChange = () => {\r\n //this.refresh()\r\n }\r\n\r\n\r\n destroy(): void {\r\n for (const ctrl of this.controls) {\r\n ctrl.teardown()\r\n }\r\n this.clear()\r\n this.unsubscribe()\r\n //this.nodeChangeUnsubscribe()\r\n this.unCanvasScroll()\r\n this.unCanvasResize()\r\n this.draggingNodesOff?.()\r\n this.draggingResourceOff?.()\r\n //this.unMouseDbClick?.()\r\n }\r\n\r\n private positionLimit(documentId: ID) {\r\n const rect = this.engine.getShell().getCanvas(documentId)?.getDocumentBodyRect()\r\n if (!rect) {\r\n return null\r\n }\r\n return {\r\n right: 0,\r\n left: 0,\r\n top: rect.y,\r\n bottom: rect.y + rect.height\r\n }\r\n }\r\n\r\n private clear() {\r\n if (this.toolbarHtml) {\r\n this.toolbarHtml.remove()\r\n }\r\n this.toolbarHtml = null\r\n }\r\n\r\n private resetButtons() {\r\n for (const btn of this.controls) {\r\n btn.changed = false;\r\n }\r\n }\r\n\r\n private buttonChanged() {\r\n for (const btn of this.controls) {\r\n if (btn.changed) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\nexport const ContentEditor = (engine: IDesignerEngine) => {\r\n return new ContentEditorImpl(engine)\r\n}\r\n","import { ListResult } from \"@rxdrag/entify-hooks\"\r\nimport { FrontComponent, Page, Template, Theme } from \"@rxdrag/rxcms-models\"\r\nimport React, { createContext, useContext } from \"react\"\r\n\r\nexport type StudioContextType = {\r\n websiteId?: string\r\n templates?: Template[]\r\n components?: FrontComponent[]\r\n pages?: ListResult<Page>\r\n theme?: Theme,\r\n loading?: boolean,\r\n}\r\n\r\nexport const StudioContext = createContext<StudioContextType>({})\r\n\r\nexport function useTemplates() {\r\n const templates = React.useContext(StudioContext)?.templates\r\n return templates\r\n}\r\n\r\nexport function useFrontComponents() {\r\n const components = React.useContext(StudioContext)?.components\r\n return components\r\n}\r\n\r\nexport function useWebsiteTheme(): Theme | undefined {\r\n return useContext(StudioContext).theme;\r\n}\r\n\r\nexport function useThemeTailwindConfig() {\r\n const theme = useContext(StudioContext).theme;\r\n return theme?.tailwindConfig\r\n}\r\n\r\nexport function useThemeSettings() {\r\n const theme = useContext(StudioContext).theme;\r\n return theme?.settings\r\n}\r\n\r\n\r\nexport function usePages() {\r\n return useContext(StudioContext).pages\r\n}\r\n\r\nexport function useStudioLoading() {\r\n return useContext(StudioContext).loading\r\n}","import { ComponentCategoryFields, FrontComponentFields, FrontComponentQueryOptions, MediaQueryOptions, PageAssciations, PageFields, PageQueryOptions, TemplateCategoryFields, TemplateFields, TemplateQueryOptions, ThemeFields, ThemeQueryOptions } from \"@rxdrag/rxcms-models\"\r\nimport { StudioContext } from \"./contexts\"\r\nimport { GlobalLoading } from \"@rxdrag/rxcms-models-ui\"\r\nimport { useFrontComponentList, useOneTheme, usePageList, useTemplateList } from \"@rxdrag/rxcms-model-hooks\"\r\nimport { OrderBy } from \"@rxdrag/entify-hooks\"\r\nimport { useMemo } from \"react\"\r\nimport { RecoilRoot } from \"recoil\"\r\n\r\nexport function StudioRoot(\r\n props: {\r\n websiteId?: string | null\r\n children: React.ReactNode\r\n }\r\n) {\r\n const { websiteId, children } = props\r\n\r\n const { data: theme, isLoading: themeLoading } = useOneTheme(\r\n new ThemeQueryOptions(\r\n [\r\n ThemeFields.id,\r\n ThemeFields.name,\r\n ThemeFields.styles,\r\n ThemeFields.settings,\r\n ThemeFields.tailwindConfig,\r\n ThemeFields.css,\r\n ],\r\n {\r\n where: {\r\n selectedBy: {\r\n id: {\r\n _eq: websiteId\r\n }\r\n }\r\n }\r\n }\r\n )\r\n .website()\r\n .setNoQuery(!websiteId)\r\n );\r\n\r\n const themeId = theme?.id\r\n\r\n const { data: themplatesData, isLoading } = useTemplateList(\r\n new TemplateQueryOptions(\r\n [\r\n TemplateFields.id,\r\n TemplateFields.name,\r\n TemplateFields.seqValue,\r\n TemplateFields.updatedAt,\r\n TemplateFields.content,\r\n ],\r\n {\r\n where: {\r\n theme: {\r\n id: {\r\n _eq: themeId\r\n }\r\n }\r\n },\r\n orderBy: [\r\n {\r\n 'seqValue': OrderBy.asc,\r\n },\r\n {\r\n 'createdAt': OrderBy.asc,\r\n }\r\n ]\r\n }\r\n )\r\n .category([TemplateCategoryFields.id, TemplateCategoryFields.name])\r\n .theme()\r\n .setNoQuery(!themeId)\r\n )\r\n\r\n const { data: pagesData, isLoading: pagesLoading } = usePageList(\r\n new PageQueryOptions(\r\n [\r\n PageFields.id,\r\n PageFields.title,\r\n PageFields.createdAt,\r\n PageFields.updatedAt,\r\n PageFields.slug,\r\n PageFields.content,\r\n PageFields.seoTitle,\r\n PageFields.seoDescription,\r\n PageFields.seoKeywords,\r\n PageFields.ogUrl,\r\n PageFields.ogTitle,\r\n PageFields.ogDescription,\r\n PageFields.pageType,\r\n ],\r\n {\r\n where: {\r\n [PageAssciations.website]: {\r\n id: { _eq: websiteId }\r\n }\r\n },\r\n orderBy: [\r\n {\r\n createdAt: OrderBy.desc,\r\n }\r\n ]\r\n }\r\n ).ogImage(new MediaQueryOptions().file([\"thumbnail\", \"url\", \"resize(width: 1200, height: 630)\"]))\r\n .setNoQuery(!websiteId)\r\n )\r\n\r\n const { data: componentsData, isLoading: componentsLoading } = useFrontComponentList(\r\n new FrontComponentQueryOptions(\r\n [\r\n FrontComponentFields.id,\r\n FrontComponentFields.name,\r\n FrontComponentFields.title,\r\n FrontComponentFields.seqValue,\r\n FrontComponentFields.updatedAt,\r\n FrontComponentFields.content,\r\n FrontComponentFields.testConfig,\r\n FrontComponentFields.props,\r\n FrontComponentFields.slots,\r\n FrontComponentFields.droppable,\r\n ],\r\n {\r\n where: {\r\n theme: {\r\n id: {\r\n _eq: themeId\r\n }\r\n }\r\n },\r\n orderBy: [\r\n {\r\n [FrontComponentFields.seqValue]: OrderBy.asc,\r\n },\r\n {\r\n [FrontComponentFields.createdAt]: OrderBy.asc,\r\n }\r\n ]\r\n }\r\n )\r\n .category([ComponentCategoryFields.id, ComponentCategoryFields.name])\r\n .theme()\r\n .setNoQuery(!themeId)\r\n )\r\n\r\n const loading = isLoading || componentsLoading || themeLoading || pagesLoading\r\n\r\n const studioData = useMemo(() => {\r\n return {\r\n theme: theme,\r\n templates: themplatesData?.items,\r\n components: componentsData?.items,\r\n pages: pagesData,\r\n loading: loading,\r\n }\r\n }, [componentsData?.items, loading, pagesData, theme, themplatesData?.items])\r\n \r\n return (\r\n <RecoilRoot>\r\n <StudioContext.Provider value={studioData}>\r\n {children}\r\n <GlobalLoading loading={loading} />\r\n </StudioContext.Provider>\r\n </RecoilRoot>\r\n )\r\n}","import { useFrontComponents } from \"../../components/StudioRoot\"\r\n\r\nexport function useFrontComponent(name: string | undefined) {\r\n const components = useFrontComponents()\r\n\r\n return components?.find(c => c.name === name)\r\n}","export const CUSTOMIZED_COMPONENT_NAME_PREFIX = \"XComponent\"\r\nexport const CUSTOMIZED_COMPONENT_TAG = \"x-component\"","import { ExtendField } from \"@rxdrag/rxcms-models\";\r\nimport { INodeMeta, INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { CUSTOMIZED_COMPONENT_NAME_PREFIX } from \"./consts\";\r\nimport { cn } from \"@nextui-org/react\";\r\n\r\nexport function getCustomizedComponentName(name: string) {\r\n return CUSTOMIZED_COMPONENT_NAME_PREFIX + name\r\n}\r\n\r\nexport const getCode = (text?: string) => {\r\n const match = text?.trim().match(/^{(.+)}$/)\r\n return match ? match[1] : undefined\r\n}\r\n\r\nexport const codeRunFilter = (componentProps: object | undefined, fields: ExtendField[] | undefined) => {\r\n const newProps = {\r\n className: undefined,\r\n children: undefined,\r\n style: undefined,\r\n clsx: cn,\r\n cn: cn,\r\n ...fields?.reduce((acc, field) => {\r\n if (field.name) {\r\n acc[field.name] = undefined\r\n }\r\n return acc\r\n }, {} as Record<string, unknown>), ...componentProps\r\n }\r\n return (meta?: INodeMeta) => {\r\n if (componentProps && meta) {\r\n const args = Object.keys(newProps);\r\n const values = Object.values(newProps);\r\n\r\n const newMeta = {\r\n ...meta,\r\n props: {\r\n ...meta.props\r\n }\r\n }\r\n\r\n //children也在text中,也在这里处理\r\n if (newMeta.text?.trim()) {\r\n const code = getCode(newMeta.text)\r\n if (code) {\r\n try {\r\n newMeta.text = new Function(...args, `return (${code})`)(...values);\r\n } catch (error) {\r\n console.error(\"Error executing code in newMeta.text:\", error, code);\r\n }\r\n }\r\n }\r\n if (newMeta.props) {\r\n for (const key in newMeta.props) {\r\n if (typeof newMeta.props[key] === 'string') {\r\n const code = getCode(newMeta.props[key]);\r\n if (code) {\r\n try {\r\n newMeta.props[key] = new Function(...args, `return (${code})`)(...values);\r\n } catch (error) {\r\n console.error(`Error executing code in newMeta.props[${key}]:`, error, code);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return newMeta\r\n }\r\n\r\n return meta\r\n }\r\n}\r\n\r\n//codeRunFilter补全组件属性\r\nexport const filterSchema = (\r\n nodeSchema: INodeSchema,\r\n //通过组件传入的prosps,这个包含了children\r\n componentProps: object | undefined,\r\n fields: ExtendField[] | undefined\r\n): INodeSchema => {\r\n const metaFilter = codeRunFilter(componentProps, fields)\r\n const newNodeSchema = { ...metaFilter(nodeSchema as INodeMeta), children: [...nodeSchema.children || []], slots: { ...nodeSchema.slots } } as INodeSchema\r\n\r\n newNodeSchema.children = newNodeSchema.children?.map(child => {\r\n return filterSchema(child, componentProps, fields)\r\n })\r\n\r\n if (newNodeSchema.slots) {\r\n for (const key in newNodeSchema.slots) {\r\n const slot = newNodeSchema.slots[key]\r\n if (slot) {\r\n newNodeSchema.slots[key] = filterSchema(slot, componentProps, fields)\r\n }\r\n }\r\n }\r\n\r\n return newNodeSchema\r\n}\r\n","\r\n\r\nimport { useFrontComponent } from \"./hooks/useFrontComponent\";\r\nimport { ComponentDesignersRoot, useDesignerEngine } from \"@rxdrag/react-core-pro\";\r\nimport { PreviewRenderDel } from \"@rxdrag/website-preview\";\r\nimport { IReactComponents } from \"@rxdrag/react-shared\";\r\nimport { useMemo } from \"react\";\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { filterSchema } from \"./funcs\";\r\n\r\nexport type XComponentProps = {\r\n name: string;\r\n}\r\nexport const XComponentPreview = (props: XComponentProps & {\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}) => {\r\n const { name, ...other } = props;\r\n const engine = useDesignerEngine()\r\n const fCom = useFrontComponent(name);\r\n\r\n const previews: IReactComponents = useMemo(() => {\r\n const previews: IReactComponents = {}\r\n const materials = engine?.getComponentManager().getAllComponentConfigs()\r\n if (materials) {\r\n for (const key of Object.keys(materials)) {\r\n const material = materials[key]\r\n previews[key] = material?.preview || material?.component\r\n }\r\n }\r\n\r\n return previews\r\n }, [engine])\r\n\r\n\r\n return (\r\n <ComponentDesignersRoot components={previews}>\r\n {\r\n fCom?.content?.elements?.map((element: INodeSchema, index: number) => {\r\n return (\r\n <PreviewRenderDel\r\n key={index}\r\n schema={filterSchema(element, other, fCom.props?.items)}\r\n components={previews}\r\n />\r\n )\r\n })\r\n }\r\n </ComponentDesignersRoot>\r\n )\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { RXID_ATTR_NAME } from \"@rxdrag/core-pro\";\r\nimport { useFrontComponent } from \"../hooks/useFrontComponent\";\r\nimport { useComponentDesigners, useNode } from \"@rxdrag/react-core-pro\";\r\nimport { PreviewRenderDel } from \"@rxdrag/website-preview\";\r\nimport { useMemo } from \"react\";\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { filterSchema } from \"../funcs\";\r\nimport { XComponentProps } from \"../preview\";\r\n\r\nexport const XComponentDesigner = (props: XComponentProps & {\r\n [RXID_ATTR_NAME]: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}) => {\r\n const { name, [RXID_ATTR_NAME]: rxId, ...other } = props;\r\n const fCom = useFrontComponent(name);\r\n const components = useComponentDesigners();\r\n const node = useNode()\r\n\r\n const rootProps = useMemo(() => {\r\n return {\r\n [RXID_ATTR_NAME]: rxId,\r\n }\r\n }, [rxId])\r\n\r\n const slots = useMemo(() => {\r\n const slts: Record<string, React.ReactNode> = {}\r\n for (const key of Object.keys(node?.slots || {})) {\r\n slts[key] = (other as any)?.[key]\r\n delete (other as any)?.[key]\r\n }\r\n return slts\r\n }, [node?.slots, other])\r\n\r\n return (\r\n <>\r\n {\r\n fCom?.content?.elements?.map((element: INodeSchema, index: number) => {\r\n return (\r\n <PreviewRenderDel\r\n key={index}\r\n //处理自定义属性\r\n schema={filterSchema(element, other, fCom.props?.items)}\r\n components={components}\r\n customziedSlots={slots}\r\n {...rootProps}\r\n />\r\n )\r\n })\r\n }\r\n </>\r\n )\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { ComponentType, ExtendField } from \"@rxdrag/rxcms-models\"\r\nimport { useCallback } from \"react\"\r\nimport { ImageSelect, TargetSetter, Textarea } from \"@rxdrag/schema-setters\"\r\nimport { Switch } from \"@nextui-org/react\"\r\nimport { ColorPicker } from \"@rxdrag/rxcms-common\"\r\nimport { Input } from \"@rxdrag/schema-setters\"\r\n\r\nexport function InputControl(\r\n props: {\r\n label?: string,\r\n field: ExtendField\r\n value?: Record<string, any>,\r\n onValueChange?: (value?: Record<string, any>) => void\r\n }\r\n) {\r\n const { label, field, value, onValueChange } = props\r\n\r\n const handleChange = useCallback((fieldValue: unknown, fieldName?: string) => {\r\n if (fieldName) {\r\n onValueChange?.({\r\n ...value || {},\r\n [fieldName]: fieldValue\r\n })\r\n }\r\n }, [onValueChange, value])\r\n\r\n return (\r\n <>\r\n {\r\n field.component === ComponentType.Input &&\r\n <Input\r\n value={value?.[field.name as string] || \"\"}\r\n label={label}\r\n onValueChange={(newValue) => {\r\n if (field.name) {\r\n handleChange(newValue, field.name)\r\n }\r\n }}\r\n />\r\n }\r\n {\r\n field.component === ComponentType.Textarea &&\r\n <Textarea\r\n variant=\"flat\"\r\n label={label}\r\n value={value?.[field.name as string] || \"\"}\r\n onValueChange={(newValue) => {\r\n if (field.name) {\r\n handleChange(newValue, field.name)\r\n }\r\n }}\r\n />\r\n }\r\n {\r\n field.component === ComponentType.Switch &&\r\n <Switch\r\n isSelected={value?.[field.name as string] || false}\r\n size=\"sm\"\r\n onValueChange={(value) => {\r\n if (field.name) {\r\n handleChange(value, field.name)\r\n }\r\n }\r\n }\r\n >{label}</Switch>\r\n }\r\n {\r\n field.component === ComponentType.NumberInput &&\r\n <Input\r\n type=\"number\"\r\n label={label}\r\n labelPlacement=\"outside\"\r\n placeholder={\"请输入\" + label}\r\n value={value?.[field.name as string] || \"\"}\r\n onChange={(e) => {\r\n if (field.name) {\r\n handleChange(e.target.value ? parseInt(e.target.value) : undefined, field.name)\r\n }\r\n }\r\n }\r\n />\r\n }\r\n {\r\n field.component === ComponentType.ImageSelect &&\r\n <ImageSelect\r\n label={label}\r\n value={value?.[field.name as string]}\r\n onChange={(value) => {\r\n if (field.name) {\r\n handleChange(value, field.name)\r\n }\r\n }}\r\n />\r\n }\r\n {\r\n field.component === ComponentType.ColorPicker &&\r\n <ColorPicker\r\n value={value?.[field.name as string]}\r\n onChange={(value) => {\r\n if (field.name) {\r\n handleChange(value, field.name)\r\n }\r\n }}\r\n />\r\n }\r\n {\r\n field.component === ComponentType.LinkTarget &&\r\n <TargetSetter\r\n value={value?.[field.name as string]}\r\n onChange={(newValue) => {\r\n if (field.name) {\r\n handleChange(newValue, field.name)\r\n }\r\n }}\r\n />\r\n }\r\n </>\r\n )\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { ExtendField } from \"@rxdrag/rxcms-models\"\r\nimport { InputControl } from \"./InputControl\"\r\n\r\nexport function CustomizedComponentPropsSetter(props: {\r\n fields?: ExtendField[],\r\n value?: Record<string, any>,\r\n onValueChange?: (value?: Record<string, any>) => void\r\n}) {\r\n const { fields, value, onValueChange } = props\r\n\r\n return (\r\n <div\r\n className=\"flex flex-col gap-2\"\r\n >\r\n {\r\n\r\n fields?.map((field, index) => {\r\n return (\r\n <InputControl key={index + (field.name || \"\")}\r\n label={field.title}\r\n field={field}\r\n value={value}\r\n onValueChange={onValueChange}\r\n />\r\n )\r\n })\r\n }\r\n </div>\r\n )\r\n}","import { IMaterial } from \"@rxdrag/react-core-pro\";\r\nimport { useMemo } from \"react\";\r\nimport { XComponentPreview } from \"../preview\";\r\nimport { XComponentDesigner } from \"../designer\";\r\nimport { CustomizedComponentPropsSetter } from \"../setter\";\r\nimport { createSchema } from \"@rxdrag/website-materials\";\r\nimport { useFrontComponents } from \"../../components/StudioRoot\";\r\nimport { getCustomizedComponentName } from \"../funcs\";\r\n\r\nexport function useCustomizedMaterials() {\r\n const components = useFrontComponents()\r\n\r\n const materials: IMaterial[] | undefined = useMemo(() => {\r\n return components?.map(c => {\r\n const componentName = getCustomizedComponentName(c.name!)\r\n return {\r\n componentName: componentName,\r\n component: XComponentPreview,\r\n designer: XComponentDesigner,\r\n preview: XComponentPreview,\r\n designerLocales: {\r\n \"zh-CN\": {\r\n title: c.title || c.name || \"自定义组件\",\r\n description: \"\",\r\n settings: {\r\n },\r\n },\r\n 'en-US': {\r\n title: \"Customized Component\",\r\n settings: {\r\n }\r\n }\r\n },\r\n propsSchema: createSchema({\r\n propOraginSchemas: c.props?.items?.length\r\n ? [\r\n {\r\n componentName: \"CustomizedComponentPropsSetter_\" + c.name,\r\n \"xData\": {\r\n name: \"props\",\r\n },\r\n }\r\n ]\r\n : undefined\r\n }),\r\n setters: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n [\"CustomizedComponentPropsSetter_\" + c.name]: (props: { value?: any, onValueChange?: (value?: any) => void }) => {\r\n const { value, onValueChange } = props\r\n return <CustomizedComponentPropsSetter\r\n fields={c.props?.items}\r\n value={value}\r\n onValueChange={onValueChange}\r\n />\r\n }\r\n },\r\n behaviorRule: {\r\n droppable: c.droppable,\r\n hasPlaceholder: c.droppable,\r\n isVoid: true,\r\n noRef: true,\r\n },\r\n }\r\n })\r\n }, [components])\r\n\r\n return materials\r\n}","import React from \"react\";\r\nimport { ISetterComponents } from \"@rxdrag/core-pro\";\r\nimport { propSetters } from \"@rxdrag/schema-setters\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport const studioSetters: ISetterComponents<any> = {\r\n ...propSetters,\r\n Fragment: React.Fragment,\r\n // TabList,\r\n // Tab,\r\n // TabPanel,\r\n // Stack,\r\n // FormControl,\r\n // FormLabel: FormLabel,\r\n // Autocomplete: Autocomplete,\r\n // Input: toControlled(Input, 'value', ''),\r\n // Textarea: toControlled(Textarea, 'value', ''),\r\n //Select,\r\n //Option: Option,\r\n //Switch: Switch,\r\n //IconPicker,\r\n //ToggleButtonGroup,\r\n // Button,\r\n // IconButton,\r\n // SlotSwitch,\r\n}","import { Designer, ICanvasConfig } from \"@rxdrag/react-core-pro\";\r\nimport { IResource } from \"@rxdrag/core-pro\";\r\nimport { ILocales } from \"@rxdrag/locales\";\r\nimport { useMemo } from \"react\";\r\nimport { ContentEditor } from \"../../plugins\";\r\nimport { useCustomizedMaterials } from \"../../customize\";\r\nimport { staticMaterials } from \"@rxdrag/website-materials\";\r\nimport { studioSetters } from \"../../setters\";\r\n\r\nexport type EditorScropProps = {\r\n resources?: IResource[];\r\n locales?: ILocales;\r\n children?: React.ReactNode;\r\n canvasConfig?: ICanvasConfig;\r\n};\r\n\r\nexport function EditorScope(\r\n props: EditorScropProps\r\n) {\r\n const { children, resources, ...rest } = props;\r\n\r\n const customMaterials = useCustomizedMaterials()\r\n\r\n const materials = useMemo(() => {\r\n return staticMaterials.concat(customMaterials || [])\r\n }, [customMaterials])\r\n\r\n const plugins = useMemo(() => {\r\n return [ContentEditor]\r\n }, [])\r\n\r\n return (\r\n <Designer\r\n resources={resources}\r\n plugins={plugins}\r\n materials={materials}\r\n setters={studioSetters}\r\n {...rest}\r\n >\r\n {children}\r\n </Designer>\r\n )\r\n}","export enum ContentType {\r\n Page = 'page',\r\n Component = 'component',\r\n PredefinedPage = 'PredefinedPage',\r\n Template = 'Template',\r\n //其实是Page的一个类型\r\n Frame = 'Frame',\r\n}\r\n\r\nexport type SelectedContent = {\r\n id: string\r\n type: ContentType\r\n //工具栏标题用\r\n breadcrumbs?: string[]\r\n}\r\n\r\nexport enum DrawerConentType {\r\n Insert = 'insert',\r\n Layers = 'layers',\r\n SEO = 'seo',\r\n SEM = 'sem',\r\n SNS = 'sns',\r\n ComponentSchema = 'componentSchema',\r\n ComponentTest = 'componentTest',\r\n}\r\n\r\nexport enum DeviceType {\r\n Mobile = 'mobile',\r\n Tablet = 'tablet',\r\n Desktop = 'desktop',\r\n}\r\n\r\nexport enum ViewMode {\r\n Design = 'design',\r\n Preview = 'preview',\r\n Code = 'code',\r\n}\r\n","import { cn } from \"@nextui-org/react\";\r\nimport { forwardRef, HTMLAttributes } from \"react\";\r\n\r\nexport type SheetProps = HTMLAttributes<HTMLDivElement> \r\nexport const Sheet = forwardRef<HTMLDivElement, SheetProps>((props, ref) => {\r\n const { className, children, ...rest } = props;\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(className, \"border-divider bg-black\")}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n )\r\n})","// src/utils/variants.ts\nvar solid = {\n default: \"bg-default text-default-foreground\",\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n danger: \"bg-danger text-danger-foreground\",\n foreground: \"bg-foreground text-background\"\n};\nvar shadow = {\n default: \"shadow-lg shadow-default/50 bg-default text-default-foreground\",\n primary: \"shadow-lg shadow-primary/40 bg-primary text-primary-foreground\",\n secondary: \"shadow-lg shadow-secondary/40 bg-secondary text-secondary-foreground\",\n success: \"shadow-lg shadow-success/40 bg-success text-success-foreground\",\n warning: \"shadow-lg shadow-warning/40 bg-warning text-warning-foreground\",\n danger: \"shadow-lg shadow-danger/40 bg-danger text-danger-foreground\",\n foreground: \"shadow-lg shadow-foreground/40 bg-foreground text-background\"\n};\nvar bordered = {\n default: \"bg-transparent border-default text-foreground\",\n primary: \"bg-transparent border-primary text-primary\",\n secondary: \"bg-transparent border-secondary text-secondary\",\n success: \"bg-transparent border-success text-success\",\n warning: \"bg-transparent border-warning text-warning\",\n danger: \"bg-transparent border-danger text-danger\",\n foreground: \"bg-transparent border-foreground text-foreground\"\n};\nvar flat = {\n default: \"bg-default/40 text-default-700\",\n primary: \"bg-primary/20 text-primary-700\",\n secondary: \"bg-secondary/20 text-secondary-700\",\n success: \"bg-success/20 text-success-800 dark:text-success\",\n warning: \"bg-warning/20 text-warning-800 dark:text-warning\",\n danger: \"bg-danger/20 text-danger-800 dark:text-danger-500\",\n foreground: \"bg-foreground/10 text-foreground\"\n};\nvar faded = {\n default: \"border-default bg-default-100 text-default-foreground\",\n primary: \"border-default bg-default-100 text-primary\",\n secondary: \"border-default bg-default-100 text-secondary\",\n success: \"border-default bg-default-100 text-success\",\n warning: \"border-default bg-default-100 text-warning\",\n danger: \"border-default bg-default-100 text-danger\",\n foreground: \"border-default bg-default-100 text-foreground\"\n};\nvar light = {\n default: \"bg-transparent text-default-foreground\",\n primary: \"bg-transparent text-primary\",\n secondary: \"bg-transparent text-secondary\",\n success: \"bg-transparent text-success\",\n warning: \"bg-transparent text-warning\",\n danger: \"bg-transparent text-danger\",\n foreground: \"bg-transparent text-foreground\"\n};\nvar ghost = {\n default: \"border-default text-default-foreground\",\n primary: \"border-primary text-primary\",\n secondary: \"border-secondary text-secondary\",\n success: \"border-success text-success\",\n warning: \"border-warning text-warning\",\n danger: \"border-danger text-danger\",\n foreground: \"border-foreground text-foreground hover:!bg-foreground\"\n};\nvar colorVariants = {\n solid,\n shadow,\n bordered,\n flat,\n faded,\n light,\n ghost\n};\n\nexport {\n colorVariants\n};\n","// src/utils/tw-merge-config.ts\nvar COMMON_UNITS = [\"small\", \"medium\", \"large\"];\nvar twMergeConfig = {\n theme: {\n opacity: [\"disabled\"],\n spacing: [\"divider\"],\n borderWidth: COMMON_UNITS,\n borderRadius: COMMON_UNITS\n },\n classGroups: {\n shadow: [{ shadow: COMMON_UNITS }],\n \"font-size\": [{ text: [\"tiny\", ...COMMON_UNITS] }],\n \"bg-image\": [\"bg-stripe-gradient\"]\n }\n};\n\nexport {\n COMMON_UNITS,\n twMergeConfig\n};\n","var l=e=>typeof e==\"boolean\"?`${e}`:e===0?\"0\":e,u=e=>!e||typeof e!=\"object\"||Object.keys(e).length===0,x=(e,o)=>JSON.stringify(e)===JSON.stringify(o),A=e=>typeof e==\"boolean\";function i(e,o){e.forEach(function(r){Array.isArray(r)?i(r,o):o.push(r);});}function y(e){let o=[];return i(e,o),o}var a=(...e)=>y(e).filter(Boolean),p=(e,o)=>{let r={},c=Object.keys(e),f=Object.keys(o);for(let t of c)if(f.includes(t)){let s=e[t],n=o[t];typeof s==\"object\"&&typeof n==\"object\"?r[t]=p(s,n):Array.isArray(s)||Array.isArray(n)?r[t]=a(n,s):r[t]=n+\" \"+s;}else r[t]=e[t];for(let t of f)c.includes(t)||(r[t]=o[t]);return r},g=e=>!e||typeof e!=\"string\"?e:e.replace(/\\s+/g,\" \").trim();\n\nexport { l as a, u as b, x as c, A as d, y as e, a as f, p as g, g as h };\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n var index = 0;\n var argument;\n var resolvedValue;\n var string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nfunction toValue(mix) {\n if (typeof mix === 'string') {\n return mix;\n }\n var resolvedValue;\n var string = '';\n for (var k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\n\nexport { twJoin };\n//# sourceMappingURL=tw-join.mjs.map\n","var CLASS_PART_SEPARATOR = '-';\nfunction createClassUtils(config) {\n var classMap = createClassMap(config);\n var conflictingClassGroups = config.conflictingClassGroups,\n _config$conflictingCl = config.conflictingClassGroupModifiers,\n conflictingClassGroupModifiers = _config$conflictingCl === void 0 ? {} : _config$conflictingCl;\n function getClassGroupId(className) {\n var classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n }\n function getConflictingClassGroupIds(classGroupId, hasPostfixModifier) {\n var conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [].concat(conflicts, conflictingClassGroupModifiers[classGroupId]);\n }\n return conflicts;\n }\n return {\n getClassGroupId: getClassGroupId,\n getConflictingClassGroupIds: getConflictingClassGroupIds\n };\n}\nfunction getGroupRecursive(classParts, classPartObject) {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n var currentClassPart = classParts[0];\n var nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n var classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n var classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(function (_ref) {\n var validator = _ref.validator;\n return validator(classRest);\n })?.classGroupId;\n}\nvar arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nfunction getGroupIdForArbitraryProperty(className) {\n if (arbitraryPropertyRegex.test(className)) {\n var arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n var property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n}\n/**\n * Exported for testing only\n */\nfunction createClassMap(config) {\n var theme = config.theme,\n prefix = config.prefix;\n var classMap = {\n nextPart: new Map(),\n validators: []\n };\n var prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(function (_ref2) {\n var classGroupId = _ref2[0],\n classGroup = _ref2[1];\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n}\nfunction processClassesRecursively(classGroup, classPartObject, classGroupId, theme) {\n classGroup.forEach(function (classDefinition) {\n if (typeof classDefinition === 'string') {\n var classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId: classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(function (_ref3) {\n var key = _ref3[0],\n classGroup = _ref3[1];\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n}\nfunction getPart(classPartObject, path) {\n var currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(function (pathPart) {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n}\nfunction isThemeGetter(func) {\n return func.isThemeGetter;\n}\nfunction getPrefixedClassGroupEntries(classGroupEntries, prefix) {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(function (_ref4) {\n var classGroupId = _ref4[0],\n classGroup = _ref4[1];\n var prefixedClassGroup = classGroup.map(function (classDefinition) {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(Object.entries(classDefinition).map(function (_ref5) {\n var key = _ref5[0],\n value = _ref5[1];\n return [prefix + key, value];\n }));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n}\n\nexport { createClassMap, createClassUtils };\n//# sourceMappingURL=class-utils.mjs.map\n","// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nfunction createLruCache(maxCacheSize) {\n if (maxCacheSize < 1) {\n return {\n get: function get() {\n return undefined;\n },\n set: function set() {}\n };\n }\n var cacheSize = 0;\n var cache = new Map();\n var previousCache = new Map();\n function update(key, value) {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n }\n return {\n get: function get(key) {\n var value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set: function set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n}\n\nexport { createLruCache };\n//# sourceMappingURL=lru-cache.mjs.map\n","var IMPORTANT_MODIFIER = '!';\nfunction createSplitModifiers(config) {\n var separator = config.separator || ':';\n var isSeparatorSingleCharacter = separator.length === 1;\n var firstSeparatorCharacter = separator[0];\n var separatorLength = separator.length;\n // splitModifiers inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n return function splitModifiers(className) {\n var modifiers = [];\n var bracketDepth = 0;\n var modifierStart = 0;\n var postfixModifierPosition;\n for (var index = 0; index < className.length; index++) {\n var currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n }\n }\n var baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n var hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n var baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n var maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers: modifiers,\n hasImportantModifier: hasImportantModifier,\n baseClassName: baseClassName,\n maybePostfixModifierPosition: maybePostfixModifierPosition\n };\n };\n}\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nfunction sortModifiers(modifiers) {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n var sortedModifiers = [];\n var unsortedModifiers = [];\n modifiers.forEach(function (modifier) {\n var isArbitraryVariant = modifier[0] === '[';\n if (isArbitraryVariant) {\n sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort().concat([modifier]));\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort());\n return sortedModifiers;\n}\n\nexport { IMPORTANT_MODIFIER, createSplitModifiers, sortModifiers };\n//# sourceMappingURL=modifier-utils.mjs.map\n","import { createClassUtils } from './class-utils.mjs';\nimport { createLruCache } from './lru-cache.mjs';\nimport { createSplitModifiers } from './modifier-utils.mjs';\n\nfunction createConfigUtils(config) {\n return {\n cache: createLruCache(config.cacheSize),\n splitModifiers: createSplitModifiers(config),\n ...createClassUtils(config)\n };\n}\n\nexport { createConfigUtils };\n//# sourceMappingURL=config-utils.mjs.map\n","import { sortModifiers, IMPORTANT_MODIFIER } from './modifier-utils.mjs';\n\nvar SPLIT_CLASSES_REGEX = /\\s+/;\nfunction mergeClassList(classList, configUtils) {\n var splitModifiers = configUtils.splitModifiers,\n getClassGroupId = configUtils.getClassGroupId,\n getConflictingClassGroupIds = configUtils.getConflictingClassGroupIds;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n var classGroupsInConflict = new Set();\n return classList.trim().split(SPLIT_CLASSES_REGEX).map(function (originalClassName) {\n var _splitModifiers = splitModifiers(originalClassName),\n modifiers = _splitModifiers.modifiers,\n hasImportantModifier = _splitModifiers.hasImportantModifier,\n baseClassName = _splitModifiers.baseClassName,\n maybePostfixModifierPosition = _splitModifiers.maybePostfixModifierPosition;\n var classGroupId = getClassGroupId(maybePostfixModifierPosition ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n var hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n if (!classGroupId) {\n if (!maybePostfixModifierPosition) {\n return {\n isTailwindClass: false,\n originalClassName: originalClassName\n };\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n return {\n isTailwindClass: false,\n originalClassName: originalClassName\n };\n }\n hasPostfixModifier = false;\n }\n var variantModifier = sortModifiers(modifiers).join(':');\n var modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n return {\n isTailwindClass: true,\n modifierId: modifierId,\n classGroupId: classGroupId,\n originalClassName: originalClassName,\n hasPostfixModifier: hasPostfixModifier\n };\n }).reverse()\n // Last class in conflict wins, so we need to filter conflicting classes in reverse order.\n .filter(function (parsed) {\n if (!parsed.isTailwindClass) {\n return true;\n }\n var modifierId = parsed.modifierId,\n classGroupId = parsed.classGroupId,\n hasPostfixModifier = parsed.hasPostfixModifier;\n var classId = modifierId + classGroupId;\n if (classGroupsInConflict.has(classId)) {\n return false;\n }\n classGroupsInConflict.add(classId);\n getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach(function (group) {\n return classGroupsInConflict.add(modifierId + group);\n });\n return true;\n }).reverse().map(function (parsed) {\n return parsed.originalClassName;\n }).join(' ');\n}\n\nexport { mergeClassList };\n//# sourceMappingURL=merge-classlist.mjs.map\n","import { createConfigUtils } from './config-utils.mjs';\nimport { mergeClassList } from './merge-classlist.mjs';\nimport { twJoin } from './tw-join.mjs';\n\nfunction createTailwindMerge() {\n for (var _len = arguments.length, createConfig = new Array(_len), _key = 0; _key < _len; _key++) {\n createConfig[_key] = arguments[_key];\n }\n var configUtils;\n var cacheGet;\n var cacheSet;\n var functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n var firstCreateConfig = createConfig[0],\n restCreateConfig = createConfig.slice(1);\n var config = restCreateConfig.reduce(function (previousConfig, createConfigCurrent) {\n return createConfigCurrent(previousConfig);\n }, firstCreateConfig());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n var cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n var result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\n\nexport { createTailwindMerge };\n//# sourceMappingURL=create-tailwind-merge.mjs.map\n","function fromTheme(key) {\n var themeGetter = function themeGetter(theme) {\n return theme[key] || [];\n };\n themeGetter.isThemeGetter = true;\n return themeGetter;\n}\n\nexport { fromTheme };\n//# sourceMappingURL=from-theme.mjs.map\n","var arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nvar fractionRegex = /^\\d+\\/\\d+$/;\nvar stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);\nvar tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nvar lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\n// Shadow always begins with x and y offset separated by underscore\nvar shadowRegex = /^-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nfunction isLength(value) {\n return isNumber(value) || stringLengths.has(value) || fractionRegex.test(value) || isArbitraryLength(value);\n}\nfunction isArbitraryLength(value) {\n return getIsArbitraryValue(value, 'length', isLengthOnly);\n}\nfunction isArbitrarySize(value) {\n return getIsArbitraryValue(value, 'size', isNever);\n}\nfunction isArbitraryPosition(value) {\n return getIsArbitraryValue(value, 'position', isNever);\n}\nfunction isArbitraryUrl(value) {\n return getIsArbitraryValue(value, 'url', isUrl);\n}\nfunction isArbitraryNumber(value) {\n return getIsArbitraryValue(value, 'number', isNumber);\n}\n/**\n * @deprecated Will be removed in next major version. Use `isArbitraryNumber` instead.\n */\nvar isArbitraryWeight = isArbitraryNumber;\nfunction isNumber(value) {\n return !Number.isNaN(Number(value));\n}\nfunction isPercent(value) {\n return value.endsWith('%') && isNumber(value.slice(0, -1));\n}\nfunction isInteger(value) {\n return isIntegerOnly(value) || getIsArbitraryValue(value, 'number', isIntegerOnly);\n}\nfunction isArbitraryValue(value) {\n return arbitraryValueRegex.test(value);\n}\nfunction isAny() {\n return true;\n}\nfunction isTshirtSize(value) {\n return tshirtUnitRegex.test(value);\n}\nfunction isArbitraryShadow(value) {\n return getIsArbitraryValue(value, '', isShadow);\n}\nfunction getIsArbitraryValue(value, label, testValue) {\n var result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return result[1] === label;\n }\n return testValue(result[2]);\n }\n return false;\n}\nfunction isLengthOnly(value) {\n return lengthUnitRegex.test(value);\n}\nfunction isNever() {\n return false;\n}\nfunction isUrl(value) {\n return value.startsWith('url(');\n}\nfunction isIntegerOnly(value) {\n return Number.isInteger(Number(value));\n}\nfunction isShadow(value) {\n return shadowRegex.test(value);\n}\n\nexport { isAny, isArbitraryLength, isArbitraryNumber, isArbitraryPosition, isArbitraryShadow, isArbitrarySize, isArbitraryUrl, isArbitraryValue, isArbitraryWeight, isInteger, isLength, isNumber, isPercent, isTshirtSize };\n//# sourceMappingURL=validators.mjs.map\n","import { fromTheme } from './from-theme.mjs';\nimport { isAny, isLength, isTshirtSize, isArbitraryValue, isPercent, isArbitraryLength, isInteger, isArbitraryNumber, isNumber, isArbitraryPosition, isArbitrarySize, isArbitraryUrl, isArbitraryShadow } from './validators.mjs';\n\nfunction getDefaultConfig() {\n var colors = fromTheme('colors');\n var spacing = fromTheme('spacing');\n var blur = fromTheme('blur');\n var brightness = fromTheme('brightness');\n var borderColor = fromTheme('borderColor');\n var borderRadius = fromTheme('borderRadius');\n var borderSpacing = fromTheme('borderSpacing');\n var borderWidth = fromTheme('borderWidth');\n var contrast = fromTheme('contrast');\n var grayscale = fromTheme('grayscale');\n var hueRotate = fromTheme('hueRotate');\n var invert = fromTheme('invert');\n var gap = fromTheme('gap');\n var gradientColorStops = fromTheme('gradientColorStops');\n var gradientColorStopPositions = fromTheme('gradientColorStopPositions');\n var inset = fromTheme('inset');\n var margin = fromTheme('margin');\n var opacity = fromTheme('opacity');\n var padding = fromTheme('padding');\n var saturate = fromTheme('saturate');\n var scale = fromTheme('scale');\n var sepia = fromTheme('sepia');\n var skew = fromTheme('skew');\n var space = fromTheme('space');\n var translate = fromTheme('translate');\n var getOverscroll = function getOverscroll() {\n return ['auto', 'contain', 'none'];\n };\n var getOverflow = function getOverflow() {\n return ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n };\n var getSpacingWithAutoAndArbitrary = function getSpacingWithAutoAndArbitrary() {\n return ['auto', isArbitraryValue, spacing];\n };\n var getSpacingWithArbitrary = function getSpacingWithArbitrary() {\n return [isArbitraryValue, spacing];\n };\n var getLengthWithEmpty = function getLengthWithEmpty() {\n return ['', isLength];\n };\n var getNumberWithAutoAndArbitrary = function getNumberWithAutoAndArbitrary() {\n return ['auto', isNumber, isArbitraryValue];\n };\n var getPositions = function getPositions() {\n return ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n };\n var getLineStyles = function getLineStyles() {\n return ['solid', 'dashed', 'dotted', 'double', 'none'];\n };\n var getBlendModes = function getBlendModes() {\n return ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity', 'plus-lighter'];\n };\n var getAlign = function getAlign() {\n return ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];\n };\n var getZeroAndEmpty = function getZeroAndEmpty() {\n return ['', '0', isArbitraryValue];\n };\n var getBreaks = function getBreaks() {\n return ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n };\n var getNumber = function getNumber() {\n return [isNumber, isArbitraryNumber];\n };\n var getNumberAndArbitrary = function getNumberAndArbitrary() {\n return [isNumber, isArbitraryValue];\n };\n return {\n cacheSize: 500,\n theme: {\n colors: [isAny],\n spacing: [isLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumber(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmpty(),\n contrast: getNumber(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumber(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumber(),\n scale: getNumber(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', 'video', isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': getBreaks()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n \"float\": [{\n \"float\": ['right', 'left', 'none']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [].concat(getPositions(), [isArbitraryValue])\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': getOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: ['auto', isInteger]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['wrap', 'wrap-reverse', 'nowrap']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: ['first', 'last', 'none', isInteger]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: ['auto', {\n span: ['full', isInteger]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: ['auto', {\n span: [isInteger]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: ['normal'].concat(getAlign())\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': ['start', 'end', 'center', 'stretch']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal'].concat(getAlign(), ['baseline'])\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': [].concat(getAlign(), ['baseline'])\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{\n 'space-x': [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{\n 'space-y': [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: ['auto', 'min', 'max', 'fit', isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': ['min', 'max', 'fit', isArbitraryValue, isLength]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': ['0', 'none', 'full', 'min', 'max', 'fit', 'prose', {\n screen: [isTshirtSize]\n }, isTshirtSize, isArbitraryValue]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['min', 'max', 'fit', isArbitraryValue, isLength]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit']\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', isTshirtSize, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isAny]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractons'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': ['none', isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isArbitraryValue, isLength]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['none', 'disc', 'decimal', isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{\n 'placeholder-opacity': [opacity]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{\n 'text-opacity': [opacity]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [].concat(getLineStyles(), ['wavy'])\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: ['auto', 'from-font', isLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': ['auto', isArbitraryValue, isLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: [colors]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: getSpacingWithArbitrary()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n \"break\": [{\n \"break\": ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryValue]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{\n 'bg-opacity': [opacity]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [].concat(getPositions(), [isArbitraryPosition])\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'round', 'space']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isArbitraryUrl]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{\n 'border-opacity': [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [].concat(getLineStyles(), ['hidden'])\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{\n 'divide-x': [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{\n 'divide-y': [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{\n 'divide-opacity': [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [''].concat(getLineStyles())\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isArbitraryValue, isLength]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: [isLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{\n ring: getLengthWithEmpty()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{\n 'ring-opacity': [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{\n 'ring-offset': [isLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{\n 'ring-offset': [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': getBlendModes()\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: ['', 'none']\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': ['', 'none']\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': [sepia]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': [borderSpacing]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: ['', 'gpu', 'none']\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: ['auto', colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: ['appearance-none'],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['none', 'auto']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', 'y', 'x', '']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'pinch-zoom', 'manipulation', {\n pan: ['x', 'left', 'right', 'y', 'up', 'down']\n }]\n }],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, 'none']\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, 'none']\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only']\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n }\n };\n}\n\nexport { getDefaultConfig };\n//# sourceMappingURL=default-config.mjs.map\n","/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nfunction mergeConfigs(baseConfig, configExtension) {\n for (var key in configExtension) {\n mergePropertyRecursively(baseConfig, key, configExtension[key]);\n }\n return baseConfig;\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar overrideTypes = /*#__PURE__*/new Set(['string', 'number', 'boolean']);\nfunction mergePropertyRecursively(baseObject, mergeKey, mergeValue) {\n if (!hasOwnProperty.call(baseObject, mergeKey) || overrideTypes.has(typeof mergeValue) || mergeValue === null) {\n baseObject[mergeKey] = mergeValue;\n return;\n }\n if (Array.isArray(mergeValue) && Array.isArray(baseObject[mergeKey])) {\n baseObject[mergeKey] = baseObject[mergeKey].concat(mergeValue);\n return;\n }\n if (typeof mergeValue === 'object' && typeof baseObject[mergeKey] === 'object') {\n if (baseObject[mergeKey] === null) {\n baseObject[mergeKey] = mergeValue;\n return;\n }\n for (var nextKey in mergeValue) {\n mergePropertyRecursively(baseObject[mergeKey], nextKey, mergeValue[nextKey]);\n }\n }\n}\n\nexport { mergeConfigs };\n//# sourceMappingURL=merge-configs.mjs.map\n","import { createTailwindMerge } from './create-tailwind-merge.mjs';\nimport { getDefaultConfig } from './default-config.mjs';\nimport { mergeConfigs } from './merge-configs.mjs';\n\nfunction extendTailwindMerge(configExtension) {\n for (var _len = arguments.length, createConfig = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n createConfig[_key - 1] = arguments[_key];\n }\n return typeof configExtension === 'function' ? createTailwindMerge.apply(void 0, [getDefaultConfig, configExtension].concat(createConfig)) : createTailwindMerge.apply(void 0, [function () {\n return mergeConfigs(getDefaultConfig(), configExtension);\n }].concat(createConfig));\n}\n\nexport { extendTailwindMerge };\n//# sourceMappingURL=extend-tailwind-merge.mjs.map\n","import { createTailwindMerge } from './create-tailwind-merge.mjs';\nimport { getDefaultConfig } from './default-config.mjs';\n\nvar twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\n\nexport { twMerge };\n//# sourceMappingURL=tw-merge.mjs.map\n","import { e, b, g, c, f, a, h } from './chunk-JXBJZR5A.js';\nimport { twMerge, extendTailwindMerge } from 'tailwind-merge';\n\nvar se={twMerge:!0,twMergeConfig:{},responsiveVariants:!1},_=s=>s||void 0,N=(...s)=>_(e(s).filter(Boolean).join(\" \")),q=null,M={},F=!1,w=(...s)=>b$1=>b$1.twMerge?((!q||F)&&(F=!1,q=b(M)?twMerge:extendTailwindMerge(M)),_(q(N(s)))):N(s),Z=(s,b)=>{for(let e in b)s.hasOwnProperty(e)?s[e]=N(s[e],b[e]):s[e]=b[e];return s},ie=(s,b$1)=>{let{extend:e=null,slots:j={},variants:U={},compoundVariants:C=[],compoundSlots:V=[],defaultVariants:W={}}=s,m={...se,...b$1},S=e!=null&&e.base?N(e.base,s==null?void 0:s.base):s==null?void 0:s.base,g$1=e!=null&&e.variants&&!b(e.variants)?g(U,e.variants):U,A=e!=null&&e.defaultVariants&&!b(e.defaultVariants)?{...e.defaultVariants,...W}:W;!b(m.twMergeConfig)&&!c(m.twMergeConfig,M)&&(F=!0,M=m.twMergeConfig);let O=b(e==null?void 0:e.slots),$=b(j)?{}:{base:N(s==null?void 0:s.base,O&&(e==null?void 0:e.base)),...j},h$1=O?$:Z({...e==null?void 0:e.slots},b($)?{base:s==null?void 0:s.base}:$),v=l=>{if(b(g$1)&&b(j)&&O)return w(S,l==null?void 0:l.class,l==null?void 0:l.className)(m);if(C&&!Array.isArray(C))throw new TypeError(`The \"compoundVariants\" prop must be an array. Received: ${typeof C}`);if(V&&!Array.isArray(V))throw new TypeError(`The \"compoundSlots\" prop must be an array. Received: ${typeof V}`);let K=(t,n,a=[],i)=>{let r=a;if(typeof n==\"string\")r=r.concat(h(n).split(\" \").map(c=>`${t}:${c}`));else if(Array.isArray(n))r=r.concat(n.reduce((c,f)=>c.concat(`${t}:${f}`),[]));else if(typeof n==\"object\"&&typeof i==\"string\"){for(let c in n)if(n.hasOwnProperty(c)&&c===i){let f=n[c];if(f&&typeof f==\"string\"){let o=h(f);r[i]?r[i]=r[i].concat(o.split(\" \").map(u=>`${t}:${u}`)):r[i]=o.split(\" \").map(u=>`${t}:${u}`);}else Array.isArray(f)&&f.length>0&&(r[i]=f.reduce((o,u)=>o.concat(`${t}:${u}`),[]));}}return r},z=(t,n=g$1,a$1=null,i=null)=>{var J;let r=n[t];if(!r||b(r))return null;let c=(J=i==null?void 0:i[t])!=null?J:l==null?void 0:l[t];if(c===null)return null;let f=a(c),o=Array.isArray(m.responsiveVariants)&&m.responsiveVariants.length>0||m.responsiveVariants===!0,u=A==null?void 0:A[t],d=[];if(typeof f==\"object\"&&o)for(let[k,L]of Object.entries(f)){let ae=r[L];if(k===\"initial\"){u=L;continue}Array.isArray(m.responsiveVariants)&&!m.responsiveVariants.includes(k)||(d=K(k,ae,d,a$1));}let T=r[f]||r[a(u)];return typeof d==\"object\"&&typeof a$1==\"string\"&&d[a$1]?Z(d,T):d.length>0?(d.push(T),d):T},P=()=>g$1?Object.keys(g$1).map(t=>z(t,g$1)):null,p=(t,n)=>{if(!g$1||typeof g$1!=\"object\")return null;let a=new Array;for(let i in g$1){let r=z(i,g$1,t,n),c=t===\"base\"&&typeof r==\"string\"?r:r&&r[t];c&&(a[a.length]=c);}return a},D={};for(let t in l)l[t]!==void 0&&(D[t]=l[t]);let G=(t,n)=>{var i;let a=typeof(l==null?void 0:l[t])==\"object\"?{[t]:(i=l[t])==null?void 0:i.initial}:{};return {...A,...D,...a,...n}},H=(t=[],n)=>{let a=[];for(let{class:i,className:r,...c}of t){let f=!0;for(let[o,u]of Object.entries(c)){let d=G(o,n);if(Array.isArray(u)){if(!u.includes(d[o])){f=!1;break}}else if(d[o]!==u){f=!1;break}}f&&(i&&a.push(i),r&&a.push(r));}return a},I=t=>{let n=H(C,t),a=H(e==null?void 0:e.compoundVariants,t);return f(a,n)},ee=t=>{let n=I(t);if(!Array.isArray(n))return n;let a={};for(let i of n)if(typeof i==\"string\"&&(a.base=w(a.base,i)(m)),typeof i==\"object\")for(let[r,c]of Object.entries(i))a[r]=w(a[r],c)(m);return a},te=t=>{if(V.length<1)return null;let n={};for(let{slots:a=[],class:i,className:r,...c}of V){if(!b(c)){let f=!0;for(let o of Object.keys(c)){let u=G(o,t)[o];if(u===void 0||(Array.isArray(c[o])?!c[o].includes(u):c[o]!==u)){f=!1;break}}if(!f)continue}for(let f of a)n[f]=n[f]||[],n[f].push([i,r]);}return n};if(!b(j)||!O){let t={};if(typeof h$1==\"object\"&&!b(h$1))for(let n of Object.keys(h$1))t[n]=a=>{var i,r;return w(h$1[n],p(n,a),((i=ee(a))!=null?i:[])[n],((r=te(a))!=null?r:[])[n],a==null?void 0:a.class,a==null?void 0:a.className)(m)};return t}return w(S,P(),I(),l==null?void 0:l.class,l==null?void 0:l.className)(m)},x=()=>{if(!(!g$1||typeof g$1!=\"object\"))return Object.keys(g$1)};return v.variantKeys=x(),v.extend=e,v.base=S,v.slots=h$1,v.variants=g$1,v.defaultVariants=A,v.compoundSlots=V,v.compoundVariants=C,v},le=s=>(b,e)=>ie(b,e?g(s,e):s);\n\nexport { w as cn, N as cnBase, le as createTV, se as defaultConfig, ie as tv, _ as voidEmpty };\n","import {\n twMergeConfig\n} from \"./chunk-BYWORP66.mjs\";\n\n// src/utils/tv.ts\nimport { tv as tvBase } from \"tailwind-variants\";\nvar tv = (options, config) => {\n var _a, _b, _c;\n return tvBase(options, {\n ...config,\n twMerge: (_a = config == null ? void 0 : config.twMerge) != null ? _a : true,\n twMergeConfig: {\n ...config == null ? void 0 : config.twMergeConfig,\n theme: {\n ...(_b = config == null ? void 0 : config.twMergeConfig) == null ? void 0 : _b.theme,\n ...twMergeConfig.theme\n },\n classGroups: {\n ...(_c = config == null ? void 0 : config.twMergeConfig) == null ? void 0 : _c.classGroups,\n ...twMergeConfig.classGroups\n }\n }\n });\n};\n\nexport {\n tv\n};\n","// src/utils/classes.ts\nvar baseStyles = (prefix) => ({\n color: `hsl(var(--${prefix}-foreground))`,\n backgroundColor: `hsl(var(--${prefix}-background))`\n});\nvar focusVisibleClasses = [\n \"focus-visible:z-10\",\n \"focus-visible:outline-2\",\n \"focus-visible:outline-focus\",\n \"focus-visible:outline-offset-2\"\n];\nvar dataFocusVisibleClasses = [\n \"outline-none\",\n \"data-[focus-visible=true]:z-10\",\n \"data-[focus-visible=true]:outline-2\",\n \"data-[focus-visible=true]:outline-focus\",\n \"data-[focus-visible=true]:outline-offset-2\"\n];\nvar groupDataFocusVisibleClasses = [\n \"outline-none\",\n \"group-data-[focus-visible=true]:z-10\",\n \"group-data-[focus-visible=true]:ring-2\",\n \"group-data-[focus-visible=true]:ring-focus\",\n \"group-data-[focus-visible=true]:ring-offset-2\",\n \"group-data-[focus-visible=true]:ring-offset-background\"\n];\nvar ringClasses = [\n \"outline-none\",\n \"ring-2\",\n \"ring-focus\",\n \"ring-offset-2\",\n \"ring-offset-background\"\n];\nvar translateCenterClasses = [\n \"absolute\",\n \"top-1/2\",\n \"left-1/2\",\n \"-translate-x-1/2\",\n \"-translate-y-1/2\"\n];\nvar absoluteFullClasses = [\"absolute\", \"inset-0\"];\nvar collapseAdjacentVariantBorders = {\n default: [\"[&+.border-medium.border-default]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n primary: [\"[&+.border-medium.border-primary]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n secondary: [\"[&+.border-medium.border-secondary]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n success: [\"[&+.border-medium.border-success]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n warning: [\"[&+.border-medium.border-warning]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n danger: [\"[&+.border-medium.border-danger]:ms-[calc(theme(borderWidth.medium)*-1)]\"]\n};\n\nexport {\n baseStyles,\n focusVisibleClasses,\n dataFocusVisibleClasses,\n groupDataFocusVisibleClasses,\n ringClasses,\n translateCenterClasses,\n absoluteFullClasses,\n collapseAdjacentVariantBorders\n};\n","import {\n tv\n} from \"./chunk-N2KXC5ZE.mjs\";\n\n// src/components/spinner.ts\nvar spinner = tv({\n slots: {\n base: \"relative inline-flex flex-col gap-2 items-center justify-center\",\n wrapper: \"relative flex\",\n circle1: [\n \"absolute\",\n \"w-full\",\n \"h-full\",\n \"rounded-full\",\n \"animate-spinner-ease-spin\",\n \"border-2\",\n \"border-solid\",\n \"border-t-transparent\",\n \"border-l-transparent\",\n \"border-r-transparent\"\n ],\n circle2: [\n \"absolute\",\n \"w-full\",\n \"h-full\",\n \"rounded-full\",\n \"opacity-75\",\n \"animate-spinner-linear-spin\",\n \"border-2\",\n \"border-dotted\",\n \"border-t-transparent\",\n \"border-l-transparent\",\n \"border-r-transparent\"\n ],\n label: \"text-foreground dark:text-foreground-dark font-regular\"\n },\n variants: {\n size: {\n sm: {\n wrapper: \"w-5 h-5\",\n circle1: \"border-2\",\n circle2: \"border-2\",\n label: \"text-small\"\n },\n md: {\n wrapper: \"w-8 h-8\",\n circle1: \"border-3\",\n circle2: \"border-3\",\n label: \"text-medium\"\n },\n lg: {\n wrapper: \"w-10 h-10\",\n circle1: \"border-3\",\n circle2: \"border-3\",\n label: \"text-large\"\n }\n },\n color: {\n current: {\n circle1: \"border-b-current\",\n circle2: \"border-b-current\"\n },\n white: {\n circle1: \"border-b-white\",\n circle2: \"border-b-white\"\n },\n default: {\n circle1: \"border-b-default\",\n circle2: \"border-b-default\"\n },\n primary: {\n circle1: \"border-b-primary\",\n circle2: \"border-b-primary\"\n },\n secondary: {\n circle1: \"border-b-secondary\",\n circle2: \"border-b-secondary\"\n },\n success: {\n circle1: \"border-b-success\",\n circle2: \"border-b-success\"\n },\n warning: {\n circle1: \"border-b-warning\",\n circle2: \"border-b-warning\"\n },\n danger: {\n circle1: \"border-b-danger\",\n circle2: \"border-b-danger\"\n }\n },\n labelColor: {\n foreground: {\n label: \"text-foreground\"\n },\n primary: {\n label: \"text-primary\"\n },\n secondary: {\n label: \"text-secondary\"\n },\n success: {\n label: \"text-success\"\n },\n warning: {\n label: \"text-warning\"\n },\n danger: {\n label: \"text-danger\"\n }\n }\n },\n defaultVariants: {\n size: \"md\",\n color: \"primary\",\n labelColor: \"foreground\"\n }\n});\n\nexport {\n spinner\n};\n","import {\n colorVariants\n} from \"./chunk-BZCSOIUI.mjs\";\nimport {\n tv\n} from \"./chunk-N2KXC5ZE.mjs\";\nimport {\n collapseAdjacentVariantBorders,\n dataFocusVisibleClasses\n} from \"./chunk-XHQUSKIE.mjs\";\n\n// src/components/button.ts\nvar button = tv({\n base: [\n \"z-0\",\n \"group\",\n \"relative\",\n \"inline-flex\",\n \"items-center\",\n \"justify-center\",\n \"box-border\",\n \"appearance-none\",\n \"outline-none\",\n \"select-none\",\n \"whitespace-nowrap\",\n \"min-w-max\",\n \"font-normal\",\n \"subpixel-antialiased\",\n \"overflow-hidden\",\n \"tap-highlight-transparent\",\n \"data-[pressed=true]:scale-[0.97]\",\n ...dataFocusVisibleClasses\n ],\n variants: {\n variant: {\n solid: \"\",\n bordered: \"border-medium bg-transparent\",\n light: \"bg-transparent\",\n flat: \"\",\n faded: \"border-medium\",\n shadow: \"\",\n ghost: \"border-medium bg-transparent\"\n },\n size: {\n sm: \"px-3 min-w-16 h-8 text-tiny gap-2 rounded-small\",\n md: \"px-4 min-w-20 h-10 text-small gap-2 rounded-medium\",\n lg: \"px-6 min-w-24 h-12 text-medium gap-3 rounded-large\"\n },\n color: {\n default: \"\",\n primary: \"\",\n secondary: \"\",\n success: \"\",\n warning: \"\",\n danger: \"\"\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-small\",\n md: \"rounded-medium\",\n lg: \"rounded-large\",\n full: \"rounded-full\"\n },\n fullWidth: {\n true: \"w-full\"\n },\n isDisabled: {\n true: \"opacity-disabled pointer-events-none\"\n },\n isInGroup: {\n true: \"[&:not(:first-child):not(:last-child)]:rounded-none\"\n },\n isIconOnly: {\n true: \"px-0 !gap-0\",\n false: \"[&>svg]:max-w-[theme(spacing.8)]\"\n },\n disableAnimation: {\n true: \"!transition-none data-[pressed=true]:scale-100\",\n false: \"transition-transform-colors-opacity motion-reduce:transition-none\"\n }\n },\n defaultVariants: {\n size: \"md\",\n variant: \"solid\",\n color: \"default\",\n fullWidth: false,\n isDisabled: false,\n isInGroup: false\n },\n compoundVariants: [\n {\n variant: \"solid\",\n color: \"default\",\n class: colorVariants.solid.default\n },\n {\n variant: \"solid\",\n color: \"primary\",\n class: colorVariants.solid.primary\n },\n {\n variant: \"solid\",\n color: \"secondary\",\n class: colorVariants.solid.secondary\n },\n {\n variant: \"solid\",\n color: \"success\",\n class: colorVariants.solid.success\n },\n {\n variant: \"solid\",\n color: \"warning\",\n class: colorVariants.solid.warning\n },\n {\n variant: \"solid\",\n color: \"danger\",\n class: colorVariants.solid.danger\n },\n {\n variant: \"shadow\",\n color: \"default\",\n class: colorVariants.shadow.default\n },\n {\n variant: \"shadow\",\n color: \"primary\",\n class: colorVariants.shadow.primary\n },\n {\n variant: \"shadow\",\n color: \"secondary\",\n class: colorVariants.shadow.secondary\n },\n {\n variant: \"shadow\",\n color: \"success\",\n class: colorVariants.shadow.success\n },\n {\n variant: \"shadow\",\n color: \"warning\",\n class: colorVariants.shadow.warning\n },\n {\n variant: \"shadow\",\n color: \"danger\",\n class: colorVariants.shadow.danger\n },\n {\n variant: \"bordered\",\n color: \"default\",\n class: colorVariants.bordered.default\n },\n {\n variant: \"bordered\",\n color: \"primary\",\n class: colorVariants.bordered.primary\n },\n {\n variant: \"bordered\",\n color: \"secondary\",\n class: colorVariants.bordered.secondary\n },\n {\n variant: \"bordered\",\n color: \"success\",\n class: colorVariants.bordered.success\n },\n {\n variant: \"bordered\",\n color: \"warning\",\n class: colorVariants.bordered.warning\n },\n {\n variant: \"bordered\",\n color: \"danger\",\n class: colorVariants.bordered.danger\n },\n {\n variant: \"flat\",\n color: \"default\",\n class: colorVariants.flat.default\n },\n {\n variant: \"flat\",\n color: \"primary\",\n class: colorVariants.flat.primary\n },\n {\n variant: \"flat\",\n color: \"secondary\",\n class: colorVariants.flat.secondary\n },\n {\n variant: \"flat\",\n color: \"success\",\n class: colorVariants.flat.success\n },\n {\n variant: \"flat\",\n color: \"warning\",\n class: colorVariants.flat.warning\n },\n {\n variant: \"flat\",\n color: \"danger\",\n class: colorVariants.flat.danger\n },\n {\n variant: \"faded\",\n color: \"default\",\n class: colorVariants.faded.default\n },\n {\n variant: \"faded\",\n color: \"primary\",\n class: colorVariants.faded.primary\n },\n {\n variant: \"faded\",\n color: \"secondary\",\n class: colorVariants.faded.secondary\n },\n {\n variant: \"faded\",\n color: \"success\",\n class: colorVariants.faded.success\n },\n {\n variant: \"faded\",\n color: \"warning\",\n class: colorVariants.faded.warning\n },\n {\n variant: \"faded\",\n color: \"danger\",\n class: colorVariants.faded.danger\n },\n {\n variant: \"light\",\n color: \"default\",\n class: [colorVariants.light.default, \"data-[hover=true]:bg-default/40\"]\n },\n {\n variant: \"light\",\n color: \"primary\",\n class: [colorVariants.light.primary, \"data-[hover=true]:bg-primary/20\"]\n },\n {\n variant: \"light\",\n color: \"secondary\",\n class: [colorVariants.light.secondary, \"data-[hover=true]:bg-secondary/20\"]\n },\n {\n variant: \"light\",\n color: \"success\",\n class: [colorVariants.light.success, \"data-[hover=true]:bg-success/20\"]\n },\n {\n variant: \"light\",\n color: \"warning\",\n class: [colorVariants.light.warning, \"data-[hover=true]:bg-warning/20\"]\n },\n {\n variant: \"light\",\n color: \"danger\",\n class: [colorVariants.light.danger, \"data-[hover=true]:bg-danger/20\"]\n },\n {\n variant: \"ghost\",\n color: \"default\",\n class: [colorVariants.ghost.default, \"data-[hover=true]:!bg-default\"]\n },\n {\n variant: \"ghost\",\n color: \"primary\",\n class: [\n colorVariants.ghost.primary,\n \"data-[hover=true]:!bg-primary data-[hover=true]:!text-primary-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"secondary\",\n class: [\n colorVariants.ghost.secondary,\n \"data-[hover=true]:!bg-secondary data-[hover=true]:!text-secondary-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"success\",\n class: [\n colorVariants.ghost.success,\n \"data-[hover=true]:!bg-success data-[hover=true]:!text-success-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"warning\",\n class: [\n colorVariants.ghost.warning,\n \"data-[hover=true]:!bg-warning data-[hover=true]:!text-warning-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"danger\",\n class: [colorVariants.ghost.danger, \"data-[hover=true]:!bg-danger !text-danger-foreground\"]\n },\n {\n isInGroup: true,\n class: \"rounded-none first:rounded-s-medium last:rounded-e-medium\"\n },\n {\n isInGroup: true,\n size: \"sm\",\n class: \"rounded-none first:rounded-s-small last:rounded-e-small\"\n },\n {\n isInGroup: true,\n size: \"md\",\n class: \"rounded-none first:rounded-s-medium last:rounded-e-medium\"\n },\n {\n isInGroup: true,\n size: \"lg\",\n class: \"rounded-none first:rounded-s-large last:rounded-e-large\"\n },\n {\n isInGroup: true,\n isRounded: true,\n class: \"rounded-none first:rounded-s-full last:rounded-e-full\"\n },\n {\n isInGroup: true,\n radius: \"none\",\n class: \"rounded-none first:rounded-s-none last:rounded-e-none\"\n },\n {\n isInGroup: true,\n radius: \"sm\",\n class: \"rounded-none first:rounded-s-small last:rounded-e-small\"\n },\n {\n isInGroup: true,\n radius: \"md\",\n class: \"rounded-none first:rounded-s-medium last:rounded-e-medium\"\n },\n {\n isInGroup: true,\n radius: \"lg\",\n class: \"rounded-none first:rounded-s-large last:rounded-e-large\"\n },\n {\n isInGroup: true,\n radius: \"full\",\n class: \"rounded-none first:rounded-s-full last:rounded-e-full\"\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"default\",\n className: collapseAdjacentVariantBorders.default\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"primary\",\n className: collapseAdjacentVariantBorders.primary\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"secondary\",\n className: collapseAdjacentVariantBorders.secondary\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"success\",\n className: collapseAdjacentVariantBorders.success\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"warning\",\n className: collapseAdjacentVariantBorders.warning\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"danger\",\n className: collapseAdjacentVariantBorders.danger\n },\n {\n isIconOnly: true,\n size: \"sm\",\n class: \"min-w-8 w-8 h-8\"\n },\n {\n isIconOnly: true,\n size: \"md\",\n class: \"min-w-10 w-10 h-10\"\n },\n {\n isIconOnly: true,\n size: \"lg\",\n class: \"min-w-12 w-12 h-12\"\n },\n {\n variant: [\"solid\", \"faded\", \"flat\", \"bordered\", \"shadow\"],\n class: \"data-[hover=true]:opacity-hover\"\n }\n ]\n});\nvar buttonGroup = tv({\n base: \"inline-flex items-center justify-center h-auto\",\n variants: {\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n fullWidth: false\n }\n});\n\nexport {\n button,\n buttonGroup\n};\n","\"use client\";\n\n// src/context.ts\nimport * as React from \"react\";\nfunction createContext2(options = {}) {\n const {\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name\n } = options;\n const Context = React.createContext(void 0);\n Context.displayName = name;\n function useContext2() {\n var _a;\n const context = React.useContext(Context);\n if (!context && strict) {\n const error = new Error(errorMessage);\n error.name = \"ContextError\";\n (_a = Error.captureStackTrace) == null ? void 0 : _a.call(Error, error, useContext2);\n throw error;\n }\n return context;\n }\n return [Context.Provider, useContext2, Context];\n}\n\nexport {\n createContext2 as createContext\n};\n","\"use client\";\n\n// src/dom.ts\nimport {\n useImperativeHandle,\n useLayoutEffect,\n useRef\n} from \"react\";\nfunction canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\nvar isBrowser = canUseDOM();\nfunction getUserAgentBrowser(navigator) {\n const { userAgent: ua, vendor } = navigator;\n const android = /(android)/i.test(ua);\n switch (true) {\n case /CriOS/.test(ua):\n return \"Chrome for iOS\";\n case /Edg\\//.test(ua):\n return \"Edge\";\n case (android && /Silk\\//.test(ua)):\n return \"Silk\";\n case (/Chrome/.test(ua) && /Google Inc/.test(vendor)):\n return \"Chrome\";\n case /Firefox\\/\\d+\\.\\d+$/.test(ua):\n return \"Firefox\";\n case android:\n return \"AOSP\";\n case /MSIE|Trident/.test(ua):\n return \"IE\";\n case (/Safari/.test(navigator.userAgent) && /Apple Computer/.test(ua)):\n return \"Safari\";\n case /AppleWebKit/.test(ua):\n return \"WebKit\";\n default:\n return null;\n }\n}\nfunction getUserAgentOS(navigator) {\n const { userAgent: ua, platform } = navigator;\n switch (true) {\n case /Android/.test(ua):\n return \"Android\";\n case /iPhone|iPad|iPod/.test(platform):\n return \"iOS\";\n case /Win/.test(platform):\n return \"Windows\";\n case /Mac/.test(platform):\n return \"Mac\";\n case /CrOS/.test(ua):\n return \"Chrome OS\";\n case /Firefox/.test(ua):\n return \"Firefox OS\";\n default:\n return null;\n }\n}\nfunction detectDeviceType(navigator) {\n const { userAgent: ua } = navigator;\n if (/(tablet)|(iPad)|(Nexus 9)/i.test(ua))\n return \"tablet\";\n if (/(mobi)/i.test(ua))\n return \"phone\";\n return \"desktop\";\n}\nfunction detectOS(os) {\n if (!isBrowser)\n return false;\n return getUserAgentOS(window.navigator) === os;\n}\nfunction detectBrowser(browser) {\n if (!isBrowser)\n return false;\n return getUserAgentBrowser(window.navigator) === browser;\n}\nfunction detectTouch() {\n if (!isBrowser)\n return false;\n return window.ontouchstart === null && window.ontouchmove === null && window.ontouchend === null;\n}\nfunction createDOMRef(ref) {\n return {\n UNSAFE_getDOMNode() {\n return ref.current;\n }\n };\n}\nfunction createFocusableRef(domRef, focusableRef = domRef) {\n return {\n ...createDOMRef(domRef),\n focus() {\n if (focusableRef.current) {\n focusableRef.current.focus();\n }\n }\n };\n}\nfunction useDOMRef(ref) {\n const domRef = useRef(null);\n useImperativeHandle(ref, () => domRef.current);\n return domRef;\n}\nfunction useFocusableRef(ref, focusableRef) {\n const domRef = useRef(null);\n useImperativeHandle(ref, () => createFocusableRef(domRef, focusableRef));\n return domRef;\n}\nfunction useSyncRef(context, ref) {\n useLayoutEffect(() => {\n if (context && context.ref && ref && ref.current) {\n context.ref.current = ref.current;\n return () => {\n var _a;\n if ((_a = context.ref) == null ? void 0 : _a.current) {\n context.ref.current = null;\n }\n };\n }\n }, [context, ref]);\n}\nfunction areRectsIntersecting(rect1, rect2) {\n return rect1 && rect2 && rect1.x < rect2.x + rect2.width && rect1.x + rect1.width > rect2.x && rect1.y < rect2.y + rect2.height && rect1.y + rect1.height > rect2.y;\n}\n\nexport {\n canUseDOM,\n isBrowser,\n getUserAgentBrowser,\n getUserAgentOS,\n detectDeviceType,\n detectOS,\n detectBrowser,\n detectTouch,\n createDOMRef,\n createFocusableRef,\n useDOMRef,\n useFocusableRef,\n useSyncRef,\n areRectsIntersecting\n};\n","// src/assertion.ts\nvar __DEV__ = process.env.NODE_ENV !== \"production\";\nvar __TEST__ = process.env.NODE_ENV === \"test\";\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isEmptyArray(value) {\n return isArray(value) && value.length === 0;\n}\nfunction isObject(value) {\n const type = typeof value;\n return value != null && (type === \"object\" || type === \"function\") && !isArray(value);\n}\nfunction isEmptyObject(value) {\n return isObject(value) && Object.keys(value).length === 0;\n}\nfunction isEmpty(value) {\n if (isArray(value))\n return isEmptyArray(value);\n if (isObject(value))\n return isEmptyObject(value);\n if (value == null || value === \"\")\n return true;\n return false;\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nvar dataAttr = (condition) => condition ? \"true\" : void 0;\nvar isNumeric = (value) => value != null && parseInt(value.toString(), 10) > 0;\n\nexport {\n __DEV__,\n __TEST__,\n isArray,\n isEmptyArray,\n isObject,\n isEmptyObject,\n isEmpty,\n isFunction,\n dataAttr,\n isNumeric\n};\n","// src/clsx.ts\nfunction toVal(mix) {\n var k, y, str = \"\";\n if (typeof mix === \"string\" || typeof mix === \"number\") {\n str += mix;\n } else if (typeof mix === \"object\") {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (y = toVal(mix[k])) {\n str && (str += \" \");\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += \" \");\n str += k;\n }\n }\n }\n }\n return str;\n}\nfunction clsx(...args) {\n var i = 0, tmp, x, str = \"\";\n while (i < args.length) {\n if (tmp = args[i++]) {\n if (x = toVal(tmp)) {\n str && (str += \" \");\n str += x;\n }\n }\n }\n return str;\n}\n\nexport {\n clsx\n};\n","// src/functions.ts\nvar capitalize = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction callAllHandlers(...fns) {\n return function func(event) {\n fns.some((fn) => {\n fn == null ? void 0 : fn(event);\n return event == null ? void 0 : event.defaultPrevented;\n });\n };\n}\nfunction callAll(...fns) {\n return function mergedFn(arg) {\n fns.forEach((fn) => {\n fn == null ? void 0 : fn(arg);\n });\n };\n}\nfunction extractProperty(key, defaultValue, ...objs) {\n let result = defaultValue;\n for (const obj of objs) {\n if (obj && key in obj && !!obj[key]) {\n result = obj[key];\n }\n }\n return result;\n}\nfunction getUniqueID(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 1e6)}`;\n}\nfunction removeEvents(input) {\n for (const key in input) {\n if (key.startsWith(\"on\")) {\n delete input[key];\n }\n }\n return input;\n}\nfunction objectToDeps(obj) {\n if (!obj || typeof obj !== \"object\") {\n return \"\";\n }\n try {\n return JSON.stringify(obj);\n } catch (e) {\n return \"\";\n }\n}\n\nexport {\n capitalize,\n callAllHandlers,\n callAll,\n extractProperty,\n getUniqueID,\n removeEvents,\n objectToDeps\n};\n","// src/numbers.ts\nfunction range(start, end) {\n const length = end - start + 1;\n return Array.from({ length }, (_, index) => index + start);\n}\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\nfunction clampPercentage(value, max = 100) {\n return Math.min(Math.max(value, 0), max);\n}\n\nexport {\n range,\n clamp,\n clampPercentage\n};\n","// src/dom-props.ts\nvar DOMPropNames = /* @__PURE__ */ new Set([\n \"id\",\n \"type\",\n \"style\",\n \"title\",\n \"role\",\n \"tabIndex\",\n \"htmlFor\",\n \"width\",\n \"height\",\n \"abbr\",\n \"accept\",\n \"acceptCharset\",\n \"accessKey\",\n \"action\",\n \"allowFullScreen\",\n \"allowTransparency\",\n \"alt\",\n \"async\",\n \"autoComplete\",\n \"autoFocus\",\n \"autoPlay\",\n \"cellPadding\",\n \"cellSpacing\",\n \"challenge\",\n \"charset\",\n \"checked\",\n \"cite\",\n \"class\",\n \"className\",\n \"cols\",\n \"colSpan\",\n \"command\",\n \"content\",\n \"contentEditable\",\n \"contextMenu\",\n \"controls\",\n \"coords\",\n \"crossOrigin\",\n \"data\",\n \"dateTime\",\n \"default\",\n \"defer\",\n \"dir\",\n \"disabled\",\n \"download\",\n \"draggable\",\n \"dropzone\",\n \"encType\",\n \"enterKeyHint\",\n \"for\",\n \"form\",\n \"formAction\",\n \"formEncType\",\n \"formMethod\",\n \"formNoValidate\",\n \"formTarget\",\n \"frameBorder\",\n \"headers\",\n \"hidden\",\n \"high\",\n \"href\",\n \"hrefLang\",\n \"httpEquiv\",\n \"icon\",\n \"inputMode\",\n \"isMap\",\n \"itemId\",\n \"itemProp\",\n \"itemRef\",\n \"itemScope\",\n \"itemType\",\n \"kind\",\n \"label\",\n \"lang\",\n \"list\",\n \"loop\",\n \"manifest\",\n \"max\",\n \"maxLength\",\n \"media\",\n \"mediaGroup\",\n \"method\",\n \"min\",\n \"minLength\",\n \"multiple\",\n \"muted\",\n \"name\",\n \"noValidate\",\n \"open\",\n \"optimum\",\n \"pattern\",\n \"ping\",\n \"placeholder\",\n \"poster\",\n \"preload\",\n \"radioGroup\",\n \"referrerPolicy\",\n \"readOnly\",\n \"rel\",\n \"required\",\n \"rows\",\n \"rowSpan\",\n \"sandbox\",\n \"scope\",\n \"scoped\",\n \"scrolling\",\n \"seamless\",\n \"selected\",\n \"shape\",\n \"size\",\n \"sizes\",\n \"slot\",\n \"sortable\",\n \"span\",\n \"spellCheck\",\n \"src\",\n \"srcDoc\",\n \"srcSet\",\n \"start\",\n \"step\",\n \"target\",\n \"translate\",\n \"typeMustMatch\",\n \"useMap\",\n \"value\",\n \"wmode\",\n \"wrap\"\n]);\nvar DOMEventNames = /* @__PURE__ */ new Set([\n \"onCopy\",\n \"onCut\",\n \"onPaste\",\n \"onLoad\",\n \"onError\",\n \"onWheel\",\n \"onScroll\",\n \"onCompositionEnd\",\n \"onCompositionStart\",\n \"onCompositionUpdate\",\n \"onKeyDown\",\n \"onKeyPress\",\n \"onKeyUp\",\n \"onFocus\",\n \"onBlur\",\n \"onChange\",\n \"onInput\",\n \"onSubmit\",\n \"onClick\",\n \"onContextMenu\",\n \"onDoubleClick\",\n \"onDrag\",\n \"onDragEnd\",\n \"onDragEnter\",\n \"onDragExit\",\n \"onDragLeave\",\n \"onDragOver\",\n \"onDragStart\",\n \"onDrop\",\n \"onMouseDown\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"onMouseMove\",\n \"onMouseOut\",\n \"onMouseOver\",\n \"onMouseUp\",\n \"onPointerDown\",\n \"onPointerEnter\",\n \"onPointerLeave\",\n \"onPointerUp\",\n \"onSelect\",\n \"onTouchCancel\",\n \"onTouchEnd\",\n \"onTouchMove\",\n \"onTouchStart\",\n \"onAnimationStart\",\n \"onAnimationEnd\",\n \"onAnimationIteration\",\n \"onTransitionEnd\"\n]);\n\nexport {\n DOMPropNames,\n DOMEventNames\n};\n","import {\n DOMEventNames,\n DOMPropNames\n} from \"./chunk-RFWDHYLZ.mjs\";\n\n// src/filter-dom-props.ts\nvar propRe = /^(data-.*)$/;\nvar ariaRe = /^(aria-.*)$/;\nvar funcRe = /^(on[A-Z].*)$/;\nfunction filterDOMProps(props, opts = {}) {\n let {\n labelable = true,\n enabled = true,\n propNames,\n omitPropNames,\n omitEventNames,\n omitDataProps,\n omitEventProps\n } = opts;\n let filteredProps = {};\n if (!enabled) {\n return props;\n }\n for (const prop in props) {\n if (omitPropNames == null ? void 0 : omitPropNames.has(prop)) {\n continue;\n }\n if ((omitEventNames == null ? void 0 : omitEventNames.has(prop)) && funcRe.test(prop)) {\n continue;\n }\n if (funcRe.test(prop) && !DOMEventNames.has(prop)) {\n continue;\n }\n if (omitDataProps && propRe.test(prop)) {\n continue;\n }\n if (omitEventProps && funcRe.test(prop)) {\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(props, prop) && (DOMPropNames.has(prop) || labelable && ariaRe.test(prop) || (propNames == null ? void 0 : propNames.has(prop)) || propRe.test(prop)) || funcRe.test(prop)) {\n filteredProps[prop] = props[prop];\n }\n }\n return filteredProps;\n}\n\nexport {\n filterDOMProps\n};\n","\"use client\";\n\n// src/provider-context.ts\nimport { createContext } from \"@nextui-org/react-utils\";\nvar [ProviderContext, useProviderContext] = createContext({\n name: \"ProviderContext\",\n strict: false\n});\n\nexport {\n ProviderContext,\n useProviderContext\n};\n","function _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nexport { _check_private_redeclaration as _ };\n","import { _ as _check_private_redeclaration } from \"./_check_private_redeclaration.js\";\n\nfunction _class_private_field_init(obj, privateMap, value) {\n _check_private_redeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\nexport { _class_private_field_init as _ };\n","import $HgANd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== 'undefined' ? (0, $HgANd$react).useLayoutEffect : ()=>{};\n\n\nexport {$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=useLayoutEffect.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useRef as $lmaYr$useRef, useCallback as $lmaYr$useCallback} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8ae05eaa5c114e9c$export$7f54fc3180508a52(fn) {\n const ref = (0, $lmaYr$useRef)(null);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n ref.current = fn;\n }, [\n fn\n ]);\n // @ts-ignore\n return (0, $lmaYr$useCallback)((...args)=>{\n const f = ref.current;\n return f === null || f === void 0 ? void 0 : f(...args);\n }, []);\n}\n\n\nexport {$8ae05eaa5c114e9c$export$7f54fc3180508a52 as useEffectEvent};\n//# sourceMappingURL=useEffectEvent.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useValueEffect as $1dbecbe27a04f9af$export$14d238f342723f25} from \"./useValueEffect.mjs\";\nimport {useState as $eKkEp$useState, useRef as $eKkEp$useRef, useCallback as $eKkEp$useCallback, useEffect as $eKkEp$useEffect} from \"react\";\nimport {useSSRSafeId as $eKkEp$useSSRSafeId} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet $bdb11010cef70236$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $bdb11010cef70236$var$idsUpdaterMap = new Map();\nfunction $bdb11010cef70236$export$f680877a34711e37(defaultId) {\n let [value, setValue] = (0, $eKkEp$useState)(defaultId);\n let nextId = (0, $eKkEp$useRef)(null);\n let res = (0, $eKkEp$useSSRSafeId)(value);\n let updateValue = (0, $eKkEp$useCallback)((val)=>{\n nextId.current = val;\n }, []);\n if ($bdb11010cef70236$var$canUseDOM) {\n // TS not smart enough to know that `has` means the value exists\n if ($bdb11010cef70236$var$idsUpdaterMap.has(res) && !$bdb11010cef70236$var$idsUpdaterMap.get(res).includes(updateValue)) $bdb11010cef70236$var$idsUpdaterMap.set(res, [\n ...$bdb11010cef70236$var$idsUpdaterMap.get(res),\n updateValue\n ]);\n else $bdb11010cef70236$var$idsUpdaterMap.set(res, [\n updateValue\n ]);\n }\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n let r = res;\n return ()=>{\n $bdb11010cef70236$var$idsUpdaterMap.delete(r);\n };\n }, [\n res\n ]);\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n (0, $eKkEp$useEffect)(()=>{\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n return res;\n}\nfunction $bdb11010cef70236$export$cd8c9cb68f842629(idA, idB) {\n if (idA === idB) return idA;\n let setIdsA = $bdb11010cef70236$var$idsUpdaterMap.get(idA);\n if (setIdsA) {\n setIdsA.forEach((fn)=>fn(idB));\n return idB;\n }\n let setIdsB = $bdb11010cef70236$var$idsUpdaterMap.get(idB);\n if (setIdsB) {\n setIdsB.forEach((fn)=>fn(idA));\n return idA;\n }\n return idB;\n}\nfunction $bdb11010cef70236$export$b4cc09c592e8fdb8(depArray = []) {\n let id = $bdb11010cef70236$export$f680877a34711e37();\n let [resolvedId, setResolvedId] = (0, $1dbecbe27a04f9af$export$14d238f342723f25)(id);\n let updateId = (0, $eKkEp$useCallback)(()=>{\n setResolvedId(function*() {\n yield id;\n yield document.getElementById(id) ? id : undefined;\n });\n }, [\n id,\n setResolvedId\n ]);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(updateId, [\n id,\n updateId,\n ...depArray\n ]);\n return resolvedId;\n}\n\n\nexport {$bdb11010cef70236$export$f680877a34711e37 as useId, $bdb11010cef70236$export$cd8c9cb68f842629 as mergeIds, $bdb11010cef70236$export$b4cc09c592e8fdb8 as useSlotId};\n//# sourceMappingURL=useId.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ /**\n * Calls all functions in the order they were chained with the same arguments.\n */ function $ff5963eb1fccf552$export$e08e3b67e392101e(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks)if (typeof callback === 'function') callback(...args);\n };\n}\n\n\nexport {$ff5963eb1fccf552$export$e08e3b67e392101e as chain};\n//# sourceMappingURL=chain.module.js.map\n","const $431fbd86ca7dc216$export$b204af158042fbac = (el)=>{\n var _el_ownerDocument;\n return (_el_ownerDocument = el === null || el === void 0 ? void 0 : el.ownerDocument) !== null && _el_ownerDocument !== void 0 ? _el_ownerDocument : document;\n};\nconst $431fbd86ca7dc216$export$f21a1ffae260145a = (el)=>{\n if (el && 'window' in el && el.window === el) return el;\n const doc = $431fbd86ca7dc216$export$b204af158042fbac(el);\n return doc.defaultView || window;\n};\n\n\nexport {$431fbd86ca7dc216$export$b204af158042fbac as getOwnerDocument, $431fbd86ca7dc216$export$f21a1ffae260145a as getOwnerWindow};\n//# sourceMappingURL=domHelpers.module.js.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import {chain as $ff5963eb1fccf552$export$e08e3b67e392101e} from \"./chain.mjs\";\nimport {mergeIds as $bdb11010cef70236$export$cd8c9cb68f842629} from \"./useId.mjs\";\nimport $7jXr9$clsx from \"clsx\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $3ef42575df84b30b$export$9d1611c77c2fe928(...args) {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result = {\n ...args[0]\n };\n for(let i = 1; i < args.length; i++){\n let props = args[i];\n for(let key in props){\n let a = result[key];\n let b = props[key];\n // Chain events\n if (typeof a === 'function' && typeof b === 'function' && // This is a lot faster than a regex.\n key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) result[key] = (0, $ff5963eb1fccf552$export$e08e3b67e392101e)(a, b);\n else if ((key === 'className' || key === 'UNSAFE_className') && typeof a === 'string' && typeof b === 'string') result[key] = (0, $7jXr9$clsx)(a, b);\n else if (key === 'id' && a && b) result.id = (0, $bdb11010cef70236$export$cd8c9cb68f842629)(a, b);\n else result[key] = b !== undefined ? b : a;\n }\n }\n return result;\n}\n\n\nexport {$3ef42575df84b30b$export$9d1611c77c2fe928 as mergeProps};\n//# sourceMappingURL=mergeProps.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $7215afc6de606d6b$export$de79e2c695e052f3(element) {\n if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({\n preventScroll: true\n });\n else {\n let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);\n element.focus();\n $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);\n }\n}\nlet $7215afc6de606d6b$var$supportsPreventScrollCached = null;\nfunction $7215afc6de606d6b$var$supportsPreventScroll() {\n if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {\n $7215afc6de606d6b$var$supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll () {\n $7215afc6de606d6b$var$supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch (e) {\n // Ignore\n }\n }\n return $7215afc6de606d6b$var$supportsPreventScrollCached;\n}\nfunction $7215afc6de606d6b$var$getScrollableElements(element) {\n let parent = element.parentNode;\n let scrollableElements = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n while(parent instanceof HTMLElement && parent !== rootScrollingElement){\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n parent = parent.parentNode;\n }\n if (rootScrollingElement instanceof HTMLElement) scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n return scrollableElements;\n}\nfunction $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {\n for (let { element: element, scrollTop: scrollTop, scrollLeft: scrollLeft } of scrollableElements){\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n\n\nexport {$7215afc6de606d6b$export$de79e2c695e052f3 as focusWithoutScrolling};\n//# sourceMappingURL=focusWithoutScrolling.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n var _window_navigator_userAgentData;\n if (typeof window === 'undefined' || window.navigator == null) return false;\n return ((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands.some((brand)=>re.test(brand.brand))) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n var _window_navigator_userAgentData;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$var$cached(fn) {\n let res = null;\n return ()=>{\n if (res == null) res = fn();\n return res;\n };\n}\nconst $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n});\nconst $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n});\nconst $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n});\nconst $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n});\nconst $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n});\nconst $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n});\nconst $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n});\nconst $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Android/i);\n});\nconst $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Firefox/i);\n});\n\n\nexport {$c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $c87311424ea30a05$export$b7d78993b74f766d as isFirefox};\n//# sourceMappingURL=platform.module.js.map\n","import {focusWithoutScrolling as $7215afc6de606d6b$export$de79e2c695e052f3} from \"./focusWithoutScrolling.mjs\";\nimport {isMac as $c87311424ea30a05$export$9ac100e40613ea10, isWebKit as $c87311424ea30a05$export$78551043582a6a98, isFirefox as $c87311424ea30a05$export$b7d78993b74f766d, isIPad as $c87311424ea30a05$export$7bef049ce92e4224} from \"./platform.mjs\";\nimport $g3jFn$react, {createContext as $g3jFn$createContext, useMemo as $g3jFn$useMemo, useContext as $g3jFn$useContext} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $ea8dcbcb9ea1b556$var$RouterContext = /*#__PURE__*/ (0, $g3jFn$createContext)({\n isNative: true,\n open: $ea8dcbcb9ea1b556$var$openSyntheticLink,\n useHref: (href)=>href\n});\nfunction $ea8dcbcb9ea1b556$export$323e4fc2fa4753fb(props) {\n let { children: children, navigate: navigate, useHref: useHref } = props;\n let ctx = (0, $g3jFn$useMemo)(()=>({\n isNative: false,\n open: (target, modifiers, href, routerOptions)=>{\n $ea8dcbcb9ea1b556$var$getSyntheticLink(target, (link)=>{\n if ($ea8dcbcb9ea1b556$export$efa8c9099e530235(link, modifiers)) navigate(href, routerOptions);\n else $ea8dcbcb9ea1b556$export$95185d699e05d4d7(link, modifiers);\n });\n },\n useHref: useHref || ((href)=>href)\n }), [\n navigate,\n useHref\n ]);\n return /*#__PURE__*/ (0, $g3jFn$react).createElement($ea8dcbcb9ea1b556$var$RouterContext.Provider, {\n value: ctx\n }, children);\n}\nfunction $ea8dcbcb9ea1b556$export$9a302a45f65d0572() {\n return (0, $g3jFn$useContext)($ea8dcbcb9ea1b556$var$RouterContext);\n}\nfunction $ea8dcbcb9ea1b556$export$efa8c9099e530235(link, modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n let target = link.getAttribute('target');\n return (!target || target === '_self') && link.origin === location.origin && !link.hasAttribute('download') && !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey;\n}\nfunction $ea8dcbcb9ea1b556$export$95185d699e05d4d7(target, modifiers, setOpening = true) {\n var _window_event_type, _window_event;\n let { metaKey: metaKey, ctrlKey: ctrlKey, altKey: altKey, shiftKey: shiftKey } = modifiers;\n // Firefox does not recognize keyboard events as a user action by default, and the popup blocker\n // will prevent links with target=\"_blank\" from opening. However, it does allow the event if the\n // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.\n if ((0, $c87311424ea30a05$export$b7d78993b74f766d)() && ((_window_event = window.event) === null || _window_event === void 0 ? void 0 : (_window_event_type = _window_event.type) === null || _window_event_type === void 0 ? void 0 : _window_event_type.startsWith('key')) && target.target === '_blank') {\n if ((0, $c87311424ea30a05$export$9ac100e40613ea10)()) metaKey = true;\n else ctrlKey = true;\n }\n // WebKit does not support firing click events with modifier keys, but does support keyboard events.\n // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184\n let event = (0, $c87311424ea30a05$export$78551043582a6a98)() && (0, $c87311424ea30a05$export$9ac100e40613ea10)() && !(0, $c87311424ea30a05$export$7bef049ce92e4224)() && true ? new KeyboardEvent('keydown', {\n keyIdentifier: 'Enter',\n metaKey: metaKey,\n ctrlKey: ctrlKey,\n altKey: altKey,\n shiftKey: shiftKey\n }) : new MouseEvent('click', {\n metaKey: metaKey,\n ctrlKey: ctrlKey,\n altKey: altKey,\n shiftKey: shiftKey,\n bubbles: true,\n cancelable: true\n });\n $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = setOpening;\n (0, $7215afc6de606d6b$export$de79e2c695e052f3)(target);\n target.dispatchEvent(event);\n $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = false;\n}\n// https://github.com/parcel-bundler/parcel/issues/8724\n$ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = false;\nfunction $ea8dcbcb9ea1b556$var$getSyntheticLink(target, open) {\n if (target instanceof HTMLAnchorElement) open(target);\n else if (target.hasAttribute('data-href')) {\n let link = document.createElement('a');\n link.href = target.getAttribute('data-href');\n if (target.hasAttribute('data-target')) link.target = target.getAttribute('data-target');\n if (target.hasAttribute('data-rel')) link.rel = target.getAttribute('data-rel');\n if (target.hasAttribute('data-download')) link.download = target.getAttribute('data-download');\n if (target.hasAttribute('data-ping')) link.ping = target.getAttribute('data-ping');\n if (target.hasAttribute('data-referrer-policy')) link.referrerPolicy = target.getAttribute('data-referrer-policy');\n target.appendChild(link);\n open(link);\n target.removeChild(link);\n }\n}\nfunction $ea8dcbcb9ea1b556$var$openSyntheticLink(target, modifiers) {\n $ea8dcbcb9ea1b556$var$getSyntheticLink(target, (link)=>$ea8dcbcb9ea1b556$export$95185d699e05d4d7(link, modifiers));\n}\nfunction $ea8dcbcb9ea1b556$export$bdc77b0c0a3a85d6(props) {\n let router = $ea8dcbcb9ea1b556$export$9a302a45f65d0572();\n var _props_href;\n const href = router.useHref((_props_href = props.href) !== null && _props_href !== void 0 ? _props_href : '');\n return {\n 'data-href': props.href ? href : undefined,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\nfunction $ea8dcbcb9ea1b556$export$51437d503373d223(props) {\n return {\n 'data-href': props.href,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\nfunction $ea8dcbcb9ea1b556$export$7e924b3091a3bd18(props) {\n let router = $ea8dcbcb9ea1b556$export$9a302a45f65d0572();\n var _props_href;\n const href = router.useHref((_props_href = props === null || props === void 0 ? void 0 : props.href) !== null && _props_href !== void 0 ? _props_href : '');\n return {\n href: (props === null || props === void 0 ? void 0 : props.href) ? href : undefined,\n target: props === null || props === void 0 ? void 0 : props.target,\n rel: props === null || props === void 0 ? void 0 : props.rel,\n download: props === null || props === void 0 ? void 0 : props.download,\n ping: props === null || props === void 0 ? void 0 : props.ping,\n referrerPolicy: props === null || props === void 0 ? void 0 : props.referrerPolicy\n };\n}\n\n\nexport {$ea8dcbcb9ea1b556$export$323e4fc2fa4753fb as RouterProvider, $ea8dcbcb9ea1b556$export$efa8c9099e530235 as shouldClientNavigate, $ea8dcbcb9ea1b556$export$95185d699e05d4d7 as openLink, $ea8dcbcb9ea1b556$export$9a302a45f65d0572 as useRouter, $ea8dcbcb9ea1b556$export$bdc77b0c0a3a85d6 as useSyntheticLinkProps, $ea8dcbcb9ea1b556$export$51437d503373d223 as getSyntheticLinkProps, $ea8dcbcb9ea1b556$export$7e924b3091a3bd18 as useLinkProps};\n//# sourceMappingURL=openLink.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We store a global list of elements that are currently transitioning,\n// mapped to a set of CSS properties that are transitioning for that element.\n// This is necessary rather than a simple count of transitions because of browser\n// bugs, e.g. Chrome sometimes fires both transitionend and transitioncancel rather\n// than one or the other. So we need to track what's actually transitioning so that\n// we can ignore these duplicate events.\nlet $bbed8b41f857bcc0$var$transitionsByElement = new Map();\n// A list of callbacks to call once there are no transitioning elements.\nlet $bbed8b41f857bcc0$var$transitionCallbacks = new Set();\nfunction $bbed8b41f857bcc0$var$setupGlobalEvents() {\n if (typeof window === 'undefined') return;\n function isTransitionEvent(event) {\n return 'propertyName' in event;\n }\n let onTransitionStart = (e)=>{\n if (!isTransitionEvent(e) || !e.target) return;\n // Add the transitioning property to the list for this element.\n let transitions = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n $bbed8b41f857bcc0$var$transitionsByElement.set(e.target, transitions);\n // The transitioncancel event must be registered on the element itself, rather than as a global\n // event. This enables us to handle when the node is deleted from the document while it is transitioning.\n // In that case, the cancel event would have nowhere to bubble to so we need to handle it directly.\n e.target.addEventListener('transitioncancel', onTransitionEnd, {\n once: true\n });\n }\n transitions.add(e.propertyName);\n };\n let onTransitionEnd = (e)=>{\n if (!isTransitionEvent(e) || !e.target) return;\n // Remove property from list of transitioning properties.\n let properties = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!properties) return;\n properties.delete(e.propertyName);\n // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements.\n if (properties.size === 0) {\n e.target.removeEventListener('transitioncancel', onTransitionEnd);\n $bbed8b41f857bcc0$var$transitionsByElement.delete(e.target);\n }\n // If no transitioning elements, call all of the queued callbacks.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) {\n for (let cb of $bbed8b41f857bcc0$var$transitionCallbacks)cb();\n $bbed8b41f857bcc0$var$transitionCallbacks.clear();\n }\n };\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') $bbed8b41f857bcc0$var$setupGlobalEvents();\n else document.addEventListener('DOMContentLoaded', $bbed8b41f857bcc0$var$setupGlobalEvents);\n}\nfunction $bbed8b41f857bcc0$export$24490316f764c430(fn) {\n // Wait one frame to see if an animation starts, e.g. a transition on mount.\n requestAnimationFrame(()=>{\n // If no transitions are running, call the function immediately.\n // Otherwise, add it to a list of callbacks to run at the end of the animation.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) fn();\n else $bbed8b41f857bcc0$var$transitionCallbacks.add(fn);\n });\n}\n\n\nexport {$bbed8b41f857bcc0$export$24490316f764c430 as runAfterTransition};\n//# sourceMappingURL=runAfterTransition.module.js.map\n","import {useRef as $lPAwt$useRef, useCallback as $lPAwt$useCallback, useEffect as $lPAwt$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $03deb23ff14920c4$export$4eaf04e54aa8eed6() {\n let globalListeners = (0, $lPAwt$useRef)(new Map());\n let addGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = (options === null || options === void 0 ? void 0 : options.once) ? (...args)=>{\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {\n type: type,\n eventTarget: eventTarget,\n fn: fn,\n options: options\n });\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n var _globalListeners_current_get;\n let fn = ((_globalListeners_current_get = globalListeners.current.get(listener)) === null || _globalListeners_current_get === void 0 ? void 0 : _globalListeners_current_get.fn) || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = (0, $lPAwt$useCallback)(()=>{\n globalListeners.current.forEach((value, key)=>{\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [\n removeGlobalListener\n ]);\n // eslint-disable-next-line arrow-body-style\n (0, $lPAwt$useEffect)(()=>{\n return removeAllGlobalListeners;\n }, [\n removeAllGlobalListeners\n ]);\n return {\n addGlobalListener: addGlobalListener,\n removeGlobalListener: removeGlobalListener,\n removeAllGlobalListeners: removeAllGlobalListeners\n };\n}\n\n\nexport {$03deb23ff14920c4$export$4eaf04e54aa8eed6 as useGlobalListeners};\n//# sourceMappingURL=useGlobalListeners.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $e7801be82b4b2a53$export$4debdb1a3f0fa79e(context, ref) {\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return ()=>{\n if (context.ref) context.ref.current = null;\n };\n }\n });\n}\n\n\nexport {$e7801be82b4b2a53$export$4debdb1a3f0fa79e as useSyncRef};\n//# sourceMappingURL=useSyncRef.module.js.map\n","import {isAndroid as $c87311424ea30a05$export$a11b0059900ceec8} from \"./platform.mjs\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n // JAWS/NVDA with Firefox.\n if (event.mozInputSource === 0 && event.isTrusted) return true;\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if ((0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return !(0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\nexport {$6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=isVirtualEvent.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useValueEffect as $1dbecbe27a04f9af$export$14d238f342723f25} from \"./useValueEffect.mjs\";\nimport {useState as $eKkEp$useState, useRef as $eKkEp$useRef, useCallback as $eKkEp$useCallback, useEffect as $eKkEp$useEffect} from \"react\";\nimport {useSSRSafeId as $eKkEp$useSSRSafeId} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet $bdb11010cef70236$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $bdb11010cef70236$var$idsUpdaterMap = new Map();\nfunction $bdb11010cef70236$export$f680877a34711e37(defaultId) {\n let [value, setValue] = (0, $eKkEp$useState)(defaultId);\n let nextId = (0, $eKkEp$useRef)(null);\n let res = (0, $eKkEp$useSSRSafeId)(value);\n let updateValue = (0, $eKkEp$useCallback)((val)=>{\n nextId.current = val;\n }, []);\n if ($bdb11010cef70236$var$canUseDOM) $bdb11010cef70236$var$idsUpdaterMap.set(res, updateValue);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n let r = res;\n return ()=>{\n $bdb11010cef70236$var$idsUpdaterMap.delete(r);\n };\n }, [\n res\n ]);\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n (0, $eKkEp$useEffect)(()=>{\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n return res;\n}\nfunction $bdb11010cef70236$export$cd8c9cb68f842629(idA, idB) {\n if (idA === idB) return idA;\n let setIdA = $bdb11010cef70236$var$idsUpdaterMap.get(idA);\n if (setIdA) {\n setIdA(idB);\n return idB;\n }\n let setIdB = $bdb11010cef70236$var$idsUpdaterMap.get(idB);\n if (setIdB) {\n setIdB(idA);\n return idA;\n }\n return idB;\n}\nfunction $bdb11010cef70236$export$b4cc09c592e8fdb8(depArray = []) {\n let id = $bdb11010cef70236$export$f680877a34711e37();\n let [resolvedId, setResolvedId] = (0, $1dbecbe27a04f9af$export$14d238f342723f25)(id);\n let updateId = (0, $eKkEp$useCallback)(()=>{\n setResolvedId(function*() {\n yield id;\n yield document.getElementById(id) ? id : undefined;\n });\n }, [\n id,\n setResolvedId\n ]);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(updateId, [\n id,\n updateId,\n ...depArray\n ]);\n return resolvedId;\n}\n\n\nexport {$bdb11010cef70236$export$f680877a34711e37 as useId, $bdb11010cef70236$export$cd8c9cb68f842629 as mergeIds, $bdb11010cef70236$export$b4cc09c592e8fdb8 as useSlotId};\n//# sourceMappingURL=useId.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ /**\n * Calls all functions in the order they were chained with the same arguments.\n */ function $ff5963eb1fccf552$export$e08e3b67e392101e(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks)if (typeof callback === 'function') callback(...args);\n };\n}\n\n\nexport {$ff5963eb1fccf552$export$e08e3b67e392101e as chain};\n//# sourceMappingURL=chain.module.js.map\n","import {chain as $ff5963eb1fccf552$export$e08e3b67e392101e} from \"./chain.mjs\";\nimport {mergeIds as $bdb11010cef70236$export$cd8c9cb68f842629} from \"./useId.mjs\";\nimport $7jXr9$clsx from \"clsx\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $3ef42575df84b30b$export$9d1611c77c2fe928(...args) {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result = {\n ...args[0]\n };\n for(let i = 1; i < args.length; i++){\n let props = args[i];\n for(let key in props){\n let a = result[key];\n let b = props[key];\n // Chain events\n if (typeof a === 'function' && typeof b === 'function' && // This is a lot faster than a regex.\n key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) result[key] = (0, $ff5963eb1fccf552$export$e08e3b67e392101e)(a, b);\n else if ((key === 'className' || key === 'UNSAFE_className') && typeof a === 'string' && typeof b === 'string') result[key] = (0, $7jXr9$clsx)(a, b);\n else if (key === 'id' && a && b) result.id = (0, $bdb11010cef70236$export$cd8c9cb68f842629)(a, b);\n else result[key] = b !== undefined ? b : a;\n }\n }\n return result;\n}\n\n\nexport {$3ef42575df84b30b$export$9d1611c77c2fe928 as mergeProps};\n//# sourceMappingURL=mergeProps.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ const $65484d02dcb7eb3e$var$DOMPropNames = new Set([\n 'id'\n]);\nconst $65484d02dcb7eb3e$var$labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details'\n]);\n// See LinkDOMProps in dom.d.ts.\nconst $65484d02dcb7eb3e$var$linkPropNames = new Set([\n 'href',\n 'hrefLang',\n 'target',\n 'rel',\n 'download',\n 'ping',\n 'referrerPolicy'\n]);\nconst $65484d02dcb7eb3e$var$propRe = /^(data-.*)$/;\nfunction $65484d02dcb7eb3e$export$457c3d6518dd4c6f(props, opts = {}) {\n let { labelable: labelable, isLink: isLink, propNames: propNames } = opts;\n let filteredProps = {};\n for(const prop in props)if (Object.prototype.hasOwnProperty.call(props, prop) && ($65484d02dcb7eb3e$var$DOMPropNames.has(prop) || labelable && $65484d02dcb7eb3e$var$labelablePropNames.has(prop) || isLink && $65484d02dcb7eb3e$var$linkPropNames.has(prop) || (propNames === null || propNames === void 0 ? void 0 : propNames.has(prop)) || $65484d02dcb7eb3e$var$propRe.test(prop))) filteredProps[prop] = props[prop];\n return filteredProps;\n}\n\n\nexport {$65484d02dcb7eb3e$export$457c3d6518dd4c6f as filterDOMProps};\n//# sourceMappingURL=filterDOMProps.module.js.map\n","function _class_apply_descriptor_get(receiver, descriptor) {\n if (descriptor.get) return descriptor.get.call(receiver);\n\n return descriptor.value;\n}\nexport { _class_apply_descriptor_get as _ };\n","function _class_extract_field_descriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n\n return privateMap.get(receiver);\n}\nexport { _class_extract_field_descriptor as _ };\n","import { _ as _class_apply_descriptor_get } from \"./_class_apply_descriptor_get.js\";\nimport { _ as _class_extract_field_descriptor } from \"./_class_extract_field_descriptor.js\";\n\nfunction _class_private_field_get(receiver, privateMap) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"get\");\n return _class_apply_descriptor_get(receiver, descriptor);\n}\nexport { _class_private_field_get as _ };\n","function _class_apply_descriptor_set(receiver, descriptor, value) {\n if (descriptor.set) descriptor.set.call(receiver, value);\n else {\n if (!descriptor.writable) {\n // This should only throw in strict mode, but class bodies are\n // always strict and private fields can only be used inside\n // class bodies.\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\nexport { _class_apply_descriptor_set as _ };\n","import { _ as _class_apply_descriptor_set } from \"./_class_apply_descriptor_set.js\";\nimport { _ as _class_extract_field_descriptor } from \"./_class_extract_field_descriptor.js\";\n\nfunction _class_private_field_set(receiver, privateMap, value) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"set\");\n _class_apply_descriptor_set(receiver, descriptor, value);\n return value;\n}\nexport { _class_private_field_set as _ };\n","import {useRef as $6dfIe$useRef, useCallback as $6dfIe$useCallback} from \"react\";\nimport {useLayoutEffect as $6dfIe$useLayoutEffect, useEffectEvent as $6dfIe$useEffectEvent} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nclass $8a9cb279dc87e130$export$905e7fc544a71f36 {\n isDefaultPrevented() {\n return this.nativeEvent.defaultPrevented;\n }\n preventDefault() {\n this.defaultPrevented = true;\n this.nativeEvent.preventDefault();\n }\n stopPropagation() {\n this.nativeEvent.stopPropagation();\n this.isPropagationStopped = ()=>true;\n }\n isPropagationStopped() {\n return false;\n }\n persist() {}\n constructor(type, nativeEvent){\n this.nativeEvent = nativeEvent;\n this.target = nativeEvent.target;\n this.currentTarget = nativeEvent.currentTarget;\n this.relatedTarget = nativeEvent.relatedTarget;\n this.bubbles = nativeEvent.bubbles;\n this.cancelable = nativeEvent.cancelable;\n this.defaultPrevented = nativeEvent.defaultPrevented;\n this.eventPhase = nativeEvent.eventPhase;\n this.isTrusted = nativeEvent.isTrusted;\n this.timeStamp = nativeEvent.timeStamp;\n this.type = type;\n }\n}\nfunction $8a9cb279dc87e130$export$715c682d09d639cc(onBlur) {\n let stateRef = (0, $6dfIe$useRef)({\n isFocused: false,\n observer: null\n });\n // Clean up MutationObserver on unmount. See below.\n // eslint-disable-next-line arrow-body-style\n (0, $6dfIe$useLayoutEffect)(()=>{\n const state = stateRef.current;\n return ()=>{\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n let dispatchBlur = (0, $6dfIe$useEffectEvent)((e)=>{\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n });\n // This function is called during a React onFocus event.\n return (0, $6dfIe$useCallback)((e)=>{\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n stateRef.current.isFocused = true;\n let target = e.target;\n let onBlurHandler = (e)=>{\n stateRef.current.isFocused = false;\n if (target.disabled) // For backward compatibility, dispatch a (fake) React synthetic event.\n dispatchBlur(new $8a9cb279dc87e130$export$905e7fc544a71f36('blur', e));\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n target.addEventListener('focusout', onBlurHandler, {\n once: true\n });\n stateRef.current.observer = new MutationObserver(()=>{\n if (stateRef.current.isFocused && target.disabled) {\n var _stateRef_current_observer;\n (_stateRef_current_observer = stateRef.current.observer) === null || _stateRef_current_observer === void 0 ? void 0 : _stateRef_current_observer.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {\n relatedTarget: relatedTargetEl\n }));\n target.dispatchEvent(new FocusEvent('focusout', {\n bubbles: true,\n relatedTarget: relatedTargetEl\n }));\n }\n });\n stateRef.current.observer.observe(target, {\n attributes: true,\n attributeFilter: [\n 'disabled'\n ]\n });\n }\n }, [\n dispatchBlur\n ]);\n}\n\n\nexport {$8a9cb279dc87e130$export$905e7fc544a71f36 as SyntheticFocusEvent, $8a9cb279dc87e130$export$715c682d09d639cc as useSyntheticBlurEvent};\n//# sourceMappingURL=utils.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useCallback as $hf0lj$useCallback} from \"react\";\nimport {getOwnerDocument as $hf0lj$getOwnerDocument} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {\n let { isDisabled: isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange: onFocusChange } = props;\n const onBlur = (0, $hf0lj$useCallback)((e)=>{\n if (e.target === e.currentTarget) {\n if (onBlurProp) onBlurProp(e);\n if (onFocusChange) onFocusChange(false);\n return true;\n }\n }, [\n onBlurProp,\n onFocusChange\n ]);\n const onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n const onFocus = (0, $hf0lj$useCallback)((e)=>{\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n const ownerDocument = (0, $hf0lj$getOwnerDocument)(e.target);\n if (e.target === e.currentTarget && ownerDocument.activeElement === e.target) {\n if (onFocusProp) onFocusProp(e);\n if (onFocusChange) onFocusChange(true);\n onSyntheticFocus(e);\n }\n }, [\n onFocusChange,\n onFocusProp,\n onSyntheticFocus\n ]);\n return {\n focusProps: {\n onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n }\n };\n}\n\n\nexport {$a1ea59d68270f0dd$export$f8168d8dd8fd66e6 as useFocus};\n//# sourceMappingURL=useFocus.module.js.map\n","import {isMac as $28AnR$isMac, isVirtualClick as $28AnR$isVirtualClick, getOwnerWindow as $28AnR$getOwnerWindow, getOwnerDocument as $28AnR$getOwnerDocument} from \"@react-aria/utils\";\nimport {useState as $28AnR$useState, useEffect as $28AnR$useEffect} from \"react\";\nimport {useIsSSR as $28AnR$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nlet $507fabe10e71c6fb$var$currentModality = null;\nlet $507fabe10e71c6fb$var$changeHandlers = new Set();\nlet $507fabe10e71c6fb$export$d90243b58daecda7 = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\nlet $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst $507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\nfunction $507fabe10e71c6fb$var$triggerChangeHandlers(modality, e) {\n for (let handler of $507fabe10e71c6fb$var$changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function $507fabe10e71c6fb$var$isValidKey(e) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || !(0, $28AnR$isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction $507fabe10e71c6fb$var$handleKeyboardEvent(e) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n if ($507fabe10e71c6fb$var$isValidKey(e)) {\n $507fabe10e71c6fb$var$currentModality = 'keyboard';\n $507fabe10e71c6fb$var$triggerChangeHandlers('keyboard', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handlePointerEvent(e) {\n $507fabe10e71c6fb$var$currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$triggerChangeHandlers('pointer', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handleClickEvent(e) {\n if ((0, $28AnR$isVirtualClick)(e)) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n }\n}\nfunction $507fabe10e71c6fb$var$handleFocusEvent(e) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document) return;\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!$507fabe10e71c6fb$var$hasEventBeforeFocus && !$507fabe10e71c6fb$var$hasBlurredWindowRecently) {\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n $507fabe10e71c6fb$var$triggerChangeHandlers('virtual', e);\n }\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n}\nfunction $507fabe10e71c6fb$var$handleWindowBlur() {\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function $507fabe10e71c6fb$var$setupGlobalFocusEvents(element) {\n if (typeof window === 'undefined' || $507fabe10e71c6fb$export$d90243b58daecda7.get((0, $28AnR$getOwnerWindow)(element))) return;\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function() {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n focus.apply(this, arguments);\n };\n documentObject.addEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.addEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else {\n documentObject.addEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n // Add unmount handler\n windowObject.addEventListener('beforeunload', ()=>{\n $507fabe10e71c6fb$var$tearDownWindowFocusTracking(element);\n }, {\n once: true\n });\n $507fabe10e71c6fb$export$d90243b58daecda7.set(windowObject, {\n focus: focus\n });\n}\nconst $507fabe10e71c6fb$var$tearDownWindowFocusTracking = (element, loadListener)=>{\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n if (!$507fabe10e71c6fb$export$d90243b58daecda7.has(windowObject)) return;\n windowObject.HTMLElement.prototype.focus = $507fabe10e71c6fb$export$d90243b58daecda7.get(windowObject).focus;\n documentObject.removeEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n windowObject.removeEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.removeEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else {\n documentObject.removeEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n $507fabe10e71c6fb$export$d90243b58daecda7.delete(windowObject);\n};\nfunction $507fabe10e71c6fb$export$2f1888112f558a7d(element) {\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n else {\n loadListener = ()=>{\n $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n return ()=>$507fabe10e71c6fb$var$tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') $507fabe10e71c6fb$export$2f1888112f558a7d();\nfunction $507fabe10e71c6fb$export$b9b3dfddab17db27() {\n return $507fabe10e71c6fb$var$currentModality !== 'pointer';\n}\nfunction $507fabe10e71c6fb$export$630ff653c5ada6a9() {\n return $507fabe10e71c6fb$var$currentModality;\n}\nfunction $507fabe10e71c6fb$export$8397ddfc504fdb9a(modality) {\n $507fabe10e71c6fb$var$currentModality = modality;\n $507fabe10e71c6fb$var$triggerChangeHandlers(modality, null);\n}\nfunction $507fabe10e71c6fb$export$98e20ec92f614cfe() {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n let [modality, setModality] = (0, $28AnR$useState)($507fabe10e71c6fb$var$currentModality);\n (0, $28AnR$useEffect)(()=>{\n let handler = ()=>{\n setModality($507fabe10e71c6fb$var$currentModality);\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n }, []);\n return (0, $28AnR$useIsSSR)() ? null : modality;\n}\nconst $507fabe10e71c6fb$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function $507fabe10e71c6fb$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n var _e_target;\n const IHTMLInputElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).KeyboardEvent : KeyboardEvent;\n isTextInput = isTextInput || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLInputElement && !$507fabe10e71c6fb$var$nonTextInputTypes.has(e === null || e === void 0 ? void 0 : (_e_target = e.target) === null || _e_target === void 0 ? void 0 : _e_target.type) || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLTextAreaElement || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLElement && (e === null || e === void 0 ? void 0 : e.target.isContentEditable);\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction $507fabe10e71c6fb$export$ffd9e5021c1fb2d6(props = {}) {\n let { isTextInput: isTextInput, autoFocus: autoFocus } = props;\n let [isFocusVisibleState, setFocusVisible] = (0, $28AnR$useState)(autoFocus || $507fabe10e71c6fb$export$b9b3dfddab17db27());\n $507fabe10e71c6fb$export$ec71b4b83ac08ec3((isFocusVisible)=>{\n setFocusVisible(isFocusVisible);\n }, [\n isTextInput\n ], {\n isTextInput: isTextInput\n });\n return {\n isFocusVisible: isFocusVisibleState\n };\n}\nfunction $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n (0, $28AnR$useEffect)(()=>{\n let handler = (modality, e)=>{\n if (!$507fabe10e71c6fb$var$isKeyboardFocusEvent(!!(opts === null || opts === void 0 ? void 0 : opts.isTextInput), modality, e)) return;\n fn($507fabe10e71c6fb$export$b9b3dfddab17db27());\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\n\nexport {$507fabe10e71c6fb$export$d90243b58daecda7 as hasSetupGlobalListeners, $507fabe10e71c6fb$export$2f1888112f558a7d as addWindowFocusTracking, $507fabe10e71c6fb$export$b9b3dfddab17db27 as isFocusVisible, $507fabe10e71c6fb$export$630ff653c5ada6a9 as getInteractionModality, $507fabe10e71c6fb$export$8397ddfc504fdb9a as setInteractionModality, $507fabe10e71c6fb$export$98e20ec92f614cfe as useInteractionModality, $507fabe10e71c6fb$export$ffd9e5021c1fb2d6 as useFocusVisible, $507fabe10e71c6fb$export$ec71b4b83ac08ec3 as useFocusVisibleListener};\n//# sourceMappingURL=useFocusVisible.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useRef as $3b9Q0$useRef, useCallback as $3b9Q0$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\nfunction $9ab94262bd0047c7$export$420e68273165f4ec(props) {\n let { isDisabled: isDisabled, onBlurWithin: onBlurWithin, onFocusWithin: onFocusWithin, onFocusWithinChange: onFocusWithinChange } = props;\n let state = (0, $3b9Q0$useRef)({\n isFocusWithin: false\n });\n let onBlur = (0, $3b9Q0$useCallback)((e)=>{\n // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n // when moving focus inside the element. Only trigger if the currentTarget doesn't\n // include the relatedTarget (where focus is moving).\n if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n state.current.isFocusWithin = false;\n if (onBlurWithin) onBlurWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(false);\n }\n }, [\n onBlurWithin,\n onFocusWithinChange,\n state\n ]);\n let onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n let onFocus = (0, $3b9Q0$useCallback)((e)=>{\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n if (!state.current.isFocusWithin && document.activeElement === e.target) {\n if (onFocusWithin) onFocusWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(true);\n state.current.isFocusWithin = true;\n onSyntheticFocus(e);\n }\n }, [\n onFocusWithin,\n onFocusWithinChange,\n onSyntheticFocus\n ]);\n if (isDisabled) return {\n focusWithinProps: {\n // These should not have been null, that would conflict in mergeProps\n onFocus: undefined,\n onBlur: undefined\n }\n };\n return {\n focusWithinProps: {\n onFocus: onFocus,\n onBlur: onBlur\n }\n };\n}\n\n\nexport {$9ab94262bd0047c7$export$420e68273165f4ec as useFocusWithin};\n//# sourceMappingURL=useFocusWithin.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $93925083ecbb358c$export$48d1ea6320830260(handler) {\n if (!handler) return undefined;\n let shouldStopPropagation = true;\n return (e)=>{\n let event = {\n ...e,\n preventDefault () {\n e.preventDefault();\n },\n isDefaultPrevented () {\n return e.isDefaultPrevented();\n },\n stopPropagation () {\n console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n },\n continuePropagation () {\n shouldStopPropagation = false;\n }\n };\n handler(event);\n if (shouldStopPropagation) e.stopPropagation();\n };\n}\n\n\nexport {$93925083ecbb358c$export$48d1ea6320830260 as createEventHandler};\n//# sourceMappingURL=createEventHandler.module.js.map\n","import {createEventHandler as $93925083ecbb358c$export$48d1ea6320830260} from \"./createEventHandler.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $46d819fcbaf35654$export$8f71654801c2f7cd(props) {\n return {\n keyboardProps: props.isDisabled ? {} : {\n onKeyDown: (0, $93925083ecbb358c$export$48d1ea6320830260)(props.onKeyDown),\n onKeyUp: (0, $93925083ecbb358c$export$48d1ea6320830260)(props.onKeyUp)\n }\n };\n}\n\n\nexport {$46d819fcbaf35654$export$8f71654801c2f7cd as useKeyboard};\n//# sourceMappingURL=useKeyboard.module.js.map\n","// src/utils.ts\nimport { forwardRef as baseForwardRef } from \"react\";\nfunction forwardRef(component) {\n return baseForwardRef(component);\n}\nvar toIterator = (obj) => {\n return {\n ...obj,\n [Symbol.iterator]: function() {\n const keys = Object.keys(this);\n let index = 0;\n return {\n next: () => {\n if (index >= keys.length) {\n return { done: true };\n }\n const key = keys[index];\n const value = this[key];\n index++;\n return { value: { key, value }, done: false };\n }\n };\n }\n };\n};\nvar mapPropsVariants = (props, variantKeys, removeVariantProps = true) => {\n if (!variantKeys) {\n return [props, {}];\n }\n const picked = variantKeys.reduce((acc, key) => {\n if (key in props) {\n return { ...acc, [key]: props[key] };\n } else {\n return acc;\n }\n }, {});\n if (removeVariantProps) {\n const omitted = Object.keys(props).filter((key) => !variantKeys.includes(key)).reduce((acc, key) => ({ ...acc, [key]: props[key] }), {});\n return [omitted, picked];\n } else {\n return [props, picked];\n }\n};\nvar mapPropsVariantsWithCommon = (originalProps, variantKeys, commonKeys) => {\n const props = Object.keys(originalProps).filter((key) => !variantKeys.includes(key) || (commonKeys == null ? void 0 : commonKeys.includes(key))).reduce((acc, key) => ({ ...acc, [key]: originalProps[key] }), {});\n const variants = variantKeys.reduce(\n (acc, key) => ({ ...acc, [key]: originalProps[key] }),\n {}\n );\n return [props, variants];\n};\nvar isNextUIEl = (component) => {\n var _a, _b, _c;\n return !!((_c = (_b = (_a = component.type) == null ? void 0 : _a.render) == null ? void 0 : _b.displayName) == null ? void 0 : _c.includes(\"NextUI\"));\n};\n\nexport {\n forwardRef,\n toIterator,\n mapPropsVariants,\n mapPropsVariantsWithCommon,\n isNextUIEl\n};\n","\"use client\";\n\n// src/button-group-context.ts\nimport { createContext } from \"@nextui-org/react-utils\";\nvar [ButtonGroupProvider, useButtonGroupContext] = createContext({\n name: \"ButtonGroupContext\",\n strict: false\n});\n\nexport {\n ButtonGroupProvider,\n useButtonGroupContext\n};\n","import {getOwnerDocument as $jlOai$getOwnerDocument, runAfterTransition as $jlOai$runAfterTransition, focusWithoutScrolling as $jlOai$focusWithoutScrolling} from \"@react-aria/utils\";\nimport {getInteractionModality as $jlOai$getInteractionModality} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $6a99195332edec8b$export$80f3e147d781571c(element) {\n // If the user is interacting with a virtual cursor, e.g. screen reader, then\n // wait until after any animated transitions that are currently occurring on\n // the page before shifting focus. This avoids issues with VoiceOver on iOS\n // causing the page to scroll when moving focus if the element is transitioning\n // from off the screen.\n const ownerDocument = (0, $jlOai$getOwnerDocument)(element);\n if ((0, $jlOai$getInteractionModality)() === 'virtual') {\n let lastFocusedElement = ownerDocument.activeElement;\n (0, $jlOai$runAfterTransition)(()=>{\n // If focus did not move and the element is still in the document, focus it.\n if (ownerDocument.activeElement === lastFocusedElement && element.isConnected) (0, $jlOai$focusWithoutScrolling)(element);\n });\n } else (0, $jlOai$focusWithoutScrolling)(element);\n}\n\n\nexport {$6a99195332edec8b$export$80f3e147d781571c as focusSafely};\n//# sourceMappingURL=focusSafely.module.js.map\n","import {isFocusVisible as $isWE5$isFocusVisible, useFocusVisibleListener as $isWE5$useFocusVisibleListener, useFocus as $isWE5$useFocus, useFocusWithin as $isWE5$useFocusWithin} from \"@react-aria/interactions\";\nimport {useRef as $isWE5$useRef, useState as $isWE5$useState, useCallback as $isWE5$useCallback} from \"react\";\n\n\n\nfunction $f7dceffc5ad7768b$export$4e328f61c538687f(props = {}) {\n let { autoFocus: autoFocus = false, isTextInput: isTextInput, within: within } = props;\n let state = (0, $isWE5$useRef)({\n isFocused: false,\n isFocusVisible: autoFocus || (0, $isWE5$isFocusVisible)()\n });\n let [isFocused, setFocused] = (0, $isWE5$useState)(false);\n let [isFocusVisibleState, setFocusVisible] = (0, $isWE5$useState)(()=>state.current.isFocused && state.current.isFocusVisible);\n let updateState = (0, $isWE5$useCallback)(()=>setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n let onFocusChange = (0, $isWE5$useCallback)((isFocused)=>{\n state.current.isFocused = isFocused;\n setFocused(isFocused);\n updateState();\n }, [\n updateState\n ]);\n (0, $isWE5$useFocusVisibleListener)((isFocusVisible)=>{\n state.current.isFocusVisible = isFocusVisible;\n updateState();\n }, [], {\n isTextInput: isTextInput\n });\n let { focusProps: focusProps } = (0, $isWE5$useFocus)({\n isDisabled: within,\n onFocusChange: onFocusChange\n });\n let { focusWithinProps: focusWithinProps } = (0, $isWE5$useFocusWithin)({\n isDisabled: !within,\n onFocusWithinChange: onFocusChange\n });\n return {\n isFocused: isFocused,\n isFocusVisible: isFocusVisibleState,\n focusProps: within ? focusWithinProps : focusProps\n };\n}\n\n\nexport {$f7dceffc5ad7768b$export$4e328f61c538687f as useFocusRing};\n//# sourceMappingURL=useFocusRing.module.js.map\n","import {focusSafely as $6a99195332edec8b$export$80f3e147d781571c} from \"./focusSafely.mjs\";\nimport {useSyncRef as $h8xso$useSyncRef, useObjectRef as $h8xso$useObjectRef, mergeProps as $h8xso$mergeProps} from \"@react-aria/utils\";\nimport $h8xso$react, {useContext as $h8xso$useContext, useRef as $h8xso$useRef, useEffect as $h8xso$useEffect} from \"react\";\nimport {useFocus as $h8xso$useFocus, useKeyboard as $h8xso$useKeyboard} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nlet $e6afbd83fe6ebbd2$var$FocusableContext = /*#__PURE__*/ (0, $h8xso$react).createContext(null);\nfunction $e6afbd83fe6ebbd2$var$useFocusableContext(ref) {\n let context = (0, $h8xso$useContext)($e6afbd83fe6ebbd2$var$FocusableContext) || {};\n (0, $h8xso$useSyncRef)(context, ref);\n // eslint-disable-next-line\n let { ref: _, ...otherProps } = context;\n return otherProps;\n}\n/**\n * Provides DOM props to the nearest focusable child.\n */ function $e6afbd83fe6ebbd2$var$FocusableProvider(props, ref) {\n let { children: children, ...otherProps } = props;\n let objRef = (0, $h8xso$useObjectRef)(ref);\n let context = {\n ...otherProps,\n ref: objRef\n };\n return /*#__PURE__*/ (0, $h8xso$react).createElement($e6afbd83fe6ebbd2$var$FocusableContext.Provider, {\n value: context\n }, children);\n}\nlet $e6afbd83fe6ebbd2$export$13f3202a3e5ddd5 = /*#__PURE__*/ (0, $h8xso$react).forwardRef($e6afbd83fe6ebbd2$var$FocusableProvider);\nfunction $e6afbd83fe6ebbd2$export$4c014de7c8940b4c(props, domRef) {\n let { focusProps: focusProps } = (0, $h8xso$useFocus)(props);\n let { keyboardProps: keyboardProps } = (0, $h8xso$useKeyboard)(props);\n let interactions = (0, $h8xso$mergeProps)(focusProps, keyboardProps);\n let domProps = $e6afbd83fe6ebbd2$var$useFocusableContext(domRef);\n let interactionProps = props.isDisabled ? {} : domProps;\n let autoFocusRef = (0, $h8xso$useRef)(props.autoFocus);\n (0, $h8xso$useEffect)(()=>{\n if (autoFocusRef.current && domRef.current) (0, $6a99195332edec8b$export$80f3e147d781571c)(domRef.current);\n autoFocusRef.current = false;\n }, [\n domRef\n ]);\n return {\n focusableProps: (0, $h8xso$mergeProps)({\n ...interactions,\n tabIndex: props.excludeFromTabOrder && !props.isDisabled ? -1 : undefined\n }, interactionProps)\n };\n}\n\n\nexport {$e6afbd83fe6ebbd2$export$13f3202a3e5ddd5 as FocusableProvider, $e6afbd83fe6ebbd2$export$4c014de7c8940b4c as useFocusable};\n//# sourceMappingURL=useFocusable.module.js.map\n","import {isIOS as $7R18e$isIOS, getOwnerDocument as $7R18e$getOwnerDocument, runAfterTransition as $7R18e$runAfterTransition} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet $14c0b72509d70225$var$state = 'default';\nlet $14c0b72509d70225$var$savedUserSelect = '';\nlet $14c0b72509d70225$var$modifiedElementMap = new WeakMap();\nfunction $14c0b72509d70225$export$16a4697467175487(target) {\n if ((0, $7R18e$isIOS)()) {\n if ($14c0b72509d70225$var$state === 'default') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = (0, $7R18e$getOwnerDocument)(target);\n $14c0b72509d70225$var$savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n documentObject.documentElement.style.webkitUserSelect = 'none';\n }\n $14c0b72509d70225$var$state = 'disabled';\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, store the target's original user-select and change to user-select: none\n // Ignore state since it doesn't apply for non iOS\n $14c0b72509d70225$var$modifiedElementMap.set(target, target.style.userSelect);\n target.style.userSelect = 'none';\n }\n}\nfunction $14c0b72509d70225$export$b0d6fa1ab32e3295(target) {\n if ((0, $7R18e$isIOS)()) {\n // If the state is already default, there's nothing to do.\n // If it is restoring, then there's no need to queue a second restore.\n if ($14c0b72509d70225$var$state !== 'disabled') return;\n $14c0b72509d70225$var$state = 'restoring';\n // There appears to be a delay on iOS where selection still might occur\n // after pointer up, so wait a bit before removing user-select.\n setTimeout(()=>{\n // Wait for any CSS transitions to complete so we don't recompute style\n // for the whole page in the middle of the animation and cause jank.\n (0, $7R18e$runAfterTransition)(()=>{\n // Avoid race conditions\n if ($14c0b72509d70225$var$state === 'restoring') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = (0, $7R18e$getOwnerDocument)(target);\n if (documentObject.documentElement.style.webkitUserSelect === 'none') documentObject.documentElement.style.webkitUserSelect = $14c0b72509d70225$var$savedUserSelect || '';\n $14c0b72509d70225$var$savedUserSelect = '';\n $14c0b72509d70225$var$state = 'default';\n }\n });\n }, 300);\n } else if (target instanceof HTMLElement || target instanceof SVGElement) // If not iOS, restore the target's original user-select if any\n // Ignore state since it doesn't apply for non iOS\n {\n if (target && $14c0b72509d70225$var$modifiedElementMap.has(target)) {\n let targetOldUserSelect = $14c0b72509d70225$var$modifiedElementMap.get(target);\n if (target.style.userSelect === 'none') target.style.userSelect = targetOldUserSelect;\n if (target.getAttribute('style') === '') target.removeAttribute('style');\n $14c0b72509d70225$var$modifiedElementMap.delete(target);\n }\n }\n}\n\n\nexport {$14c0b72509d70225$export$16a4697467175487 as disableTextSelection, $14c0b72509d70225$export$b0d6fa1ab32e3295 as restoreTextSelection};\n//# sourceMappingURL=textSelection.module.js.map\n","import $3aeG1$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $ae1eeba8b9eafd08$export$5165eccb35aaadb5 = (0, $3aeG1$react).createContext({\n register: ()=>{}\n});\n$ae1eeba8b9eafd08$export$5165eccb35aaadb5.displayName = 'PressResponderContext';\n\n\nexport {$ae1eeba8b9eafd08$export$5165eccb35aaadb5 as PressResponderContext};\n//# sourceMappingURL=context.module.js.map\n","import {disableTextSelection as $14c0b72509d70225$export$16a4697467175487, restoreTextSelection as $14c0b72509d70225$export$b0d6fa1ab32e3295} from \"./textSelection.mjs\";\nimport {PressResponderContext as $ae1eeba8b9eafd08$export$5165eccb35aaadb5} from \"./context.mjs\";\nimport {_ as $7mdmh$_} from \"@swc/helpers/_/_class_private_field_get\";\nimport {_ as $7mdmh$_1} from \"@swc/helpers/_/_class_private_field_init\";\nimport {_ as $7mdmh$_2} from \"@swc/helpers/_/_class_private_field_set\";\nimport {mergeProps as $7mdmh$mergeProps, useSyncRef as $7mdmh$useSyncRef, useGlobalListeners as $7mdmh$useGlobalListeners, useEffectEvent as $7mdmh$useEffectEvent, getOwnerDocument as $7mdmh$getOwnerDocument, chain as $7mdmh$chain, isMac as $7mdmh$isMac, openLink as $7mdmh$openLink, isVirtualClick as $7mdmh$isVirtualClick, focusWithoutScrolling as $7mdmh$focusWithoutScrolling, isVirtualPointerEvent as $7mdmh$isVirtualPointerEvent, getOwnerWindow as $7mdmh$getOwnerWindow} from \"@react-aria/utils\";\nimport {useContext as $7mdmh$useContext, useState as $7mdmh$useState, useRef as $7mdmh$useRef, useMemo as $7mdmh$useMemo, useEffect as $7mdmh$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\n\n\n\n\nfunction $f6c31cce2adf654f$var$usePressResponderContext(props) {\n // Consume context from <PressResponder> and merge with props.\n let context = (0, $7mdmh$useContext)((0, $ae1eeba8b9eafd08$export$5165eccb35aaadb5));\n if (context) {\n let { register: register, ...contextProps } = context;\n props = (0, $7mdmh$mergeProps)(contextProps, props);\n register();\n }\n (0, $7mdmh$useSyncRef)(context, props.ref);\n return props;\n}\nvar $f6c31cce2adf654f$var$_shouldStopPropagation = /*#__PURE__*/ new WeakMap();\nclass $f6c31cce2adf654f$var$PressEvent {\n continuePropagation() {\n (0, $7mdmh$_2)(this, $f6c31cce2adf654f$var$_shouldStopPropagation, false);\n }\n get shouldStopPropagation() {\n return (0, $7mdmh$_)(this, $f6c31cce2adf654f$var$_shouldStopPropagation);\n }\n constructor(type, pointerType, originalEvent){\n (0, $7mdmh$_1)(this, $f6c31cce2adf654f$var$_shouldStopPropagation, {\n writable: true,\n value: void 0\n });\n (0, $7mdmh$_2)(this, $f6c31cce2adf654f$var$_shouldStopPropagation, true);\n this.type = type;\n this.pointerType = pointerType;\n this.target = originalEvent.currentTarget;\n this.shiftKey = originalEvent.shiftKey;\n this.metaKey = originalEvent.metaKey;\n this.ctrlKey = originalEvent.ctrlKey;\n this.altKey = originalEvent.altKey;\n }\n}\nconst $f6c31cce2adf654f$var$LINK_CLICKED = Symbol('linkClicked');\nfunction $f6c31cce2adf654f$export$45712eceda6fad21(props) {\n let { onPress: onPress, onPressChange: onPressChange, onPressStart: onPressStart, onPressEnd: onPressEnd, onPressUp: onPressUp, isDisabled: isDisabled, isPressed: isPressedProp, preventFocusOnPress: preventFocusOnPress, shouldCancelOnPointerExit: shouldCancelOnPointerExit, allowTextSelectionOnPress: allowTextSelectionOnPress, // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ref: _, ...domProps } = $f6c31cce2adf654f$var$usePressResponderContext(props);\n let [isPressed, setPressed] = (0, $7mdmh$useState)(false);\n let ref = (0, $7mdmh$useRef)({\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n ignoreClickAfterPress: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null,\n target: null,\n isOverTarget: false,\n pointerType: null\n });\n let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $7mdmh$useGlobalListeners)();\n let triggerPressStart = (0, $7mdmh$useEffectEvent)((originalEvent, pointerType)=>{\n let state = ref.current;\n if (isDisabled || state.didFirePressStart) return false;\n let shouldStopPropagation = true;\n state.isTriggeringEvent = true;\n if (onPressStart) {\n let event = new $f6c31cce2adf654f$var$PressEvent('pressstart', pointerType, originalEvent);\n onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n if (onPressChange) onPressChange(true);\n state.isTriggeringEvent = false;\n state.didFirePressStart = true;\n setPressed(true);\n return shouldStopPropagation;\n });\n let triggerPressEnd = (0, $7mdmh$useEffectEvent)((originalEvent, pointerType, wasPressed = true)=>{\n let state = ref.current;\n if (!state.didFirePressStart) return false;\n state.ignoreClickAfterPress = true;\n state.didFirePressStart = false;\n state.isTriggeringEvent = true;\n let shouldStopPropagation = true;\n if (onPressEnd) {\n let event = new $f6c31cce2adf654f$var$PressEvent('pressend', pointerType, originalEvent);\n onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n if (onPressChange) onPressChange(false);\n setPressed(false);\n if (onPress && wasPressed && !isDisabled) {\n let event = new $f6c31cce2adf654f$var$PressEvent('press', pointerType, originalEvent);\n onPress(event);\n shouldStopPropagation && (shouldStopPropagation = event.shouldStopPropagation);\n }\n state.isTriggeringEvent = false;\n return shouldStopPropagation;\n });\n let triggerPressUp = (0, $7mdmh$useEffectEvent)((originalEvent, pointerType)=>{\n let state = ref.current;\n if (isDisabled) return false;\n if (onPressUp) {\n state.isTriggeringEvent = true;\n let event = new $f6c31cce2adf654f$var$PressEvent('pressup', pointerType, originalEvent);\n onPressUp(event);\n state.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n return true;\n });\n let cancel = (0, $7mdmh$useEffectEvent)((e)=>{\n let state = ref.current;\n if (state.isPressed && state.target) {\n if (state.isOverTarget && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)(state.target);\n }\n });\n let cancelOnPointerExit = (0, $7mdmh$useEffectEvent)((e)=>{\n if (shouldCancelOnPointerExit) cancel(e);\n });\n let pressProps = (0, $7mdmh$useMemo)(()=>{\n let state = ref.current;\n let pressProps = {\n onKeyDown (e) {\n if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target)) {\n var _state_metaKeyEvents;\n if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();\n // If the event is repeating, it may have started on a different element\n // after which focus moved to the current element. Ignore these events and\n // only handle the first key down event.\n let shouldStopPropagation = true;\n if (!state.isPressed && !e.repeat) {\n state.target = e.currentTarget;\n state.isPressed = true;\n shouldStopPropagation = triggerPressStart(e, 'keyboard');\n // Focus may move before the key up event, so register the event on the document\n // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n let originalTarget = e.currentTarget;\n let pressUp = (e)=>{\n if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e, originalTarget) && !e.repeat && originalTarget.contains(e.target) && state.target) triggerPressUp($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard');\n };\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'keyup', (0, $7mdmh$chain)(pressUp, onKeyUp), true);\n }\n if (shouldStopPropagation) e.stopPropagation();\n // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n // macOS has a bug where keyup events are not fired while the Meta key is down.\n // When the Meta key itself is released we will get an event for that, and we'll act as if\n // all of these other keys were released as well.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n // https://bugs.webkit.org/show_bug.cgi?id=55291\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n if (e.metaKey && (0, $7mdmh$isMac)()) (_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.set(e.key, e.nativeEvent);\n } else if (e.key === 'Meta') state.metaKeyEvents = new Map();\n },\n onClick (e) {\n if (e && !e.currentTarget.contains(e.target)) return;\n if (e && e.button === 0 && !state.isTriggeringEvent && !(0, $7mdmh$openLink).isOpening) {\n let shouldStopPropagation = true;\n if (isDisabled) e.preventDefault();\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard click.\n if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || (0, $7mdmh$isVirtualClick)(e.nativeEvent))) {\n // Ensure the element receives focus (VoiceOver on iOS does not do this)\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n let stopPressStart = triggerPressStart(e, 'virtual');\n let stopPressUp = triggerPressUp(e, 'virtual');\n let stopPressEnd = triggerPressEnd(e, 'virtual');\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n }\n state.ignoreEmulatedMouseEvents = false;\n state.ignoreClickAfterPress = false;\n if (shouldStopPropagation) e.stopPropagation();\n }\n }\n };\n let onKeyUp = (e)=>{\n var _state_metaKeyEvents;\n if (state.isPressed && state.target && $f6c31cce2adf654f$var$isValidKeyboardEvent(e, state.target)) {\n var _state_metaKeyEvents1;\n if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();\n let target = e.target;\n triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard', state.target.contains(target));\n removeAllGlobalListeners();\n // If a link was triggered with a key other than Enter, open the URL ourselves.\n // This means the link has a role override, and the default browser behavior\n // only applies when using the Enter key.\n if (e.key !== 'Enter' && $f6c31cce2adf654f$var$isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[$f6c31cce2adf654f$var$LINK_CLICKED]) {\n // Store a hidden property on the event so we only trigger link click once,\n // even if there are multiple usePress instances attached to the element.\n e[$f6c31cce2adf654f$var$LINK_CLICKED] = true;\n (0, $7mdmh$openLink)(state.target, e, false);\n }\n state.isPressed = false;\n (_state_metaKeyEvents1 = state.metaKeyEvents) === null || _state_metaKeyEvents1 === void 0 ? void 0 : _state_metaKeyEvents1.delete(e.key);\n } else if (e.key === 'Meta' && ((_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.size)) {\n var _state_target;\n // If we recorded keydown events that occurred while the Meta key was pressed,\n // and those haven't received keyup events already, fire keyup events ourselves.\n // See comment above for more info about the macOS bug causing this.\n let events = state.metaKeyEvents;\n state.metaKeyEvents = undefined;\n for (let event of events.values())(_state_target = state.target) === null || _state_target === void 0 ? void 0 : _state_target.dispatchEvent(new KeyboardEvent('keyup', event));\n }\n };\n if (typeof PointerEvent !== 'undefined') {\n pressProps.onPointerDown = (e)=>{\n // Only handle left clicks, and ignore events that bubbled through portals.\n if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;\n // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n // Ignore and let the onClick handler take care of it instead.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n if ((0, $7mdmh$isVirtualPointerEvent)(e.nativeEvent)) {\n state.pointerType = 'virtual';\n return;\n }\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on pointer down and handle focusing the pressable element ourselves.\n if ($f6c31cce2adf654f$var$shouldPreventDefault(e.currentTarget)) e.preventDefault();\n state.pointerType = e.pointerType;\n let shouldStopPropagation = true;\n if (!state.isPressed) {\n state.isPressed = true;\n state.isOverTarget = true;\n state.activePointerId = e.pointerId;\n state.target = e.currentTarget;\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$16a4697467175487)(state.target);\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'pointermove', onPointerMove, false);\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'pointerup', onPointerUp, false);\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'pointercancel', onPointerCancel, false);\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onMouseDown = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (e.button === 0) {\n // Chrome and Firefox on touch Windows devices require mouse down events\n // to be canceled in addition to pointer events, or an extra asynchronous\n // focus event will be fired.\n if ($f6c31cce2adf654f$var$shouldPreventDefault(e.currentTarget)) e.preventDefault();\n e.stopPropagation();\n }\n };\n pressProps.onPointerUp = (e)=>{\n // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n if (!e.currentTarget.contains(e.target) || state.pointerType === 'virtual') return;\n // Only handle left clicks\n // Safari on iOS sometimes fires pointerup events, even\n // when the touch isn't over the target, so double check.\n if (e.button === 0 && $f6c31cce2adf654f$var$isOverTarget(e, e.currentTarget)) triggerPressUp(e, state.pointerType || e.pointerType);\n };\n // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n // Use pointer move events instead to implement our own hit testing.\n // See https://bugs.webkit.org/show_bug.cgi?id=199803\n let onPointerMove = (e)=>{\n if (e.pointerId !== state.activePointerId) return;\n if (state.target && $f6c31cce2adf654f$var$isOverTarget(e, state.target)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n triggerPressStart($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType);\n }\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n cancelOnPointerExit(e);\n }\n };\n let onPointerUp = (e)=>{\n if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n if ($f6c31cce2adf654f$var$isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType);\n else if (state.isOverTarget && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)(state.target);\n }\n };\n let onPointerCancel = (e)=>{\n cancel(e);\n };\n pressProps.onDragStart = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n cancel(e);\n };\n } else {\n pressProps.onMouseDown = (e)=>{\n // Only handle left clicks\n if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on mouse down and handle focusing the pressable element ourselves.\n if ($f6c31cce2adf654f$var$shouldPreventDefault(e.currentTarget)) e.preventDefault();\n if (state.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n state.isPressed = true;\n state.isOverTarget = true;\n state.target = e.currentTarget;\n state.pointerType = (0, $7mdmh$isVirtualClick)(e.nativeEvent) ? 'virtual' : 'mouse';\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) e.stopPropagation();\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'mouseup', onMouseUp, false);\n };\n pressProps.onMouseEnter = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onMouseLeave = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onMouseUp = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (!state.ignoreEmulatedMouseEvents && e.button === 0) triggerPressUp(e, state.pointerType || 'mouse');\n };\n let onMouseUp = (e)=>{\n // Only handle left clicks\n if (e.button !== 0) return;\n state.isPressed = false;\n removeAllGlobalListeners();\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false;\n return;\n }\n if (state.target && $f6c31cce2adf654f$var$isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType);\n else if (state.target && state.isOverTarget && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n state.isOverTarget = false;\n };\n pressProps.onTouchStart = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n let touch = $f6c31cce2adf654f$var$getTouchFromEvent(e.nativeEvent);\n if (!touch) return;\n state.activePointerId = touch.identifier;\n state.ignoreEmulatedMouseEvents = true;\n state.isOverTarget = true;\n state.isPressed = true;\n state.target = e.currentTarget;\n state.pointerType = 'touch';\n // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n // on the emulated mouse event and handle focusing the pressable element ourselves.\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$16a4697467175487)(state.target);\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) e.stopPropagation();\n addGlobalListener((0, $7mdmh$getOwnerWindow)(e.currentTarget), 'scroll', onScroll, true);\n };\n pressProps.onTouchMove = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n let touch = $f6c31cce2adf654f$var$getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && $f6c31cce2adf654f$var$isOverTarget(touch, e.currentTarget)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n } else if (state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onTouchEnd = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n let touch = $f6c31cce2adf654f$var$getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && $f6c31cce2adf654f$var$isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n triggerPressUp(e, state.pointerType);\n shouldStopPropagation = triggerPressEnd(e, state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n if (shouldStopPropagation) e.stopPropagation();\n state.isPressed = false;\n state.activePointerId = null;\n state.isOverTarget = false;\n state.ignoreEmulatedMouseEvents = true;\n if (state.target && !allowTextSelectionOnPress) (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)(state.target);\n removeAllGlobalListeners();\n };\n pressProps.onTouchCancel = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n e.stopPropagation();\n if (state.isPressed) cancel(e);\n };\n let onScroll = (e)=>{\n if (state.isPressed && e.target.contains(state.target)) cancel({\n currentTarget: state.target,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false,\n altKey: false\n });\n };\n pressProps.onDragStart = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n cancel(e);\n };\n }\n return pressProps;\n }, [\n addGlobalListener,\n isDisabled,\n preventFocusOnPress,\n removeAllGlobalListeners,\n allowTextSelectionOnPress,\n cancel,\n cancelOnPointerExit,\n triggerPressEnd,\n triggerPressStart,\n triggerPressUp\n ]);\n // Remove user-select: none in case component unmounts immediately after pressStart\n // eslint-disable-next-line arrow-body-style\n (0, $7mdmh$useEffect)(()=>{\n return ()=>{\n var _ref_current_target;\n if (!allowTextSelectionOnPress) // eslint-disable-next-line react-hooks/exhaustive-deps\n (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)((_ref_current_target = ref.current.target) !== null && _ref_current_target !== void 0 ? _ref_current_target : undefined);\n };\n }, [\n allowTextSelectionOnPress\n ]);\n return {\n isPressed: isPressedProp || isPressed,\n pressProps: (0, $7mdmh$mergeProps)(domProps, pressProps)\n };\n}\nfunction $f6c31cce2adf654f$var$isHTMLAnchorLink(target) {\n return target.tagName === 'A' && target.hasAttribute('href');\n}\nfunction $f6c31cce2adf654f$var$isValidKeyboardEvent(event, currentTarget) {\n const { key: key, code: code } = event;\n const element = currentTarget;\n const role = element.getAttribute('role');\n // Accessibility for keyboards. Space and Enter only.\n // \"Spacebar\" is for IE 11\n return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') && !(element instanceof (0, $7mdmh$getOwnerWindow)(element).HTMLInputElement && !$f6c31cce2adf654f$var$isValidInputKey(element, key) || element instanceof (0, $7mdmh$getOwnerWindow)(element).HTMLTextAreaElement || element.isContentEditable) && // Links should only trigger with Enter key\n !((role === 'link' || !role && $f6c31cce2adf654f$var$isHTMLAnchorLink(element)) && key !== 'Enter');\n}\nfunction $f6c31cce2adf654f$var$getTouchFromEvent(event) {\n const { targetTouches: targetTouches } = event;\n if (targetTouches.length > 0) return targetTouches[0];\n return null;\n}\nfunction $f6c31cce2adf654f$var$getTouchById(event, pointerId) {\n const changedTouches = event.changedTouches;\n for(let i = 0; i < changedTouches.length; i++){\n const touch = changedTouches[i];\n if (touch.identifier === pointerId) return touch;\n }\n return null;\n}\nfunction $f6c31cce2adf654f$var$createEvent(target, e) {\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey\n };\n}\nfunction $f6c31cce2adf654f$var$getPointClientRect(point) {\n let offsetX = 0;\n let offsetY = 0;\n if (point.width !== undefined) offsetX = point.width / 2;\n else if (point.radiusX !== undefined) offsetX = point.radiusX;\n if (point.height !== undefined) offsetY = point.height / 2;\n else if (point.radiusY !== undefined) offsetY = point.radiusY;\n return {\n top: point.clientY - offsetY,\n right: point.clientX + offsetX,\n bottom: point.clientY + offsetY,\n left: point.clientX - offsetX\n };\n}\nfunction $f6c31cce2adf654f$var$areRectanglesOverlapping(a, b) {\n // check if they cannot overlap on x axis\n if (a.left > b.right || b.left > a.right) return false;\n // check if they cannot overlap on y axis\n if (a.top > b.bottom || b.top > a.bottom) return false;\n return true;\n}\nfunction $f6c31cce2adf654f$var$isOverTarget(point, target) {\n let rect = target.getBoundingClientRect();\n let pointRect = $f6c31cce2adf654f$var$getPointClientRect(point);\n return $f6c31cce2adf654f$var$areRectanglesOverlapping(rect, pointRect);\n}\nfunction $f6c31cce2adf654f$var$shouldPreventDefault(target) {\n // We cannot prevent default if the target is a draggable element.\n return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\nfunction $f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(target, key) {\n if (target instanceof HTMLInputElement) return !$f6c31cce2adf654f$var$isValidInputKey(target, key);\n if (target instanceof HTMLButtonElement) return target.type !== 'submit' && target.type !== 'reset';\n if ($f6c31cce2adf654f$var$isHTMLAnchorLink(target)) return false;\n return true;\n}\nconst $f6c31cce2adf654f$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\nfunction $f6c31cce2adf654f$var$isValidInputKey(target, key) {\n // Only space should toggle checkboxes and radios, not enter.\n return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : $f6c31cce2adf654f$var$nonTextInputTypes.has(target.type);\n}\n\n\nexport {$f6c31cce2adf654f$export$45712eceda6fad21 as usePress};\n//# sourceMappingURL=usePress.module.js.map\n","import {useState as $AWxnT$useState, useRef as $AWxnT$useRef, useEffect as $AWxnT$useEffect, useMemo as $AWxnT$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\nlet $6179b936705e76d3$var$hoverCount = 0;\nfunction $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents() {\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = true;\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n // the distant future because a user previously touched the element.\n setTimeout(()=>{\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\nfunction $6179b936705e76d3$var$handleGlobalPointerEvent(e) {\n if (e.pointerType === 'touch') $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction $6179b936705e76d3$var$setupGlobalTouchEvents() {\n if (typeof document === 'undefined') return;\n if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else document.addEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n $6179b936705e76d3$var$hoverCount++;\n return ()=>{\n $6179b936705e76d3$var$hoverCount--;\n if ($6179b936705e76d3$var$hoverCount > 0) return;\n if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else document.removeEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n };\n}\nfunction $6179b936705e76d3$export$ae780daf29e6d456(props) {\n let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, isDisabled: isDisabled } = props;\n let [isHovered, setHovered] = (0, $AWxnT$useState)(false);\n let state = (0, $AWxnT$useRef)({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: '',\n target: null\n }).current;\n (0, $AWxnT$useEffect)($6179b936705e76d3$var$setupGlobalTouchEvents, []);\n let { hoverProps: hoverProps, triggerHoverEnd: triggerHoverEnd } = (0, $AWxnT$useMemo)(()=>{\n let triggerHoverStart = (event, pointerType)=>{\n state.pointerType = pointerType;\n if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n state.isHovered = true;\n let target = event.currentTarget;\n state.target = target;\n if (onHoverStart) onHoverStart({\n type: 'hoverstart',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(true);\n setHovered(true);\n };\n let triggerHoverEnd = (event, pointerType)=>{\n state.pointerType = '';\n state.target = null;\n if (pointerType === 'touch' || !state.isHovered) return;\n state.isHovered = false;\n let target = event.currentTarget;\n if (onHoverEnd) onHoverEnd({\n type: 'hoverend',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(false);\n setHovered(false);\n };\n let hoverProps = {};\n if (typeof PointerEvent !== 'undefined') {\n hoverProps.onPointerEnter = (e)=>{\n if ($6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n triggerHoverStart(e, e.pointerType);\n };\n hoverProps.onPointerLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n };\n } else {\n hoverProps.onTouchStart = ()=>{\n state.ignoreEmulatedMouseEvents = true;\n };\n hoverProps.onMouseEnter = (e)=>{\n if (!state.ignoreEmulatedMouseEvents && !$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n state.ignoreEmulatedMouseEvents = false;\n };\n hoverProps.onMouseLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n };\n }\n return {\n hoverProps: hoverProps,\n triggerHoverEnd: triggerHoverEnd\n };\n }, [\n onHoverStart,\n onHoverChange,\n onHoverEnd,\n isDisabled,\n state\n ]);\n (0, $AWxnT$useEffect)(()=>{\n // Call the triggerHoverEnd as soon as isDisabled changes to true\n // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n if (isDisabled) triggerHoverEnd({\n currentTarget: state.target\n }, state.pointerType);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled\n ]);\n return {\n hoverProps: hoverProps,\n isHovered: isHovered\n };\n}\n\n\nexport {$6179b936705e76d3$export$ae780daf29e6d456 as useHover};\n//# sourceMappingURL=useHover.module.js.map\n","// src/index.ts\nimport { filterDOMProps, mergeProps } from \"@react-aria/utils\";\nimport { useFocusable } from \"@react-aria/focus\";\nimport { usePress } from \"@react-aria/interactions\";\nfunction useAriaButton(props, ref) {\n let {\n elementType = \"button\",\n isDisabled,\n onPress,\n onPressStart,\n onPressEnd,\n onPressChange,\n preventFocusOnPress,\n allowFocusWhenDisabled,\n onClick: deprecatedOnClick,\n href,\n target,\n rel,\n type = \"button\",\n allowTextSelectionOnPress\n } = props;\n let additionalProps;\n if (elementType === \"button\") {\n additionalProps = {\n type,\n disabled: isDisabled\n };\n } else {\n additionalProps = {\n role: \"button\",\n tabIndex: isDisabled ? void 0 : 0,\n href: elementType === \"a\" && isDisabled ? void 0 : href,\n target: elementType === \"a\" ? target : void 0,\n type: elementType === \"input\" ? type : void 0,\n disabled: elementType === \"input\" ? isDisabled : void 0,\n \"aria-disabled\": !isDisabled || elementType === \"input\" ? void 0 : isDisabled,\n rel: elementType === \"a\" ? rel : void 0\n };\n }\n let { pressProps, isPressed } = usePress({\n onPressStart,\n onPressEnd,\n onPressChange,\n onPress,\n isDisabled,\n preventFocusOnPress,\n allowTextSelectionOnPress,\n ref\n });\n let { focusableProps } = useFocusable(props, ref);\n if (allowFocusWhenDisabled) {\n focusableProps.tabIndex = isDisabled ? -1 : focusableProps.tabIndex;\n }\n let buttonProps = mergeProps(\n focusableProps,\n pressProps,\n filterDOMProps(props, { labelable: true })\n );\n return {\n isPressed,\n buttonProps: mergeProps(additionalProps, buttonProps, {\n \"aria-haspopup\": props[\"aria-haspopup\"],\n \"aria-expanded\": props[\"aria-expanded\"],\n \"aria-controls\": props[\"aria-controls\"],\n \"aria-pressed\": props[\"aria-pressed\"],\n onClick: (e) => {\n deprecatedOnClick == null ? void 0 : deprecatedOnClick(e);\n }\n })\n };\n}\nexport {\n useAriaButton\n};\n","\"use client\";\n\n// src/ripple.tsx\nimport { AnimatePresence, m, LazyMotion, domAnimation } from \"framer-motion\";\nimport { clamp } from \"@nextui-org/shared-utils\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nvar Ripple = (props) => {\n const { ripples = [], motionProps, color = \"currentColor\", style, onClear } = props;\n return /* @__PURE__ */ jsx(Fragment, { children: ripples.map((ripple) => {\n const duration = clamp(0.01 * ripple.size, 0.2, ripple.size > 100 ? 0.75 : 0.5);\n return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: \"popLayout\", children: /* @__PURE__ */ jsx(\n m.span,\n {\n animate: { transform: \"scale(2)\", opacity: 0 },\n className: \"nextui-ripple\",\n exit: { opacity: 0 },\n initial: { transform: \"scale(0)\", opacity: 0.35 },\n style: {\n position: \"absolute\",\n backgroundColor: color,\n borderRadius: \"100%\",\n transformOrigin: \"center\",\n pointerEvents: \"none\",\n overflow: \"hidden\",\n inset: 0,\n zIndex: 0,\n top: ripple.y,\n left: ripple.x,\n width: `${ripple.size}px`,\n height: `${ripple.size}px`,\n ...style\n },\n transition: { duration },\n onAnimationComplete: () => {\n onClear(ripple.key);\n },\n ...motionProps\n }\n ) }) }, ripple.key);\n }) });\n};\nRipple.displayName = \"NextUI.Ripple\";\nvar ripple_default = Ripple;\n\nexport {\n ripple_default\n};\n","\"use client\";\n\n// src/use-ripple.ts\nimport { getUniqueID } from \"@nextui-org/shared-utils\";\nimport { useCallback, useState } from \"react\";\nfunction useRipple(props = {}) {\n const [ripples, setRipples] = useState([]);\n const onClick = useCallback((event) => {\n const trigger = event.currentTarget;\n const size = Math.max(trigger.clientWidth, trigger.clientHeight);\n const rect = trigger.getBoundingClientRect();\n setRipples((prevRipples) => [\n ...prevRipples,\n {\n key: getUniqueID(prevRipples.length.toString()),\n size,\n x: event.clientX - rect.left - size / 2,\n y: event.clientY - rect.top - size / 2\n }\n ]);\n }, []);\n const onClear = useCallback((key) => {\n setRipples((prevState) => prevState.filter((ripple) => ripple.key !== key));\n }, []);\n return { ripples, onClick, onClear, ...props };\n}\n\nexport {\n useRipple\n};\n","\"use client\";\nimport {\n useButtonGroupContext\n} from \"./chunk-BOMWXXSL.mjs\";\n\n// src/use-button.ts\nimport { useProviderContext } from \"@nextui-org/system\";\nimport { dataAttr } from \"@nextui-org/shared-utils\";\nimport { useCallback } from \"react\";\nimport { useFocusRing } from \"@react-aria/focus\";\nimport { chain, mergeProps } from \"@react-aria/utils\";\nimport { useDOMRef, filterDOMProps } from \"@nextui-org/react-utils\";\nimport { button } from \"@nextui-org/theme\";\nimport { isValidElement, cloneElement, useMemo } from \"react\";\nimport { useAriaButton } from \"@nextui-org/use-aria-button\";\nimport { useHover } from \"@react-aria/interactions\";\nimport { useRipple } from \"@nextui-org/ripple\";\nfunction useButton(props) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n const groupContext = useButtonGroupContext();\n const globalContext = useProviderContext();\n const isInGroup = !!groupContext;\n const {\n ref,\n as,\n children,\n startContent: startContentProp,\n endContent: endContentProp,\n autoFocus,\n className,\n spinner,\n isLoading = false,\n disableRipple: disableRippleProp = false,\n fullWidth = (_a = groupContext == null ? void 0 : groupContext.fullWidth) != null ? _a : false,\n radius = groupContext == null ? void 0 : groupContext.radius,\n size = (_b = groupContext == null ? void 0 : groupContext.size) != null ? _b : \"md\",\n color = (_c = groupContext == null ? void 0 : groupContext.color) != null ? _c : \"default\",\n variant = (_d = groupContext == null ? void 0 : groupContext.variant) != null ? _d : \"solid\",\n disableAnimation = (_f = (_e = groupContext == null ? void 0 : groupContext.disableAnimation) != null ? _e : globalContext == null ? void 0 : globalContext.disableAnimation) != null ? _f : false,\n isDisabled: isDisabledProp = (_g = groupContext == null ? void 0 : groupContext.isDisabled) != null ? _g : false,\n isIconOnly = (_h = groupContext == null ? void 0 : groupContext.isIconOnly) != null ? _h : false,\n spinnerPlacement = \"start\",\n onPress,\n onClick,\n ...otherProps\n } = props;\n const Component = as || \"button\";\n const shouldFilterDOMProps = typeof Component === \"string\";\n const domRef = useDOMRef(ref);\n const disableRipple = (_i = disableRippleProp || (globalContext == null ? void 0 : globalContext.disableRipple)) != null ? _i : disableAnimation;\n const { isFocusVisible, isFocused, focusProps } = useFocusRing({\n autoFocus\n });\n const isDisabled = isDisabledProp || isLoading;\n const styles = useMemo(\n () => button({\n size,\n color,\n variant,\n radius,\n fullWidth,\n isDisabled,\n isInGroup,\n disableAnimation,\n isIconOnly,\n className\n }),\n [\n size,\n color,\n variant,\n radius,\n fullWidth,\n isDisabled,\n isInGroup,\n isIconOnly,\n disableAnimation,\n className\n ]\n );\n const { onClick: onRippleClickHandler, onClear: onClearRipple, ripples } = useRipple();\n const handleClick = useCallback(\n (e) => {\n if (disableRipple || isDisabled || disableAnimation)\n return;\n domRef.current && onRippleClickHandler(e);\n },\n [disableRipple, isDisabled, disableAnimation, domRef, onRippleClickHandler]\n );\n const { buttonProps: ariaButtonProps, isPressed } = useAriaButton(\n {\n elementType: as,\n isDisabled,\n onPress,\n onClick: chain(onClick, handleClick),\n ...otherProps\n },\n domRef\n );\n const { isHovered, hoverProps } = useHover({ isDisabled });\n const getButtonProps = useCallback(\n (props2 = {}) => ({\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-pressed\": dataAttr(isPressed),\n \"data-focus-visible\": dataAttr(isFocusVisible),\n \"data-hover\": dataAttr(isHovered),\n \"data-loading\": dataAttr(isLoading),\n ...mergeProps(\n ariaButtonProps,\n focusProps,\n hoverProps,\n filterDOMProps(otherProps, {\n enabled: shouldFilterDOMProps\n }),\n filterDOMProps(props2)\n )\n }),\n [\n isLoading,\n isDisabled,\n isFocused,\n isPressed,\n shouldFilterDOMProps,\n isFocusVisible,\n isHovered,\n ariaButtonProps,\n focusProps,\n hoverProps,\n otherProps\n ]\n );\n const getIconClone = (icon) => isValidElement(icon) ? cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n tabIndex: -1\n }) : null;\n const startContent = getIconClone(startContentProp);\n const endContent = getIconClone(endContentProp);\n const spinnerSize = useMemo(() => {\n const buttonSpinnerSizeMap = {\n sm: \"sm\",\n md: \"sm\",\n lg: \"md\"\n };\n return buttonSpinnerSizeMap[size];\n }, [size]);\n const getRippleProps = useCallback(\n () => ({ ripples, onClear: onClearRipple }),\n [ripples, onClearRipple]\n );\n return {\n Component,\n children,\n domRef,\n spinner,\n styles,\n startContent,\n endContent,\n isLoading,\n spinnerPlacement,\n spinnerSize,\n disableRipple,\n getButtonProps,\n getRippleProps,\n isIconOnly\n };\n}\n\nexport {\n useButton\n};\n","// src/use-spinner.ts\nimport { mapPropsVariants } from \"@nextui-org/system-rsc\";\nimport { spinner } from \"@nextui-org/theme\";\nimport { clsx, objectToDeps } from \"@nextui-org/shared-utils\";\nimport { useMemo, useCallback } from \"react\";\nfunction useSpinner(originalProps) {\n const [props, variantProps] = mapPropsVariants(originalProps, spinner.variantKeys);\n const { children, className, classNames, label: labelProp, ...otherProps } = props;\n const slots = useMemo(() => spinner({ ...variantProps }), [objectToDeps(variantProps)]);\n const baseStyles = clsx(classNames == null ? void 0 : classNames.base, className);\n const label = labelProp || children;\n const ariaLabel = useMemo(() => {\n if (label && typeof label === \"string\") {\n return label;\n }\n return !otherProps[\"aria-label\"] ? \"Loading\" : \"\";\n }, [children, label, otherProps[\"aria-label\"]]);\n const getSpinnerProps = useCallback(\n () => ({\n \"aria-label\": ariaLabel,\n className: slots.base({\n class: baseStyles\n }),\n ...otherProps\n }),\n [ariaLabel, slots, baseStyles, otherProps]\n );\n return { label, slots, classNames, getSpinnerProps };\n}\n\nexport {\n useSpinner\n};\n","import {\n useSpinner\n} from \"./chunk-GF2IUMUE.mjs\";\n\n// src/spinner.tsx\nimport { forwardRef } from \"@nextui-org/system-rsc\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar Spinner = forwardRef((props, ref) => {\n const { slots, classNames, label, getSpinnerProps } = useSpinner({ ...props });\n return /* @__PURE__ */ jsxs(\"div\", { ref, ...getSpinnerProps(), children: [\n /* @__PURE__ */ jsxs(\"div\", { className: slots.wrapper({ class: classNames == null ? void 0 : classNames.wrapper }), children: [\n /* @__PURE__ */ jsx(\"i\", { className: slots.circle1({ class: classNames == null ? void 0 : classNames.circle1 }) }),\n /* @__PURE__ */ jsx(\"i\", { className: slots.circle2({ class: classNames == null ? void 0 : classNames.circle2 }) })\n ] }),\n label && /* @__PURE__ */ jsx(\"span\", { className: slots.label({ class: classNames == null ? void 0 : classNames.label }), children: label })\n ] });\n});\nSpinner.displayName = \"NextUI.Spinner\";\nvar spinner_default = Spinner;\n\nexport {\n spinner_default\n};\n","\"use client\";\nimport {\n useButton\n} from \"./chunk-P5GIOWF5.mjs\";\n\n// src/button.tsx\nimport { Spinner } from \"@nextui-org/spinner\";\nimport { Ripple } from \"@nextui-org/ripple\";\nimport { forwardRef } from \"@nextui-org/system\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar Button = forwardRef((props, ref) => {\n const {\n Component,\n domRef,\n children,\n styles,\n spinnerSize,\n spinner = /* @__PURE__ */ jsx(Spinner, { color: \"current\", size: spinnerSize }),\n spinnerPlacement,\n startContent,\n endContent,\n isLoading,\n disableRipple,\n getButtonProps,\n getRippleProps,\n isIconOnly\n } = useButton({ ...props, ref });\n return /* @__PURE__ */ jsxs(Component, { ref: domRef, className: styles, ...getButtonProps(), children: [\n startContent,\n isLoading && spinnerPlacement === \"start\" && spinner,\n isLoading && isIconOnly ? null : children,\n isLoading && spinnerPlacement === \"end\" && spinner,\n endContent,\n !disableRipple && /* @__PURE__ */ jsx(Ripple, { ...getRippleProps() })\n ] });\n});\nButton.displayName = \"NextUI.Button\";\nvar button_default = Button;\n\nexport {\n button_default\n};\n","import { Button, ButtonProps } from \"@nextui-org/button\";\r\nimport { cn } from \"@nextui-org/react\";\r\nimport { StyledTooltip } from \"@rxdrag/rxcms-common\";\r\n\r\nexport function CanvasToolbarButton(props: ButtonProps & {\r\n select?: boolean,\r\n title?: string,\r\n}) {\r\n const { children, className, select, title, ...rest } = props;\r\n return (\r\n <StyledTooltip\r\n title={title}\r\n >\r\n <Button\r\n size=\"sm\"\r\n isIconOnly\r\n variant={select ? undefined : \"light\"}\r\n className={cn(\"text-default-500\", className)}\r\n {...rest}\r\n >\r\n {children}\r\n </Button>\r\n </StyledTooltip>\r\n )\r\n}","import { atom } from \"recoil\";\r\nimport { DeviceType, DrawerConentType, SelectedContent, ViewMode } from \"../types\";\r\nimport { FrontComponent, Page } from \"@rxdrag/rxcms-models\";\r\n\r\nexport const defaultDesktopWidth = 1280;\r\nexport const defaultTabletWidth = 800;\r\nexport const defaultMobileWidth = 480;\r\n\r\nexport const selectedContentState = atom<SelectedContent | undefined>(\r\n {\r\n key: 'studio.selectedContent',\r\n default: undefined,\r\n }\r\n)\r\n\r\nexport const willSeletedContentState = atom<SelectedContent | undefined>(\r\n {\r\n key: 'studio.willSelectedContent',\r\n default: undefined,\r\n }\r\n)\r\n\r\nexport const drawerTypeState = atom<DrawerConentType | undefined>({\r\n key: 'studio.drawerType',\r\n default: undefined,\r\n});\r\n\r\nexport const showOutlineState = atom<boolean>({\r\n key: 'studio.showOutline',\r\n default: false,\r\n});\r\n\r\nexport const deviceTypeState = atom<DeviceType>({\r\n key: 'studio.deviceType',\r\n default: DeviceType.Desktop,\r\n});\r\n\r\n\r\nexport const viewModeState = atom<ViewMode>({\r\n key: 'studio.viewMode',\r\n default: ViewMode.Design,\r\n});\r\n\r\n\r\nexport const isHomeState = atom<boolean>({\r\n key: 'studio.isHome',\r\n default: false,\r\n});\r\n\r\nexport const bgColorState = atom<string>({\r\n key: 'studio.bgColor',\r\n default: '#ffffff',\r\n});\r\n\r\nexport const showFrameState = atom<boolean>({\r\n key: 'studio.showFrame',\r\n default: false,\r\n});\r\n\r\nexport const viewPortWidthState = atom<number>({\r\n key: 'studio.viewPortWidth',\r\n default: 0,\r\n});\r\n\r\nexport const viewPortHeightState = atom<number>({\r\n key: 'studio.viewPortHeight',\r\n default: 0,\r\n});\r\n\r\nexport const canvasWidthState = atom<number>({\r\n key: 'studio.canvasWidth',\r\n default: defaultDesktopWidth,\r\n});\r\n\r\nexport const editingComponentState = atom<FrontComponent | undefined>({\r\n key: 'studio.editingComponent',\r\n default: undefined,\r\n});\r\n\r\nexport const editingPageState = atom<Page | undefined>({\r\n key: 'studio.editingPage',\r\n default: undefined,\r\n});\r\n\r\nexport const contentChangedState = atom<boolean | undefined>({\r\n key: 'studio.contentChanged',\r\n default: undefined,\r\n});\r\n\r\n//用于渲染画布内容的id,通过createPortal渲染到画布中\r\nexport const canvasRefIdState = atom<string | undefined>({\r\n key: 'studio.canvasRefId',\r\n default: undefined,\r\n});","import { selector } from \"recoil\";\r\nimport { canvasWidthState, viewPortWidthState } from \"./atoms\";\r\n\r\nexport const scaleSelector = selector({\r\n key: 'studio.scale',\r\n get: ({ get }) => {\r\n const canvasWidth = get(canvasWidthState);\r\n const viewPortWidth = get(viewPortWidthState);\r\n\r\n if (!canvasWidth || !viewPortWidth) {\r\n return 1\r\n }\r\n if (viewPortWidth > canvasWidth) {\r\n return 1\r\n }\r\n return viewPortWidth / canvasWidth\r\n },\r\n});","import { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { useCallback } from \"react\";\r\n\r\nexport function useSplitComponentSchema() {\r\n\r\n const processNodeList = useCallback((list: INodeSchema[], slots: Record<string, INodeSchema>) => {\r\n const elements: INodeSchema[] = []\r\n for (const oneNode of list) {\r\n if (oneNode.xSlotRef) {\r\n slots[oneNode.xSlotRef] = oneNode\r\n elements.push({ componentName: oneNode.componentName, xSlotRef: oneNode.xSlotRef })\r\n } else {\r\n elements.push(oneNode)\r\n }\r\n if (oneNode.children?.length) {\r\n oneNode.children = processNodeList(oneNode.children, slots)\r\n }\r\n }\r\n return elements\r\n }, [])\r\n\r\n const split = useCallback((nodes: INodeSchema[]) => {\r\n const slots: Record<string, INodeSchema> = {}\r\n const elements = processNodeList(nodes, slots)\r\n return { slots, elements }\r\n }, [processNodeList])\r\n\r\n return split\r\n}","import { FrontComponentEntityName } from \"@rxdrag/rxcms-models\";\r\nimport { useDocument, useDocumentChangedState } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback } from \"react\";\r\nimport { useUpsertEntityWithIndicator } from \"@rxdrag/rxcms-entify-wrapper\";\r\nimport { useRecoilState, useRecoilValue } from \"recoil\";\r\nimport { contentChangedState, editingComponentState, selectedContentState } from \"../../recoil/atoms\";\r\nimport { Button } from \"@nextui-org/react\";\r\nimport { ContentType } from \"../../types\";\r\nimport { useSplitComponentSchema } from \"../../hooks/useSplitComponentSchema\";\r\n\r\nexport function ComponentSaveButton() {\r\n const doc = useDocument()\r\n const selection = useRecoilValue(selectedContentState)\r\n const component = useRecoilValue(editingComponentState)\r\n const [change, clearChanged] = useDocumentChangedState()\r\n const [componentChanged, setComponentChanged] = useRecoilState(contentChangedState)\r\n const splitSchema = useSplitComponentSchema()\r\n\r\n const [save, { isMutating }] = useUpsertEntityWithIndicator(FrontComponentEntityName, {\r\n onSuccess: () => {\r\n clearChanged()\r\n setComponentChanged(false)\r\n }\r\n })\r\n\r\n const doSave = useCallback(() => {\r\n const json = doc?.getSchemaTree()\r\n if (!component) return\r\n const { slots, elements } = splitSchema(json?.children || [])\r\n\r\n save({\r\n id: component.id,\r\n props: component.props,\r\n testConfig: component.testConfig,\r\n content: { elements },\r\n slots: slots,\r\n droppable: component.droppable,\r\n })\r\n }, [doc, component, splitSchema, save]);\r\n\r\n const disabled = !change && !componentChanged\r\n\r\n return (\r\n component && selection?.type === ContentType.Component ?\r\n <Button\r\n size=\"sm\"\r\n isLoading={isMutating}\r\n isDisabled={disabled}\r\n color=\"primary\"\r\n onClick={doSave}\r\n >\r\n 保存\r\n </Button>\r\n : null\r\n )\r\n}","import { Template, TemplateEntityName } from \"@rxdrag/rxcms-models\";\r\nimport { useDocument, useDocumentChangedState } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback } from \"react\";\r\nimport { useUpsertEntityWithIndicator } from \"@rxdrag/rxcms-entify-wrapper\";\r\nimport { Button } from \"@nextui-org/react\";\r\nimport { useTemplates } from \"../StudioRoot\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { selectedContentState } from \"../../recoil/atoms\";\r\nimport { ContentType } from \"../../types\";\r\n\r\nexport function TemplateSaveButton() {\r\n const selection = useRecoilValue(selectedContentState)\r\n const template = useTemplates()?.find(t => t.id === selection?.id &&\r\n selection?.type === ContentType.Template) as Template | undefined\r\n const doc = useDocument()\r\n const [change, clearChanged] = useDocumentChangedState()\r\n const [save, { isMutating }] = useUpsertEntityWithIndicator(TemplateEntityName, {\r\n onSuccess: () => {\r\n clearChanged()\r\n }\r\n })\r\n\r\n const doSave = useCallback(() => {\r\n const json = doc?.getSchemaTree()\r\n if (!template) return\r\n\r\n const content = { elements: json?.children || [] }\r\n save({\r\n id: template.id,\r\n content,\r\n })\r\n }, [doc, save, template]);\r\n\r\n return (\r\n template\r\n ? <Button\r\n size=\"sm\"\r\n isLoading={isMutating}\r\n isDisabled={!change}\r\n color=\"primary\"\r\n onClick={doSave}\r\n >\r\n 保存\r\n </Button>\r\n : null\r\n )\r\n}","import { mediaToInput } from \"@rxdrag/rxcms-models\";\r\nimport { useDocument, useDocumentChangedState } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback } from \"react\";\r\nimport { useRecoilState, useRecoilValue } from \"recoil\";\r\nimport { contentChangedState, editingPageState, selectedContentState } from \"../../recoil/atoms\";\r\nimport { Button } from \"@nextui-org/react\";\r\nimport { ContentType } from \"../../types\";\r\nimport { useUpsertOnePage } from \"@rxdrag/rxcms-model-hooks\";\r\n\r\nexport function PageSaveButton() {\r\n const doc = useDocument()\r\n const selection = useRecoilValue(selectedContentState)\r\n const page = useRecoilValue(editingPageState)\r\n const [change, clearChanged] = useDocumentChangedState()\r\n const [pageChanged, setPageChanged] = useRecoilState(contentChangedState)\r\n const [save, { isMutating }] = useUpsertOnePage({\r\n onSuccess: () => {\r\n clearChanged()\r\n setPageChanged(false)\r\n }\r\n })\r\n\r\n const doSave = useCallback(() => {\r\n const json = doc?.getSchemaTree()\r\n if (!page) return\r\n const content = { elements: json?.children || [] }\r\n save({\r\n id: page.id,\r\n seoTitle: page.seoTitle,\r\n seoDescription: page.seoDescription,\r\n seoKeywords: page.seoKeywords,\r\n ogTitle: page.ogTitle,\r\n ogType: page.ogType,\r\n ogDescription: page.ogDescription,\r\n ogImage: page.ogImage ? { sync: mediaToInput(page.ogImage) } : undefined,\r\n content,\r\n })\r\n }, [doc, page, save]);\r\n\r\n const disabled = !change && !pageChanged\r\n\r\n return (\r\n page && (selection?.type === ContentType.Page ||\r\n selection?.type === ContentType.PredefinedPage) ?\r\n <Button\r\n size=\"sm\"\r\n isLoading={isMutating}\r\n isDisabled={disabled}\r\n color=\"primary\"\r\n onClick={doSave}\r\n >\r\n 保存\r\n </Button>\r\n : null\r\n )\r\n}","import { EntityEditModal, EntitySelectField } from '@rxdrag/rxcms-models-ui'\r\nimport { Template, TemplateCategory, TemplateCategoryBoolExp, TemplateCategoryDistinctExp, TemplateCategoryFields, TemplateCategoryOrderBy, TemplateCategoryQueryOptions, TemplateEntityName, templateToInput } from '@rxdrag/rxcms-models';\r\nimport { InputField } from '@rxdrag/fieldy-nextui';\r\n\r\nexport function TemplateModal(\r\n props: {\r\n themeId: string,\r\n websiteId: string,\r\n value?: Template,\r\n noCagegory?: boolean,\r\n //categories?: TemplateCategory[],\r\n onClose?: () => void,\r\n categoryId: string | undefined | null,\r\n onFilter?: (value: Template) => Template\r\n }\r\n) {\r\n const { themeId, websiteId, categoryId, noCagegory, onFilter, ...rest } = props\r\n return (\r\n <EntityEditModal<Template>\r\n entityName={TemplateEntityName}\r\n entityLabel='模板'\r\n initialValue={{\r\n theme: { id: themeId },\r\n category: { id: categoryId },\r\n website: {\r\n id: websiteId\r\n },\r\n }}\r\n classNames={{\r\n content: \"max-w-sm\"\r\n }}\r\n entityToInput={templateToInput}\r\n onFilter={onFilter}\r\n //variant='soft'\r\n {...rest}\r\n >\r\n <div className='flex flex-col gap-2'>\r\n <InputField\r\n name=\"name\"\r\n label=\"名称\"\r\n labelPlacement='outside'\r\n placeholder='请输入名称'\r\n validateSchema={{\r\n type: 'string',\r\n required: true,\r\n }}\r\n />\r\n {\r\n !noCagegory && <EntitySelectField<TemplateCategory, TemplateCategoryBoolExp, TemplateCategoryOrderBy, TemplateCategoryDistinctExp>\r\n name=\"category\"\r\n label=\"分类\"\r\n labelPlacement='outside'\r\n placeholder='请选择分类'\r\n aria-label='分类'\r\n queryOptions={\r\n new TemplateCategoryQueryOptions(\r\n [TemplateCategoryFields.id, TemplateCategoryFields.name],\r\n {\r\n where: {\r\n website: {\r\n id: {\r\n _eq: websiteId\r\n }\r\n },\r\n }\r\n }\r\n ).setNoQuery(!websiteId)\r\n }\r\n />\r\n }\r\n <InputField\r\n name=\"seqValue\"\r\n label=\"顺序\"\r\n type=\"number\"\r\n labelPlacement='outside'\r\n placeholder='请输入顺序'\r\n />\r\n </div>\r\n </EntityEditModal>\r\n )\r\n}","import { useCurrentNode, useDocument } from \"@rxdrag/react-core-pro\";\r\nimport { Template } from \"@rxdrag/rxcms-models\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { EditingPopoverScope } from \"@rxdrag/rxcms-models-ui\";\r\nimport { TextNodeName } from \"@rxdrag/schema-pro\";\r\nimport { CanvasToolbarButton } from \"../CanvasPanel/CanvasToolbarButton\";\r\nimport { TemplateModal } from \"../common/TemplateCategoryList/TemplateModal\";\r\nimport { useWebsiteTheme } from \"../StudioRoot\";\r\n\r\n\r\nexport function CollectTemplateIconButton(props: {\r\n websiteId: string\r\n}) {\r\n const { websiteId } = props\r\n const [newTemplate, setNewTamplate] = useState<Template>()\r\n const currentNode = useCurrentNode()\r\n const webTheme = useWebsiteTheme()\r\n const doc = useDocument()\r\n\r\n const handleClick = useCallback(() => {\r\n setNewTamplate({\r\n theme: { id: webTheme?.id },\r\n website: { id: websiteId },\r\n })\r\n }, [webTheme?.id, websiteId])\r\n\r\n const handleFilter = useCallback((value: Template) => {\r\n const schema = doc?.getNodeSchema(currentNode?.id || \"\")\r\n if (schema) {\r\n const root = { componentName: \"root\", children: [schema] }\r\n return {\r\n ...value,\r\n content: {\r\n elements: root?.children\r\n }\r\n }\r\n } else {\r\n return value\r\n }\r\n }, [currentNode, doc])\r\n\r\n return (\r\n <>\r\n <CanvasToolbarButton\r\n title=\"保存为模板\"\r\n size=\"sm\"\r\n isDisabled={!currentNode?.parentId || currentNode.meta?.componentName === TextNodeName}\r\n onClick={handleClick}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"m2.513 12.833l9.022 5.04a1 1 0 0 0 .973.001l8.978-5a1 1 0 0 0-.002-1.749l-9.022-5a1 1 0 0 0-.968-.001l-8.978 4.96a1 1 0 0 0-.003 1.749\"></path><path fill=\"currentColor\" d=\"m3.485 15.126l-.971 1.748l9 5a1 1 0 0 0 .971 0l9-5l-.971-1.748L12 19.856zM20 8V6h2V4h-2V2h-2v2h-2v2h2v2z\"></path>\r\n </svg>\r\n </CanvasToolbarButton>\r\n <EditingPopoverScope>\r\n {\r\n webTheme?.id && <TemplateModal\r\n themeId={webTheme?.id}\r\n websiteId={websiteId}\r\n categoryId={undefined}\r\n value={newTemplate}\r\n onFilter={handleFilter}\r\n />\r\n }\r\n </EditingPopoverScope>\r\n </>\r\n )\r\n}","import { useCurrentNode, useDocument, useGetNode } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback } from \"react\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { editingComponentState } from \"../recoil/atoms\";\r\n\r\nexport function useCheckSlotName() {\r\n const currentNode = useCurrentNode()\r\n const getNode = useGetNode()\r\n const doc = useDocument()\r\n const editingComponent = useRecoilValue(editingComponentState)\r\n\r\n const checkOne = useCallback((nodeId: string, name: string): string | undefined => {\r\n const node = getNode(nodeId)\r\n if (node?.meta?.['xSlotRef'] === name && node.id !== currentNode?.id) {\r\n return \"卡槽名称重复\"\r\n }\r\n for (const childId of node?.children || []) {\r\n const error = checkOne(childId, name)\r\n if (error) {\r\n return error\r\n }\r\n }\r\n return undefined\r\n }, [currentNode?.id, getNode])\r\n\r\n const checkName = useCallback((name: string) => {\r\n if(editingComponent?.props?.items?.find((item) => item.name === name)) {\r\n return \"卡槽名称跟属性名称重复\"\r\n }\r\n const rootNode = doc?.getRootNode()\r\n if (rootNode?.id) {\r\n return checkOne(rootNode?.id, name)\r\n }\r\n\r\n return undefined\r\n }, [checkOne, doc, editingComponent?.props?.items])\r\n\r\n return checkName\r\n}","import { useCurrentNode, useGetNode } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\n\r\nexport function useIsSlotable() {\r\n const [slotable, setSlotable] = useState<boolean>(false)\r\n const currentNode = useCurrentNode()\r\n const getNode = useGetNode()\r\n\r\n const parentHasSlot = useCallback((nodeId: string): boolean => {\r\n const node = getNode(nodeId)\r\n const parentId = node?.parentId\r\n if (parentId) {\r\n const parent = getNode(parentId)\r\n if (parent) {\r\n if (parent.meta?.['xSlotRef']) {\r\n return true\r\n } else {\r\n return parentHasSlot(parentId)\r\n }\r\n } else {\r\n return false\r\n }\r\n }\r\n return false\r\n }, [getNode])\r\n\r\n const childrenHasSlot = useCallback((nodeId: string): boolean => {\r\n const node = getNode(nodeId)\r\n for (const childId of node?.children || []) {\r\n const child = getNode(childId)\r\n if (child?.meta?.['xSlotRef']) {\r\n return true\r\n }\r\n if (childrenHasSlot(childId)) {\r\n return true\r\n }\r\n }\r\n return false\r\n }, [getNode])\r\n\r\n useEffect(() => {\r\n if (currentNode?.id) {\r\n setSlotable(!parentHasSlot(currentNode?.id) && !childrenHasSlot(currentNode?.id))\r\n }\r\n }, [childrenHasSlot, currentNode, parentHasSlot])\r\n\r\n return slotable\r\n}","import { useChangeNodeMeta, useCurrentNode, useNodeMeta } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { INodeMeta, TextNodeName } from '@rxdrag/schema-pro';\r\nimport { StyledTooltip } from \"@rxdrag/rxcms-common\";\r\nimport { Button, Input, Popover, PopoverContent, PopoverTrigger } from \"@nextui-org/react\";\r\nimport { useCheckSlotName } from \"../../hooks/useCheckSlotName\";\r\nimport { useIsSlotable } from \"../../hooks/useIsSlotable\";\r\nimport { CanvasToolbarButton } from \"../CanvasPanel/CanvasToolbarButton\";\r\n\r\nconst defaultSlotName = \"slot1\"\r\n\r\nexport function SlotSettingButton() {\r\n const [open, setOpen] = useState(false)\r\n const [slotName, setSlotName] = useState<string>(defaultSlotName)\r\n const [error, setError] = useState<string>()\r\n\r\n const currentNode = useCurrentNode()\r\n const changeMeta = useChangeNodeMeta()\r\n const nodeMeta = useNodeMeta(currentNode?.id)\r\n const check = useCheckSlotName()\r\n const slotable = useIsSlotable()\r\n\r\n useEffect(() => {\r\n setSlotName(nodeMeta?.['xSlotRef'] || defaultSlotName)\r\n }, [nodeMeta])\r\n\r\n const handleTriggerSlot = useCallback(() => {\r\n if (currentNode) {\r\n const parentId = currentNode.parentId\r\n if (parentId) {\r\n changeMeta(currentNode.id,\r\n {\r\n ...currentNode.meta,\r\n ...nodeMeta,\r\n 'xSlotRef': slotName,\r\n } as INodeMeta\r\n )\r\n }\r\n }\r\n setOpen(false)\r\n }, [changeMeta, currentNode, nodeMeta, slotName])\r\n\r\n const handleClose = useCallback(() => {\r\n setSlotName(nodeMeta?.['xSlotRef'] || defaultSlotName)\r\n setOpen(false)\r\n setError(undefined)\r\n }, [nodeMeta])\r\n\r\n const handleOpen = useCallback(() => {\r\n setOpen(true)\r\n }, [])\r\n\r\n const handleCancelSlot = useCallback(() => {\r\n if (nodeMeta?.['xSlotRef']) {\r\n if (currentNode) {\r\n const parentId = currentNode.parentId\r\n if (parentId) {\r\n changeMeta(currentNode.id,\r\n {\r\n ...currentNode.meta,\r\n ...nodeMeta,\r\n 'xSlotRef': undefined,\r\n } as INodeMeta\r\n )\r\n }\r\n }\r\n }\r\n }, [changeMeta, currentNode, nodeMeta])\r\n\r\n const handleChangeSlotName = useCallback((val: string) => {\r\n setSlotName(val)\r\n setError(undefined)\r\n }, [])\r\n\r\n const handleConfirm = useCallback(() => {\r\n if (slotName === \"children\") {\r\n setError(\"children不能使用,如果要使用默认卡槽,直接在代码添加{children}\")\r\n return\r\n }\r\n if (!slotName.match(/^[a-z][a-z0-9_]*$/)) {\r\n setError(\"卡槽名称无效,必须以小写字母开头,只能包含字母、数字和下划线\")\r\n return\r\n }\r\n\r\n const err = check(slotName)\r\n if (err) {\r\n setError(err)\r\n return\r\n }\r\n\r\n handleTriggerSlot()\r\n }, [check, handleTriggerSlot, slotName])\r\n\r\n return (\r\n <>\r\n <Popover\r\n isOpen={open}\r\n placement=\"bottom\"\r\n showArrow={true}\r\n onClose={handleClose}\r\n >\r\n <PopoverTrigger>\r\n <Button\r\n title=\"卡槽埋点\"\r\n size=\"sm\"\r\n isIconOnly\r\n isDisabled={!currentNode?.parentId || currentNode.meta?.componentName === TextNodeName || !slotable}\r\n variant={nodeMeta?.['xSlotRef'] ? 'solid' : 'light'}\r\n onClick={handleOpen}\r\n >\r\n <StyledTooltip\r\n title={\"卡槽埋点\"}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5 text-default-500\" viewBox=\"0 0 20 20\">\r\n <path fill=\"currentColor\" d=\"M17.78 3.28a.75.75 0 0 0-1.06-1.06l-2.446 2.445a4.04 4.04 0 0 0-5.128.481l-.3.3a1.49 1.49 0 0 0 0 2.108l2.465 2.464a5.51 5.51 0 0 1 4.552-.848a4.04 4.04 0 0 0-.528-3.444zM7.554 8.846l2.464 2.465a5.51 5.51 0 0 0-.848 4.552a4.04 4.04 0 0 1-3.444-.528L3.28 17.78a.75.75 0 0 1-1.06-1.06l2.446-2.446a4.04 4.04 0 0 1 .48-5.128l.3-.3a1.49 1.49 0 0 1 2.108 0M19 14.5a4.5 4.5 0 1 1-9 0a4.5 4.5 0 0 1 9 0m-2.146-1.854a.5.5 0 0 0-.708 0L13.5 15.293l-.646-.647a.5.5 0 0 0-.708.708l1 1a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0 0-.708\"></path>\r\n </svg>\r\n </StyledTooltip>\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"p-4\">\r\n <div className=\"flex flex-col gap-4 w-64\">\r\n <Input\r\n size=\"sm\"\r\n label=\"卡槽名称\"\r\n labelPlacement=\"outside\"\r\n placeholder=\"请输入卡槽名称\"\r\n value={slotName}\r\n defaultValue={defaultSlotName}\r\n description=\"首字符小写英文字母,支持字母、数字、下划线\"\r\n errorMessage={error}\r\n isInvalid={!!error}\r\n onValueChange={handleChangeSlotName}\r\n />\r\n <div className=\"flex gap-2 justify-end\">\r\n <Button\r\n size=\"sm\"\r\n onClick={handleClose}\r\n >\r\n 取消\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n variant=\"solid\"\r\n color=\"primary\"\r\n onClick={handleConfirm}\r\n >\r\n 确定\r\n </Button>\r\n </div>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n {\r\n nodeMeta?.['xSlotRef'] &&\r\n <CanvasToolbarButton\r\n title=\"取消卡槽埋点\"\r\n onClick={handleCancelSlot}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5\" viewBox=\"0 0 24 24\">\r\n <path fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"m20 16l-4 4m-9-8l5 5l-1.5 1.5a3.536 3.536 0 1 1-5-5zm10 0l-5-5l1.5-1.5a3.536 3.536 0 1 1 5 5zM3 21l2.5-2.5m13-13L21 3m-11 8l-2 2m5 1l-2 2m5 0l4 4\"></path>\r\n </svg>\r\n </CanvasToolbarButton>\r\n }\r\n\r\n </>\r\n\r\n )\r\n}","import { useDocument, useDocumentChangedState } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback } from \"react\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { selectedContentState } from \"../../recoil/atoms\";\r\nimport { Button } from \"@nextui-org/react\";\r\nimport { ContentType } from \"../../types\";\r\nimport { useUpsertOnePage } from \"@rxdrag/rxcms-model-hooks\";\r\nimport { usePages } from \"../StudioRoot\";\r\n\r\nexport function FrameSaveButton() {\r\n const doc = useDocument()\r\n const selection = useRecoilValue(selectedContentState)\r\n const [change, clearChanged] = useDocumentChangedState()\r\n\r\n const pages = usePages()\r\n const frame = pages?.items?.find((item) => item.id === selection?.id && selection?.type === ContentType.Frame)\r\n\r\n const [save, { isMutating }] = useUpsertOnePage({\r\n onSuccess: () => {\r\n clearChanged()\r\n }\r\n })\r\n\r\n const doSave = useCallback(() => {\r\n const json = doc?.getSchemaTree()\r\n if (!frame) return\r\n const content = { elements: json?.children || [] }\r\n save({\r\n id: frame.id,\r\n content,\r\n })\r\n }, [doc, frame, save]);\r\n\r\n const disabled = !change\r\n return (\r\n frame && selection?.type === ContentType.Frame ?\r\n <Button\r\n size=\"sm\"\r\n isLoading={isMutating}\r\n isDisabled={disabled}\r\n color=\"primary\"\r\n onClick={doSave}\r\n >\r\n 保存\r\n </Button>\r\n : null\r\n )\r\n}","import { EntityEditModal, EntitySelectField } from '@rxdrag/rxcms-models-ui'\r\nimport { FrontComponent, FrontComponentEntityName, ComponentCategory, ComponentCategoryBoolExp, ComponentCategoryDistinctExp, ComponentCategoryFields, ComponentCategoryOrderBy, ComponentCategoryQueryOptions, frontComponentToInput } from '@rxdrag/rxcms-models';\r\nimport { InputField } from '@rxdrag/fieldy-nextui';\r\n\r\nexport function ComponentModal(\r\n props: {\r\n themeId: string,\r\n value?: FrontComponent,\r\n noCagegory?: boolean,\r\n onClose?: () => void,\r\n categoryId: string | undefined | null,\r\n onFilter?: (value: FrontComponent) => FrontComponent\r\n }\r\n) {\r\n const { themeId, categoryId, noCagegory, onFilter, ...rest } = props\r\n return (\r\n <EntityEditModal<FrontComponent>\r\n entityName={FrontComponentEntityName}\r\n entityLabel='自定义组件'\r\n initialValue={{\r\n theme: { id: themeId },\r\n category: { id: categoryId },\r\n }}\r\n entityToInput={frontComponentToInput}\r\n onFilter={onFilter}\r\n classNames={{\r\n content: \"max-w-sm\"\r\n }}\r\n {...rest}\r\n >\r\n <div className='flex flex-col gap-2'>\r\n <InputField\r\n autoFocus\r\n name=\"title\"\r\n label=\"标题\"\r\n validateSchema={{\r\n type: 'string',\r\n required: true,\r\n }}\r\n labelPlacement='outside'\r\n placeholder='请输入标题'\r\n />\r\n <InputField\r\n name=\"name\"\r\n label=\"名称\"\r\n validateSchema={{\r\n type: 'string',\r\n required: true,\r\n }}\r\n labelPlacement='outside'\r\n placeholder='请输入名称'\r\n />\r\n {\r\n !noCagegory && <EntitySelectField<ComponentCategory, ComponentCategoryBoolExp, ComponentCategoryOrderBy, ComponentCategoryDistinctExp>\r\n name=\"category\"\r\n label=\"分类\"\r\n labelPlacement='outside'\r\n placeholder='请选择分类'\r\n queryOptions={\r\n new ComponentCategoryQueryOptions(\r\n [ComponentCategoryFields.id, ComponentCategoryFields.name],\r\n {\r\n where: {\r\n theme: {\r\n id: {\r\n _eq: themeId\r\n }\r\n },\r\n }\r\n }\r\n ).setNoQuery(!themeId)\r\n }\r\n />\r\n }\r\n <InputField\r\n name=\"seqValue\"\r\n label=\"顺序\"\r\n type=\"number\"\r\n labelPlacement='outside'\r\n placeholder='请输入顺序'\r\n />\r\n </div>\r\n </EntityEditModal>\r\n )\r\n}","import { useCurrentNode, useDocument } from \"@rxdrag/react-core-pro\";\r\nimport { FrontComponent } from \"@rxdrag/rxcms-models\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { EditingPopoverScope } from \"@rxdrag/rxcms-models-ui\";\r\nimport { TextNodeName } from \"@rxdrag/schema-pro\";\r\nimport { CanvasToolbarButton } from \"../CanvasPanel/CanvasToolbarButton\";\r\nimport { useWebsiteTheme } from \"../StudioRoot\";\r\nimport { ComponentModal } from \"../common/ComponentCategoryList/ComponentModal\";\r\n\r\n\r\nexport function CollectComponentButton() {\r\n const [newComponent, setNewComponent] = useState<FrontComponent>()\r\n const currentNode = useCurrentNode()\r\n const webTheme = useWebsiteTheme()\r\n const doc = useDocument()\r\n\r\n const handleClick = useCallback(() => {\r\n setNewComponent({\r\n theme: { id: webTheme?.id },\r\n })\r\n }, [webTheme?.id])\r\n\r\n const handleFilter = useCallback((value: FrontComponent) => {\r\n const schema = doc?.getNodeSchema(currentNode?.id || \"\")\r\n if (schema) {\r\n const root = { componentName: \"root\", children: [schema] }\r\n return {\r\n ...value,\r\n content: {\r\n elements: root?.children\r\n }\r\n }\r\n } else {\r\n return value\r\n }\r\n }, [currentNode, doc])\r\n\r\n return (\r\n <>\r\n <CanvasToolbarButton\r\n title=\"保存为组件\"\r\n size=\"sm\"\r\n isDisabled={!currentNode?.parentId || currentNode.meta?.componentName === TextNodeName}\r\n onClick={handleClick}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5\" viewBox=\"0 0 20 20\">\r\n <path fill=\"currentColor\" d=\"M15.5 7a2.5 2.5 0 0 1 2.496 2.335l.005.164v.757a5.5 5.5 0 0 0-1-.657v-.1a1.5 1.5 0 0 0-1.356-1.493l-.144-.007h-6a1.5 1.5 0 0 0-1.493 1.356l-.007.144v6a1.5 1.5 0 0 0 1.356 1.493l.144.007h.1q.275.538.657 1h-.757a2.5 2.5 0 0 1-2.495-2.336l-.005-.164v-6a2.5 2.5 0 0 1 2.336-2.495L9.5 7zm-2.837-3.306l.048.158l.575 2.147H12.25l-.505-1.889a1.5 1.5 0 0 0-1.696-1.091l-.141.03l-5.796 1.554a1.5 1.5 0 0 0-1.091 1.695l.03.142l1.554 5.795A1.5 1.5 0 0 0 6 13.346v1a2.5 2.5 0 0 1-2.31-1.682l-.052-.17l-1.553-5.795a2.5 2.5 0 0 1 1.61-3.015l.158-.047l5.795-1.553a2.5 2.5 0 0 1 2.957 1.458zM19.001 14.5a4.5 4.5 0 1 1-9 0a4.5 4.5 0 0 1 9 0m-4-2a.5.5 0 1 0-1 0V14h-1.5a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 1 0 1 0V15h1.5a.5.5 0 1 0 0-1h-1.5z\"></path>\r\n </svg>\r\n </CanvasToolbarButton>\r\n <EditingPopoverScope>\r\n {\r\n webTheme?.id && <ComponentModal\r\n themeId={webTheme?.id}\r\n categoryId={undefined}\r\n value={newComponent}\r\n onFilter={handleFilter}\r\n />\r\n }\r\n </EditingPopoverScope>\r\n </>\r\n )\r\n}","import { memo, useCallback, useEffect, useState } from \"react\";\r\nimport { Tabs, Tab, Divider, cn } from \"@nextui-org/react\";\r\nimport { Sheet } from \"../Sheet\";\r\nimport { CanvasToolbarButton } from \"./CanvasToolbarButton\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { ContentType, DeviceType, ViewMode } from \"../../types\";\r\nimport { useRecoilState, useRecoilValue } from \"recoil\";\r\nimport { canvasWidthState, defaultDesktopWidth, defaultMobileWidth, defaultTabletWidth, deviceTypeState, selectedContentState, viewModeState } from \"../../recoil/atoms\";\r\nimport { scaleSelector } from \"../../recoil/selectors\";\r\nimport { useDesignerEngine, useDocument, useRedo, useUndo } from \"@rxdrag/react-core-pro\";\r\nimport { LINE_DECORTOR_NAME, LineDecorator, MARGIN_DECORATOR_NAME, MarginDecorator } from \"@rxdrag/core-pro\";\r\nimport { ComponentSaveButton } from \"../actions/ComponentSaveButton\";\r\nimport { TemplateSaveButton } from \"../actions/TemplateSaveButton\";\r\nimport { PageSaveButton } from \"../actions/PageSaveButton\";\r\nimport { CollectTemplateIconButton } from \"../actions/CollectTemplateIconButton\";\r\nimport { useWebsite } from \"@rxdrag/biz-components\";\r\nimport { SlotSettingButton } from \"../actions/SlotSettingButton\";\r\nimport { FrameSaveButton } from \"../actions/FrameSaveButton\";\r\nimport { CollectComponentButton } from \"../actions/CollectComponentButton\";\r\n\r\nexport const CanvasToolbar = memo((\r\n props: {\r\n className?: string,\r\n leftExtra?: React.ReactNode,\r\n }\r\n) => {\r\n const { className, leftExtra } = props;\r\n const [margin, setMarin] = useState(false);\r\n const [line, setLine] = useState(false);\r\n const selectedContent = useRecoilValue(selectedContentState)\r\n const [canvasWidth, setCanvasWidth] = useRecoilState(canvasWidthState);\r\n const [deviceType, setDeviceTypeChange] = useRecoilState(deviceTypeState);\r\n const [viewMode, setViewMode] = useRecoilState(viewModeState);\r\n const scale = useRecoilValue(scaleSelector);\r\n const [canUndo, undo] = useUndo()\r\n const [canRedo, redo] = useRedo()\r\n const website = useWebsite()\r\n\r\n const engine = useDesignerEngine();\r\n const documentId = useDocument()?.id || \"\";\r\n useEffect(() => {\r\n setMarin(!!engine?.getDecoratorManager().getDecorator(MARGIN_DECORATOR_NAME, documentId))\r\n setLine(!!engine?.getDecoratorManager().getDecorator(LINE_DECORTOR_NAME, documentId))\r\n }, [documentId, engine])\r\n\r\n useEffect(() => {\r\n setLine(engine?.getDecoratorManager().getDecorator(LINE_DECORTOR_NAME, documentId) !== undefined)\r\n setMarin(engine?.getDecoratorManager().getDecorator(MARGIN_DECORATOR_NAME, documentId) !== undefined)\r\n }, [documentId, engine])\r\n\r\n const handleLineClick = useCallback(() => {\r\n if (line) {\r\n engine?.getDecoratorManager().removeDecorator(LINE_DECORTOR_NAME, documentId)\r\n setLine(false)\r\n } else {\r\n engine?.getDecoratorManager().addDecorator(new LineDecorator(), documentId)\r\n setLine(true)\r\n }\r\n }, [documentId, engine, line])\r\n\r\n const handleMarginClick = useCallback(() => {\r\n if (margin) {\r\n engine?.getDecoratorManager().removeDecorator(MARGIN_DECORATOR_NAME, documentId)\r\n setMarin(false)\r\n } else {\r\n engine?.getDecoratorManager().addDecorator(new MarginDecorator(), documentId)\r\n setMarin(true)\r\n }\r\n }, [documentId, engine, margin])\r\n\r\n const handleDeviceTypeChange = useCallback((deviceType: DeviceType) => {\r\n setDeviceTypeChange(deviceType);\r\n switch (deviceType) {\r\n case DeviceType.Desktop:\r\n setCanvasWidth(defaultDesktopWidth);\r\n break;\r\n case DeviceType.Tablet:\r\n setCanvasWidth(defaultTabletWidth);\r\n break;\r\n case DeviceType.Mobile:\r\n setCanvasWidth(defaultMobileWidth);\r\n break;\r\n }\r\n }, [setDeviceTypeChange, setCanvasWidth]);\r\n\r\n return (\r\n <Sheet className={cn(\"h-12 flex items-center px-2 justify-between border-b\", className)}>\r\n <div className=\"flex items-center gap-1\">\r\n <CanvasToolbarButton\r\n title=\"撤销\"\r\n isDisabled={!canUndo}\r\n onClick={undo}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}><path d=\"M3 7v6h6\"></path><path d=\"M21 17a9 9 0 0 0-9-9a9 9 0 0 0-6 2.3L3 13\"></path></g></svg>\r\n </CanvasToolbarButton>\r\n <CanvasToolbarButton\r\n title=\"重做\"\r\n isDisabled={!canRedo}\r\n onClick={redo}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}><path d=\"M21 7v6h-6\"></path><path d=\"M3 17a9 9 0 0 1 9-9a9 9 0 0 1 6 2.3l3 2.7\"></path></g></svg>\r\n </CanvasToolbarButton>\r\n <Divider orientation=\"vertical\" className=\"h-5\" />\r\n <CanvasToolbarButton\r\n title=\"辅助线\"\r\n select={line}\r\n onClick={handleLineClick}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"M80 48a8 8 0 0 1-8 8H40v16a8 8 0 0 1-16 0V56a16 16 0 0 1 16-16h32a8 8 0 0 1 8 8M32 152a8 8 0 0 0 8-8v-32a8 8 0 0 0-16 0v32a8 8 0 0 0 8 8m40 48H40v-16a8 8 0 0 0-16 0v16a16 16 0 0 0 16 16h32a8 8 0 0 0 0-16m72 0h-32a8 8 0 0 0 0 16h32a8 8 0 0 0 0-16m80-24a8 8 0 0 0-8 8v16h-32a8 8 0 0 0 0 16h32a16 16 0 0 0 16-16v-16a8 8 0 0 0-8-8m0-72a8 8 0 0 0-8 8v32a8 8 0 0 0 16 0v-32a8 8 0 0 0-8-8m-8-64h-32a8 8 0 0 0 0 16h32v16a8 8 0 0 0 16 0V56a16 16 0 0 0-16-16m-72 0h-32a8 8 0 0 0 0 16h32a8 8 0 0 0 0-16\"></path></svg>\r\n </CanvasToolbarButton>\r\n <CanvasToolbarButton\r\n title=\"辅助边距\"\r\n select={margin}\r\n onClick={handleMarginClick}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-5\" viewBox=\"0 0 15 15\"><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M1.5 2a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1m3 0a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1M8 1.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0m2.5.5a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1m3.5-.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0M1.5 14a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1m.5-3.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0M1.5 8a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1M2 4.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0M13.5 11a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1m.5-3.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0M13.5 5a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1M5 13.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0m2.5.5a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1m3.5-.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0m2.5.5a.5.5 0 1 0 0-1a.5.5 0 0 0 0 1M4 5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1zm1 0h5v5H5z\" clipRule=\"evenodd\"></path></svg>\r\n </CanvasToolbarButton>\r\n {\r\n leftExtra\r\n }\r\n <Divider orientation=\"vertical\" className=\"h-5\" />\r\n {\r\n selectedContent?.type === ContentType.Component && <SlotSettingButton />\r\n }\r\n {\r\n selectedContent?.type !== ContentType.Component && <CollectComponentButton />\r\n }\r\n {\r\n selectedContent?.type !== ContentType.Component && website?.id &&\r\n <CollectTemplateIconButton websiteId={website.id} />\r\n }\r\n </div>\r\n <div className=\"flex gap-2 items-center\">\r\n <Tabs\r\n size=\"sm\"\r\n selectedKey={deviceType}\r\n onSelectionChange={key => handleDeviceTypeChange(key as DeviceType)}\r\n >\r\n <Tab\r\n key={DeviceType.Desktop}\r\n title={\r\n <div className=\"flex items-center space-x-2 opacity-90\">\r\n <Icon icon=\"heroicons:computer-desktop\" className=\"size-4\" />\r\n <span>电脑</span>\r\n </div>\r\n }\r\n />\r\n <Tab\r\n key={DeviceType.Tablet}\r\n title={\r\n <div className=\"flex items-center space-x-2 opacity-90\">\r\n <Icon icon=\"heroicons:device-tablet\" className=\"size-4\" />\r\n <span>平板</span>\r\n </div>\r\n }\r\n />\r\n <Tab\r\n key={DeviceType.Mobile}\r\n title={\r\n <div className=\"flex items-center space-x-2 opacity-90\">\r\n <Icon icon=\"heroicons:device-phone-mobile\" className=\"size-4\" />\r\n <span>手机</span>\r\n </div>\r\n }\r\n />\r\n </Tabs>\r\n <p className=\"text-xs text-default-500\">\r\n {`${canvasWidth}px * ${Math.round(scale * 100)}%`}\r\n </p>\r\n </div>\r\n <div className=\"flex gap-1 items-center\">\r\n {/* <CanvasToolbarButton\r\n select={isHome}\r\n title=\"首页模式\"\r\n onClick={() => onIsHomeChange(!isHome)}\r\n //variant=\"flat\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-4\" viewBox=\"0 0 24 24\">\r\n <g fill=\"currentColor\"><path d=\"M11.47 3.841a.75.75 0 0 1 1.06 0l8.69 8.69a.75.75 0 1 0 1.06-1.061l-8.689-8.69a2.25 2.25 0 0 0-3.182 0l-8.69 8.69a.75.75 0 1 0 1.061 1.06z\"></path><path d=\"m12 5.432l8.159 8.159q.045.044.091.086v6.198c0 1.035-.84 1.875-1.875 1.875H15a.75.75 0 0 1-.75-.75v-4.5a.75.75 0 0 0-.75-.75h-3a.75.75 0 0 0-.75.75V21a.75.75 0 0 1-.75.75H5.625a1.875 1.875 0 0 1-1.875-1.875v-6.198l.091-.086z\"></path></g>\r\n </svg>\r\n </CanvasToolbarButton>\r\n <BgColorButton color={bgColor} onChange={onBgColorChange} />\r\n <Divider orientation=\"vertical\" className=\"h-5\" /> */}\r\n <CanvasToolbarButton\r\n select={viewMode === ViewMode.Design}\r\n title=\"设计\"\r\n onClick={() => setViewMode(ViewMode.Design)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-4\" viewBox=\"0 0 20 20\"><g fill=\"currentColor\"><path d=\"m5.433 13.917l1.262-3.155A4 4 0 0 1 7.58 9.42l6.92-6.918a2.121 2.121 0 0 1 3 3l-6.92 6.918c-.383.383-.84.685-1.343.886l-3.154 1.262a.5.5 0 0 1-.65-.65\"></path><path d=\"M3.5 5.75c0-.69.56-1.25 1.25-1.25H10A.75.75 0 0 0 10 3H4.75A2.75 2.75 0 0 0 2 5.75v9.5A2.75 2.75 0 0 0 4.75 18h9.5A2.75 2.75 0 0 0 17 15.25V10a.75.75 0 0 0-1.5 0v5.25c0 .69-.56 1.25-1.25 1.25h-9.5c-.69 0-1.25-.56-1.25-1.25z\"></path></g></svg>\r\n </CanvasToolbarButton>\r\n <CanvasToolbarButton\r\n title=\"代码\"\r\n select={viewMode === ViewMode.Code}\r\n onClick={() => setViewMode(ViewMode.Code)}\r\n >\r\n <Icon icon=\"heroicons:code-bracket\" className=\"size-4\" />\r\n </CanvasToolbarButton>\r\n <CanvasToolbarButton\r\n title=\"预览\"\r\n select={viewMode === ViewMode.Preview}\r\n onClick={() => setViewMode(ViewMode.Preview)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-4\" viewBox=\"0 0 16 16\">\r\n <path fill=\"currentColor\" d=\"M3 3.732a1.5 1.5 0 0 1 2.305-1.265l6.706 4.267a1.5 1.5 0 0 1 0 2.531l-6.706 4.268A1.5 1.5 0 0 1 3 12.267z\"></path>\r\n </svg>\r\n </CanvasToolbarButton>\r\n <ComponentSaveButton />\r\n <TemplateSaveButton />\r\n <PageSaveButton />\r\n <FrameSaveButton />\r\n </div>\r\n </Sheet>\r\n )\r\n});","import { Button, Divider } from \"@nextui-org/react\";\r\nimport { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, WarningIcon } from \"@rxdrag/rxcms-common\";\r\n\r\nconst defaultConfirm = \"当前内容没有保存,确定要离开吗?\";\r\n\r\nexport function SaveAlertDialog(\r\n props: {\r\n open?: boolean,\r\n confirm?: string | boolean,\r\n onClose: () => void,\r\n onConfirm: () => void,\r\n }\r\n) {\r\n const { open = false, onClose, onConfirm, confirm } = props;\r\n return (\r\n <Modal isOpen={open} onClose={onClose}>\r\n <ModalContent >\r\n <ModalHeader>\r\n 保存提醒\r\n </ModalHeader>\r\n <Divider />\r\n <ModalBody className=\"flex flex-row gap-2\">\r\n <WarningIcon className=\"size-8\" />\r\n {\r\n confirm === true ? defaultConfirm : (confirm || defaultConfirm)\r\n }\r\n </ModalBody>\r\n <ModalFooter>\r\n <Button\r\n color=\"danger\"\r\n onClick={onConfirm}\r\n >\r\n 确定\r\n </Button>\r\n <Button\r\n onClick={onClose}\r\n >\r\n 取消\r\n </Button>\r\n </ModalFooter>\r\n </ModalContent>\r\n </Modal>\r\n )\r\n}","import { IDecorator, ITreeNode } from \"@rxdrag/core-pro\";\r\n\r\nexport const EDITABLE_DECORATOR_NAME = \"editableDecorator\"\r\n\r\nexport class SlotDecorator implements IDecorator {\r\n name: string = EDITABLE_DECORATOR_NAME;\r\n private styleElement?: HTMLStyleElement;\r\n\r\n decorate(els: HTMLElement[], node: ITreeNode): void {\r\n const slotRef = node.meta?.[\"xSlotRef\"];\r\n\r\n for (const el of els) {\r\n // 获取元素所在的 document\r\n const doc = el.ownerDocument;\r\n\r\n // 确保样式只添加一次\r\n if (!doc.querySelector('#slot-decorator-style')) {\r\n this.styleElement = doc.createElement('style');\r\n this.styleElement.id = 'slot-decorator-style';\r\n this.styleElement.textContent = `\r\n .x-slot-ref {\r\n outline: dashed green 2px;\r\n position: relative;\r\n }\r\n .x-slot-ref::after {\r\n content: attr(data-slot-ref);\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n color: green;\r\n padding: 0;\r\n font-size: 12px;\r\n border-radius: 0 0 0 4px;\r\n z-index: 1000;\r\n pointer-events: none;\r\n }\r\n `;\r\n doc.head.appendChild(this.styleElement);\r\n }\r\n\r\n if (slotRef) {\r\n el.classList.add(\"x-slot-ref\");\r\n el.setAttribute(\"data-slot-ref\", slotRef);\r\n } else {\r\n el.classList.remove(\"x-slot-ref\");\r\n el.removeAttribute(\"data-slot-ref\");\r\n }\r\n }\r\n }\r\n\r\n unDecorate(els: HTMLElement[]): void {\r\n for (const el of els) {\r\n el.classList.remove(\"x-slot-ref\");\r\n el.removeAttribute(\"data-slot-ref\");\r\n\r\n // 可选:移除样式表\r\n const doc = el.ownerDocument;\r\n const style = doc.querySelector('#slot-decorator-style');\r\n if (style) {\r\n style.remove();\r\n }\r\n }\r\n }\r\n}","import { memo, useCallback, useEffect, useState } from \"react\";\r\nimport { CanvasToolbar } from \"./CanvasToolbar\";\r\nimport { contentChangedState, selectedContentState, willSeletedContentState } from \"../../recoil/atoms\";\r\nimport { useRecoilState } from \"recoil\";\r\nimport { SaveAlertDialog } from \"../actions/SaveAlertDialog\";\r\nimport { useDesignerEngine, useDocument, useDocumentChangedState } from \"@rxdrag/react-core-pro\";\r\nimport { ContentType } from \"../../types\";\r\nimport { SlotDecorator } from \"../../decorators/SlotDecorator\";\r\n\r\nexport type CanvasPanelProps = {\r\n drawer?: React.ReactNode;\r\n children?: React.ReactNode;\r\n};\r\n\r\nexport const CanvasPanel = memo((props: CanvasPanelProps) => {\r\n const {\r\n drawer,\r\n children,\r\n } = props;\r\n const [alertOpen, setAlertOpen] = useState(false)\r\n const [selectedContent, setSelectedContent] = useRecoilState(selectedContentState)\r\n const [willSelectedContent, setWillSelectedContent] = useRecoilState(willSeletedContentState)\r\n const [change] = useDocumentChangedState()\r\n const [contentChanged, setContentChanged] = useRecoilState(contentChangedState)\r\n\r\n const engine = useDesignerEngine()\r\n const documentId = useDocument()?.id\r\n\r\n useEffect(() => {\r\n if (willSelectedContent) {\r\n if (contentChanged || change) {\r\n setAlertOpen(true)\r\n } else {\r\n setSelectedContent(willSelectedContent)\r\n setWillSelectedContent(undefined)\r\n }\r\n }\r\n }, [change, contentChanged, selectedContent, setSelectedContent, setWillSelectedContent, willSelectedContent])\r\n\r\n const handleAlertClose = useCallback(() => {\r\n setAlertOpen(false)\r\n setWillSelectedContent(undefined)\r\n }, [setWillSelectedContent])\r\n\r\n const handleConfirm = useCallback(() => {\r\n setSelectedContent(willSelectedContent)\r\n setWillSelectedContent(undefined)\r\n setAlertOpen(false)\r\n setContentChanged(false)\r\n }, [setContentChanged, setSelectedContent, setWillSelectedContent, willSelectedContent])\r\n\r\n useEffect(() => {\r\n if (selectedContent?.type === ContentType.Component && documentId) {\r\n engine?.getDecoratorManager().addDecorator(new SlotDecorator(), documentId)\r\n return () => {\r\n engine?.getDecoratorManager().removeDecorator(SlotDecorator.name, documentId)\r\n }\r\n }\r\n }, [documentId, engine, selectedContent?.type])\r\n\r\n return (\r\n <div className={`relative flex-1 flex h-full min-h-0`}>\r\n {drawer}\r\n {\r\n !!selectedContent && (\r\n <>\r\n <div className=\"flex-1 flex flex-col\">\r\n <CanvasToolbar />\r\n {children}\r\n </div >\r\n </>\r\n )\r\n }\r\n <SaveAlertDialog\r\n open={alertOpen}\r\n onClose={handleAlertClose}\r\n onConfirm={handleConfirm}\r\n />\r\n </div >\r\n );\r\n});","import { Button, ButtonProps, cn } from \"@nextui-org/react\";\r\nimport { StyledTooltip } from \"@rxdrag/rxcms-common\";\r\nimport { memo } from \"react\";\r\n\r\nexport type LeftbarButtionProps = {\r\n children?: React.ReactNode,\r\n className?: string,\r\n title?: string,\r\n selected?: boolean,\r\n} & ButtonProps;\r\n\r\nexport const LeftbarButtion = memo((props: LeftbarButtionProps) => {\r\n const { children, className, title, selected, ...rest } = props;\r\n return (\r\n <StyledTooltip\r\n placement=\"right\"\r\n content={title}\r\n >\r\n <Button\r\n isIconOnly\r\n radius=\"sm\"\r\n variant={selected ? \"solid\" : \"light\"}\r\n //color={selected ? \"primary\" : \"default\"}\r\n className={cn(selected ? \"\" : \"text-default-500\", className)}\r\n {...rest}\r\n >\r\n {children}\r\n </Button>\r\n </StyledTooltip>\r\n );\r\n});","import { Button, Divider } from \"@nextui-org/react\";\r\nimport { ModalBody, ModalFooter } from \"@rxdrag/rxcms-common\";\r\nimport MonacoEditor from '@monaco-editor/react';\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useWebsiteTheme } from \"../../StudioRoot\";\r\nimport { useUpsertOneTheme } from \"@rxdrag/rxcms-model-hooks\";\r\n\r\nexport const defaultTailwindConfig = `{\r\n theme: {\r\n extend: {\r\n colors: {\r\n // 主色\r\n primary: {\r\n 50: '#f0f9ff',\r\n 100: '#e0f2fe',\r\n 200: '#bae6fd',\r\n 300: '#7dd3fc',\r\n 400: '#38bdf8',\r\n 500: '#0ea5e9',\r\n 600: '#0284c7',\r\n 700: '#0369a1',\r\n 800: '#075985',\r\n 900: '#0c4a6e',\r\n },\r\n // 辅助色\r\n secondary: {\r\n 50: '#fdf4ff',\r\n 100: '#fae8ff',\r\n 200: '#f5d0fe',\r\n 300: '#f0abfc',\r\n 400: '#e879f9',\r\n 500: '#d946ef',\r\n 600: '#c026d3',\r\n 700: '#a21caf',\r\n 800: '#86198f',\r\n 900: '#701a75',\r\n },\r\n // 强调色\r\n accent: {\r\n 50: '#fff7ed',\r\n 100: '#ffedd5',\r\n 200: '#fed7aa',\r\n 300: '#fdba74',\r\n 400: '#fb923c',\r\n 500: '#f97316',\r\n 600: '#ea580c',\r\n 700: '#c2410c',\r\n 800: '#9a3412',\r\n 900: '#7c2d12',\r\n },\r\n // 中性色\r\n neutral: colors.gray,\r\n // 语义色\r\n success: colors.green,\r\n warning: colors.yellow,\r\n error: colors.red,\r\n info: colors.blue,\r\n },\r\n backgroundColor: theme => ({\r\n ...theme('colors'),\r\n 'base': theme('colors.gray.100'),\r\n 'base-dark': theme('colors.gray.900'),\r\n }),\r\n textColor: theme => ({\r\n ...theme('colors'),\r\n 'base': theme('colors.gray.900'),\r\n 'base-light': theme('colors.gray.600'),\r\n 'base-dark': theme('colors.gray.100'),\r\n }),\r\n borderColor: theme => ({\r\n ...theme('colors'),\r\n DEFAULT: theme('colors.gray.200'),\r\n }),\r\n },\r\n },\r\n variants: {\r\n extend: {\r\n backgroundColor: ['active', 'disabled'],\r\n textColor: ['active', 'disabled'],\r\n opacity: ['disabled'],\r\n },\r\n },\r\n plugins: [\r\n function ({ addVariant }) {\r\n addVariant('scrolling', '.scrolling &');\r\n addVariant('actived', '.actived&');\r\n addVariant('disabled', '.disabled&');\r\n addVariant('home', '.home &');\r\n }\r\n ],\r\n}\r\n`\r\n\r\nexport function TailwindPanel() {\r\n const [tailwindConfig, setTailwindConfig] = useState<string>()\r\n const theme = useWebsiteTheme()\r\n\r\n const [save, { isMutating }] = useUpsertOneTheme()\r\n\r\n useEffect(() => {\r\n setTailwindConfig(theme?.tailwindConfig)\r\n }, [theme])\r\n\r\n const handleTailwindConfigChange = useCallback((value?: string) => {\r\n setTailwindConfig(value)\r\n }, [])\r\n\r\n const handleResetTailwindConfig = useCallback(() => {\r\n setTailwindConfig(defaultTailwindConfig)\r\n }, [])\r\n\r\n const handleSaveTailwindConfig = useCallback(() => {\r\n save({\r\n id: theme?.id,\r\n tailwindConfig: tailwindConfig\r\n })\r\n }, [save, tailwindConfig, theme?.id])\r\n\r\n return (\r\n <>\r\n <ModalBody className=\"flex-1\">\r\n <MonacoEditor\r\n height=\"100%\"\r\n language=\"javascript\"\r\n theme={\"vs-dark\"}\r\n value={tailwindConfig}\r\n onChange={handleTailwindConfigChange}\r\n />\r\n </ModalBody>\r\n <Divider />\r\n <ModalFooter>\r\n <Button\r\n size=\"sm\"\r\n isDisabled={tailwindConfig === defaultTailwindConfig}\r\n onClick={handleResetTailwindConfig}\r\n >\r\n 重置\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n color=\"primary\"\r\n isDisabled={tailwindConfig === theme?.tailwindConfig}\r\n isLoading={isMutating}\r\n onClick={handleSaveTailwindConfig}\r\n >\r\n 保存\r\n </Button>\r\n </ModalFooter>\r\n </>\r\n )\r\n}","import { Button, Divider } from \"@nextui-org/react\";\r\nimport { ModalBody, ModalFooter } from \"@rxdrag/rxcms-common\";\r\nimport MonacoEditor from '@monaco-editor/react';\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useWebsiteTheme } from \"../../StudioRoot\";\r\nimport { useUpsertOneTheme } from \"@rxdrag/rxcms-model-hooks\";\r\n\r\nexport const defualtCss = `@layer components {\r\n .btn {\r\n @apply px-4 py-2 rounded-lg font-semibold uppercase cursor-pointer transition-all duration-200;\r\n }\r\n .btn:focus {\r\n @apply outline-none;\r\n }\r\n .btn:disabled {\r\n @apply opacity-70 cursor-not-allowed;\r\n }\r\n .btn-sm {\r\n @apply text-sm px-2 py-1;\r\n }\r\n .btn-lg {\r\n @apply text-lg px-6 py-3;\r\n }\r\n .btn-primary {\r\n @apply bg-primary-500 text-white hover:bg-primary-600 focus:bg-primary-600;\r\n }\r\n .btn-secondary {\r\n @apply bg-secondary-500 text-white hover:bg-secondary-600 focus:bg-secondary-600;\r\n }\r\n .btn-accent {\r\n @apply bg-accent-500 text-white hover:bg-accent-600 focus:bg-accent-600;\r\n }\r\n .btn-neutral {\r\n @apply bg-neutral-500 text-white hover:bg-neutral-600 focus:bg-neutral-600;\r\n }\r\n .btn-outline {\r\n @apply bg-transparent border border-solid hover:text-white focus:text-white;\r\n }\r\n .btn-outline:hover, .btn-outline:focus {\r\n @apply bg-current;\r\n }\r\n}\r\n `\r\n\r\nexport function CssPanel() {\r\n const [cssStr, setCssStr] = useState<string>()\r\n const theme = useWebsiteTheme()\r\n\r\n const [save, { isMutating }] = useUpsertOneTheme()\r\n\r\n useEffect(() => {\r\n setCssStr(theme?.css)\r\n }, [theme])\r\n\r\n const handleCssChange = useCallback((value?: string) => {\r\n setCssStr(value)\r\n }, [])\r\n\r\n const handleResetCss = useCallback(() => {\r\n setCssStr(defualtCss)\r\n }, [])\r\n\r\n const handleSaveCss = useCallback(() => {\r\n save({\r\n id: theme?.id,\r\n css: cssStr\r\n })\r\n }, [cssStr, save, theme?.id])\r\n\r\n return (\r\n <>\r\n <ModalBody className=\"flex-1\">\r\n <MonacoEditor\r\n height=\"100%\"\r\n language=\"css\"\r\n theme={\"vs-dark\"}\r\n value={cssStr}\r\n onChange={handleCssChange}\r\n />\r\n </ModalBody>\r\n <Divider />\r\n <ModalFooter>\r\n <Button\r\n size=\"sm\"\r\n isDisabled={cssStr === defualtCss}\r\n onClick={handleResetCss}\r\n >\r\n 重置\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n color=\"primary\"\r\n isDisabled={cssStr === theme?.css}\r\n isLoading={isMutating}\r\n onClick={handleSaveCss}\r\n >\r\n 保存\r\n </Button>\r\n </ModalFooter>\r\n </>\r\n )\r\n}","import { Autocomplete, AutocompleteItem, AutocompleteProps } from \"@nextui-org/react\";\r\n\r\nconst ratios = [\r\n \"1/1\",\r\n \"4/3\",\r\n \"16/9\",\r\n \"3/2\",\r\n \"2/1\",\r\n \"3/1\"\r\n]\r\n\r\nexport function RatioSelect(\r\n props: Omit<AutocompleteProps, \"children\">\r\n) {\r\n return (\r\n <Autocomplete\r\n allowsCustomValue\r\n variant=\"flat\"\r\n labelPlacement=\"outside\"\r\n placeholder=\"请输入比例\"\r\n {...props}\r\n >\r\n {ratios.map((ratio) => (\r\n <AutocompleteItem key={ratio} value={ratio}>\r\n {ratio}\r\n </AutocompleteItem>\r\n ))}\r\n </Autocomplete>\r\n )\r\n}","import { useCallback } from 'react';\r\nimport { ExtendField, ExtendFieldType, ComponentType } from '@rxdrag/rxcms-models';\r\nimport { Accordion, AccordionItem, Button, Input, Select, SelectItem } from '@nextui-org/react';\r\nimport { AddIcon, SettingsIcon } from '@rxdrag/rxcms-common';\r\n\r\nexport const inputClassNames = {\r\n label: 'w-16 flex items-center ps-0 pe-0 shrink-0 justify-end pr-2 text-default-500',\r\n base: 'flex items-center px-0',\r\n wrapper: 'flex-1',\r\n mainWrapper: 'flex-1 pr-4'\r\n}\r\n\r\nexport default function ExtendsTable(props: {\r\n fields?: ExtendField[],\r\n onChange?: (fields: ExtendField[]) => void,\r\n}) {\r\n const { fields, onChange } = props\r\n\r\n const handleAddField = useCallback(() => {\r\n onChange?.([...fields || [], {\r\n name: 'newField',\r\n title: '新建字段',\r\n type: ExtendFieldType.String,\r\n component: ComponentType.Input\r\n }])\r\n\r\n }, [fields, onChange])\r\n\r\n return (\r\n <>\r\n <Accordion\r\n isCompact\r\n >\r\n {\r\n fields?.map((field, index) => {\r\n return (\r\n <AccordionItem\r\n key={index}\r\n classNames={{\r\n title: 'text-sm'\r\n }}\r\n title={`#${index + 1} ${field.title || field.name}`}\r\n >\r\n <div className=\"flex flex-col gap-2 px-3\">\r\n <Input\r\n variant=\"flat\"\r\n value={field.name}\r\n size=\"sm\"\r\n label=\"名称\"\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n const newName = e.target.value\r\n onChange?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n name: newName\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n />\r\n <Input\r\n label=\"标题\"\r\n size=\"sm\"\r\n variant=\"flat\"\r\n value={field.title}\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n const newTitle = e.target.value\r\n onChange?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n title: newTitle\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n />\r\n <Select\r\n label=\"类型\"\r\n size=\"sm\"\r\n variant=\"flat\"\r\n selectedKeys={field.type ? [field.type] : []}\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n onChange?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n type: e.target.value as ExtendFieldType || undefined\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n >\r\n <SelectItem key={ExtendFieldType.String}>文本</SelectItem>\r\n <SelectItem key={ExtendFieldType.Number}>数字</SelectItem>\r\n <SelectItem key={ExtendFieldType.Boolean}>布尔</SelectItem>\r\n <SelectItem key={ExtendFieldType.Json}>JSON</SelectItem>\r\n <SelectItem key={ExtendFieldType.Date}>日期</SelectItem>\r\n </Select>\r\n\r\n <Select\r\n label=\"编辑组件\"\r\n size=\"sm\"\r\n variant=\"flat\"\r\n selectedKeys={field.component ? [field.component] : []}\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n onChange?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n component: e.target.value as ComponentType || undefined\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n endContent={<Button\r\n as =\"div\"\r\n size=\"sm\"\r\n variant='light'\r\n isIconOnly\r\n className=\"flex items-center justify-center\"\r\n >\r\n <SettingsIcon className=\"size-4\" />\r\n </Button>}\r\n >\r\n <SelectItem key={ComponentType.Input}>单行输入框</SelectItem>\r\n <SelectItem key={ComponentType.NumberInput}>数字入框</SelectItem>\r\n <SelectItem key={ComponentType.Textarea}>多行输入框</SelectItem>\r\n <SelectItem key={ComponentType.Switch}>开关</SelectItem>\r\n <SelectItem key={ComponentType.ImageSelect}>图片选择</SelectItem>\r\n <SelectItem key={ComponentType.LinkTarget}>链接目标</SelectItem>\r\n </Select>\r\n\r\n <Button\r\n size=\"sm\"\r\n variant='light'\r\n color=\"danger\"\r\n onClick={() => {\r\n onChange?.(fields.filter((_, i) => i !== index))\r\n }}\r\n >删除字段</Button>\r\n </div>\r\n </AccordionItem>\r\n )\r\n }) || []\r\n }\r\n </Accordion>\r\n <Button\r\n variant=\"flat\"\r\n size=\"sm\"\r\n className='mt-2'\r\n startContent={<AddIcon className='size-5' />}\r\n onClick={handleAddField}\r\n >\r\n 添加\r\n </Button>\r\n </>\r\n );\r\n}\r\n","import { PostSettings } from \"@rxdrag/rxcms-models\";\r\nimport { RatioSelect } from \"./RatioSelect\";\r\nimport ExtendsTable from \"./ExtendsTable\";\r\n\r\nexport function PostPanel(\r\n props: {\r\n settings?: PostSettings,\r\n onChange?: (settings: PostSettings) => void\r\n }\r\n) {\r\n const { settings, onChange } = props\r\n\r\n return (\r\n <div\r\n className=\"flex flex-col gap-4 overflow-x-hidden p-2\"\r\n >\r\n <RatioSelect\r\n label=\"图片比例\"\r\n value={settings?.imageRatio || \"\"}\r\n onChange={(e) => {\r\n onChange?.({\r\n ...settings,\r\n imageRatio: e.target.value || undefined\r\n })\r\n }}\r\n />\r\n <div className=\"flex flex-col gap-1\">\r\n <label className=\"text-sm\">扩展字段</label>\r\n <ExtendsTable\r\n fields={settings?.fields}\r\n onChange={(fields) => {\r\n onChange?.({\r\n ...settings,\r\n fields\r\n })\r\n }}\r\n />\r\n </div>\r\n </div>\r\n )\r\n}","import { ProductSettings } from \"@rxdrag/rxcms-models\";\r\nimport { RatioSelect } from \"./RatioSelect\";\r\nimport ExtendsTable from \"./ExtendsTable\";\r\n\r\nexport function ProductPanel(\r\n props: {\r\n settings?: ProductSettings,\r\n onChange?: (settings: ProductSettings) => void\r\n }\r\n) {\r\n const { settings, onChange } = props\r\n\r\n return (\r\n <div\r\n className=\"flex flex-col gap-4 overflow-x-hidden p-2\"\r\n >\r\n <RatioSelect\r\n label=\"图片比例\"\r\n value={settings?.imageRatio || \"\"}\r\n onChange={(e) => {\r\n onChange?.({\r\n ...settings,\r\n imageRatio: e.target.value || undefined\r\n })\r\n }}\r\n />\r\n <div className=\"flex flex-col gap-1\">\r\n <label className=\"text-sm\">扩展字段</label>\r\n <ExtendsTable\r\n fields={settings?.fields}\r\n onChange={(fields) => {\r\n onChange?.({\r\n ...settings,\r\n fields\r\n })\r\n }}\r\n />\r\n </div>\r\n </div>\r\n )\r\n}","import { Button, Tab, Tabs } from \"@nextui-org/react\";\r\nimport { ModalBody, ModalFooter } from \"@rxdrag/rxcms-common\";\r\nimport { PostPanel } from \"./PostPanel\";\r\nimport { ProductPanel } from \"./ProductPanel\";\r\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { ThemeSettings } from \"@rxdrag/rxcms-models\";\r\nimport { useThemeSettings, useWebsiteTheme } from \"../../StudioRoot\";\r\nimport { useUpsertOneTheme } from \"@rxdrag/rxcms-model-hooks\";\r\n\r\nexport function ExtendsPanel() {\r\n const [themeSettings, setThemeSettings] = useState<ThemeSettings | null>()\r\n const initialSettings = useThemeSettings()\r\n const webTheme = useWebsiteTheme()\r\n\r\n const [save, { isMutating }] = useUpsertOneTheme()\r\n\r\n const changed = useMemo(() => {\r\n return JSON.stringify(themeSettings || {}) !== JSON.stringify(initialSettings || {})\r\n }, [themeSettings, initialSettings])\r\n\r\n const handleReset = useCallback(() => {\r\n setThemeSettings(initialSettings)\r\n }, [initialSettings])\r\n\r\n const handleSave = useCallback(() => {\r\n save({\r\n id: webTheme?.id,\r\n settings: themeSettings || undefined\r\n })\r\n }, [save, themeSettings, webTheme?.id])\r\n\r\n useEffect(() => {\r\n setThemeSettings(initialSettings)\r\n }, [initialSettings])\r\n\r\n return (\r\n <>\r\n <ModalBody className=\"flex-1 min-h-0 overflow-auto\">\r\n <Tabs\r\n aria-label=\"extends\"\r\n className=\"mt-2\"\r\n size=\"sm\"\r\n >\r\n <Tab key=\"product\" title=\"产品\">\r\n <ProductPanel\r\n settings={themeSettings?.product}\r\n onChange={(settings) => {\r\n setThemeSettings({\r\n ...themeSettings,\r\n product: settings\r\n })\r\n }}\r\n />\r\n </Tab>\r\n <Tab key=\"post\" title=\"文章\">\r\n <PostPanel\r\n settings={themeSettings?.post}\r\n onChange={(settings) => {\r\n setThemeSettings({\r\n ...themeSettings,\r\n post: settings\r\n })\r\n }}\r\n />\r\n </Tab>\r\n </Tabs>\r\n </ModalBody>\r\n <ModalFooter>\r\n <Button\r\n size=\"sm\"\r\n isDisabled={!changed}\r\n onClick={handleReset}\r\n >\r\n 重置\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n isDisabled={!changed}\r\n isLoading={isMutating}\r\n color=\"primary\"\r\n onClick={handleSave}\r\n >\r\n 保存\r\n </Button>\r\n </ModalFooter>\r\n </>\r\n )\r\n}","import { Button, Divider, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from \"@nextui-org/react\";\r\nimport { useState } from \"react\";\r\nimport { Drawer, ModalClose, ModalHeader, SettingsIcon } from \"@rxdrag/rxcms-common\";\r\nimport { TailwindPanel } from \"./TailwindPanel\";\r\nimport { CssPanel } from \"./CssPanel\";\r\nimport { ExtendsPanel } from \"./ExtendsPanel\";\r\n\r\nenum ThemeSettingsType {\r\n Tailwind = \"tailwind\",\r\n CSS = \"css\",\r\n Extends = \"extends\",\r\n}\r\n\r\nexport function ThemeSettingsDrawer() {\r\n const [openSettingsType, setOpenSettingsType] = useState<ThemeSettingsType | null>(null);\r\n\r\n return (\r\n <>\r\n <Dropdown>\r\n <DropdownTrigger>\r\n <Button\r\n size=\"sm\"\r\n variant=\"light\"\r\n isIconOnly\r\n className=\"text-default-500\"\r\n >\r\n <SettingsIcon className=\"size-5\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu aria-label=\"主题配置菜单\">\r\n <DropdownItem key=\"tailwind\"\r\n startContent={\r\n <svg fill=\"currentColor\" className=\"size-6\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M512.042667 204.8c-136.533333 0-221.866667 68.266667-256 204.8 51.2-68.266667 110.933333-93.866667 179.2-76.8 38.954667 9.728 66.773333 37.973333 97.621333 69.290667C583.082667 453.034667 641.152 512 768.042667 512c136.533333 0 221.866667-68.266667 256-204.8-51.2 68.266667-110.933333 93.866667-179.2 76.8-38.954667-9.728-66.773333-37.973333-97.621334-69.290667C697.045333 263.765333 638.976 204.8 512.042667 204.8z m-256 307.2c-136.533333 0-221.866667 68.266667-256 204.8 51.2-68.266667 110.933333-93.866667 179.2-76.8 38.954667 9.728 66.773333 37.973333 97.621333 69.290667 50.218667 50.944 108.288 109.909333 235.178667 109.909333 136.533333 0 221.866667-68.266667 256-204.8-51.2 68.266667-110.933333 93.866667-179.2 76.8-38.954667-9.728-66.773333-37.973333-97.621334-69.290667C441.045333 570.965333 382.976 512 256.042667 512z\"></path>\r\n </svg>\r\n }\r\n onClick={() => setOpenSettingsType(ThemeSettingsType.Tailwind)}\r\n >\r\n Tailwind 配置\r\n </DropdownItem>\r\n <DropdownItem key=\"css\"\r\n startContent={\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 20 20\"><path fill=\"currentColor\" d=\"M10 6.5V2H5.5A1.5 1.5 0 0 0 4 3.5v7.67c.552.196 1.03.548 1.38 1.004A2.498 2.498 0 0 1 9.5 12a2.5 2.5 0 0 1 4.5 1.5c0 .444-.193.843-.5 1.118c.319.425.5.949.5 1.5v.382a2.5 2.5 0 0 1-.5 1.5h1a1.5 1.5 0 0 0 1.5-1.5V8h-4.5A1.5 1.5 0 0 1 10 6.5m1 0V2.25L15.75 7H11.5a.5.5 0 0 1-.5-.5M3 12a2 2 0 0 0-2 2v2a2 2 0 1 0 4 0a.5.5 0 0 0-1 0a1 1 0 1 1-2 0v-2a1 1 0 1 1 2 0a.5.5 0 0 0 1 0a2 2 0 0 0-2-2m8.5 0a1.5 1.5 0 0 0-1.5 1.5v.382a1.5 1.5 0 0 0 .83 1.342l.894.447a.5.5 0 0 1 .276.447v.382a.5.5 0 0 1-1 0a.5.5 0 0 0-1 0a1.5 1.5 0 0 0 3 0v-.382a1.5 1.5 0 0 0-.83-1.342l-.894-.447a.5.5 0 0 1-.276-.447V13.5a.5.5 0 0 1 1 0a.5.5 0 0 0 1 0a1.5 1.5 0 0 0-1.5-1.5M6 13.5a1.5 1.5 0 0 1 3 0a.5.5 0 0 1-1 0a.5.5 0 0 0-1 0v.382a.5.5 0 0 0 .276.447l.895.447A1.5 1.5 0 0 1 9 16.118v.382a1.5 1.5 0 0 1-3 0a.5.5 0 0 1 1 0a.5.5 0 0 0 1 0v-.382a.5.5 0 0 0-.276-.447l-.895-.447A1.5 1.5 0 0 1 6 13.882z\"></path></svg>\r\n }\r\n onClick={() => setOpenSettingsType(ThemeSettingsType.CSS)}\r\n >\r\n 自定义CSS\r\n </DropdownItem>\r\n <DropdownItem\r\n showDivider\r\n key=\"extends\"\r\n startContent={\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M7 22h2v2H7zm4 0h2v2h-2zm4 0h2v2h-2zM12 3c4.42 0 8 1.79 8 4s-3.58 4-8 4s-8-1.79-8-4s3.58-4 8-4M4 9c0 2.21 3.58 4 8 4s8-1.79 8-4v3c0 2.21-3.58 4-8 4s-8-1.79-8-4zm0 5c0 2.21 3.58 4 8 4s8-1.79 8-4v3c0 1.19-1.05 2.27-2.71 3H6.71C5.05 19.27 4 18.19 4 17z\"></path></svg>\r\n }\r\n onClick={() => setOpenSettingsType(ThemeSettingsType.Extends)}\r\n >\r\n 字段扩展\r\n </DropdownItem>\r\n <DropdownItem\r\n key=\"reset\"\r\n className=\"text-warning\" color=\"warning\"\r\n startContent={\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M12 15v-1.5q0-.625.438-1.062T13.5 12H15zm0 4.025V16.9l4.9-4.9h2.125zm.05 1.875l8.825-8.85q.4.1.688.387t.387.688L13.1 21.95q-.4-.125-.662-.387t-.388-.663m2.925 1.1L22 14.975V17.1L17.1 22zM19 22l3-3v1.5q0 .625-.437 1.063T20.5 22zM12 5Q9.075 5 7.038 7.038T5 12q0 1.8.813 3.3T8 17.75V16q0-.425.288-.712T9 15t.713.288T10 16v4q0 .425-.288.713T9 21H5q-.425 0-.712-.288T4 20t.288-.712T5 19h1.35Q4.8 17.75 3.9 15.938T3 12q0-1.875.713-3.512t1.924-2.85t2.85-1.925T12 3q1.625 0 3.475.95t4.875 4.675q.275.325.088.713t-.638.587q-.4.175-.8.013t-.525-.563q-.5-1.7-2.287-3.037T12 5\"></path></svg>\r\n }\r\n >\r\n 重置主题\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n <Drawer\r\n isOpen={!!openSettingsType}\r\n placement=\"left\"\r\n width={openSettingsType === ThemeSettingsType.Extends ? 420 : 580}\r\n className=\"overflow-auto\"\r\n onClose={() => setOpenSettingsType(null)}\r\n >\r\n <ModalHeader>\r\n {openSettingsType === ThemeSettingsType.Tailwind && \"Tailwind 配置\"}\r\n {openSettingsType === ThemeSettingsType.CSS && \"自定义CSS\"}\r\n {openSettingsType === ThemeSettingsType.Extends && \"字段扩展\"}\r\n <ModalClose />\r\n </ModalHeader>\r\n <Divider />\r\n {\r\n openSettingsType === ThemeSettingsType.Tailwind &&\r\n <TailwindPanel />\r\n }\r\n {\r\n openSettingsType === ThemeSettingsType.CSS &&\r\n <CssPanel />\r\n }\r\n {\r\n openSettingsType === ThemeSettingsType.Extends &&\r\n <ExtendsPanel />\r\n }\r\n </Drawer>\r\n </>\r\n )\r\n}","import { memo } from \"react\";\r\nimport { Sheet } from \"../Sheet\";\r\nimport { LeftbarButtion } from \"./LeftbarButtion\";\r\nimport { ContentType, DrawerConentType, SelectedContent } from \"../../types\";\r\nimport { ThemeSettingsDrawer } from \"./ThemeSettingsDrawer\";\r\nimport { useWebsiteTheme } from \"../StudioRoot\";\r\n\r\nexport type LeftbarProps = {\r\n selectedContent?: SelectedContent,\r\n selectedDrawerType?: DrawerConentType,\r\n onSelectDrawerType?: (type: DrawerConentType) => void\r\n};\r\n\r\nexport const titles = {\r\n [DrawerConentType.Insert]: \"物料\",\r\n [DrawerConentType.SEO]: \"SEO 元数据\",\r\n [DrawerConentType.SEM]: \"SEM 辅助\",\r\n [DrawerConentType.SNS]: \"SNS 元数据\",\r\n [DrawerConentType.ComponentSchema]: \"属性配置\",\r\n [DrawerConentType.ComponentTest]: \"组件测试\",\r\n [DrawerConentType.Layers]: \"图层\",\r\n}\r\n\r\nexport const Leftbar = memo((props: LeftbarProps) => {\r\n const { selectedDrawerType, selectedContent, onSelectDrawerType } = props;\r\n const theme = useWebsiteTheme();\r\n\r\n return (\r\n <Sheet className={`w-14 flex flex-col border-r`}>\r\n <div className=\"flex-1 flex flex-col items-center gap-1 py-2\">\r\n <LeftbarButtion\r\n title={titles[DrawerConentType.Insert]}\r\n selected={selectedDrawerType === DrawerConentType.Insert}\r\n onClick={() => onSelectDrawerType?.(DrawerConentType.Insert)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M10.995 4.68v3.88A2.44 2.44 0 0 1 8.545 11h-3.86a2.38 2.38 0 0 1-1.72-.72a2.4 2.4 0 0 1-.71-1.72V4.69a2.44 2.44 0 0 1 2.43-2.44h3.87a2.42 2.42 0 0 1 1.72.72a2.4 2.4 0 0 1 .72 1.71m10.75.01v3.87a2.46 2.46 0 0 1-2.43 2.44h-3.88a2.5 2.5 0 0 1-1.73-.71a2.44 2.44 0 0 1-.71-1.73V4.69a2.4 2.4 0 0 1 .72-1.72a2.42 2.42 0 0 1 1.72-.72h3.87a2.46 2.46 0 0 1 2.44 2.44m0 10.75v3.87a2.46 2.46 0 0 1-2.43 2.44h-3.88a2.5 2.5 0 0 1-1.75-.69a2.42 2.42 0 0 1-.71-1.73v-3.87a2.4 2.4 0 0 1 .72-1.72a2.42 2.42 0 0 1 1.72-.72h3.87a2.46 2.46 0 0 1 2.44 2.44zm-10.75.01v3.87a2.46 2.46 0 0 1-2.45 2.43h-3.86a2.42 2.42 0 0 1-2.43-2.43v-3.87A2.46 2.46 0 0 1 4.685 13h3.87a2.5 2.5 0 0 1 1.73.72a2.45 2.45 0 0 1 .71 1.73\"></path>\r\n </svg>\r\n </LeftbarButtion>\r\n {\r\n (selectedContent?.type === ContentType.Page || selectedContent?.type === ContentType.PredefinedPage) &&\r\n <>\r\n <LeftbarButtion\r\n title={titles[DrawerConentType.SEO]}\r\n selected={selectedDrawerType === DrawerConentType.SEO}\r\n onClick={() => onSelectDrawerType?.(DrawerConentType.SEO)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M2.625 14.025L1 12.85l5-8l3 3.5l4-6.5l3 4.5L19.375 1L21 2.175l-4.95 7.85l-2.975-4.475l-3.8 6.175L6.25 8.2zM14.5 18q1.05 0 1.775-.725T17 15.5t-.725-1.775T14.5 13t-1.775.725T12 15.5t.725 1.775T14.5 18m5.1 4l-2.7-2.7q-.525.35-1.137.525T14.5 20q-1.875 0-3.187-1.312T10 15.5t1.313-3.187T14.5 11t3.188 1.313T19 15.5q0 .65-.175 1.263T18.3 17.9l2.7 2.7z\"></path></svg>\r\n </LeftbarButtion>\r\n {/* <LeftbarButtion\r\n title={titles[DrawerConentType.SEM]}\r\n selected={selectedDrawerType === DrawerConentType.SEM}\r\n onClick={() => onSelectDrawerType?.(DrawerConentType.SEM)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M11.7 18q-2.4-.125-4.05-1.85T6 12q0-2.5 1.75-4.25T12 6q2.425 0 4.15 1.65T18 11.7l-2.1-.625q-.325-1.35-1.4-2.212T12 8q-1.65 0-2.825 1.175T8 12q0 1.425.863 2.5t2.212 1.4zm1.2 3.95q-.225.05-.45.05H12q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12v.45q0 .225-.05.45L20 12.3V12q0-3.35-2.325-5.675T12 4T6.325 6.325T4 12t2.325 5.675T12 20h.3zm7.625.55l-4.275-4.275L15 22l-3-10l10 3l-3.775 1.25l4.275 4.275z\"></path></svg>\r\n </LeftbarButtion> */}\r\n <LeftbarButtion\r\n title={titles[DrawerConentType.SNS]}\r\n selected={selectedDrawerType === DrawerConentType.SNS}\r\n onClick={() => onSelectDrawerType?.(DrawerConentType.SNS)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92\"></path></svg>\r\n </LeftbarButtion>\r\n </>\r\n }\r\n {\r\n selectedContent?.type === ContentType.Component &&\r\n <>\r\n <LeftbarButtion\r\n title={titles[DrawerConentType.ComponentSchema]}\r\n selected={selectedDrawerType === DrawerConentType.ComponentSchema}\r\n onClick={() => onSelectDrawerType?.(DrawerConentType.ComponentSchema)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"m143.13 384.005l-59.415 34.709l-35.358-35.358l32.123-60.013a157 157 0 0 1-14.572-34.737L.723 270.899v-50.09l64.836-19.044c3.329-12.087 8.09-23.835 14.3-34.948l-32.975-58.956l35.358-35.357l59.428 33.382c11.336-6.24 22.963-10.917 34.691-14.143L194.7 24.87h50.09l18.869 68.276a162 162 0 0 1 31.679 13.54l62.4-35.655l35.357 35.358l-35.475 62.993c9.102 16.73 15.3 35.462 17.737 55.72H312.78c-12.596-62.378-84.627-97.801-143.03-64.131c-64.233 37.031-64.233 130.112 0 167.143c25.998 14.988 43.696 17.405 66.627 7.605v47.98l-44.885 26.781s-36.581-20.142-48.364-26.474m133.236 51.013c-16.093 5.44-28.548 2.175-41.494-21.177l-36.757 22.518c14.898 37.255 67.741 53.404 106.376 32.027c25.93-17.162 29.913-34.8 29.347-89.634V254.164h-45.39v142.829c.515 16.921-.18 34.002-12.082 38.025m206.961 31.54c21.636-12.194 34.09-35.814 27.736-66.215c-10.235-57.295-87.544-57.295-96.711-80.711c-10.067-33.803 36.467-39.147 49.375-9.05l35.382-22.704c-25.323-48.674-94.17-43.856-117.16-14.254c-22.872 25.961-16.354 71.398 11.491 90.1c27.43 20.588 67.723 25.267 72.866 44.526c5.004 23.568-17.328 31.182-39.522 28.48c-16.355-3.398-25.452-11.707-35.29-26.827l-36.71 21.174c24.755 49.409 91.274 56.486 128.543 35.48\"></path></svg>\r\n </LeftbarButtion>\r\n <LeftbarButtion\r\n title={titles[DrawerConentType.ComponentTest]}\r\n selected={selectedDrawerType === DrawerConentType.ComponentTest}\r\n onClick={() => onSelectDrawerType?.(DrawerConentType.ComponentTest)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M288.042 396.787V254.16h45.326v124.412c.565 54.756-3.413 72.37-29.306 89.508c-38.58 21.347-91.35 5.22-106.226-31.982l36.706-22.486c12.927 23.319 25.365 26.578 41.435 21.147c11.885-4.017 12.58-21.074 12.065-37.972m66.242 34.036l36.659-21.144c9.824 15.099 18.908 23.396 35.24 26.789c22.162 2.699 44.463-4.904 39.466-28.439c-5.136-19.232-45.373-23.905-72.763-44.463c-27.806-18.676-34.315-64.049-11.474-89.974c22.957-29.56 91.707-34.37 116.994 14.235l-35.333 22.67c-12.889-30.053-59.357-24.716-49.305 9.038c9.154 23.384 86.354 23.384 96.575 80.598c6.344 30.358-6.092 53.944-27.697 66.121c-37.217 20.976-103.642 13.909-128.362-35.43m-95.23-44.916v-116.59l-14.97-24.893h-74.57L84.692 385.907zm8.525-160.736h31.975l-23.864-37.418V61.975h26.075c19.505 0 19.505-27.595 0-27.595h-189.93c-19.504 0-19.504 27.595 0 27.595h26.075v125.778L5.765 406.897c-12.407 21.116-4.619 34.31 21.73 34.31h155.97v-27.595H33.914l131.958-218.809V61.975h81.854v132.828z\"></path></svg>\r\n </LeftbarButtion>\r\n </>\r\n }\r\n\r\n </div>\r\n\r\n {\r\n theme &&\r\n <div className=\"p-1 pb-4 flex flex-col items-center gap-2\">\r\n {selectedContent && <LeftbarButtion\r\n title={titles[DrawerConentType.Layers]}\r\n selected={selectedDrawerType === DrawerConentType.Layers}\r\n onClick={() => onSelectDrawerType?.(DrawerConentType.Layers)}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-6\" viewBox=\"0 0 20 20\"><path fill=\"currentColor\" d=\"M10.505 3.117a1 1 0 0 0-1.011 0l-6.01 3.52a1 1 0 0 0 .003 1.726l6.009 3.502a1 1 0 0 0 1.007 0l6.009-3.502a1 1 0 0 0 .001-1.727zM3.07 9.65l6.438 3.622a1 1 0 0 0 .98 0l6.438-3.622a1 1 0 0 1-.415 1.26l-6.01 3.502a1 1 0 0 1-1.006 0l-6.01-3.502a1 1 0 0 1-.415-1.26m0 2.453l6.438 3.622a1 1 0 0 0 .98 0l6.438-3.622a1 1 0 0 1-.415 1.26l-6.01 3.502a1 1 0 0 1-1.006 0l-6.01-3.502a1 1 0 0 1-.415-1.26\"></path></svg>\r\n </LeftbarButtion>\r\n }\r\n <ThemeSettingsDrawer />\r\n </div>\r\n }\r\n\r\n </Sheet>\r\n );\r\n});","\"use client\";\r\n\r\nimport type { TextAreaProps } from \"@nextui-org/react\";\r\n\r\nimport React from \"react\";\r\nimport { Textarea } from \"@nextui-org/react\";\r\nimport { cn } from \"@nextui-org/react\";\r\n\r\nconst PromptInput = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n ({ classNames = {}, ...props }, ref) => {\r\n return (\r\n <Textarea\r\n ref={ref}\r\n aria-label=\"Prompt\"\r\n className=\"min-h-[40px]\"\r\n classNames={{\r\n ...classNames,\r\n label: cn(\"hidden\", classNames?.label),\r\n input: cn(\"py-0\", classNames?.input),\r\n }}\r\n minRows={1}\r\n placeholder=\"输入AI提示词\"\r\n radius=\"lg\"\r\n variant=\"bordered\"\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\n\r\nexport default PromptInput;\r\n\r\nPromptInput.displayName = \"PromptInput\";\r\n","import { memo, useCallback, useMemo } from \"react\"\r\nimport { useDesignerEngine, useCurrentNode, useChangeNodeMeta, useLanguage, useSetters, useNodeMeta } from \"@rxdrag/react-core-pro\";\r\nimport { VirtualForm } from \"@rxdrag/react-fieldy-pro\";\r\nimport { ComponentRender } from \"@rxdrag/react-runner-pro\";\r\nimport { INodeMeta } from \"@rxdrag/schema-pro\";\r\nimport { FormValue } from \"@rxdrag/fieldy-pro\"\r\n\r\nexport const SettingsForm = memo(() => {\r\n const engine = useDesignerEngine()\r\n const currentNode = useCurrentNode()\r\n const meta = useNodeMeta(currentNode?.id)\r\n const changeMeta = useChangeNodeMeta()\r\n const lang = useLanguage()\r\n const setters = useSetters()\r\n\r\n const propsSchema = useMemo(() => {\r\n if (currentNode && currentNode.propsSchema) {\r\n\r\n const schema = currentNode.propsSchema\r\n //翻译\r\n return engine?.getLocalesManager()\r\n .translateDesignerSchema(currentNode?.meta.componentName,\r\n JSON.parse(JSON.stringify(schema))\r\n )\r\n } else {\r\n return undefined\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentNode, engine, lang])\r\n const handleMetaChange = useCallback((mt: INodeMeta) => {\r\n if (currentNode && meta !== mt) {\r\n changeMeta(currentNode.id, mt)\r\n }\r\n }, [changeMeta, currentNode, meta])\r\n\r\n return (\r\n <VirtualForm\r\n initialValue={meta as unknown as FormValue | undefined}\r\n onValueChange={handleMetaChange as unknown as (value: FormValue | undefined) => void}\r\n //key={currentNode.id}\r\n >\r\n {\r\n propsSchema &&\r\n <ComponentRender\r\n schema={propsSchema}\r\n components={setters}\r\n //localesManager={engine?.getLocalesManager()}\r\n />\r\n }\r\n </VirtualForm>\r\n )\r\n})","import { memo, useMemo, useState } from \"react\";\r\nimport { Sheet } from \"../Sheet\";\r\nimport { Button, Tooltip, Image, Badge } from \"@nextui-org/react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { cn } from \"@nextui-org/react\";\r\nimport PromptInput from \"./PromptInput\";\r\nimport { SettingsForm } from \"../SettingsForm\";\r\nimport { DeviceType, ViewMode } from \"../../types\";\r\nimport { DeviceBreakpoints, DeviceContext } from \"@rxdrag/schema-setters\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { deviceTypeState, viewModeState } from \"../../recoil/atoms\";\r\n\r\n\r\nexport const propsPanelWidth = \"w-80\";\r\n\r\nexport const PropsPanel = memo(() => {\r\n const viewMode = useRecoilValue(viewModeState);\r\n const deviceType = useRecoilValue(deviceTypeState);\r\n const initialImages = [\r\n \"https://nextuipro.nyc3.cdn.digitaloceanspaces.com/components-images/nextui-cover1.png\",\r\n \"https://nextuipro.nyc3.cdn.digitaloceanspaces.com/components-images/nextui-cover2.png\",\r\n \"https://nextuipro.nyc3.cdn.digitaloceanspaces.com/components-images/nextui-cover3.jpeg\",\r\n ];\r\n\r\n const [prompt, setPrompt] = useState<string>(\"\");\r\n const [images, setImages] = useState<string[]>(initialImages);\r\n\r\n const onRemoveImage = (index: number) => {\r\n setImages((prev) => prev.filter((_, i) => i !== index));\r\n\r\n if (images.length === 1) {\r\n setImages(initialImages);\r\n }\r\n };\r\n\r\n const breakpoint = useMemo(() => {\r\n if (deviceType === DeviceType.Mobile) {\r\n return DeviceBreakpoints.sm;\r\n } else if (deviceType === DeviceType.Tablet) {\r\n return DeviceBreakpoints.md;\r\n } else {\r\n return DeviceBreakpoints.lg;\r\n }\r\n }, [deviceType]);\r\n\r\n return (\r\n <DeviceContext.Provider value={breakpoint}>\r\n <Sheet className={cn(propsPanelWidth, 'props-sheet border-l flex flex-col height-full min-h-0')}>\r\n <div className=\"settings-container p-0 flex-1 flex flex-col min-h-0\">\r\n {\r\n viewMode === ViewMode.Design && <SettingsForm />\r\n }\r\n {/* <Tabs\r\n //size=\"sm\"\r\n variant=\"underlined\"\r\n classNames={{\r\n tabList: \"h-12 p-0\",\r\n tab: \"h-12\",\r\n }}\r\n >\r\n <Tab\r\n key=\"photos\"\r\n title={<span className=\"opacity-80\">属性</span>}\r\n />\r\n <Tab\r\n key=\"music\"\r\n title={<span className=\"opacity-80\">样式</span>}\r\n />\r\n <Tab\r\n key=\"videos\"\r\n title={<span className=\"opacity-80\">动画</span>}\r\n />\r\n </Tabs>\r\n <div className=\"border-t border-divider p-4\">\r\n panel\r\n </div> */}\r\n </div>\r\n <Sheet\r\n className=\"p-2\"\r\n >\r\n <form\r\n className=\"flex w-full flex-col items-start rounded-medium bg-default-100 transition-colors hover:bg-default-200/70\"\r\n style={{\r\n border: 'solid 2px transparent',\r\n backgroundImage: 'linear-gradient(#050713, #050713), linear-gradient(to right, #F54180, #338EF7)',\r\n backgroundOrigin: 'border-box',\r\n backgroundClip: 'padding-box, border-box'\r\n }}\r\n >\r\n <div className=\"group flex gap-2 px-4 pt-4\">\r\n {images.map((image, index) => (\r\n <Badge\r\n key={index}\r\n isOneChar\r\n className=\"opacity-0 group-hover:opacity-100\"\r\n content={\r\n <Button\r\n isIconOnly\r\n radius=\"full\"\r\n size=\"sm\"\r\n variant=\"light\"\r\n onPress={() => onRemoveImage(index)}\r\n >\r\n <Icon className=\"text-foreground\" icon=\"iconamoon:close-thin\" width={16} />\r\n </Button>\r\n }\r\n >\r\n <Image\r\n alt=\"uploaded image cover\"\r\n className=\"h-14 w-14 rounded-small border-small border-default-200/50 object-cover\"\r\n src={image}\r\n />\r\n </Badge>\r\n ))}\r\n </div>\r\n <PromptInput\r\n classNames={{\r\n inputWrapper: \"!bg-transparent shadow-none\",\r\n innerWrapper: \"relative\",\r\n input: \"pt-1 pb-6 !pr-10 text-medium\",\r\n }}\r\n endContent={\r\n <div className=\"absolute right-0 flex h-full flex-col items-end justify-between gap-2\">\r\n <Tooltip showArrow content=\"Speak\">\r\n <Button isIconOnly radius=\"full\" size=\"sm\" variant=\"light\">\r\n <Icon className=\"text-default-500\" icon=\"solar:microphone-3-linear\" width={20} />\r\n </Button>\r\n </Tooltip>\r\n <div className=\"flex items-end gap-2\">\r\n <p className=\"py-1 text-tiny text-default-400\">{prompt.length}/2000</p>\r\n <Tooltip showArrow content=\"Send message\">\r\n <Button\r\n isIconOnly\r\n color={!prompt ? \"default\" : \"primary\"}\r\n isDisabled={!prompt}\r\n radius=\"lg\"\r\n size=\"sm\"\r\n variant=\"solid\"\r\n >\r\n <Icon\r\n className={cn(\r\n \"[&>path]:stroke-[2px]\",\r\n !prompt ? \"text-default-600\" : \"text-primary-foreground\",\r\n )}\r\n icon=\"solar:arrow-up-linear\"\r\n width={20}\r\n />\r\n </Button>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n }\r\n minRows={3}\r\n radius=\"lg\"\r\n startContent={\r\n <Tooltip showArrow content=\"Add Image\">\r\n <Button isIconOnly radius=\"full\" size=\"sm\" variant=\"light\">\r\n <Icon\r\n className=\"text-default-500\"\r\n icon=\"solar:gallery-linear\"\r\n width={20}\r\n />\r\n </Button>\r\n </Tooltip>\r\n }\r\n value={prompt}\r\n variant=\"flat\"\r\n onValueChange={setPrompt}\r\n />\r\n </form>\r\n </Sheet>\r\n </Sheet>\r\n </DeviceContext.Provider>\r\n );\r\n});\r\n","import { Button, cn } from \"@nextui-org/react\";\r\nimport { CloseIcon, PinIcon } from \"@rxdrag/rxcms-common\";\r\nimport React, { useCallback } from \"react\";\r\n\r\nexport function CanvasDrawer(\r\n props: {\r\n title?: React.ReactNode;\r\n docked?: boolean;\r\n className?: string;\r\n width?: number | string;\r\n children?: React.ReactNode;\r\n isOpen?: boolean;\r\n onClose?: () => void;\r\n onDockChange?: (docked: boolean) => void;\r\n }\r\n) {\r\n const { title, docked = false, className, width = 320, isOpen, onClose, onDockChange, children } = props;\r\n\r\n const handleDock = useCallback(() => {\r\n onDockChange && onDockChange(!docked);\r\n }, [docked, onDockChange]);\r\n\r\n return (\r\n <div\r\n className={\r\n cn(\r\n \"min-h-0 flex flex-col\",\r\n \"top-0 left-0 h-full bg-black border-r border-b border-divider text-default-600 transition duration-300 z-20 overflow-x-hidden\",\r\n className,\r\n docked ? \"\" : \"absolute shadow-lg border-t\",\r\n )\r\n }\r\n style={{\r\n width: isOpen ? width : 0,\r\n }}\r\n >\r\n <div className=\"relative h-12 border-b border-divider text-sm flex items-center px-4 shrink-0\">\r\n {title}\r\n <Button\r\n size=\"sm\"\r\n variant={docked ? \"solid\" : \"light\"}\r\n isIconOnly\r\n className=\"absolute right-12 top-2\"\r\n onClick={handleDock}\r\n >\r\n <PinIcon\r\n className={\r\n cn(\r\n \"size-4\",\r\n docked ? \"text-default-600\" : \"text-default-500\",\r\n )\r\n }\r\n />\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n variant=\"light\"\r\n isIconOnly\r\n className=\"absolute right-3 top-2\"\r\n onClick={onClose}\r\n >\r\n <CloseIcon className=\"size-5 text-default-600\" />\r\n </Button>\r\n </div>\r\n <div className=\"flex-1 min-h-0 flex flex-col overflow-auto\">\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}","import { cn } from \"@nextui-org/react\";\r\nimport { HTMLAttributes } from \"react\";\r\n\r\nexport function LeftPanel(props: HTMLAttributes<HTMLDivElement> & {\r\n hidden?: boolean;\r\n className?: string;\r\n children?: React.ReactNode;\r\n}) {\r\n const { hidden, className, children, ...rest } = props;\r\n return (<div\r\n className={\r\n cn(\r\n \"left-panel flex-1 min-h-0 flex-col gap-2 h-full\",\r\n hidden ? \"hidden\" : \"flex\",\r\n className\r\n )\r\n }\r\n {...rest}\r\n >\r\n {children}\r\n </div>)\r\n}","import { ComponentType, ExtendField, ExtendFieldType, FrontComponent } from \"@rxdrag/rxcms-models\";\r\nimport { useCallback } from \"react\";\r\nimport { Accordion, AccordionItem, Button, Input, Select, SelectItem, Switch } from \"@nextui-org/react\";\r\nimport { AddIcon, SettingsIcon } from \"@rxdrag/rxcms-common\";\r\n\r\nexport const inputClassNames = {\r\n label: 'w-16 flex items-center ps-0 pe-0 shrink-0 justify-end pr-2 text-default-500',\r\n base: 'flex items-center px-0',\r\n wrapper: 'flex-1',\r\n mainWrapper: 'flex-1 pr-4'\r\n}\r\n\r\nexport function PropsConfig(\r\n props: {\r\n editingComponent: FrontComponent | undefined\r\n onChangeComponent: (component: FrontComponent) => void\r\n }\r\n) {\r\n const { editingComponent, onChangeComponent } = props\r\n\r\n const fields = editingComponent?.props?.items\r\n // const checkSlotExists = useCheckSlotExists()\r\n\r\n const handelChangeFields = useCallback((fields: ExtendField[]) => {\r\n onChangeComponent({\r\n ...editingComponent,\r\n props: {\r\n ...editingComponent?.props,\r\n items: fields\r\n }\r\n })\r\n }, [editingComponent, onChangeComponent])\r\n\r\n const handleDraggableChange = useCallback((droppable: boolean) => {\r\n onChangeComponent?.({\r\n ...editingComponent,\r\n droppable: droppable\r\n })\r\n }, [editingComponent, onChangeComponent])\r\n\r\n const getNewFieldName = useCallback(() => {\r\n const names = fields?.map(field => field.name) || []\r\n let index = 1\r\n while (names.includes(`newField${index}`)) {\r\n index++\r\n }\r\n return `newField${index}`\r\n }, [fields])\r\n\r\n const handleAddField = useCallback(() => {\r\n const newFields = [...fields || [], {\r\n name: getNewFieldName(),\r\n title: '新建字段',\r\n type: ExtendFieldType.String,\r\n component: ComponentType.Input\r\n }]\r\n handelChangeFields(newFields)\r\n }, [fields, getNewFieldName, handelChangeFields])\r\n\r\n return (\r\n <>\r\n <div className=\"px-4 pt-2\">\r\n <Switch\r\n size=\"sm\"\r\n isSelected={editingComponent?.droppable || false}\r\n classNames={{\r\n label: 'text-sm text-default-600'\r\n }}\r\n onValueChange={handleDraggableChange}\r\n >可拖入子元素</Switch>\r\n </div >\r\n <Accordion\r\n isCompact\r\n >\r\n {\r\n fields?.map((field, index) => {\r\n return (\r\n <AccordionItem\r\n key={index}\r\n classNames={{\r\n title: 'text-sm text-default-600 px-3',\r\n }}\r\n title={`#${index + 1} ${field.title || field.name}`}\r\n >\r\n <div className=\"flex flex-col gap-2 px-3\">\r\n <Input\r\n variant=\"flat\"\r\n value={field.name}\r\n size=\"sm\"\r\n label=\"名称\"\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n const newName = e.target.value\r\n handelChangeFields?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n name: newName\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n />\r\n <Input\r\n label=\"标题\"\r\n size=\"sm\"\r\n variant=\"flat\"\r\n value={field.title}\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n const newTitle = e.target.value\r\n handelChangeFields?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n title: newTitle\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n />\r\n <Select\r\n label=\"类型\"\r\n size=\"sm\"\r\n variant=\"flat\"\r\n value={field.type}\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n handelChangeFields?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n type: e.target.value as ExtendFieldType || undefined\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n >\r\n <SelectItem key={ExtendFieldType.String}>文本</SelectItem>\r\n <SelectItem key={ExtendFieldType.Number}>数字</SelectItem>\r\n <SelectItem key={ExtendFieldType.Boolean}>布尔</SelectItem>\r\n <SelectItem key={ExtendFieldType.Json}>JSON</SelectItem>\r\n <SelectItem key={ExtendFieldType.Date}>日期</SelectItem>\r\n </Select>\r\n\r\n <Select\r\n label=\"编辑组件\"\r\n size=\"sm\"\r\n variant=\"flat\"\r\n value={field.component}\r\n labelPlacement=\"outside-left\"\r\n classNames={inputClassNames}\r\n onChange={(e) => {\r\n handelChangeFields?.(fields.map((field, i) => {\r\n if (i === index) {\r\n return {\r\n ...field,\r\n component: e.target.value as ComponentType || undefined\r\n }\r\n }\r\n return field\r\n }))\r\n }}\r\n endContent={<Button\r\n as=\"div\"\r\n size=\"sm\"\r\n variant='light'\r\n isIconOnly\r\n className=\"flex items-center justify-center\"\r\n >\r\n <SettingsIcon className=\"size-4\" />\r\n </Button>}\r\n >\r\n <SelectItem key={ComponentType.Input}>单行输入框</SelectItem>\r\n <SelectItem key={ComponentType.NumberInput}>数字入框</SelectItem>\r\n <SelectItem key={ComponentType.Textarea}>多行输入框</SelectItem>\r\n <SelectItem key={ComponentType.Switch}>开关</SelectItem>\r\n <SelectItem key={ComponentType.ImageSelect}>图片选择</SelectItem>\r\n <SelectItem key={ComponentType.LinkTarget}>链接目标</SelectItem>\r\n </Select>\r\n\r\n <Button\r\n size=\"sm\"\r\n variant='light'\r\n color=\"danger\"\r\n onClick={() => {\r\n handelChangeFields(fields.filter((_, i) => i !== index))\r\n }}\r\n >删除字段</Button>\r\n </div>\r\n </AccordionItem>\r\n )\r\n }) || []\r\n }\r\n </Accordion>\r\n <div className=\"p-4\">\r\n <Button\r\n variant=\"flat\"\r\n size=\"sm\"\r\n className=\"mt-4\"\r\n fullWidth\r\n startContent={<AddIcon className=\"size-4\" />}\r\n onClick={handleAddField}\r\n >\r\n 添加属性\r\n </Button>\r\n </div>\r\n </>\r\n )\r\n}","import { Form } from \"@rxdrag/fieldy-nextui\";\r\nimport { LeftPanel } from \"../LeftPanel\";\r\nimport { FrontComponent } from \"@rxdrag/rxcms-models\";\r\nimport { PropsConfig } from \"./PropsConfig\";\r\n\r\nexport function ComponentSchemaPanel(props: {\r\n editingComponent: FrontComponent | undefined\r\n onChangeComponent: (component: FrontComponent) => void\r\n hidden?: boolean\r\n}) {\r\n const { editingComponent, onChangeComponent, hidden } = props;\r\n\r\n return (\r\n <Form>\r\n <LeftPanel\r\n className=\"p-0\"\r\n hidden={hidden}\r\n >\r\n <PropsConfig\r\n editingComponent={editingComponent}\r\n onChangeComponent={onChangeComponent}\r\n />\r\n </LeftPanel>\r\n </Form>\r\n )\r\n}","\r\nimport { useCallback } from \"react\"\r\nimport { CustomizedComponentPropsSetter } from \"../../../customize/setter\"\r\nimport { FrontComponent } from \"@rxdrag/rxcms-models\"\r\n\r\nexport function PropsTest(\r\n props: {\r\n editingComponent: FrontComponent | undefined\r\n onChangeComponent: (component: FrontComponent) => void\r\n }\r\n) {\r\n const { editingComponent, onChangeComponent } = props\r\n const fields = editingComponent?.props?.items\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleChange = useCallback((value: any) => {\r\n onChangeComponent({\r\n ...editingComponent,\r\n testConfig: {\r\n ...editingComponent?.testConfig,\r\n ...value\r\n }\r\n })\r\n }, [editingComponent, onChangeComponent])\r\n\r\n return (\r\n <CustomizedComponentPropsSetter\r\n fields={fields}\r\n value={editingComponent?.testConfig}\r\n onValueChange={handleChange}\r\n />\r\n )\r\n}","import { Form } from \"@rxdrag/fieldy-nextui\";\r\nimport { LeftPanel } from \"../LeftPanel\";\r\nimport { PropsTest } from \"./PropsTest\";\r\nimport { FrontComponent } from \"@rxdrag/rxcms-models\";\r\n\r\nexport function ComponentTestPanel(props: {\r\n editingComponent: FrontComponent | undefined\r\n onChangeComponent: (component: FrontComponent) => void\r\n hidden?: boolean\r\n}) {\r\n const { editingComponent, onChangeComponent, hidden } = props;\r\n\r\n return (\r\n <Form>\r\n <LeftPanel\r\n className=\"p-4\"\r\n hidden={hidden}\r\n >\r\n <PropsTest\r\n editingComponent={editingComponent}\r\n onChangeComponent={onChangeComponent}\r\n />\r\n </LeftPanel>\r\n </Form>\r\n )\r\n}","import { Icon } from \"@iconify/react\"\r\n\r\nexport function EmpetyText(props: {\r\n children: React.ReactNode\r\n}) {\r\n return <p className=\"m-2 rounded-lg p-2 text-xs text-default-500 border-dashed border-divider border-1 bg-default-50\">{props.children}</p>\r\n}\r\n\r\nexport const leafIcon = <Icon icon=\"heroicons:document-solid\" className=\"size-4 \" />","import { LeafNode } from \"@rxdrag/rxcms-common\";\r\nimport { FrontComponent } from \"@rxdrag/rxcms-models\";\r\nimport { useRemoveRow, useEditRow } from \"@rxdrag/rxcms-models-ui\";\r\nimport React, { useEffect } from \"react\";\r\nimport { RxProps, useDesignerEngine } from \"@rxdrag/react-core-pro\";\r\nimport { Button, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from \"@nextui-org/react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { getCustomizedComponentName } from \"../../../customize/funcs\";\r\nimport { leafIcon } from \"../utils\";\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\";\r\n\r\nexport function ComponentNode(\r\n props: {\r\n component: FrontComponent,\r\n readonly?: boolean;\r\n categoryId: string | undefined | null;\r\n selectedId?: string | null;\r\n onSelect?: (id: string | null) => void\r\n }\r\n) {\r\n const { component, readonly, selectedId, onSelect } = props\r\n const [open, setOpen] = React.useState(false)\r\n const [remove, { isMutating }] = useRemoveRow()\r\n const [rxProps, setRxProps] = React.useState<RxProps>()\r\n //const [selectedId] = useRecoilState(selectedComponentIdState)\r\n const engine = useDesignerEngine()\r\n const edit = useEditRow()\r\n\r\n\r\n useEffect(() => {\r\n if (engine) {\r\n const componentName = getCustomizedComponentName(component.name || '')\r\n const newSlots = {} as Record<string, INodeSchema>\r\n for (const key in component.slots) {\r\n newSlots[key] = { ...component.slots[key] }\r\n //删掉xSlotRef,避免造车困扰\r\n newSlots[key].xSlotRef = undefined\r\n }\r\n //动态注册Resource,其它地方动态注册相应物料\r\n engine.getResourceManager().registerResources({\r\n name: componentName,\r\n title: component.title,\r\n elements: [\r\n {\r\n //目的是为了精确提示Label,这里不用x-component\r\n componentName: componentName,\r\n props: {\r\n name: component.name,\r\n //默认属性配置\r\n ...component.testConfig,\r\n },\r\n //默认slots\r\n slots: newSlots,\r\n }\r\n ],\r\n })\r\n\r\n const props = engine.getResourceManager().getResourceByName(componentName)?.rxProps\r\n if (props) {\r\n setRxProps(props)\r\n }\r\n return () => {\r\n engine.getResourceManager().unregisterResources(componentName)\r\n }\r\n }\r\n }, [engine, component])\r\n\r\n const handleOpenChange = React.useCallback((open: boolean) => {\r\n setOpen(open)\r\n }, [])\r\n\r\n const handleClick = React.useCallback(() => {\r\n onSelect?.(component.id || null)\r\n }, [onSelect, component.id])\r\n\r\n return (\r\n // <Tooltip\r\n // placement=\"right\"\r\n // variant=\"outlined\"\r\n // disableInteractive\r\n // keepMounted\r\n // sx={{\r\n // py: 1,\r\n // }}\r\n // title={\r\n // <ThumbnailRender\r\n // elements={component.content?.elements || []}\r\n // />\r\n // }\r\n // >\r\n <LeafNode\r\n fiexdAction={open || isMutating}\r\n hover={open || isMutating}\r\n icon={leafIcon}\r\n className=\"text-sm\"\r\n selected={selectedId === component.id}\r\n actions={!readonly &&\r\n <Dropdown\r\n onOpenChange={handleOpenChange}\r\n >\r\n <DropdownTrigger>\r\n <Button\r\n isLoading={isMutating}\r\n isIconOnly\r\n variant=\"light\"\r\n size=\"sm\"\r\n >\r\n <Icon icon=\"mdi:more-horiz\" className=\"size-5 text-default-600\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu aria-label=\"Actions\">\r\n <DropdownItem\r\n key=\"edit\"\r\n onClick={edit}\r\n >\r\n 编辑\r\n </DropdownItem>\r\n\r\n <DropdownItem\r\n key=\"remove\"\r\n color=\"danger\"\r\n onClick={() => remove()}\r\n >\r\n 删除\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n }\r\n onClick={!readonly ? handleClick : undefined}\r\n {...rxProps}\r\n >\r\n {component.title || component.name}\r\n </LeafNode>\r\n // </Tooltip>\r\n )\r\n}","import { ComponentCategory, FrontComponent, FrontComponentEntityName } from \"@rxdrag/rxcms-models\"\r\nimport { EntityListScope, EntityRowScope } from \"@rxdrag/rxcms-models-ui\"\r\nimport { ComponentModal } from \"./ComponentModal\"\r\nimport { ListResult } from \"@rxdrag/entify-hooks\"\r\nimport { ComponentNode } from \"./ComponentNode\"\r\n\r\nexport function ComponentList(\r\n props: {\r\n themeId: string\r\n readonly?: boolean\r\n list?: ListResult<FrontComponent>\r\n category?: ComponentCategory\r\n newComponent?: FrontComponent\r\n noCagegory?: boolean\r\n selectedId?: string | null\r\n onSelect?: (id: string | null) => void\r\n onClearNewComponent?: () => void\r\n }\r\n) {\r\n const { themeId, readonly, list, category, newComponent, noCagegory, selectedId, onSelect, onClearNewComponent } = props\r\n\r\n return (\r\n <EntityListScope<FrontComponent>\r\n entityName={FrontComponentEntityName}\r\n data={list}\r\n >\r\n {\r\n list?.items?.map((item) => {\r\n return (\r\n <EntityRowScope key={item.id} row={item}>\r\n <ComponentNode\r\n component={item}\r\n readonly={readonly}\r\n selectedId={selectedId}\r\n categoryId={category?.id}\r\n onSelect={onSelect}\r\n />\r\n </EntityRowScope>\r\n )\r\n })\r\n }\r\n {\r\n !readonly && <ComponentModal\r\n themeId={themeId}\r\n value={newComponent}\r\n noCagegory={noCagegory}\r\n onClose={onClearNewComponent}\r\n categoryId={category?.id}\r\n />\r\n }\r\n\r\n </EntityListScope>\r\n )\r\n}","import { FrontComponent, ComponentCategory } from \"@rxdrag/rxcms-models\";\r\nimport { memo, useMemo } from \"react\";\r\nimport { GroupNode } from \"@rxdrag/rxcms-common\";\r\nimport React from \"react\";\r\nimport { useEditRow, useRemoveRow } from \"@rxdrag/rxcms-models-ui\";\r\nimport { ComponentList } from \"./ComponentList\";\r\nimport { useFrontComponents } from \"../../StudioRoot\";\r\nimport { Button, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from \"@nextui-org/react\";\r\nimport { Icon } from \"@iconify/react\";\r\n\r\nexport const ComponentCategoryNode = memo((props: {\r\n category: ComponentCategory,\r\n themeId: string,\r\n readonly?: boolean,\r\n selectedId?: string | null,\r\n onSelect?: (id: string | null) => void\r\n}) => {\r\n const { category, themeId, readonly, selectedId, onSelect } = props\r\n const [open, setOpen] = React.useState(false)\r\n const [remove, { isMutating }] = useRemoveRow()\r\n const [newComponent, setNewComponent] = React.useState<FrontComponent>()\r\n\r\n const edit = useEditRow()\r\n const components = useFrontComponents()\r\n\r\n const componentsInCategory = useMemo(\r\n () => components?.filter((item) => item.category?.id === category.id),\r\n [components, category.id]\r\n )\r\n\r\n const handleOpenChange = React.useCallback((open: boolean) => {\r\n setOpen(open)\r\n }, [])\r\n\r\n const handleNewComponent = React.useCallback(() => {\r\n setNewComponent({\r\n category: { id: category.id },\r\n theme: { id: themeId },\r\n })\r\n setOpen(false)\r\n }, [category.id, themeId])\r\n\r\n const handleEdit = React.useCallback(() => {\r\n edit()\r\n setOpen(false)\r\n }, [edit])\r\n\r\n const data = useMemo(() => {\r\n return {\r\n items: componentsInCategory\r\n }\r\n }, [componentsInCategory])\r\n\r\n return (\r\n <GroupNode\r\n title={category.name}\r\n fiexdAction={open || isMutating}\r\n icon={null}\r\n classNames={{\r\n title: \"text-sm\"\r\n }}\r\n defaultExpanded={!!data.items?.find((item) => item.id === selectedId)}\r\n action={!readonly &&\r\n <Dropdown\r\n onOpenChange={handleOpenChange}\r\n >\r\n <DropdownTrigger>\r\n <Button\r\n isLoading={isMutating}\r\n isIconOnly\r\n variant=\"light\"\r\n size=\"sm\"\r\n >\r\n <Icon icon=\"mdi:more-horiz\" className=\"size-5 text-default-600\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu aria-label=\"Actions\">\r\n\r\n <DropdownItem\r\n key=\"add\"\r\n onClick={handleNewComponent}\r\n >\r\n 添加组件\r\n </DropdownItem>\r\n <DropdownItem\r\n key=\"edit\"\r\n onClick={handleEdit}\r\n >\r\n 编辑\r\n </DropdownItem>\r\n\r\n <DropdownItem\r\n key=\"remove\"\r\n color=\"danger\"\r\n onClick={() => remove()}\r\n >\r\n 删除\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n }\r\n >\r\n <ComponentList\r\n category={category}\r\n themeId={themeId}\r\n readonly={readonly}\r\n list={data}\r\n newComponent={newComponent}\r\n selectedId={selectedId}\r\n onSelect={onSelect}\r\n onClearNewComponent={() => setNewComponent(undefined)}\r\n />\r\n </GroupNode>\r\n )\r\n})","import { EntityRowScope, useListData } from \"@rxdrag/rxcms-models-ui\";\r\nimport { ComponentCategory } from \"@rxdrag/rxcms-models\";\r\nimport { ComponentCategoryNode } from \"./ComponentCategoryNode\";\r\n\r\nexport function ComponentCategoryList(\r\n props: {\r\n readonly?: boolean;\r\n selectedId?: string | null\r\n onSelect?: (id: string | null, breadcrumbs?: string[]) => void\r\n }\r\n) {\r\n const { readonly, selectedId, onSelect } = props\r\n const data = useListData<ComponentCategory>()\r\n\r\n return (\r\n <>\r\n {\r\n data?.items?.map((item) => {\r\n return (\r\n <EntityRowScope row={item} key={item.id}>\r\n {\r\n item.theme?.id && <ComponentCategoryNode\r\n category={item}\r\n themeId={item.theme?.id}\r\n readonly={readonly}\r\n selectedId={selectedId}\r\n onSelect={(id) => onSelect?.(id, [item.name || \"\"])}\r\n />\r\n }\r\n </EntityRowScope>\r\n )\r\n })\r\n }\r\n </>\r\n )\r\n}","import { OrderBy } from \"@rxdrag/entify-hooks\";\r\nimport { ComponentCategory, ComponentCategoryFields, ComponentCategoryQueryOptions, ComponentCategoryBoolExp, ComponentCategoryOrderBy, ComponentCategoryDistinctExp } from \"@rxdrag/rxcms-models\";\r\nimport { QueryListScope } from \"@rxdrag/rxcms-models-ui\";\r\n\r\nexport function ComponentCategoryListScope(\r\n props: {\r\n themeId?: string | null;\r\n children: React.ReactNode;\r\n }\r\n) {\r\n const { themeId, children } = props;\r\n\r\n return (\r\n themeId &&\r\n <QueryListScope<ComponentCategory, ComponentCategoryBoolExp, ComponentCategoryOrderBy, ComponentCategoryDistinctExp>\r\n options={\r\n new ComponentCategoryQueryOptions(\r\n [\r\n ComponentCategoryFields.id,\r\n ComponentCategoryFields.name,\r\n ComponentCategoryFields.seqValue,\r\n ComponentCategoryFields.updatedAt,\r\n ],\r\n {\r\n where: {\r\n theme: {\r\n id: {\r\n _eq: themeId,\r\n }\r\n }\r\n },\r\n orderBy: [\r\n {\r\n [ComponentCategoryFields.seqValue]: OrderBy.asc,\r\n },\r\n {\r\n [ComponentCategoryFields.updatedAt]: OrderBy.asc,\r\n }\r\n ]\r\n }\r\n ).theme()\r\n }\r\n >\r\n {children}\r\n </QueryListScope>\r\n )\r\n}","import { XWebsiteSettingsContactMaterial, XWebsiteSettingsAvatarMaterial, XWebsiteSettingsAddressMaterial, XWebisteSettingsEmailMaterial, XWebisteSettingsTelMaterial, XWebisteSettingsFaxMaterial, XWebisteSettingMobileMaterial, XUserNameMaterial, XUserAvatarMaterial, XUserPositionMaterial, XUserProfileMaterial, XUserEmailMaterial, XUserTelMaterial, XUserMobileMaterial, XUserLinkedInMaterial, XUserTwitterMaterial, XUserFacebookMaterial, XUserInstagramMaterial, XProductCategoryNameMaterial, XProductCategoryMediaMaterial, XProductCategoryDescriptionMaterial, XProductCategoryCreatedAtMaterial, XProductCategoryUpdatedAtMaterial, XProductCategoryProductsMaterial, XProudctCategoryLinkMaterial, XPostCategoryNameMaterial, XPostCategoryDescriptionMaterial, XPostCategoryCreatedAtMaterial, XPostCategoryUpdatedAtMaterial, XPostCategoryPostsMaterial, XPostCategoryLinkMaterial, XProductTitleMaterial, XProductShortTitleMaterial, XProductCoverMaterial, XProductMediasMaterial, XProductDescriptionMaterial, XProductFeaturesMaterial, XProductContentMaterial, XProductContent2Material, XProductContent3Material, XProductPublishedAtMaterial, XProductCreatedAtMaterial, XProductUpdatedAtMaterial, XProductAssociationCategoryMaterial, XProductAttachmentsMaterial, XProductRelatedMaterial, XProductLinkMaterial, XPostCoverMaterial, XPostAuthorMaterial, XPostTitleMaterial, XPostDescriptionMaterial, XPostContentMaterial, XPostPublishedAtMaterial, XPostCreatedAtMaterial, XPostUpdatedAtMaterial, XPostAssociationCategoryMaterial, XPostLinkMaterial, XUserLinkMaterial, XAttachmentLinkMaterial, XAttachmentNameMaterial, XAttachmentIconMaterial, XPostOutlineMaterial } from \"@rxdrag/website-materials\"\r\nimport { IResourceTreeNode } from \"../types\"\r\n\r\n\r\nexport const settingsFields: IResourceTreeNode[] = [\r\n {\r\n title: '联系人',\r\n resource: XWebsiteSettingsContactMaterial.resource?.name,\r\n },\r\n {\r\n title: '头像',\r\n resource: XWebsiteSettingsAvatarMaterial.resource?.name,\r\n },\r\n {\r\n title: '地址',\r\n resource: XWebsiteSettingsAddressMaterial.resource?.name,\r\n },\r\n {\r\n title: '邮箱',\r\n resource: XWebisteSettingsEmailMaterial.resource?.name,\r\n },\r\n {\r\n title: '电话',\r\n resource: XWebisteSettingsTelMaterial.resource?.name,\r\n },\r\n {\r\n title: '传真',\r\n resource: XWebisteSettingsFaxMaterial.resource?.name,\r\n },\r\n {\r\n title: '手机',\r\n resource: XWebisteSettingMobileMaterial.resource?.name,\r\n }\r\n]\r\n\r\nexport const userFields: IResourceTreeNode[] = [\r\n {\r\n title: '名称',\r\n resource: XUserNameMaterial.resource?.name,\r\n },\r\n {\r\n title: '头像',\r\n resource: XUserAvatarMaterial.resource?.name,\r\n },\r\n {\r\n title: '职位',\r\n resource: XUserPositionMaterial.resource?.name,\r\n },\r\n {\r\n title: '个人简介',\r\n resource: XUserProfileMaterial.resource?.name,\r\n },\r\n {\r\n title: '邮箱',\r\n resource: XUserEmailMaterial.resource?.name,\r\n },\r\n {\r\n title: '电话',\r\n resource: XUserTelMaterial.resource?.name,\r\n },\r\n {\r\n title: '手机',\r\n resource: XUserMobileMaterial.resource?.name,\r\n },\r\n {\r\n title: 'LinkedIn',\r\n resource: XUserLinkedInMaterial.resource?.name,\r\n },\r\n {\r\n title: 'Twitter',\r\n resource: XUserTwitterMaterial.resource?.name,\r\n },\r\n {\r\n title: 'Facebook',\r\n resource: XUserFacebookMaterial.resource?.name,\r\n },\r\n {\r\n title: 'Instagram',\r\n resource: XUserInstagramMaterial.resource?.name,\r\n },\r\n {\r\n title: \"用户链接\",\r\n resource: XUserLinkMaterial.resource?.name\r\n }\r\n]\r\n\r\nexport const productCategoryFields: IResourceTreeNode[] = [\r\n {\r\n title: '名称',\r\n resource: XProductCategoryNameMaterial.resource?.name,\r\n },\r\n {\r\n title: '媒体',\r\n resource: XProductCategoryMediaMaterial.resource?.name,\r\n },\r\n {\r\n title: '描述',\r\n resource: XProductCategoryDescriptionMaterial.resource?.name,\r\n },\r\n {\r\n title: '创建时间',\r\n resource: XProductCategoryCreatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '更新时间',\r\n resource: XProductCategoryUpdatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '所含产品',\r\n resource: XProductCategoryProductsMaterial.resource?.name,\r\n },\r\n {\r\n title: '分类链接',\r\n resource: XProudctCategoryLinkMaterial.resource?.name,\r\n },\r\n]\r\n\r\nexport const postCategoryFields: IResourceTreeNode[] = [\r\n {\r\n title: '名称',\r\n resource: XPostCategoryNameMaterial.resource?.name,\r\n },\r\n {\r\n title: '描述',\r\n resource: XPostCategoryDescriptionMaterial.resource?.name,\r\n },\r\n {\r\n title: '创建时间',\r\n resource: XPostCategoryCreatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '更新时间',\r\n resource: XPostCategoryUpdatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '所含文章',\r\n resource: XPostCategoryPostsMaterial.resource?.name,\r\n },\r\n {\r\n title: '分类链接',\r\n resource: XPostCategoryLinkMaterial.resource?.name,\r\n },\r\n]\r\n\r\nexport const productFields: IResourceTreeNode[] = [\r\n {\r\n title: '标题',\r\n resource: XProductTitleMaterial.resource?.name,\r\n },\r\n {\r\n title: '短标题',\r\n resource: XProductShortTitleMaterial.resource?.name,\r\n },\r\n {\r\n title: '封面',\r\n resource: XProductCoverMaterial.resource?.name,\r\n },\r\n {\r\n title: '媒体',\r\n resource: XProductMediasMaterial.resource?.name,\r\n },\r\n {\r\n title: '描述',\r\n resource: XProductDescriptionMaterial.resource?.name,\r\n },\r\n {\r\n title: '特色',\r\n resource: XProductFeaturesMaterial.resource?.name,\r\n },\r\n {\r\n title: '内容',\r\n resource: XProductContentMaterial.resource?.name,\r\n },\r\n {\r\n title: '内容2',\r\n resource: XProductContent2Material.resource?.name,\r\n },\r\n {\r\n title: '内容3',\r\n resource: XProductContent3Material.resource?.name,\r\n },\r\n {\r\n title: '发布时间',\r\n resource: XProductPublishedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '创建时间',\r\n resource: XProductCreatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '更新时间',\r\n resource: XProductUpdatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '所属分类',\r\n resource: XProductAssociationCategoryMaterial.resource?.name,\r\n },\r\n {\r\n title: '附件',\r\n resource: XProductAttachmentsMaterial.resource?.name,\r\n },\r\n {\r\n title: '相关产品',\r\n resource: XProductRelatedMaterial.resource?.name,\r\n },\r\n {\r\n title: '产品链接',\r\n resource: XProductLinkMaterial.resource?.name,\r\n },\r\n]\r\n\r\nexport const attachmentFields: IResourceTreeNode[] = [\r\n {\r\n title: '名称',\r\n resource: XAttachmentNameMaterial.resource?.name,\r\n },\r\n {\r\n title: '图标',\r\n resource: XAttachmentIconMaterial.resource?.name,\r\n },\r\n {\r\n title: '链接',\r\n resource: XAttachmentLinkMaterial.resource?.name,\r\n },\r\n]\r\n\r\nexport const postFields: IResourceTreeNode[] = [\r\n {\r\n title: '封面',\r\n resource: XPostCoverMaterial.resource?.name,\r\n },\r\n {\r\n title: '作者',\r\n resource: XPostAuthorMaterial.resource?.name,\r\n },\r\n {\r\n title: '标题',\r\n resource: XPostTitleMaterial.resource?.name,\r\n },\r\n {\r\n title: '描述',\r\n resource: XPostDescriptionMaterial.resource?.name,\r\n },\r\n {\r\n title: '内容',\r\n resource: XPostContentMaterial.resource?.name,\r\n },\r\n {\r\n title: '发布时间',\r\n resource: XPostPublishedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '创建时间',\r\n resource: XPostCreatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '更新时间',\r\n resource: XPostUpdatedAtMaterial.resource?.name,\r\n },\r\n {\r\n title: '所属分类',\r\n resource: XPostAssociationCategoryMaterial.resource?.name,\r\n },\r\n {\r\n title: '目录',\r\n resource: XPostOutlineMaterial.resource?.name,\r\n },\r\n {\r\n title: '文章链接',\r\n resource: XPostLinkMaterial.resource?.name,\r\n },\r\n]\r\n\r\n","\r\n\r\n//产品媒体 可以不需要在页面绑定,过于复杂,直接组件代码中写死\r\n\r\nimport { productCategoryFields, postFields, productFields, settingsFields, userFields, postCategoryFields, attachmentFields } from \"./fields\"\r\nimport { IResourceTreeNode } from \"../types\"\r\nimport { XProductListMaterial, XPostListMaterial, XProductCategoryMaterial, XProductCategoryListMaterial, XPostCategoryMaterial, XPostCategoryListMaterial, XSearchListMaterial, XFeaturedProductsMaterial, XLatestPostsMaterial, XPaginationMaterial, XPaginationPrevButtonMaterial, XPaginationNextButtonMaterial, XPaginationPagesMaterial, XPaginationPageIndexMaterial, XPaginationTotalMaterial, XPageTitleMaterial, XBreadcrumbsMaterial } from \"@rxdrag/website-materials\"\r\n\r\n//列表包含的字段\r\n// export enum ListFields {\r\n// items = \"items\",\r\n// pagination = \"pagination\",\r\n// //可通过slug、index、id 过滤items里面的数据\r\n// one = \"one\",\r\n// }\r\n\r\nexport const RELATED_ASSOCIATION_NAME = \"relatedProducts\"\r\n\r\n//页面上可以绑定的根数据源, $开头的是内置的数据源\r\n//query开头,是有查询操作\r\n\r\n\r\nexport const queryNodes: IResourceTreeNode[] = [\r\n {\r\n title: '产品列表',\r\n resource: XProductListMaterial.resource?.name,\r\n },\r\n {\r\n title: '文章列表',\r\n resource: XPostListMaterial.resource?.name,\r\n },\r\n {\r\n title: '产品分类',\r\n resource: XProductCategoryMaterial.resource?.name,\r\n },\r\n {\r\n title: '产品分类列表',\r\n resource: XProductCategoryListMaterial.resource?.name,\r\n },\r\n {\r\n title: '文章分类',\r\n resource: XPostCategoryMaterial.resource?.name,\r\n },\r\n {\r\n title: '文章分类列表',\r\n resource: XPostCategoryListMaterial.resource?.name,\r\n },\r\n {\r\n title: '搜索框',\r\n },\r\n {\r\n title: '搜索列表',\r\n resource: XSearchListMaterial.resource?.name,\r\n },\r\n {\r\n title: '推荐产品',\r\n resource: XFeaturedProductsMaterial.resource?.name,\r\n },\r\n {\r\n title: '最新文章',\r\n resource: XLatestPostsMaterial.resource?.name,\r\n },\r\n {\r\n title: '分页',\r\n resource: XPaginationMaterial.resource?.name,\r\n children: [\r\n {\r\n title: '上一页',\r\n resource: XPaginationPrevButtonMaterial.resource?.name,\r\n },\r\n {\r\n title: '下一页',\r\n resource: XPaginationNextButtonMaterial.resource?.name,\r\n },\r\n {\r\n title: '页码',\r\n resource: XPaginationPagesMaterial.resource?.name,\r\n },\r\n {\r\n title: '当前索引',\r\n resource: XPaginationPageIndexMaterial.resource?.name,\r\n },\r\n {\r\n title: '总页数',\r\n resource: XPaginationTotalMaterial.resource?.name,\r\n },\r\n ]\r\n }\r\n]\r\n\r\nexport const entityNodes: IResourceTreeNode[] = [\r\n {\r\n title: '产品',\r\n children: productFields,\r\n },\r\n {\r\n title: '文章',\r\n children: postFields,\r\n },\r\n {\r\n title: '产品分类',\r\n children: productCategoryFields,\r\n },\r\n {\r\n title: '文章分类',\r\n children: postCategoryFields,\r\n },\r\n {\r\n title: '用户',\r\n children: userFields,\r\n },\r\n {\r\n title: '网站配置',\r\n children: settingsFields,\r\n },\r\n {\r\n title: \"页面\",\r\n children: [\r\n {\r\n title: \"标题\",\r\n resource: XPageTitleMaterial.resource?.name,\r\n },\r\n {\r\n title: \"导航\",\r\n resource: XBreadcrumbsMaterial.resource?.name,\r\n },\r\n ]\r\n },\r\n {\r\n title: '附件',\r\n children: attachmentFields,\r\n }\r\n]\r\n","\r\nexport const locales = {\r\n \"zh-CN\": {\r\n title: \"文本\",\r\n settings: {\r\n }\r\n },\r\n 'en-US': {\r\n title: \"Inline Text\",\r\n settings: {\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const resourceLocales = {\r\n \"zh-CN\": {\r\n \"XText\": \"文本\",\r\n },\r\n 'en-US': {\r\n \"XText\": \"TeInline Text\",\r\n }\r\n}\r\n","import { IFieldMeta } from \"@rxdrag/fieldy-pro\";\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\";\r\n\r\nexport interface ISlotSchema {\r\n componentName?: string,\r\n name: string,\r\n label?: string,\r\n}\r\n\r\nexport function transSlotSchemas(schemas: ISlotSchema[]): INodeSchema<IFieldMeta>[] {\r\n return schemas.map((schema) => ({\r\n componentName: schema.componentName || \"SlotSwitch\",\r\n props: {\r\n name: schema.name\r\n },\r\n }))\r\n}","import { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { transSlotSchemas } from \"./transSlotSchemas\";\r\nimport { TPropsSchema } from \"./types\";\r\n\r\nexport function createSchema(\r\n options: TPropsSchema = {}\r\n): INodeSchema {\r\n const { propSchemas, propOraginSchemas, slotSchemas, noStyle, noAnimation } = options\r\n\r\n const otherTabs = []\r\n if (!noStyle) {\r\n otherTabs.push({ key: \"style\", label: \"样式\" })\r\n }\r\n\r\n if (!noAnimation) {\r\n otherTabs.push({ key: \"animation\", label: \"动画\" })\r\n }\r\n\r\n // if (!noData) {\r\n // otherTabs.push(createTab(\"数据\", \"data\"))\r\n // }\r\n\r\n const hasProps = propSchemas?.length || slotSchemas?.length || propOraginSchemas?.length\r\n const tabLists = hasProps\r\n ? [\r\n { key: \"props\", label: \"属性\" },\r\n ...otherTabs\r\n ]\r\n : otherTabs\r\n\r\n const createPanel = (children: INodeSchema[] | undefined, value: string, className?: string) => {\r\n return {\r\n componentName: \"TabPanel\",\r\n props: {\r\n value: value,\r\n },\r\n children: [\r\n {\r\n componentName: \"div\",\r\n props: {\r\n className: \"flex flex-col gap-2 \" + (className || \"\"),\r\n },\r\n children: children,\r\n }\r\n ]\r\n }\r\n }\r\n\r\n const propsPanel = createPanel(\r\n [\r\n ...(propSchemas || []).map((schema) => {\r\n return {\r\n ...schema,\r\n props:{\r\n ...schema.props,\r\n label: schema.xData?.label\r\n },\r\n }\r\n }),\r\n ...propOraginSchemas || [],\r\n ...transSlotSchemas(slotSchemas || [])],\r\n \"props\",\r\n \"p-4 pl-6\",\r\n )\r\n\r\n const stylePanel = createPanel([\r\n {\r\n componentName: \"TailwindStyle\",\r\n \"xData\": {\r\n name: \"props.className\",\r\n },\r\n }\r\n ], \"style\")\r\n const animationPanel = createPanel([\r\n {\r\n componentName: \"Animation\",\r\n \"xData\": {\r\n name: \"xMotion\",\r\n },\r\n }\r\n ], \"animation\")\r\n\r\n\r\n const otherPanels = []\r\n if (!noStyle) {\r\n otherPanels.push(stylePanel)\r\n }\r\n if (!noAnimation) {\r\n otherPanels.push(animationPanel)\r\n }\r\n\r\n\r\n const tabPanels = hasProps\r\n ? [\r\n propsPanel,\r\n ...otherPanels,\r\n ]\r\n : otherPanels\r\n\r\n return {\r\n componentName: \"Tabs\",\r\n props: {\r\n defaultValue: hasProps ? \"props\" : \"style\",\r\n },\r\n children: [\r\n {\r\n componentName: \"TabsHead\",\r\n props: {\r\n items: tabLists\r\n },\r\n },\r\n ...tabPanels,\r\n ]\r\n }\r\n}\r\n","import { createSchema } from \"../../shared\";\r\n\r\nexport const schema = createSchema({\r\n propSchemas: [\r\n {\r\n componentName: \"Input\",\r\n \"xData\": {\r\n name: \"props.content\",\r\n label: \"$content\",\r\n },\r\n },\r\n ]\r\n});","import { IMaterial } from \"@rxdrag/react-core-pro\";\r\nimport { locales, resourceLocales } from \"./locales\";\r\nimport { schema } from \"./schema\";\r\n\r\nconst xTextName = \"XText\"\r\nexport const XTextMaterial: IMaterial = {\r\n componentName: xTextName,\r\n component: \"span\",\r\n designer: \"span\",\r\n designerLocales: locales,\r\n propsSchema: schema,\r\n resource: {\r\n name: xTextName,\r\n resourceLocales: resourceLocales,\r\n elements: [\r\n {\r\n componentName: xTextName,\r\n props: {\r\n content: xTextName,\r\n }\r\n }\r\n ]\r\n },\r\n behaviorRule: {\r\n droppable: true,\r\n hasPlaceholder: true,\r\n isVoid: false,\r\n },\r\n}\r\n","\r\n\r\nimport { XParagraphMaterial, XIconMaterial, XMenuMaterial, XModalMaterial, XModalCloseMaterial, RouteLinkMaterial, XSearchMaterial, XToTopMaterial, XSectionMaterial, XBoxMaterial, RoutePageMaterial, AMaterial, creatHtmlMaterial, XFormMaterial, XFormEmailMaterial, XFormCompanyMaterial, XFormMessageMaterial, XFormNameMaterial, XFormTelMaterial, XSubmitMaterial, xHeading1Resource, xHeading2Resource, xHeading3Resource, xHeading4Resource, ImgMaterial, XDateMaterial, XAnimationNumberMaterial, xRowName, xColName, XShareMaterial, XTabsMaterial, XTabsNavTitleMaterial, XTabPanelMaterial } from \"@rxdrag/website-materials\";\r\nimport { IResourceTreeNode } from \"./types\";\r\nimport { entityNodes, queryNodes } from \"./data\";\r\nimport { XTextMaterial } from \"@rxdrag/website-materials/src/materials/XText\";\r\n\r\nexport const resourceTreeNodes: IResourceTreeNode[] = [\r\n {\r\n title: \"文本\",\r\n children: [\r\n {\r\n title: '标题 1',\r\n resource: xHeading1Resource,\r\n },\r\n {\r\n title: '标题 2',\r\n resource: xHeading2Resource,\r\n },\r\n {\r\n title: '标题 3',\r\n resource: xHeading3Resource,\r\n },\r\n {\r\n title: '标题 4',\r\n resource: xHeading4Resource,\r\n },\r\n {\r\n title: '段落',\r\n resource: XParagraphMaterial.resource?.name,\r\n },\r\n {\r\n title: '文本',\r\n resource: XTextMaterial.resource?.name,\r\n },\r\n {\r\n title: '日期',\r\n resource: XDateMaterial.resource?.name,\r\n },\r\n {\r\n title: '斜体',\r\n },\r\n {\r\n title: '粗体',\r\n },\r\n {\r\n title: '删除线',\r\n },\r\n {\r\n title: '下划线',\r\n },\r\n {\r\n title: '上标',\r\n },\r\n {\r\n title: '下标',\r\n }\r\n ]\r\n },\r\n {\r\n title: \"媒体\",\r\n children: [\r\n {\r\n title: '图片',\r\n resource: ImgMaterial.resource?.name,\r\n\r\n },\r\n {\r\n title: '视频',\r\n\r\n },\r\n {\r\n title: '图标',\r\n resource: XIconMaterial.resource?.name,\r\n },\r\n ]\r\n },\r\n {\r\n title: \"控件\",\r\n children: [\r\n {\r\n title: '下拉菜单',\r\n resource: XMenuMaterial.resource?.name,\r\n },\r\n {\r\n title: '对话框',\r\n resource: XModalMaterial.resource?.name,\r\n },\r\n {\r\n title: '对话框关闭按钮',\r\n resource: XModalCloseMaterial.resource?.name,\r\n },\r\n {\r\n title: '路由',\r\n resource: RouteLinkMaterial.resource?.name,\r\n },\r\n {\r\n title: '搜索框',\r\n resource: XSearchMaterial.resource?.name,\r\n },\r\n {\r\n title: '分享',\r\n resource: XShareMaterial.resource?.name,\r\n },\r\n {\r\n title: '回到顶部',\r\n resource: XToTopMaterial.resource?.name,\r\n },\r\n {\r\n title: '动画数字',\r\n resource: XAnimationNumberMaterial.resource?.name,\r\n },\r\n ]\r\n },\r\n {\r\n title: \"布局\",\r\n children: [\r\n {\r\n title: '区块',\r\n resource: XSectionMaterial.resource?.name,\r\n },\r\n {\r\n title: '盒子',\r\n resource: XBoxMaterial.resource?.name,\r\n },\r\n {\r\n title: '2列布局',\r\n },\r\n {\r\n title: '3列布局',\r\n },\r\n {\r\n title: '4列布局',\r\n resource: {\r\n name: \"4columns-layout\",\r\n elements: [\r\n {\r\n componentName: xRowName,\r\n props: {\r\n className: \"flex items-start flex-wrap\"\r\n },\r\n children: [\r\n {\r\n componentName: xColName,\r\n props: {\r\n className: \"w-1/4\"\r\n },\r\n },\r\n {\r\n componentName: xColName,\r\n props: {\r\n className: \"w-1/4\"\r\n },\r\n },\r\n {\r\n componentName: xColName,\r\n props: {\r\n className: \"w-1/4\"\r\n },\r\n },\r\n {\r\n componentName: xColName,\r\n props: {\r\n className: \"w-1/4\"\r\n },\r\n },\r\n ]\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n title: '2x2布局',\r\n },\r\n {\r\n title: '页面区',\r\n resource: RoutePageMaterial.resource?.name,\r\n },\r\n {\r\n title: '选项卡',\r\n resource: XTabsMaterial.resource?.name,\r\n },\r\n {\r\n title: '选项卡导航标题',\r\n resource: XTabsNavTitleMaterial.resource?.name,\r\n },\r\n {\r\n title: '选项卡内容面板',\r\n resource: XTabPanelMaterial.resource?.name,\r\n }\r\n ]\r\n },\r\n\r\n {\r\n title: \"表单\",\r\n children: [\r\n {\r\n title: \"表单\",\r\n resource: XFormMaterial.resource?.name,\r\n },\r\n {\r\n title: \"邮箱\",\r\n resource: XFormEmailMaterial.resource?.name,\r\n },\r\n {\r\n title: \"姓名\",\r\n resource: XFormNameMaterial.resource?.name,\r\n },\r\n {\r\n title: \"公司\",\r\n resource: XFormCompanyMaterial.resource?.name,\r\n },\r\n {\r\n title: \"电话\",\r\n resource: XFormTelMaterial.resource?.name,\r\n },\r\n {\r\n title: \"内容\",\r\n resource: XFormMessageMaterial.resource?.name,\r\n },\r\n {\r\n title: \"提交\",\r\n resource: XSubmitMaterial.resource?.name,\r\n },\r\n ]\r\n },\r\n {\r\n title: '数据查询',\r\n children: queryNodes,\r\n },\r\n {\r\n title: '字段绑定',\r\n children: entityNodes,\r\n },\r\n {\r\n title: \"HTML 标签\",\r\n children: [\r\n {\r\n title: 'a',\r\n resource: AMaterial.resource?.name\r\n },\r\n {\r\n title: 'div',\r\n resource: creatHtmlMaterial(\"div\").resource?.name\r\n },\r\n {\r\n title: 'span',\r\n resource: creatHtmlMaterial(\"span\").resource?.name\r\n },\r\n {\r\n title: 'button',\r\n },\r\n ]\r\n },\r\n]\r\n","import { IResource, IResourceNode } from \"@rxdrag/core-pro\";\r\nimport { useDesignerEngine, useResourceNode } from \"@rxdrag/react-core-pro\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport function useOrRegisterRecouceNode(resouce?: string | IResource) {\r\n const [registeredNode, setRegisteredNode] = useState<IResourceNode<React.ReactNode>>()\r\n const resourceNode = useResourceNode(typeof resouce === \"string\" ? resouce : \"\")\r\n\r\n //注册Resource节点\r\n const engine = useDesignerEngine()\r\n\r\n useEffect(() => {\r\n if (engine) {\r\n if (typeof resouce !== \"string\" && resouce) {\r\n engine.getResourceManager().registerResources(resouce)\r\n setRegisteredNode(engine.getResourceManager().getResourceByName(resouce.name) as IResourceNode<React.ReactNode>)\r\n }\r\n\r\n return () => {\r\n if (typeof resouce !== \"string\" && resouce) {\r\n engine.getResourceManager().unregisterResources(resouce.name)\r\n }\r\n }\r\n }\r\n }, [engine, resouce])\r\n\r\n return typeof resouce === \"string\" ? resourceNode : registeredNode\r\n}","import { GroupNode, LeafNode } from \"@rxdrag/rxcms-common\";\r\nimport { useOrRegisterRecouceNode } from \"./WebComponents/useOrRegisterRecouceNode\";\r\nimport { IResourceTreeNode } from \"../../resources\";\r\nimport { cn } from \"@nextui-org/react\";\r\nimport { leafIcon } from \"./utils\";\r\n\r\nexport default function MaterialNodeView(props: {\r\n node: IResourceTreeNode\r\n}) {\r\n const { node } = props\r\n const resourceNode = useOrRegisterRecouceNode(node.resource)\r\n\r\n return (\r\n !node.children?.length\r\n ? <LeafNode\r\n icon={leafIcon}\r\n className={cn(\"text-sm\")}\r\n {...resourceNode?.rxProps}\r\n >\r\n {node.title || resourceNode?.title}\r\n {\r\n node?.resource && node?.subtitle\r\n }\r\n </LeafNode>\r\n : <GroupNode\r\n title={node.title}\r\n //clickOpen\r\n icon={null}\r\n className={cn(\"text-sm\")}\r\n {...resourceNode?.rxProps}\r\n >\r\n {\r\n node.children?.map((child) => {\r\n return (\r\n <MaterialNodeView key={child.title} node={child} />\r\n )\r\n })\r\n }\r\n </GroupNode>\r\n )\r\n}\r\n","import { resourceTreeNodes } from '../../../resources';\r\nimport MaterialNodeView from '../MaterialNodeView';\r\n\r\nexport function WebComponents() {\r\n\r\n return (\r\n <>\r\n {\r\n resourceTreeNodes.map((node) => {\r\n return (\r\n <MaterialNodeView key={node.title} node={node} />\r\n )\r\n })\r\n }\r\n </>\r\n );\r\n}\r\n","import { EntityEditModal } from '@rxdrag/rxcms-models-ui'\r\nimport { Page, PageEntityName, pageToInput, PageType } from '@rxdrag/rxcms-models';\r\nimport { TitleAndSlug } from '@rxdrag/biz-components';\r\n\r\nexport function PageModal(\r\n props: {\r\n websiteId: string,\r\n value?: Page,\r\n onClose?: () => void,\r\n onFilter?: (value: Page) => Page\r\n }\r\n) {\r\n const { websiteId, onFilter, ...rest } = props\r\n return (\r\n <EntityEditModal<Page>\r\n entityName={PageEntityName}\r\n entityLabel='页面'\r\n initialValue={{\r\n website: { id: websiteId },\r\n pageType: PageType.Customized,\r\n }}\r\n entityToInput={pageToInput}\r\n onFilter={onFilter}\r\n classNames={{\r\n content: \"max-w-sm\"\r\n }}\r\n {...rest}\r\n >\r\n <div className='flex flex-col gap-4'>\r\n <TitleAndSlug titleField='title' />\r\n {/* <InputField\r\n name=\"seqValue\"\r\n label=\"顺序\"\r\n type=\"number\"\r\n labelPlacement='outside'\r\n placeholder='请输入顺序'\r\n /> */}\r\n </div>\r\n </EntityEditModal>\r\n )\r\n}","import { LeafNode } from \"@rxdrag/rxcms-common\";\r\nimport { Page } from \"@rxdrag/rxcms-models\";\r\nimport { useRemoveRow, useEditRow } from \"@rxdrag/rxcms-models-ui\";\r\nimport React from \"react\";\r\nimport { Button, cn, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from \"@nextui-org/react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { leafIcon } from \"../utils\";\r\n\r\nexport function PageNode(\r\n props: {\r\n className?: string\r\n page: Page,\r\n selected?: boolean\r\n onSelect?: (id: string | null) => void\r\n }\r\n) {\r\n const { className, page, selected, onSelect } = props\r\n const [open, setOpen] = React.useState(false)\r\n const [remove, { isMutating }] = useRemoveRow()\r\n const edit = useEditRow()\r\n\r\n const handleOpenChange = React.useCallback((open: boolean) => {\r\n setOpen(open)\r\n }, [])\r\n\r\n const handleClick = React.useCallback(() => {\r\n onSelect?.(page.id || null)\r\n }, [onSelect, page.id])\r\n\r\n return (\r\n <LeafNode\r\n fiexdAction={open || isMutating}\r\n hover={open || isMutating}\r\n icon={leafIcon}\r\n className={cn(\"text-sm\", className)}\r\n selected={selected}\r\n actions={\r\n <Dropdown\r\n onOpenChange={handleOpenChange}\r\n >\r\n <DropdownTrigger>\r\n <Button\r\n isLoading={isMutating}\r\n isIconOnly\r\n variant=\"light\"\r\n size=\"sm\"\r\n >\r\n <Icon icon=\"mdi:more-horiz\" className=\"size-5 text-default-600\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu aria-label=\"Actions\">\r\n <DropdownItem\r\n key=\"edit\"\r\n onClick={edit}\r\n >\r\n 编辑\r\n </DropdownItem>\r\n\r\n <DropdownItem\r\n key=\"remove\"\r\n color=\"danger\"\r\n onClick={() => remove()}\r\n >\r\n 删除\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n }\r\n onClick={handleClick}\r\n >\r\n {page.title}\r\n </LeafNode>\r\n )\r\n}","import { Page } from \"@rxdrag/rxcms-models\"\r\nimport { EntityRowScope, useListData } from \"@rxdrag/rxcms-models-ui\"\r\nimport { PageModal } from \"./PageModal\"\r\nimport { PageNode } from \"./PageNode\"\r\n\r\nexport function PageList(\r\n props: {\r\n websiteId: string\r\n selectedId?: string | null\r\n onSelect?: (id: string | null) => void\r\n onClearNewPage?: () => void\r\n }\r\n) {\r\n const { websiteId, selectedId, onSelect, onClearNewPage } = props\r\n\r\n const data = useListData<Page>()\r\n\r\n return (\r\n <>\r\n {\r\n data?.items?.map((item) => {\r\n return (\r\n <EntityRowScope key={item.id} row={item}>\r\n <PageNode\r\n page={item}\r\n selected={item.id === selectedId}\r\n onSelect={onSelect}\r\n />\r\n </EntityRowScope>\r\n )\r\n })\r\n }\r\n {\r\n \r\n <PageModal\r\n websiteId={websiteId}\r\n onClose={onClearNewPage}\r\n />\r\n }\r\n </>\r\n )\r\n}","import { LeafNode, StyledTooltip } from \"@rxdrag/rxcms-common\";\r\nimport { Template } from \"@rxdrag/rxcms-models\";\r\nimport { useRemoveRow, useEditRow } from \"@rxdrag/rxcms-models-ui\";\r\nimport React, { useEffect } from \"react\";\r\nimport { RxProps, useDesignerEngine } from \"@rxdrag/react-core-pro\";\r\nimport { Button, cn, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from \"@nextui-org/react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { leafIcon } from \"../utils\";\r\n\r\nexport function TemplateNode(\r\n props: {\r\n template: Template,\r\n readonly?: boolean;\r\n categoryId: string | undefined | null;\r\n selectedId?: string | null;\r\n onSelect?: (id: string | null) => void;\r\n showThumbnail?: boolean;\r\n }\r\n) {\r\n const { template, readonly, selectedId, onSelect, showThumbnail } = props\r\n const [open, setOpen] = React.useState(false)\r\n const [remove, { isMutating }] = useRemoveRow()\r\n const [rxProps, setRxProps] = React.useState<RxProps>()\r\n //const [selectedId] = useRecoilState(selectedTemplateIdState)\r\n const engine = useDesignerEngine()\r\n const edit = useEditRow()\r\n\r\n useEffect(() => {\r\n if (engine) {\r\n engine.getResourceManager().registerResources({\r\n name: template.id || '',\r\n title: template.name,\r\n elements: template.content?.elements || [],\r\n })\r\n\r\n const props = engine.getResourceManager().getResourceByName(template.id || '')?.rxProps\r\n if (props) {\r\n setRxProps(props)\r\n }\r\n return () => {\r\n engine.getResourceManager().unregisterResources(template.id || '')\r\n }\r\n }\r\n }, [engine, /*selectedId,*/ template.content, template.id, template.name])\r\n\r\n const handleOpenChange = React.useCallback((open: boolean) => {\r\n setOpen(open)\r\n }, [])\r\n\r\n const handleClick = React.useCallback(() => {\r\n onSelect?.(template.id || null)\r\n }, [onSelect, template.id])\r\n\r\n return (\r\n <StyledTooltip\r\n placement=\"right\"\r\n content={\"模板预览\"}\r\n showArrow={false}\r\n hidden={!showThumbnail}\r\n >\r\n <LeafNode\r\n fiexdAction={open || isMutating}\r\n hover={open || isMutating}\r\n icon={leafIcon}\r\n selected={selectedId === template.id}\r\n actions={!readonly &&\r\n <Dropdown\r\n onOpenChange={handleOpenChange}\r\n >\r\n <DropdownTrigger>\r\n <Button\r\n isLoading={isMutating}\r\n isIconOnly\r\n size=\"sm\"\r\n variant=\"light\"\r\n >\r\n <Icon icon=\"mdi:more-horiz\" className=\"size-5 text-default-600\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu aria-label=\"Actions\">\r\n <DropdownItem\r\n key=\"edit\"\r\n onClick={edit}\r\n showDivider={true}\r\n >\r\n 编辑\r\n </DropdownItem>\r\n\r\n <DropdownItem\r\n key=\"remove\"\r\n color=\"danger\"\r\n onClick={() => remove()}\r\n >\r\n 删除\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n }\r\n className={\r\n cn(\"text-sm\")\r\n }\r\n onClick={!readonly ? handleClick : undefined}\r\n {...rxProps}\r\n >\r\n {template.name}\r\n </LeafNode>\r\n </StyledTooltip>\r\n )\r\n}","import { Template, TemplateCategory, TemplateEntityName } from \"@rxdrag/rxcms-models\"\r\nimport { EntityListScope, EntityRowScope } from \"@rxdrag/rxcms-models-ui\"\r\nimport { TemplateModal } from \"./TemplateModal\"\r\nimport { ListResult } from \"@rxdrag/entify-hooks\"\r\nimport { TemplateNode } from \"./TemplateNode\"\r\n\r\nexport function TemplateList(\r\n props: {\r\n themeId: string\r\n websiteId: string\r\n readonly?: boolean\r\n list?: ListResult<Template>\r\n category?: TemplateCategory\r\n newTemplate?: Template\r\n noCagegory?: boolean\r\n onClearNewTemplate?: () => void\r\n selectedId?: string | null\r\n onSelect?: (id: string | null) => void\r\n }\r\n) {\r\n const { themeId, websiteId, readonly, list, category, newTemplate, noCagegory, onClearNewTemplate, selectedId, onSelect } = props\r\n\r\n return (\r\n <EntityListScope<Template>\r\n entityName={TemplateEntityName}\r\n data={list}\r\n >\r\n {\r\n list?.items?.map((item) => {\r\n return (\r\n <EntityRowScope key={item.id} row={item}>\r\n <TemplateNode\r\n selectedId={selectedId}\r\n onSelect={onSelect}\r\n template={item}\r\n readonly={readonly}\r\n categoryId={category?.id}\r\n />\r\n </EntityRowScope>\r\n )\r\n })\r\n }\r\n {\r\n !readonly && <TemplateModal\r\n themeId={themeId}\r\n websiteId={websiteId}\r\n value={newTemplate}\r\n noCagegory={noCagegory}\r\n //categories={categories}\r\n onClose={onClearNewTemplate}\r\n categoryId={category?.id}\r\n />\r\n }\r\n\r\n </EntityListScope>\r\n )\r\n}","import { Template, TemplateCategory } from \"@rxdrag/rxcms-models\";\r\nimport { memo, useMemo } from \"react\";\r\nimport { GroupNode } from \"@rxdrag/rxcms-common\";\r\nimport React from \"react\";\r\nimport { useEditRow, useRemoveRow } from \"@rxdrag/rxcms-models-ui\";\r\nimport { TemplateList } from \"./TemplateList\";\r\nimport { useTemplates } from \"../../StudioRoot\";\r\nimport { Button, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from \"@nextui-org/react\";\r\nimport { Icon } from \"@iconify/react\";\r\n\r\nexport const TemplateCategoryNode = memo((props: {\r\n category: TemplateCategory,\r\n //categories?: TemplateCategory[],\r\n themeId: string,\r\n websiteId: string,\r\n readonly?: boolean,\r\n selectedId?: string | null\r\n onSelect?: (id: string | null, breadcrumbs: string[]) => void\r\n}) => {\r\n const { category: templateCategory, themeId, websiteId, readonly, selectedId, onSelect } = props\r\n const [open, setOpen] = React.useState(false)\r\n const [remove, { isMutating }] = useRemoveRow()\r\n const [newTemplate, setNewTamplate] = React.useState<Template>()\r\n\r\n const edit = useEditRow()\r\n const templates = useTemplates()\r\n\r\n const templatesInCategory = useMemo(\r\n () => templates?.filter((item) => item.category?.id === templateCategory.id),\r\n [templates, templateCategory.id]\r\n )\r\n\r\n const handleOpenChange = React.useCallback((open: boolean) => {\r\n setOpen(open)\r\n }, [])\r\n\r\n const handleNewTemplate = React.useCallback(() => {\r\n setNewTamplate({\r\n category: { id: templateCategory.id },\r\n theme: { id: themeId },\r\n website: { id: websiteId },\r\n })\r\n setOpen(false)\r\n }, [templateCategory.id, themeId, websiteId])\r\n\r\n const handleEdit = React.useCallback(() => {\r\n edit()\r\n setOpen(false)\r\n }, [edit])\r\n\r\n const data = useMemo(() => {\r\n return {\r\n items: templatesInCategory\r\n }\r\n }, [templatesInCategory])\r\n\r\n return (\r\n <GroupNode\r\n title={templateCategory.name}\r\n icon={null}\r\n fiexdAction={open || isMutating}\r\n classNames={{\r\n title: \"text-sm\"\r\n }}\r\n defaultExpanded={!!data.items?.find((item) => item.id === selectedId)}\r\n action={!readonly &&\r\n <Dropdown\r\n onOpenChange={handleOpenChange}\r\n >\r\n <DropdownTrigger>\r\n <Button\r\n isLoading={isMutating}\r\n isIconOnly\r\n variant=\"light\"\r\n size=\"sm\"\r\n >\r\n <Icon icon=\"mdi:more-horiz\" className=\"size-5 text-default-600\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu aria-label=\"Actions\">\r\n <DropdownItem\r\n key=\"add\"\r\n onClick={handleNewTemplate}\r\n >\r\n 添加模板\r\n </DropdownItem>\r\n <DropdownItem\r\n key=\"edit\"\r\n onClick={handleEdit}\r\n showDivider={true}\r\n >\r\n 编辑\r\n </DropdownItem>\r\n <DropdownItem\r\n key=\"remove\"\r\n color=\"danger\"\r\n onClick={() => remove()}\r\n >\r\n 删除\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n }\r\n >\r\n <TemplateList\r\n category={templateCategory}\r\n themeId={themeId}\r\n websiteId={websiteId}\r\n readonly={readonly}\r\n list={data}\r\n newTemplate={newTemplate}\r\n selectedId={selectedId}\r\n onSelect={(id) => onSelect?.(id, [templateCategory.name || \"\"])}\r\n onClearNewTemplate={() => setNewTamplate(undefined)}\r\n />\r\n </GroupNode>\r\n )\r\n})","import { EntityRowScope, useListData } from \"@rxdrag/rxcms-models-ui\";\r\nimport { TemplateCategory } from \"@rxdrag/rxcms-models\";\r\nimport { TemplateCategoryNode } from \"./TemplateCategoryNode\";\r\n\r\nexport function TemplateCategoryList(\r\n props: {\r\n websiteId: string;\r\n readonly?: boolean;\r\n selectedId?: string | null\r\n onSelect?: (id: string | null, breadcrumbs:string[]) => void\r\n }\r\n) {\r\n const { websiteId, readonly, selectedId, onSelect } = props\r\n const data = useListData<TemplateCategory>()\r\n\r\n return (\r\n <>\r\n {\r\n data?.items?.map((item) => {\r\n return (\r\n <EntityRowScope row={item} key={item.id}>\r\n {\r\n item.theme?.id && <TemplateCategoryNode\r\n category={item}\r\n themeId={item.theme?.id}\r\n selectedId={selectedId}\r\n onSelect = {onSelect}\r\n websiteId={websiteId}\r\n readonly={readonly}\r\n />\r\n }\r\n </EntityRowScope>\r\n )\r\n })\r\n }\r\n </>\r\n )\r\n}","import { OrderBy } from \"@rxdrag/entify-hooks\";\r\nimport { TemplateCategory, TemplateCategoryFields, TemplateCategoryQueryOptions, TemplateCategoryBoolExp, TemplateCategoryOrderBy, TemplateCategoryDistinctExp } from \"@rxdrag/rxcms-models\";\r\nimport { QueryListScope } from \"@rxdrag/rxcms-models-ui\";\r\n\r\nexport function TemplateCategoryListScope(\r\n props: {\r\n websiteId?: string | null;\r\n themeId?: string | null;\r\n children: React.ReactNode;\r\n }\r\n) {\r\n const { websiteId, themeId, children } = props;\r\n\r\n return (\r\n themeId &&\r\n <QueryListScope<TemplateCategory, TemplateCategoryBoolExp, TemplateCategoryOrderBy, TemplateCategoryDistinctExp>\r\n options={\r\n new TemplateCategoryQueryOptions(\r\n [\r\n TemplateCategoryFields.id,\r\n TemplateCategoryFields.name,\r\n TemplateCategoryFields.seqValue,\r\n TemplateCategoryFields.updatedAt,\r\n ],\r\n {\r\n where: {\r\n theme: {\r\n id: {\r\n _eq: themeId,\r\n }\r\n },\r\n website: {\r\n id: {\r\n _eq: websiteId\r\n }\r\n },\r\n },\r\n orderBy: [\r\n {\r\n [TemplateCategoryFields.seqValue]: OrderBy.asc,\r\n },\r\n {\r\n [TemplateCategoryFields.updatedAt]: OrderBy.asc,\r\n }\r\n ]\r\n }\r\n ).theme()\r\n }\r\n >\r\n {children}\r\n </QueryListScope>\r\n )\r\n}","import { EntityEditModal } from '@rxdrag/rxcms-models-ui'\r\nimport { ComponentCategory, ComponentCategoryEntityName, componentCategoryToInput } from '@rxdrag/rxcms-models';\r\nimport { InputField } from '@rxdrag/fieldy-nextui';\r\n\r\nexport function ComponentCategoryModal(\r\n props: {\r\n themeId: string,\r\n onClose?: () => void,\r\n }\r\n) {\r\n const { themeId, onClose } = props\r\n\r\n return (\r\n <EntityEditModal<ComponentCategory>\r\n entityName={ComponentCategoryEntityName}\r\n entityLabel='组件分类'\r\n initialValue={{\r\n theme: { id: themeId },\r\n }}\r\n classNames={{\r\n content: \"max-w-sm\"\r\n }}\r\n entityToInput={componentCategoryToInput}\r\n onClose={onClose}\r\n >\r\n <div className='flex flex-col'>\r\n <InputField\r\n name=\"name\"\r\n label=\"名称\"\r\n validateSchema={{\r\n type: 'string',\r\n required: true,\r\n }}\r\n labelPlacement='outside'\r\n placeholder='请输入名称'\r\n />\r\n\r\n <InputField\r\n name=\"seqValue\"\r\n label=\"顺序\"\r\n type=\"number\"\r\n labelPlacement='outside'\r\n placeholder='请输入顺序'\r\n />\r\n </div>\r\n </EntityEditModal>\r\n )\r\n}","import { GroupNode } from '@rxdrag/rxcms-common';\r\nimport { FrontComponent } from '@rxdrag/rxcms-models';\r\nimport { useNewRow } from '@rxdrag/rxcms-models-ui';\r\nimport React, { useMemo } from 'react';\r\nimport { useFrontComponents } from '../../StudioRoot';\r\nimport { ComponentCategoryList } from '../../common';\r\nimport { ComponentList } from '../../common/ComponentCategoryList/ComponentList';\r\nimport { ComponentCategoryModal } from '../../common/ComponentCategoryList/ComponentCategoryModal';\r\nimport { Button, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from '@nextui-org/react';\r\nimport { Icon } from '@iconify/react';\r\nimport { ContentType, SelectedContent } from '../../../types';\r\n\r\n\r\nexport function ComponentsRootNode(\r\n props: {\r\n themeId?: string | null,\r\n readonly?: boolean\r\n selectedContent?: SelectedContent\r\n onSelectContent?: (content: SelectedContent) => void\r\n }\r\n) {\r\n const { themeId, readonly, selectedContent, onSelectContent } = props\r\n const [open, setOpen] = React.useState(false)\r\n const [newComponent, setNewComponent] = React.useState<FrontComponent>()\r\n\r\n const handleNewCagegory = useNewRow();\r\n const components = useFrontComponents()\r\n\r\n const comsNoCategory = useMemo(\r\n () => components?.filter((item) => !item.category?.id),\r\n [components]\r\n )\r\n\r\n\r\n const handleNewComponent = React.useCallback(() => {\r\n setNewComponent({\r\n theme: { id: themeId },\r\n })\r\n // setOpen(false)\r\n }, [themeId])\r\n\r\n\r\n const handleOpenChange = React.useCallback((open: boolean) => {\r\n setOpen(open)\r\n }, [])\r\n\r\n const data = useMemo(() => {\r\n return {\r\n items: comsNoCategory\r\n }\r\n }, [comsNoCategory])\r\n\r\n const handleSelect = React.useCallback((id: string | null, breadcrumbs?: string[]) => {\r\n const component = components?.find((item) => item.id === id)\r\n if (id) {\r\n onSelectContent?.({\r\n type: ContentType.Component,\r\n id,\r\n breadcrumbs: [\"自定义组件\", ...(breadcrumbs || []), component?.name || \"\"]\r\n })\r\n }\r\n }, [onSelectContent, components])\r\n\r\n if (!themeId) {\r\n return null\r\n }\r\n\r\n return (\r\n <>\r\n <GroupNode\r\n title={\"自定义组件\"}\r\n fiexdAction={open}\r\n icon={null}\r\n classNames={{\r\n title: \"text-sm font-semibold\",\r\n }}\r\n defaultExpanded={selectedContent?.type === ContentType.Component}\r\n action={<Dropdown\r\n onOpenChange={handleOpenChange}\r\n >\r\n <DropdownTrigger>\r\n <Button\r\n size='sm'\r\n variant='light'\r\n isIconOnly\r\n >\r\n <Icon icon=\"mdi:more-horiz\" className=\"size-5 text-default-600\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu\r\n aria-label=\"自定义组件菜单\"\r\n >\r\n <DropdownItem\r\n onClick={handleNewCagegory}\r\n >\r\n 添加分类\r\n </DropdownItem>\r\n <DropdownItem\r\n onClick={handleNewComponent}\r\n >\r\n 添加组件\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>}\r\n >\r\n <ComponentCategoryList\r\n selectedId={selectedContent?.id}\r\n onSelect={handleSelect}\r\n />\r\n <ComponentList\r\n themeId={themeId}\r\n readonly={readonly}\r\n list={data}\r\n newComponent={newComponent}\r\n selectedId={selectedContent?.id}\r\n onSelect={handleSelect}\r\n onClearNewComponent={() => setNewComponent(undefined)}\r\n />\r\n </GroupNode>\r\n <ComponentCategoryModal\r\n themeId={themeId}\r\n />\r\n </>\r\n )\r\n}","import { EntityEditModal } from '@rxdrag/rxcms-models-ui'\r\nimport { TemplateCategory, TemplateCategoryEntityName, templateCategoryToInput } from '@rxdrag/rxcms-models';\r\nimport { InputField } from '@rxdrag/fieldy-nextui';\r\n\r\nexport function TemplateCategoryModal(\r\n props: {\r\n websiteId: string,\r\n themeId: string,\r\n onClose?: () => void,\r\n title?: string\r\n }\r\n) {\r\n const { websiteId, themeId, onClose, title } = props\r\n\r\n return (\r\n <EntityEditModal<TemplateCategory>\r\n entityName={TemplateCategoryEntityName}\r\n entityLabel={title || '模板分类'}\r\n initialValue={{\r\n theme: { id: themeId },\r\n website: { id: websiteId },\r\n }}\r\n classNames={{\r\n content: \"max-w-sm\"\r\n }}\r\n entityToInput={templateCategoryToInput}\r\n onClose={onClose}\r\n >\r\n <div className='flex flex-col gap-4'>\r\n <InputField\r\n autoFocus\r\n name=\"name\"\r\n label=\"名称\"\r\n labelPlacement='outside'\r\n placeholder='请输入名称'\r\n validateSchema={{\r\n type: 'string',\r\n required: true,\r\n }}\r\n />\r\n <InputField\r\n type='number'\r\n name=\"seqValue\"\r\n label=\"顺序\"\r\n labelPlacement='outside'\r\n placeholder='请输入顺序'\r\n />\r\n </div>\r\n </EntityEditModal>\r\n )\r\n}","import { GroupNode } from '@rxdrag/rxcms-common';\r\nimport { Template} from '@rxdrag/rxcms-models';\r\nimport { useNewRow } from '@rxdrag/rxcms-models-ui';\r\nimport React, { useMemo } from 'react';\r\nimport { useTemplates } from '../../StudioRoot';\r\nimport { TemplateCategoryModal } from '../../common/TemplateCategoryList/TemplateCategoryModal';\r\nimport { TemplateList } from '../../common/TemplateCategoryList/TemplateList';\r\nimport { TemplateCategoryList } from '../../common';\r\nimport { Button, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from '@nextui-org/react';\r\nimport { Icon } from '@iconify/react';\r\nimport { ContentType, SelectedContent } from '../../../types';\r\n\r\nexport function SectionsNode(\r\n props: {\r\n themeId?: string,\r\n websiteId: string,\r\n readonly?: boolean\r\n selectedContent?: SelectedContent\r\n onSelectContent?: (content: SelectedContent) => void\r\n }\r\n) {\r\n const { themeId, websiteId, readonly, selectedContent, onSelectContent } = props\r\n const [open, setOpen] = React.useState(false)\r\n const [newTemplate, setNewTamplate] = React.useState<Template>()\r\n\r\n const handleNewCagegory = useNewRow();\r\n const templates = useTemplates()\r\n\r\n const templatesNoCategory = useMemo(\r\n () => templates?.filter((item) => !item.category?.id),\r\n [templates]\r\n )\r\n\r\n\r\n const handleNewTemplate = React.useCallback(() => {\r\n setNewTamplate({\r\n theme: { id: themeId },\r\n website: { id: websiteId },\r\n })\r\n // setOpen(false)\r\n }, [themeId, websiteId])\r\n\r\n\r\n const handleOpenChange = React.useCallback((open: boolean) => {\r\n setOpen(open)\r\n }, [])\r\n\r\n const data = useMemo(() => {\r\n return {\r\n items: templatesNoCategory\r\n }\r\n }, [templatesNoCategory])\r\n\r\n const handleSelect = React.useCallback((id: string | null, breadcrumbs?: string[]) => {\r\n const template = templates?.find((item) => item.id === id)\r\n if (id) {\r\n onSelectContent?.({\r\n type: ContentType.Template,\r\n id,\r\n breadcrumbs: [\"主题模板\", ...(breadcrumbs || []), template?.name || \"\"]\r\n })\r\n }\r\n }, [onSelectContent, templates])\r\n\r\n if (!themeId) {\r\n return null\r\n }\r\n\r\n return (\r\n <>\r\n <GroupNode\r\n title={\"主题模板\"}\r\n fiexdAction={open}\r\n icon={null}\r\n classNames={{\r\n title: \"text-sm font-semibold\",\r\n }}\r\n defaultExpanded={selectedContent?.type === ContentType.Template}\r\n action={<Dropdown\r\n onOpenChange={handleOpenChange}\r\n >\r\n <DropdownTrigger>\r\n <Button\r\n size='sm'\r\n variant='light'\r\n isIconOnly\r\n >\r\n <Icon icon=\"mdi:more-horiz\" className=\"size-5 text-default-600\" />\r\n </Button>\r\n </DropdownTrigger>\r\n <DropdownMenu\r\n aria-label=\"自定义区块菜单\"\r\n >\r\n <DropdownItem\r\n onClick={handleNewCagegory}\r\n >\r\n 添加分类\r\n </DropdownItem>\r\n <DropdownItem\r\n onClick={handleNewTemplate}\r\n >\r\n 添加区块\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n }\r\n >\r\n <TemplateCategoryList\r\n websiteId={websiteId}\r\n selectedId={selectedContent?.id}\r\n onSelect={handleSelect}\r\n />\r\n <TemplateList\r\n themeId={themeId}\r\n websiteId={websiteId}\r\n readonly={readonly}\r\n list={data}\r\n newTemplate={newTemplate}\r\n selectedId={selectedContent?.id}\r\n onSelect={handleSelect}\r\n onClearNewTemplate={() => setNewTamplate(undefined)}\r\n />\r\n </GroupNode>\r\n <TemplateCategoryModal\r\n title=\"区块分类\"\r\n websiteId={websiteId}\r\n themeId={themeId}\r\n />\r\n </>\r\n )\r\n}","import { Input } from \"@nextui-org/react\";\r\nimport { LeftPanel } from \"../LeftPanel\";\r\nimport { GroupNode, SearchIcon, TreeView } from \"@rxdrag/rxcms-common\";\r\nimport { ComponentCategoryListScope, TemplateCategoryListScope, WebComponents } from \"../../common\";\r\nimport { useWebsite } from \"@rxdrag/biz-components\";\r\nimport { useWebsiteTheme } from \"../../StudioRoot\";\r\nimport { ComponentsRootNode } from \"./ComponentsRootNode\";\r\nimport { useCallback } from \"react\";\r\nimport { useRecoilValue, useSetRecoilState } from \"recoil\";\r\nimport { drawerTypeState, isHomeState, selectedContentState, willSeletedContentState } from \"../../../recoil/atoms\";\r\nimport { SelectedContent } from \"../../../types\";\r\nimport { SectionsNode } from \"./SectionsNode\";\r\n\r\nexport function InsertPanel(props: {\r\n hidden?: boolean\r\n}) {\r\n const { hidden } = props;\r\n const setDrawerType = useSetRecoilState(drawerTypeState)\r\n const website = useWebsite();\r\n const websiteTheme = useWebsiteTheme();\r\n const selectedContent = useRecoilValue(selectedContentState)\r\n const setWillSelectedContent = useSetRecoilState(willSeletedContentState)\r\n const setIsHome = useSetRecoilState(isHomeState)\r\n\r\n const handleSelection = useCallback((content: SelectedContent) => {\r\n setWillSelectedContent(content)\r\n setDrawerType(undefined)\r\n setIsHome(false)\r\n }, [setDrawerType, setIsHome, setWillSelectedContent])\r\n\r\n return (\r\n <LeftPanel\r\n hidden={hidden}\r\n >\r\n <div className=\"h-12 flex items-center p-4\">\r\n <Input\r\n aria-label=\"搜索组件\"\r\n placeholder=\"搜索\"\r\n className=\"w-full\"\r\n startContent={\r\n <SearchIcon className=\"size-5\" />\r\n }\r\n />\r\n </div>\r\n <div className=\"flex-1 min-h-0 overflow-auto p-4 pt-0\">\r\n <TreeView>\r\n <TemplateCategoryListScope\r\n themeId={website?.selectedTheme?.id}\r\n websiteId={website?.id}\r\n >\r\n {\r\n website?.id && website?.selectedTheme?.id && <SectionsNode\r\n websiteId={website?.id}\r\n themeId={website?.selectedTheme?.id}\r\n selectedContent={selectedContent}\r\n onSelectContent={handleSelection}\r\n />\r\n }\r\n </TemplateCategoryListScope>\r\n <ComponentCategoryListScope\r\n themeId={websiteTheme?.id}\r\n >\r\n <ComponentsRootNode\r\n themeId={websiteTheme?.id}\r\n selectedContent={selectedContent}\r\n onSelectContent={handleSelection}\r\n />\r\n </ComponentCategoryListScope>\r\n <GroupNode\r\n title=\"基础组件\"\r\n icon={null}\r\n classNames={{\r\n title: \"text-sm font-semibold\"\r\n }}\r\n >\r\n <WebComponents />\r\n </GroupNode>\r\n </TreeView>\r\n </div>\r\n </LeftPanel>\r\n )\r\n}","import { ITreeNode } from \"@rxdrag/core-pro\"\r\nimport { useActiveIdState, useGetNode, useActions, useCurrentTree, useSelectedNodeIds } from \"@rxdrag/react-core-pro\";\r\nimport { GroupNode, LeafNode } from \"@rxdrag/rxcms-common\";\r\nimport { keys } from \"lodash-es\";\r\nimport { memo, useCallback } from \"react\"\r\n\r\nexport const OutlineNode = memo((props: {\r\n node: ITreeNode | null\r\n}) => {\r\n const { node } = props\r\n const [, setActivedId] = useActiveIdState()\r\n const getNode = useGetNode()\r\n const actions = useActions()\r\n const currentTree = useCurrentTree()\r\n const selectedNodeIds = useSelectedNodeIds(currentTree?.documentId)\r\n\r\n const handleMouseEnter = useCallback(() => {\r\n setActivedId(node?.id)\r\n }, [setActivedId, node?.id])\r\n\r\n const handleMouseLeave = useCallback(() => {\r\n setActivedId(null)\r\n }, [setActivedId])\r\n\r\n const handleClick = useCallback(() => {\r\n node?.id && actions?.selectNodes([node?.id])\r\n }, [actions, node?.id])\r\n\r\n const selected = !!selectedNodeIds?.find((id) => id === node?.id)\r\n\r\n return (\r\n !node?.children?.length && !keys(node?.slots || {}).length\r\n ? <LeafNode\r\n className=\"text-sm\"\r\n icon={\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-4\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"M246.66 123.56L201 55.13A15.94 15.94 0 0 0 187.72 48H40a16 16 0 0 0-16 16v128a16 16 0 0 0 16 16h147.72a16 16 0 0 0 13.28-7.12l45.63-68.44a8 8 0 0 0 .03-8.88M187.72 192H40V64h147.72l42.66 64Z\"></path></svg>\r\n }\r\n selected={selected}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n onClick={handleClick}\r\n >{node?.title || node?.meta.componentName}</LeafNode>\r\n : <GroupNode\r\n classNames={{\r\n title: \"text-sm\",\r\n }}\r\n icon={null}\r\n selected={selected}\r\n groupSelectable={true}\r\n title={node?.title || node?.meta.componentName}\r\n onClick={handleClick}\r\n >\r\n {\r\n node?.children?.map((childId) => {\r\n const child = getNode(childId)\r\n if (child?.meta.componentName === '#text') {\r\n return null\r\n }\r\n return (\r\n child && <OutlineNode key={childId} node={child} />\r\n )\r\n })\r\n }\r\n </GroupNode>\r\n )\r\n})","import { useCurrentTree } from \"@rxdrag/react-core-pro\";\r\nimport { HTMLAttributes, memo } from \"react\"\r\nimport { OutlineNode } from \"./OutlineNode\";\r\nimport { TreeView } from \"@rxdrag/rxcms-common\";\r\n\r\nexport const OutlineTree = memo((props:HTMLAttributes<HTMLDivElement>) => {\r\n const currentTree = useCurrentTree()\r\n\r\n return (\r\n <TreeView {...props}>\r\n <OutlineNode node={currentTree} />\r\n </TreeView>\r\n )\r\n})","import { OutlineTree } from \"../../OutlineTree\";\r\nimport { LeftPanel } from \"../LeftPanel\";\r\n\r\nexport function LayersPanel(props: {\r\n hidden?: boolean\r\n}) {\r\n const { hidden } = props;\r\n return (\r\n <LeftPanel\r\n className=\"p-4\"\r\n hidden={hidden}\r\n >\r\n <OutlineTree />\r\n </LeftPanel>\r\n\r\n )\r\n}","import { DescriptionViewField, TitleViewField } from \"@rxdrag/biz-components\";\r\nimport { Form, InputField, TextareaField } from \"@rxdrag/fieldy-nextui\";\r\nimport { PageFields } from \"@rxdrag/rxcms-models\";\r\nimport { LeftPanel } from \"../LeftPanel\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { useRecoilState, useSetRecoilState } from \"recoil\";\r\nimport { contentChangedState, editingPageState } from \"../../../recoil/atoms\";\r\n\r\nexport function SEOPanel(props: {\r\n hidden?: boolean\r\n}) {\r\n const { hidden } = props;\r\n const [page, setEditingPage] = useRecoilState(editingPageState)\r\n const setChanged = useSetRecoilState(contentChangedState)\r\n\r\n const handleValueChange = useCallback((values?: Record<string, unknown>) => {\r\n setEditingPage(page => ({\r\n ...page,\r\n ...values\r\n })\r\n )\r\n setChanged(true)\r\n }, [setChanged, setEditingPage])\r\n\r\n const initialValue = useMemo(() => ({\r\n [PageFields.seoTitle]: page?.seoTitle || '',\r\n [PageFields.seoKeywords]: page?.seoKeywords || '',\r\n [PageFields.seoDescription]: page?.seoDescription || ''\r\n }), [page])\r\n\r\n return (\r\n <Form\r\n initialValue={initialValue}\r\n onValueChange={handleValueChange}\r\n >\r\n <LeftPanel\r\n className=\"p-4\"\r\n hidden={hidden}\r\n >\r\n <div className=\"flex flex-col gap-1\">\r\n <TitleViewField\r\n name={PageFields.seoTitle}\r\n />\r\n <DescriptionViewField\r\n name={PageFields.seoDescription}\r\n />\r\n </div>\r\n <InputField\r\n name={PageFields.seoTitle}\r\n label=\"标题\"\r\n labelPlacement=\"outside\"\r\n placeholder=\"请输入SEO标题\"\r\n />\r\n <TextareaField\r\n name={PageFields.seoKeywords}\r\n label=\"关键词\"\r\n minRows={2}\r\n labelPlacement=\"outside\"\r\n placeholder=\"请输入SEO关键词\"\r\n />\r\n <TextareaField\r\n name={PageFields.seoDescription}\r\n label=\"描述\"\r\n labelPlacement=\"outside\"\r\n placeholder=\"请输入SEO描述\"\r\n minRows={3}\r\n />\r\n </LeftPanel >\r\n </Form>\r\n )\r\n}","import { LeftPanel } from \"../LeftPanel\";\r\n\r\nexport function SEMPanel(props: {\r\n hidden?: boolean\r\n}) {\r\n const { hidden } = props;\r\n return (<LeftPanel\r\n className=\"p-4\"\r\n hidden={hidden}\r\n >\r\n SEM助手\r\n </LeftPanel>)\r\n}","import { MediaSingleSelectField, useWebsite } from \"@rxdrag/biz-components\";\r\nimport { Form, InputField, TextareaField } from \"@rxdrag/fieldy-nextui\";\r\nimport { MediaType, PageAssciations, PageFields } from \"@rxdrag/rxcms-models\";\r\nimport { LeftPanel } from \"../LeftPanel\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { useRecoilState, useSetRecoilState } from \"recoil\";\r\nimport { editingPageState, contentChangedState } from \"../../../recoil/atoms\";\r\n\r\nexport function SNSPanel(props: {\r\n hidden?: boolean\r\n}) {\r\n const { hidden } = props;\r\n const webSite = useWebsite()\r\n const [page, setEditingPage] = useRecoilState(editingPageState)\r\n const setChanged = useSetRecoilState(contentChangedState)\r\n\r\n const handleValueChange = useCallback((values?: Record<string, unknown>) => {\r\n setEditingPage(page => ({\r\n ...page,\r\n ...values\r\n })\r\n )\r\n setChanged(true)\r\n }, [setChanged, setEditingPage])\r\n\r\n const initialValue = useMemo(() => ({\r\n [PageAssciations.ogImage]: page?.ogImage,\r\n [PageFields.ogTitle]: page?.ogTitle || '',\r\n [PageFields.ogDescription]: page?.ogDescription || ''\r\n }), [page])\r\n\r\n\r\n return (\r\n <Form\r\n initialValue={initialValue}\r\n onValueChange={handleValueChange}\r\n >\r\n <LeftPanel\r\n className=\"p-4\"\r\n hidden={hidden}\r\n >\r\n <MediaSingleSelectField\r\n name={PageAssciations.ogImage}\r\n label=\"图片\"\r\n websiteId={webSite?.id}\r\n className=\"aspect-[16/6]\"\r\n width=\"1200\"\r\n height=\"630\"\r\n mediaTypes={[MediaType.image]}\r\n />\r\n <InputField\r\n name={PageFields.ogTitle}\r\n label=\"标题\"\r\n labelPlacement=\"outside\"\r\n placeholder=\"请输入社媒标题\"\r\n />\r\n <TextareaField\r\n name={PageFields.ogDescription}\r\n label=\"描述\"\r\n minRows={3}\r\n labelPlacement=\"outside\"\r\n placeholder=\"请输入社媒描述\"\r\n />\r\n </LeftPanel>\r\n </Form>\r\n )\r\n}","import { FrontComponent } from \"@rxdrag/rxcms-models\";\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { useCallback } from \"react\";\r\n\r\nexport function useMergeComponentSchema() {\r\n const mergeList = useCallback((elements: INodeSchema[], component: FrontComponent): INodeSchema[] => {\r\n const newElements = elements.map((el) => {\r\n const slotName = el[\"xSlotRef\"];\r\n if (slotName) {\r\n if (component.slots?.[slotName]) {\r\n return component.slots[slotName];\r\n }\r\n }\r\n return { ...el, children: mergeList(el.children || [], component) };\r\n })\r\n\r\n return newElements;\r\n\r\n }, [])\r\n\r\n const merge = useCallback((component: FrontComponent) => {\r\n const elements: INodeSchema[] = component.content?.elements || [];\r\n return mergeList(elements, component);\r\n }, [mergeList])\r\n\r\n return merge\r\n}","import { useMemo, useRef } from \"react\";\r\nimport { ContentType, SelectedContent } from \"../types\";\r\nimport { useFrontComponents, usePages, useTemplates } from \"../components/StudioRoot\";\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { useMergeComponentSchema } from \"./useMergeComponentSchema\";\r\n\r\nconst defaultSchema: INodeSchema = {\r\n \"componentName\": \"XRoot\",\r\n}\r\n\r\nconst defaultPageSchema: INodeSchema = {\r\n \"componentName\": \"XPage\",\r\n}\r\n\r\nexport const defaultFrameSchema: INodeSchema = {\r\n \"componentName\": \"XApp\",\r\n}\r\n\r\nexport function useSchema(selectedContent?: SelectedContent) {\r\n const templates = useTemplates();\r\n const components = useFrontComponents();\r\n const mergeComponentSchema = useMergeComponentSchema();\r\n const pages = usePages();\r\n const templatesRef = useRef(templates)\r\n const componentsRef = useRef(components)\r\n const pagesRef = useRef(pages)\r\n templatesRef.current = templates;\r\n componentsRef.current = components;\r\n pagesRef.current = pages;\r\n\r\n const schema = useMemo(() => {\r\n if (selectedContent?.type === ContentType.Template) {\r\n const template = templatesRef.current?.find((template) => template.id === selectedContent.id);\r\n if (template) {\r\n return { ...defaultSchema, children: template.content?.elements }\r\n }\r\n\r\n } else if (selectedContent?.type === ContentType.Component) {\r\n const component = componentsRef.current?.find((component) => component.id === selectedContent.id);\r\n if (component) {\r\n const elements = mergeComponentSchema(component);\r\n return {\r\n ...defaultSchema, children: elements\r\n }\r\n }\r\n\r\n } else if (selectedContent?.type === ContentType.PredefinedPage || selectedContent?.type === ContentType.Page) {\r\n const page = pagesRef.current?.items?.find((item) => item.id === selectedContent.id);\r\n if (page) {\r\n return {\r\n ...defaultPageSchema, children: page.content?.elements\r\n }\r\n }\r\n //Frame也存页面表内\r\n } else if (selectedContent?.type === ContentType.Frame) {\r\n const page = pagesRef.current?.items?.find((item) => item.id === selectedContent.id);\r\n if (page) {\r\n return {\r\n ...defaultFrameSchema, children: page.content?.elements\r\n }\r\n }\r\n }\r\n return undefined;\r\n }, [mergeComponentSchema, selectedContent?.id, selectedContent?.type]);\r\n\r\n return schema;\r\n}","import React, { useCallback } from \"react\";\r\nimport { Button, Popover, PopoverContent, PopoverTrigger } from \"@nextui-org/react\";\r\nimport { PredefinedColorPicker, StyledTooltip } from \"@rxdrag/rxcms-common\";\r\nimport tinycolor from 'tinycolor2';\r\n\r\nexport function BgColorButton(\r\n props: {\r\n color: string,\r\n onChange: (color: string) => void,\r\n }\r\n) {\r\n const { color, onChange } = props;\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n\r\n const handleSelectPreColor = useCallback((color?: string) => {\r\n onChange(color || '#ffffff');\r\n setIsOpen(false);\r\n }, [onChange]);\r\n\r\n return (\r\n\r\n <Popover\r\n placement=\"bottom\"\r\n showArrow={true}\r\n isOpen={isOpen} onOpenChange={(open) => setIsOpen(open)}\r\n >\r\n <PopoverTrigger>\r\n <Button\r\n isIconOnly\r\n size=\"sm\"\r\n variant=\"light\"\r\n >\r\n <StyledTooltip content={\"画布背景色\"}>\r\n <div\r\n className=\"size-4 rounded-md flex items-center justify-center\"\r\n style={{\r\n backgroundColor: color,\r\n }}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"size-3 text-default-500\"\r\n style={{\r\n color: tinycolor(color).isLight() ? '#000000' : '#ffffff',\r\n }}\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path fill=\"currentColor\" d=\"m19.228 18.732l1.767-1.767l1.768 1.767a2.5 2.5 0 1 1-3.535 0M8.878 1.08l11.314 11.313a1 1 0 0 1 0 1.415l-8.485 8.485a1 1 0 0 1-1.414 0l-8.485-8.485a1 1 0 0 1 0-1.415l7.778-7.778l-2.122-2.121zM11 6.03L3.929 13.1H18.07z\"/>\r\n </svg>\r\n </div>\r\n </StyledTooltip>\r\n </Button>\r\n </PopoverTrigger>\r\n\r\n <PopoverContent>\r\n <PredefinedColorPicker\r\n value={color}\r\n onChange={handleSelectPreColor}\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}","import { useRecoilState, useRecoilValue } from \"recoil\";\r\nimport { bgColorState, isHomeState, selectedContentState, showFrameState } from \"../../recoil/atoms\";\r\nimport { ContentType } from \"../../types\";\r\nimport { CanvasToolbarButton } from \"./CanvasToolbarButton\";\r\nimport { BgColorButton } from \"./BgColorButton\";\r\nimport { FrameIcon, HomeIcon } from \"@rxdrag/rxcms-common\";\r\n\r\nexport function CanvasTools() {\r\n const [isHome, onIsHomeChange] = useRecoilState(isHomeState);\r\n const [bgColor, onBgColorChange] = useRecoilState(bgColorState);\r\n const [showFrame, onShowFrameChange] = useRecoilState(showFrameState);\r\n const selectedContent = useRecoilValue(selectedContentState);\r\n\r\n return (\r\n <div className=\"absolute top-0 -right-10 flex flex-col items-start h-full justify-between\">\r\n <p\r\n className=\"text-sm font-semibold text-default-400 mt-1 cursor-default select-none\"\r\n style={{\r\n writingMode: \"vertical-rl\",\r\n textOrientation: \"mixed\",\r\n }}\r\n >\r\n {selectedContent?.type === ContentType.Component && \"自定义组件\"}\r\n {selectedContent?.type === ContentType.Page && \"自定页面\"}\r\n {selectedContent?.type === ContentType.PredefinedPage && \"预定义页面\"}\r\n {selectedContent?.type === ContentType.Frame && \"页面框架\"}\r\n {selectedContent?.type === ContentType.Template && \"主题模板\"}\r\n {/* {`${canvasWidth}px * ${Math.round(scale * 100)}%`} */}\r\n </p>\r\n <div className=\" flex flex-col gap-1\">\r\n {\r\n (selectedContent?.type === ContentType.PredefinedPage ||\r\n selectedContent?.type === ContentType.Page) &&\r\n <CanvasToolbarButton\r\n title=\"显示页面框架\"\r\n variant={showFrame ? \"solid\" : \"light\"}\r\n className={showFrame ? \"text-white\" : \"\"}\r\n onClick={() => onShowFrameChange(!showFrame)}\r\n >\r\n <FrameIcon className=\"size-4\" />\r\n </CanvasToolbarButton>\r\n }\r\n\r\n <CanvasToolbarButton\r\n title=\"首页模式\"\r\n variant={isHome ? \"solid\" : \"light\"}\r\n className={isHome ? \"text-white\" : \"\"}\r\n onClick={() => onIsHomeChange(!isHome)}\r\n >\r\n <HomeIcon className=\"size-4\" />\r\n </CanvasToolbarButton>\r\n <BgColorButton color={bgColor} onChange={onBgColorChange} />\r\n </div>\r\n </div>\r\n )\r\n}","import { HTMLAttributes } from \"react\";\r\nimport \"./style.css\"\r\nimport { cn } from \"@nextui-org/react\";\r\n\r\nexport function ResizeHandler(props: HTMLAttributes<HTMLDivElement>) {\r\n const { className, ...rest } = props;\r\n return (\r\n <div\r\n className={\r\n cn(\"absolute top-0 canvas-resize-handler w-[16px] h-full cursor-ew-resize select-none z-10\", className)\r\n }\r\n draggable={false}\r\n {...rest}\r\n />\r\n )\r\n}","import { useState, useRef, useEffect, useCallback } from \"react\";\r\nimport { ResizeHandler } from \"./ResizeHandler\";\r\nimport { MouseMoveEvent } from \"@rxdrag/core-pro\";\r\nimport { useRecoilState, useRecoilValue } from \"recoil\";\r\nimport { canvasWidthState, viewPortHeightState } from \"../../recoil/atoms\";\r\nimport { scaleSelector } from \"../../recoil/selectors\";\r\n\r\nexport function ResizableWrapper(props: {\r\n children: React.ReactNode\r\n}) {\r\n const { children } = props;\r\n const [width, setWidth] = useRecoilState(canvasWidthState)\r\n const viewPortHeight = useRecoilValue(viewPortHeightState)\r\n\r\n const scale = useRecoilValue(scaleSelector)\r\n\r\n //const [widthValue, setWidthValue] = useState<number>(width)\r\n const [startWidth, setStartWidth] = useState<number>()\r\n const [startPosition, setStartPosition] = useState<number>()\r\n const [dragType, setDragType] = useState<\"start\" | \"end\">()\r\n const ref = useRef<HTMLDivElement>(null)\r\n const startWidthRef = useRef(startWidth)\r\n startWidthRef.current = startWidth\r\n const startPositionRef = useRef(startPosition)\r\n startPositionRef.current = startPosition\r\n const dragTypeRef = useRef(dragType)\r\n dragTypeRef.current = dragType\r\n\r\n // useEffect(() => {\r\n // setWidthValue(width)\r\n // }, [width])\r\n\r\n const getStartWidth = useCallback(() => {\r\n if (ref.current) {\r\n const { width } = ref.current.getBoundingClientRect()\r\n setStartWidth(width)\r\n }\r\n }, [])\r\n\r\n const handleStartMouseDown = useCallback((e: React.MouseEvent) => {\r\n getStartWidth();\r\n setStartPosition(e.clientX);\r\n setDragType(\"start\");\r\n }, [getStartWidth])\r\n\r\n const handleEndMouseDown = useCallback((e: React.MouseEvent) => {\r\n getStartWidth();\r\n setStartPosition(e.clientX);\r\n setDragType(\"end\");\r\n }, [getStartWidth])\r\n\r\n const handleMouseMove = useCallback((e: MouseEvent) => {\r\n if (dragTypeRef.current === \"start\") {\r\n const distance = (e.clientX - startPositionRef.current!) * 2\r\n const newWidth = startWidthRef.current! - distance\r\n setWidth?.(Math.round(newWidth))\r\n } else if (dragTypeRef.current === \"end\") {\r\n const distance = (startPositionRef.current! - e.clientX) * 2\r\n const newWidth = startWidthRef.current! - distance\r\n setWidth?.(Math.round(newWidth))\r\n }\r\n }, [setWidth])\r\n\r\n const handleMouseUp = useCallback(() => {\r\n if (!dragType || !startPosition || !setWidth) {\r\n return\r\n }\r\n setWidth?.(Math.round(width as number))\r\n setStartPosition(undefined)\r\n setDragType(undefined)\r\n }, [dragType, setWidth, startPosition, width])\r\n\r\n const handleShellMouseMove = useCallback(\r\n (e: MouseMoveEvent) => {\r\n handleMouseMove(e.originalEvent)\r\n },\r\n [handleMouseMove]\r\n );\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"mousemove\", handleMouseMove)\r\n document.addEventListener(\"mouseup\", handleMouseUp)\r\n\r\n return () => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove)\r\n document.removeEventListener(\"mouseup\", handleMouseUp)\r\n }\r\n }, [handleMouseUp, handleMouseMove, handleShellMouseMove])\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={\"canvas-wrapper absolute flex flex-row items-stretch\"}\r\n style={{\r\n height: viewPortHeight / scale,\r\n width: width,\r\n transform: `scale(${scale}) translate(-50%, -50%)`,\r\n left: \"50%\",\r\n top: \"50%\",\r\n transformOrigin: 'top left',\r\n }}\r\n >\r\n <div className=\"relative flex flex-1 h-full rounded border-divider text-black\">\r\n <ResizeHandler\r\n className=\"-left-3\"\r\n onMouseDown={handleStartMouseDown}\r\n />\r\n {\r\n children\r\n }\r\n {\r\n //遮住iframe,这样可以不用使用engine的事件,提高性能,避免闪烁\r\n startPosition &&\r\n <div className=\"absolute top-0 left-0 w-full h-full bg-opacity-0\" />\r\n }\r\n <ResizeHandler\r\n className=\"-right-3\"\r\n onMouseDown={handleEndMouseDown}\r\n />\r\n </div>\r\n </div>\r\n )\r\n}","import { useCallback, useEffect, useRef } from \"react\";\r\nimport { useSetRecoilState } from \"recoil\";\r\nimport { viewPortHeightState, viewPortWidthState } from \"../../recoil/atoms\";\r\nimport { cn } from \"@nextui-org/react\";\r\n\r\nexport function Viewport(\r\n props: {\r\n className?: string\r\n children: React.ReactNode\r\n visiable: boolean\r\n }\r\n) {\r\n const { className, visiable, children } = props;\r\n const setViewPortWidth = useSetRecoilState(viewPortWidthState);\r\n const setViewPortHeight = useSetRecoilState(viewPortHeightState);\r\n const viewPortRef = useRef<HTMLDivElement>()\r\n const handleViewportSize = useCallback(() => {\r\n if (viewPortRef.current && visiable) {\r\n setViewPortWidth(Math.round(viewPortRef.current.clientWidth) - 100);\r\n setViewPortHeight(Math.round(viewPortRef.current.clientHeight - 8));\r\n }\r\n }, [visiable, setViewPortWidth, setViewPortHeight])\r\n\r\n const handleRefChange = useCallback((node: HTMLDivElement) => {\r\n if (node) {\r\n viewPortRef.current = node\r\n handleViewportSize()\r\n }\r\n }, [handleViewportSize])\r\n\r\n\r\n useEffect(() => {\r\n if (viewPortRef.current) {\r\n const resizeObserver = new ResizeObserver(handleViewportSize);\r\n resizeObserver.observe(viewPortRef.current);\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n };\r\n }\r\n }, [handleViewportSize]);\r\n\r\n return (\r\n <div\r\n ref={handleRefChange}\r\n className={\r\n cn(\r\n \"canvas-viewport relative flex-1 flex-col bg-default-100\",\r\n visiable ? \"flex\" : \"hidden\",\r\n className,\r\n )\r\n }\r\n >\r\n {children}\r\n </div>\r\n )\r\n}","export const colors = {\r\n transparent: 'transparent',\r\n current: 'currentColor',\r\n black: '#000000',\r\n white: '#ffffff',\r\n slate: {\r\n 50: '#f8fafc',\r\n 100: '#f1f5f9',\r\n 200: '#e2e8f0',\r\n 300: '#cbd5e1',\r\n 400: '#94a3b8',\r\n 500: '#64748b',\r\n 600: '#475569',\r\n 700: '#334155',\r\n 800: '#1e293b',\r\n 900: '#0f172a',\r\n 950: '#020617',\r\n },\r\n gray: {\r\n 50: '#f9fafb',\r\n 100: '#f3f4f6',\r\n 200: '#e5e7eb',\r\n 300: '#d1d5db',\r\n 400: '#9ca3af',\r\n 500: '#6b7280',\r\n 600: '#4b5563',\r\n 700: '#374151',\r\n 800: '#1f2937',\r\n 900: '#111827',\r\n 950: '#030712',\r\n },\r\n zinc: {\r\n 50: '#fafafa',\r\n 100: '#f4f4f5',\r\n 200: '#e4e4e7',\r\n 300: '#d4d4d8',\r\n 400: '#a1a1aa',\r\n 500: '#71717a',\r\n 600: '#52525b',\r\n 700: '#3f3f46',\r\n 800: '#27272a',\r\n 900: '#18181b',\r\n 950: '#09090b',\r\n },\r\n neutral: {\r\n 50: '#fafafa',\r\n 100: '#f5f5f5',\r\n 200: '#e5e5e5',\r\n 300: '#d4d4d4',\r\n 400: '#a3a3a3',\r\n 500: '#737373',\r\n 600: '#525252',\r\n 700: '#404040',\r\n 800: '#262626',\r\n 900: '#171717',\r\n 950: '#0a0a0a',\r\n },\r\n stone: {\r\n 50: '#fafaf9',\r\n 100: '#f5f5f4',\r\n 200: '#e7e5e4',\r\n 300: '#d6d3d1',\r\n 400: '#a8a29e',\r\n 500: '#78716c',\r\n 600: '#57534e',\r\n 700: '#44403c',\r\n 800: '#292524',\r\n 900: '#1c1917',\r\n 950: '#0c0a09',\r\n },\r\n red: {\r\n 50: '#fef2f2',\r\n 100: '#fee2e2',\r\n 200: '#fecaca',\r\n 300: '#fca5a5',\r\n 400: '#f87171',\r\n 500: '#ef4444',\r\n 600: '#dc2626',\r\n 700: '#b91c1c',\r\n 800: '#991b1b',\r\n 900: '#7f1d1d',\r\n 950: '#450a0a',\r\n },\r\n orange: {\r\n 50: '#fff7ed',\r\n 100: '#ffedd5',\r\n 200: '#fed7aa',\r\n 300: '#fdba74',\r\n 400: '#fb923c',\r\n 500: '#f97316',\r\n 600: '#ea580c',\r\n 700: '#c2410c',\r\n 800: '#9a3412',\r\n 900: '#7c2d12',\r\n 950: '#431407',\r\n },\r\n amber: {\r\n 50: '#fffbeb',\r\n 100: '#fef3c7',\r\n 200: '#fde68a',\r\n 300: '#fcd34d',\r\n 400: '#fbbf24',\r\n 500: '#f59e0b',\r\n 600: '#d97706',\r\n 700: '#b45309',\r\n 800: '#92400e',\r\n 900: '#78350f',\r\n 950: '#451a03',\r\n },\r\n yellow: {\r\n 50: '#fefce8',\r\n 100: '#fef9c3',\r\n 200: '#fef08a',\r\n 300: '#fde047',\r\n 400: '#facc15',\r\n 500: '#eab308',\r\n 600: '#ca8a04',\r\n 700: '#a16207',\r\n 800: '#854d0e',\r\n 900: '#713f12',\r\n 950: '#422006',\r\n },\r\n lime: {\r\n 50: '#f7fee7',\r\n 100: '#ecfccb',\r\n 200: '#d9f99d',\r\n 300: '#bef264',\r\n 400: '#a3e635',\r\n 500: '#84cc16',\r\n 600: '#65a30d',\r\n 700: '#4d7c0f',\r\n 800: '#3f6212',\r\n 900: '#365314',\r\n 950: '#1a2e05',\r\n },\r\n green: {\r\n 50: '#f0fdf4',\r\n 100: '#dcfce7',\r\n 200: '#bbf7d0',\r\n 300: '#86efac',\r\n 400: '#4ade80',\r\n 500: '#22c55e',\r\n 600: '#16a34a',\r\n 700: '#15803d',\r\n 800: '#166534',\r\n 900: '#14532d',\r\n 950: '#052e16',\r\n },\r\n emerald: {\r\n 50: '#ecfdf5',\r\n 100: '#d1fae5',\r\n 200: '#a7f3d0',\r\n 300: '#6ee7b7',\r\n 400: '#34d399',\r\n 500: '#10b981',\r\n 600: '#059669',\r\n 700: '#047857',\r\n 800: '#065f46',\r\n 900: '#064e3b',\r\n 950: '#022c22',\r\n },\r\n teal: {\r\n 50: '#f0fdfa',\r\n 100: '#ccfbf1',\r\n 200: '#99f6e4',\r\n 300: '#5eead4',\r\n 400: '#2dd4bf',\r\n 500: '#14b8a6',\r\n 600: '#0d9488',\r\n 700: '#0f766e',\r\n 800: '#115e59',\r\n 900: '#134e4a',\r\n 950: '#042f2e',\r\n },\r\n cyan: {\r\n 50: '#ecfeff',\r\n 100: '#cffafe',\r\n 200: '#a5f3fc',\r\n 300: '#67e8f9',\r\n 400: '#22d3ee',\r\n 500: '#06b6d4',\r\n 600: '#0891b2',\r\n 700: '#0e7490',\r\n 800: '#155e75',\r\n 900: '#164e63',\r\n 950: '#083344',\r\n },\r\n sky: {\r\n 50: '#f0f9ff',\r\n 100: '#e0f2fe',\r\n 200: '#bae6fd',\r\n 300: '#7dd3fc',\r\n 400: '#38bdf8',\r\n 500: '#0ea5e9',\r\n 600: '#0284c7',\r\n 700: '#0369a1',\r\n 800: '#075985',\r\n 900: '#0c4a6e',\r\n 950: '#082f49',\r\n },\r\n blue: {\r\n 50: '#eff6ff',\r\n 100: '#dbeafe',\r\n 200: '#bfdbfe',\r\n 300: '#93c5fd',\r\n 400: '#60a5fa',\r\n 500: '#3b82f6',\r\n 600: '#2563eb',\r\n 700: '#1d4ed8',\r\n 800: '#1e40af',\r\n 900: '#1e3a8a',\r\n 950: '#172554',\r\n },\r\n indigo: {\r\n 50: '#eef2ff',\r\n 100: '#e0e7ff',\r\n 200: '#c7d2fe',\r\n 300: '#a5b4fc',\r\n 400: '#818cf8',\r\n 500: '#6366f1',\r\n 600: '#4f46e5',\r\n 700: '#4338ca',\r\n 800: '#3730a3',\r\n 900: '#312e81',\r\n 950: '#1e1b4b',\r\n },\r\n violet: {\r\n 50: '#f5f3ff',\r\n 100: '#ede9fe',\r\n 200: '#ddd6fe',\r\n 300: '#c4b5fd',\r\n 400: '#a78bfa',\r\n 500: '#8b5cf6',\r\n 600: '#7c3aed',\r\n 700: '#6d28d9',\r\n 800: '#5b21b6',\r\n 900: '#4c1d95',\r\n 950: '#2e1065',\r\n },\r\n purple: {\r\n 50: '#faf5ff',\r\n 100: '#f3e8ff',\r\n 200: '#e9d5ff',\r\n 300: '#d8b4fe',\r\n 400: '#c084fc',\r\n 500: '#a855f7',\r\n 600: '#9333ea',\r\n 700: '#7e22ce',\r\n 800: '#6b21a8',\r\n 900: '#581c87',\r\n 950: '#3b0764',\r\n },\r\n fuchsia: {\r\n 50: '#fdf4ff',\r\n 100: '#fae8ff',\r\n 200: '#f5d0fe',\r\n 300: '#f0abfc',\r\n 400: '#e879f9',\r\n 500: '#d946ef',\r\n 600: '#c026d3',\r\n 700: '#a21caf',\r\n 800: '#86198f',\r\n 900: '#701a75',\r\n 950: '#4a0e4e',\r\n },\r\n pink: {\r\n 50: '#fdf2f8',\r\n 100: '#fce7f3',\r\n 200: '#fbcfe8',\r\n 300: '#f9a8d4',\r\n 400: '#f472b6',\r\n 500: '#ec4899',\r\n 600: '#db2777',\r\n 700: '#be185d',\r\n 800: '#9d174d',\r\n 900: '#831843',\r\n 950: '#500724',\r\n },\r\n rose: {\r\n 50: '#fff1f2',\r\n 100: '#ffe4e6',\r\n 200: '#fecdd3',\r\n 300: '#fda4af',\r\n 400: '#fb7185',\r\n 500: '#f43f5e',\r\n 600: '#e11d48',\r\n 700: '#be123c',\r\n 800: '#9f1239',\r\n 900: '#881337',\r\n 950: '#4c0519',\r\n },\r\n};\r\n","import { useMemo } from \"react\";\r\nimport { colors } from \"./colors\";\r\n\r\nexport type FrameOptions = {\r\n tailwindConfig?: string,\r\n tailwindCss?: string,\r\n}\r\nexport function useFrameInitialHTML(\r\n option: FrameOptions\r\n) {\r\n const { tailwindConfig, tailwindCss } = option;\r\n\r\n const initialHTML = useMemo(() => `\r\n <!DOCTYPE html>\r\n <html>\r\n <head>\r\n <script src=\"/tailwind.3.4.3.min.js\"></script>\r\n <link href=\"/typography.min.css\" rel=\"stylesheet\">\r\n <title>Canvas</title>\r\n <script>\r\n const colors = ${JSON.stringify(colors, null, 2)}\r\n \r\n tailwind.config = ${tailwindConfig || \"{}\"}\r\n </script>\r\n <style type=\"text/tailwindcss\">\r\n .rx-node-margin {\r\n padding: 8px;\r\n }\r\n \r\n .rx-node-outlined {\r\n outline: dashed grey 1px;\r\n }\r\n [contenteditable=\"true\"]:focus {\r\n outline: none; /* 移除焦点轮廓 */\r\n box-shadow: none; /* 移除阴影 */\r\n }\r\n .table-striped tbody tr:nth-child(odd) {\r\n @apply bg-gray-100;\r\n}\r\n\r\n.table-striped p{\r\n padding: 0;\r\n margin: 0;\r\n}\r\n\r\n.table-striped tbody tr:nth-child(even) {\r\n @apply bg-white;\r\n}\r\n\r\n.dark .table-striped tbody tr:nth-child(odd) {\r\n @apply bg-gray-800;\r\n}\r\n\r\n.dark .table-striped tbody tr:nth-child(even) {\r\n @apply bg-black;\r\n}\r\n\r\n ${tailwindCss}\r\n </style>\r\n </head>\r\n <body style=\"height:100%;margin:0;\">\r\n <div id=\"root\" style=\"height:100%\">\r\n <div \r\n id=\"rx-canvas\"\r\n style=\"min-height:100vh; width:100%;\"\r\n ></div>\r\n </div>\r\n </body>\r\n </html>\r\n `,\r\n [tailwindConfig, tailwindCss]\r\n );\r\n\r\n return initialHTML\r\n}","import { useEffect } from \"react\";\r\n\r\nexport function useSetIFrameClasses(iframeDoc: Document | null, isHome: boolean, bgColor: string) {\r\n\r\n useEffect(() => {\r\n if (iframeDoc) {\r\n // 监听 iframe 内容的滚动事件\r\n const handleScroll = () => {\r\n const scrollTop = iframeDoc.documentElement.scrollTop || iframeDoc.body.scrollTop;\r\n if (scrollTop > 10) {\r\n iframeDoc.body.classList.add('scrolling');\r\n } else {\r\n iframeDoc.body.classList.remove('scrolling');\r\n }\r\n };\r\n\r\n iframeDoc.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n iframeDoc.removeEventListener('scroll', handleScroll);\r\n };\r\n }\r\n }, [iframeDoc]);\r\n\r\n useEffect(() => {\r\n if (iframeDoc) {\r\n if (isHome) {\r\n iframeDoc.documentElement.classList.add('home');\r\n } else {\r\n iframeDoc.documentElement.classList.remove('home');\r\n }\r\n }\r\n }, [iframeDoc, isHome]);\r\n\r\n useEffect(() => {\r\n if (iframeDoc) {\r\n iframeDoc.body.style.backgroundColor = bgColor;\r\n }\r\n }, [iframeDoc, bgColor]);\r\n\r\n}","import { createContext } from \"react\";\r\nimport { IReactComponents } from \"@rxdrag/react-shared\";\r\n\r\nexport const PreviewComponentsContext = createContext<IReactComponents>({})\r\n\r\n\r\n","import { useContext } from \"react\";\r\nimport { PreviewComponentsContext } from \"../contexts\";\r\n\r\nexport function usePreviewComponents() {\r\n return useContext(PreviewComponentsContext)\r\n}","import { IComponentRenderSchema } from \"../ComponentView\";\r\nimport { usePreviewComponents } from \"./usePreviewComponents\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nexport const motionComponents = {\r\n a: motion.a,\r\n article: motion.article,\r\n aside: motion.aside,\r\n audio: motion.audio,\r\n button: motion.button,\r\n canvas: motion.canvas,\r\n div: motion.div,\r\n footer: motion.footer,\r\n form: motion.form,\r\n h1: motion.h1,\r\n h2: motion.h2,\r\n h3: motion.h3,\r\n h4: motion.h4,\r\n h5: motion.h5,\r\n h6: motion.h6,\r\n header: motion.header,\r\n hr: motion.hr,\r\n iframe: motion.iframe,\r\n img: motion.img,\r\n input: motion.input,\r\n li: motion.li,\r\n main: motion.main,\r\n nav: motion.nav,\r\n ol: motion.ol,\r\n option: motion.option,\r\n p: motion.p,\r\n picture: motion.picture,\r\n section: motion.section,\r\n select: motion.select,\r\n span: motion.span,\r\n svg: motion.svg,\r\n table: motion.table,\r\n tbody: motion.tbody,\r\n td: motion.td,\r\n textarea: motion.textarea,\r\n tfoot: motion.tfoot,\r\n th: motion.th,\r\n thead: motion.thead,\r\n tr: motion.tr,\r\n ul: motion.ul,\r\n video: motion.video,\r\n};\r\n\r\nexport function usePreviewComponent(node: IComponentRenderSchema) {\r\n const name = node?.componentName;\r\n const components = usePreviewComponents();\r\n const componentName = name ? (components[name] || name) : null\r\n\r\n if (node.xMotion && Object.keys(node.xMotion).length > 0 && componentName) {\r\n return motionComponents[componentName as keyof typeof motionComponents] || componentName;\r\n }\r\n return componentName\r\n}","export const defualtProductContent = {\r\n \"nodes\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Trichloroisocyanuric acid(TCCA) specification\"\r\n }\r\n ],\r\n \"type\": \"h2\",\r\n \"id\": \"DlsbKFK-\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Name:\\t\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Trichloroisocyanuric acid\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Abbr:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Molecular formula:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"C\"\r\n },\r\n {\r\n \"sub\": true,\r\n \"text\": \"3\"\r\n },\r\n {\r\n \"text\": \"O\"\r\n },\r\n {\r\n \"sub\": true,\r\n \"text\": \"3\"\r\n },\r\n {\r\n \"text\": \"N\"\r\n },\r\n {\r\n \"sub\": true,\r\n \"text\": \"3\"\r\n },\r\n {\r\n \"text\": \"Cl\"\r\n },\r\n {\r\n \"sub\": true,\r\n \"text\": \"3\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"CAS No.:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"87-90-1\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"UN No.:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"2468\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Form:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"white powder, granules or tablets\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Moleclar weight:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"232.41\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Available chlorine:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"≥90%\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Water content:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"≤0.5%\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"Solubility:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"1.2g/100g water\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"align\": \"right\",\r\n \"children\": [\r\n {\r\n \"text\": \"PH value of 1% solution:\\t\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"2.7-3.3\"\r\n }\r\n ],\r\n \"type\": \"paragraph\"\r\n }\r\n ],\r\n \"type\": \"table-cell\"\r\n }\r\n ],\r\n \"type\": \"table-row\"\r\n }\r\n ],\r\n \"type\": \"table-body\"\r\n }\r\n ],\r\n \"colSizes\": [\r\n 30\r\n ],\r\n \"theme\": \"table-striped\",\r\n \"type\": \"table\",\r\n \"width\": null,\r\n \"id\": \"BY1kd0MX\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Uses of Trichloroisocyanuric acid(TCCA)\"\r\n }\r\n ],\r\n \"type\": \"h2\",\r\n \"id\": \"SL1UAwG-\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA has a wide range of uses that cover several domestic and commercial applications. These include the following:\"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"YuDWzet_\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" TCCA is especially effective for water treatment purposes. It is popularly used in swimming pools as a disinfectant and even for drinking water treatment. This is possible because it is very safe when it comes in contact with the body and also when consumed with drinking water. It also helps with algae removal from industrial water supplies and treatment of industrial or city sewage. Other uses included disinfection of petroleum well drilling slurry and sewage as well as production of seawater cells.\"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"03DBaoju\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Trichloroisocyanuric acid is great for general hygiene and disinfection purposes. It can be used for dishware disinfection, preventive disinfection of houses, hotels and public places. It is commonly used for hygiene and disease control in hospitals as well. It is effective for disinfection and preservation of fruits and vegetables, as well as livestock, including fish, silkworm and poultry.\"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"uAmtUsC4\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" TCCA also has great applications in textile cleansing and bleaching, wool shrink resistance, paper insect resistance and rubber chlorination, amongst others.\"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"JhyRUMjv\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Benefits of TCCA for Swimming Pools\"\r\n }\r\n ],\r\n \"type\": \"h2\",\r\n \"id\": \"_RYNFVoa\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA is extremely effective for swimming pools. It is available with 90% chlorine concentration that makes it great for large pools. It is stable and does not strip like other halogen compounds. This helps reduce chlorine loss during daytime. When used in swimming pools, Trichloroisocyanuric acid helps reduce the growth of algae and other undesirables.\"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"jWO3GBoO\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Since it dissolves slowly in water, It allows for measured dosing of chlorine, especially when it is in tablet form. \"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"0Cq5Wi4s\"\r\n }\r\n ]\r\n}\r\n\r\nexport const defualtProductContent2 = {\r\n \"nodes\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Trichloroisocyanuric acid normal packaging\"\r\n }\r\n ],\r\n \"type\": \"h2\",\r\n \"id\": \"mc0YJOc3\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" 50kg Fibre drums.\"\r\n }\r\n ],\r\n \"type\": \"list-item\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" Plastic drums in sizes including 50kg, 45kg, 40kg, 30kg, 25kg, 20kg, 15kg, 10kg, 5kg, 2kg, 1kg, 0.5kg, etc.\"\r\n }\r\n ],\r\n \"type\": \"list-item\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" 25kg bags or 1000kg bags with a pallet.\"\r\n }\r\n ],\r\n \"type\": \"list-item\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" TCCA tablets can be packaged in 1kg bags or 1kg pots, then in 10kg to 50kg plastic drums.\"\r\n }\r\n ],\r\n \"type\": \"list-item\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" 0.5kg, 1kg, 2kg, 5kg plastic drums are normally put in boxes, with sizes including 12x0.5kg, 12x1kg, 6x2kg, 4x5kg, etc.\"\r\n }\r\n ],\r\n \"type\": \"list-item\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \" All packaging is available with or without pellets.\"\r\n }\r\n ],\r\n \"type\": \"list-item\"\r\n }\r\n ],\r\n \"type\": \"bulleted-list\",\r\n \"id\": \"ArYpj4NX\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Trichloroisocyanuric acid packaging and specs can be made according to your requirements.\"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"PQLDWItf\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Some trichloroisocyanuric acid packaging\"\r\n }\r\n ],\r\n \"type\": \"h2\",\r\n \"id\": \"h-9-9DhD\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"\"\r\n }\r\n ],\r\n \"type\": \"img\",\r\n \"url\": \"https://yizhanfei-storage.oss-us-west-1.aliyuncs.com/4299262263296/667e3639-1195-4983-accd-e787510c3a6f.jpg\",\r\n \"id\": \"sFqxtD4h\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"\"\r\n }\r\n ],\r\n \"type\": \"paragraph\",\r\n \"id\": \"kKg2j6f6\"\r\n }\r\n ]\r\n}\r\n\r\nexport const defaultPostContent = {\r\n \"nodes\": [\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA is a compound that is immensely effective for modern life. But many don’t know just how effective. Read here to understand everything you need to know about what TCCA is and how it is used.\"\r\n }\r\n ],\r\n \"id\": \"GfpBiwFq\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"If you claim you’ve never heard of trichloroisocyanuric acid, you’ll hardly be held to blame. Unless you’re a person of science or one that has some particular relationship with the compound, you’re only likely to remember it for its long name.\"\r\n }\r\n ],\r\n \"id\": \"YtzWT7-u\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"However, there’s a lot more that is memorable about trichloroisocyanuric acid apart from a name that is quite frankly a mouthful.\"\r\n }\r\n ],\r\n \"id\": \"m3f9UeB-\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"If you’ve ever enjoyed the comforts of a clean, albeit slightly chlorinated swimming pool, then you’ve come in contact with the compound. Trichloroisocyanuric acid, also known as TCCA, is a popular disinfectant and bleaching agent.\"\r\n }\r\n ],\r\n \"id\": \"MCrPLdUQ\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Although it doesn’t show up often in popular culture, much of what drives our ability to enjoy clean, simple comforts is derived from TCCA. When you talk about clean swimming pools, drinking water, recycled sewage, healthy livestock and pretty much anything that needs a clean boost, you’ll likely find TCCA there.\"\r\n }\r\n ],\r\n \"id\": \"qmgYRsJP\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Now you’re surprised you’ve never heard of such a compound that seems so important to your daily life. If you’re looking to learn about this super compound and how it contributes to your daily life, then you’ve come to the right place.\"\r\n }\r\n ],\r\n \"id\": \"X9frfkAJ\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"This article explains all you need to know about TCCA and how it is used. The article also explains why it is more desirable than other similar compounds and how to get your hands on quality TCCA. But first, what is TCCA?\"\r\n }\r\n ],\r\n \"id\": \"qZeRm0ZY\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"What is Trichloroisocyanuric Acid?\"\r\n }\r\n ],\r\n \"id\": \"PumZk19P\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA, also called Trichlor and Chloreal, is an organic compound with various domestic and industrial applications. It is a white, crystalline powder that is commonly used as an outstanding source of chlorine.\"\r\n }\r\n ],\r\n \"id\": \"F5IR24Ur\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Usually containing varying mixes of chlorine, it can be found with up to 90%, 86% or 50% chlorine concentration. One of the characteristics of the compound is its strong “chlorine odour” which you would usually notice when it is unmixed.\"\r\n }\r\n ],\r\n \"id\": \"NKkFPcOb\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"There’s a lot of science behind how TCCA functions, including its production. For instance, TCCA is prepared from cyanuric acid by way of a reaction with chlorine gas and sodium hydroxide. Its preparation as such is to enable it display strong biocide, bactericide and disinfectant qualities. These make it extremely useful for sanitation and disinfection of a great variety of matter.\"\r\n }\r\n ],\r\n \"id\": \"dCzYTpfc\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Importantly, TCCA is made to be very human friendly. When used properly, it causes no side effects. It can be used to purify drinking water, making it perfectly safe for use and even when used on other bodies of water, such as swimming pools, it is very safe.\"\r\n }\r\n ],\r\n \"id\": \"PReSZvXK\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"The only hazard that may result from TCCA is the possibility of lung irritation. This can only be the case when it is ingested in its concentrate form or when it is carried in the air. It doesn’t burn either, although it may contribute to the burning of other matter when there is an outbreak of fire.\"\r\n }\r\n ],\r\n \"id\": \"3_q8lDk2\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA is usually produced and shipped in chlorine granular or chlorine tablet states. This makes for very easy handling, shipping, storing and application. In its chlorine granular state, the compound is delivered in a rough powder like state with 8-30 or 20-60 mesh granules. For its chlorine tablet state, it is often shipped in sizes ranging from 3g, 10g, 20g, 200g, 500g etc.\"\r\n }\r\n ],\r\n \"id\": \"U2UCJgqx\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"The production and delivery of the compound in these states allows for not only easy delivery but also easy dosing. It can be applied conveniently without any need to purchase and use expensive dosing equipment.\"\r\n }\r\n ],\r\n \"id\": \"CvulOOVa\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"This is often why TCCA is considered a superior and more economical source for chlorination than sodium hypochlorite and bleaching.\"\r\n }\r\n ],\r\n \"id\": \"jBVF9kd-\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"How is TCCA used?\"\r\n }\r\n ],\r\n \"id\": \"J2CTt8VA\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"As you would imagine, TCCA is in very popular use. This is due to its significance for several health and disinfecting applications in domestic and industrial use. Some of the ways and areas in which it can be used include the following:\"\r\n }\r\n ],\r\n \"id\": \"kxZIXZMx\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Swimming pools and fountains\"\r\n }\r\n ],\r\n \"id\": \"zIh90ipR\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"This is one of the most popular ways of using TCCA. It acts as a disinfecting agent in swimming pools and is great for achieving sparkling water. Since the compound has no side effect on hair, eyes or skin, it is perfectly safe for immersion and contact with body parts.\"\r\n }\r\n ],\r\n \"id\": \"oJ5Cu6Id\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Much of the reason why TCCA is so preferred for swimming pools is down to the science behind its functioning. When it is added in the pool, it combines with the water and releases cyanuric acid and hypochlorous acid. This helps chlorinate the pool and act against the disease germs in the water. It thus acts as a perfect sterilizer of the pool and does not get stripped away by sunlight.\"\r\n }\r\n ],\r\n \"id\": \"B72_VVF2\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"The aim of adding TCCA into the pool is to increase the production of free chlorine. At this point, the pool will be perfectly clean, sterilize all germs and have no chlorine smell or irritation. In its ideal quantity, TCCA should only be present in 1-3 parts per million (ppm) in the pool.\"\r\n }\r\n ],\r\n \"id\": \"iPFKhbhf\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"The pH level of the pool should also be continually tested to ensure it does not fall below 7.2 or rise above 7.6. This is pretty much the same as the pH of human tears. Thus, maintaining the pool at this level keeps eyes from burning.\"\r\n }\r\n ],\r\n \"id\": \"yULF8EzA\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Textile industry\"\r\n }\r\n ],\r\n \"id\": \"jaBEmQzp\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"One of the common uses of TCCA is its application as a bleaching agent. It is usually used in the textile industry in this regard, with common application as a bleaching agent for textiles.\"\r\n }\r\n ],\r\n \"id\": \"Iu9EWxh1\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"It is also used as a disinfectant for dyestuffs and an anti-shrink treatment for woolen products. The application of TCCA in the textile industry helps ensure that textiles are safe for use.\"\r\n }\r\n ],\r\n \"id\": \"aM61pQYZ\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Animal husbandry and fisheries\"\r\n }\r\n ],\r\n \"id\": \"bHxu_t_-\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA has an excellent bactericidal performance. It is recognized as a new generation compound that provide very high-efficiency fungicidal performance. This is why it has found application for the treatment of a wide variety of fish and livestock diseases.\"\r\n }\r\n ],\r\n \"id\": \"XpYSBTbM\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"It helps kill almost all types of fungi, bacteria, viruses and spores. It also has great effect on hepatitis A and B viruses, helping livestock and fish stay disease free.\"\r\n }\r\n ],\r\n \"id\": \"Brdip6ue\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Fruit and vegetable treatment\"\r\n }\r\n ],\r\n \"id\": \"-teUAwxo\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"When there is a need to disinfect or sterilize food and dairy products, TCCA is one compound that is often turned to. Due to its safe and convenient application, it is widely used for fruit preservation, treatment of food products such as rice seeds and general disinfection.\"\r\n }\r\n ],\r\n \"id\": \"q0NmU0Zz\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Wastewater treatment\"\r\n }\r\n ],\r\n \"id\": \"0BOcF_qg\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Treatment of wastewater is very important for communities that have recycling and safe disposal goals. TCCA plays a significant part in the process, both for the treatment of black and grey wastewater.\"\r\n }\r\n ],\r\n \"id\": \"584pU2rs\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Black wastewater usually includes toilet discharge, and may be further divided into yellow water and brown water. Grey water mostly emanates from kitchen, shower, wash basin and laundry discharge.\"\r\n }\r\n ],\r\n \"id\": \"08GyJkMw\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA is used to disinfect the discharge, sterilizing the separated clean water and aiding proper recycling for renewed use.\"\r\n }\r\n ],\r\n \"id\": \"wFpDKwW7\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Reduction of algae growth\"\r\n }\r\n ],\r\n \"id\": \"ub4SD3aK\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"TCCA helps kill or reduce algae growth through a process called oxidation. Algae can grow in pools and fountains when sufficient nutrients are present for their flourishing. They will flourish even more when the level of free chlorine is insufficient.\"\r\n }\r\n ],\r\n \"id\": \"zK9pbw_A\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Adding TCCA to the pool or fountain early in the morning on a bright, sunny day will allow for best algae killing results.\"\r\n }\r\n ],\r\n \"id\": \"-47rhHfr\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Get in touch with us\"\r\n }\r\n ],\r\n \"id\": \"dd8cGeOJ\",\r\n \"type\": \"h2\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"Now that you know exactly what TCCA is and how it is used, you can understand better why it is important for daily life. If you are looking to find a reliable supplier of TCCA products, then KingNod can put you right.\"\r\n }\r\n ],\r\n \"id\": \"tF2A89ai\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"At KingNod Group Co., we provide world class TCCA products that can be shipped to any location around the world. Our products are made to high quality standards to enable effective use in a variety of applications.\"\r\n }\r\n ],\r\n \"id\": \"Zeo3R1v3\",\r\n \"type\": \"paragraph\"\r\n },\r\n {\r\n \"children\": [\r\n {\r\n \"text\": \"We are able to accommodate custom specifications and packaging in accordance with your requirements.\"\r\n }\r\n ],\r\n \"id\": \"P8M6661T\",\r\n \"type\": \"paragraph\"\r\n }\r\n ]\r\n}\r\n","import { faker } from \"@faker-js/faker\";\r\nimport { useMemo } from \"react\";\r\nimport { MediaFields, PostAssciations, PostFields, ProductCategoryAssciations, ProductCategoryFields, ProductFields, UserAssciations, UserFields, WebsiteSettingsFields } from \"@rxdrag/rxcms-models\";\r\nimport { defaultPostContent, defualtProductContent, defualtProductContent2 } from \"./defualtProductRichText\";\r\nimport { PAGE_BREADCRUMBS, PAGE_TITLE, PRODUCT_COVER, XData, XDataType, XDataScope, XDataScope } from \"@rxdrag/website-components\";\r\n\r\n\r\nconst randomNumber = faker.number.int({ min: 4, max: 5 });\r\nconst mockProducts = (length: number) => Array.from({ length }, () => ({\r\n id: faker.string.uuid(),\r\n title: faker.commerce.productName(),\r\n description: faker.commerce.productDescription(),\r\n}));\r\n\r\nconst mockAttachments = (length: number) => Array.from({ length }, () => ({\r\n id: faker.string.uuid(),\r\n name: faker.commerce.productName(),\r\n extName: \".pdf\",\r\n}));\r\n\r\n\r\nexport function useValue(xData: XData | undefined) {\r\n\r\n const value: { value?: unknown, isList?: boolean } = useMemo(() => {\r\n if (xData?.type === XDataType.Pager) {\r\n return {\r\n value: {\r\n current: 6,\r\n total: 21,\r\n }\r\n }\r\n }\r\n switch (xData?.scope) {\r\n case XDataScope.WebsiteSettings:\r\n return createWebsiteSettings(xData);\r\n case XDataScope.ProductCategory:\r\n return createProductCategory(xData);\r\n case XDataScope.Product:\r\n return createProduct(xData);\r\n case XDataScope.Post:\r\n return createPost(xData);\r\n case XDataScope.User:\r\n return createUser(xData);\r\n case XDataScope.Products:\r\n return { value: mockProducts(xData.pageSize || 6), isList: true };\r\n case XDataScope.Posts:\r\n return {\r\n value: Array.from({ length: 8 }, () => ({\r\n id: faker.string.uuid(),\r\n title: faker.lorem.sentence(),\r\n description: faker.lorem.sentence(),\r\n })), isList: true\r\n };\r\n case XDataScope.FeaturedProducts:\r\n return { value: createFeaturedProducts(xData), isList: true };\r\n case XDataScope.LatestPosts:\r\n return { value: createLatestPosts(xData), isList: true };\r\n case XDataScope.PostCategories:\r\n return {\r\n value: Array.from({ length: 8 }, () => ({\r\n id: faker.string.uuid(),\r\n title: faker.commerce.department(),\r\n })), isList: true\r\n };\r\n case XDataScope.ProductCategories:\r\n return {\r\n value: Array.from({ length: 8 }, () => ({\r\n id: faker.string.uuid(),\r\n title: faker.commerce.department(),\r\n })), isList: true\r\n };\r\n case XDataScope.Page:\r\n return createPage(xData);\r\n case XDataScope.Media:\r\n return createMedia(xData);\r\n default:\r\n return { value: undefined };\r\n }\r\n }, [xData])\r\n\r\n return value\r\n}\r\n\r\nexport const createMedia = (xData: XData | undefined) => {\r\n switch (xData?.field) {\r\n case MediaFields.name:\r\n return { value: faker.commerce.productName() };\r\n case \"src\":\r\n return { value: \"/img-placeholder.webp\" };\r\n case \"extName\":\r\n return { value: \".pdf\" };\r\n default:\r\n return { value: undefined };\r\n }\r\n}\r\n\r\nconst createWebsiteSettings = (xData: XData | undefined) => {\r\n switch (xData?.field) {\r\n case WebsiteSettingsFields.email:\r\n return { value: faker.internet.email(), };\r\n case WebsiteSettingsFields.tel:\r\n return { value: faker.phone.imei() };\r\n case WebsiteSettingsFields.fax:\r\n return { value: faker.phone.imei() };\r\n case WebsiteSettingsFields.address:\r\n return { value: faker.location.streetAddress() };\r\n case WebsiteSettingsFields.contact:\r\n return { value: faker.person.fullName() };\r\n default:\r\n return { value: undefined };\r\n }\r\n}\r\n\r\nconst createProductCategory = (xData: XData | undefined) => {\r\n switch (xData?.field) {\r\n case ProductCategoryFields.name:\r\n return { value: faker.commerce.department() };\r\n case \"description\":\r\n return { value: faker.commerce.productDescription() };\r\n case ProductCategoryAssciations.products:\r\n return { value: mockProducts(xData.pageSize || randomNumber), isList: true };\r\n\r\n default:\r\n return { value: undefined };\r\n }\r\n}\r\n\r\nconst createProduct = (xData: XData | undefined) => {\r\n switch (xData?.field) {\r\n case ProductFields.title:\r\n return { value: faker.commerce.productName() };\r\n case ProductFields.shortTitle:\r\n return { value: faker.commerce.productName() };\r\n case ProductFields.description:\r\n return { value: faker.commerce.productDescription() };\r\n case ProductFields.content:\r\n return { value: defualtProductContent }\r\n case ProductFields.content2:\r\n return { value: defualtProductContent2 }\r\n case \"medias\":\r\n return {\r\n value: {\r\n medias: Array.from({ length: 5 }, () => ({\r\n id: faker.string.uuid(),\r\n src: \"/img-placeholder.webp\",\r\n thumbnail: \"/img-placeholder.webp\",\r\n resize: \"/img-placeholder.webp\",\r\n alt: faker.commerce.productName(),\r\n }))\r\n }\r\n };\r\n case \"attachments\":\r\n return {\r\n value: mockAttachments(3), isList: true\r\n }\r\n case ProductFields.features:\r\n return {\r\n value: Array.from({ length: 5 }, () => (faker.commerce.productDescription())).join(\"\\n\")\r\n };\r\n case PRODUCT_COVER:\r\n return {\r\n value: {\r\n alt: faker.commerce.productName(),\r\n src: \"/img-placeholder.webp\",\r\n thumbnail: \"/img-placeholder.webp\",\r\n resize: \"/img-placeholder.webp\",\r\n }\r\n }\r\n case \"related\":\r\n return {\r\n value: mockProducts(4), isList: true\r\n }\r\n default:\r\n return { value: undefined };\r\n }\r\n}\r\n\r\nconst createPost = (xData: XData | undefined) => {\r\n switch (xData?.field) {\r\n case PostFields.title:\r\n return { value: faker.lorem.sentence() };\r\n case PostAssciations.cover:\r\n return {\r\n value: {\r\n alt: faker.lorem.sentence(),\r\n src: \"/img-article.jpg\",\r\n }\r\n }\r\n case PostFields.content:\r\n return { value: defaultPostContent };\r\n case PostFields.description:\r\n return { value: faker.lorem.sentence() };\r\n case PostFields.publishedAt:\r\n return { value: faker.date.recent() };\r\n case PostFields.createdAt:\r\n return { value: faker.date.recent() };\r\n case PostFields.updatedAt:\r\n return { value: faker.date.recent() };\r\n default:\r\n return { value: undefined };\r\n }\r\n}\r\n\r\nconst createUser = (xData: XData | undefined) => {\r\n switch (xData?.field) {\r\n case UserFields.name:\r\n return { value: faker.person.fullName() };\r\n case UserAssciations.avatar:\r\n return {\r\n value: {\r\n src: \"/img-avatar.jpg\",\r\n alt: faker.person.fullName(),\r\n }\r\n };\r\n case UserFields.profile:\r\n return {\r\n value: defualtProductContent2\r\n }\r\n\r\n default:\r\n return { value: undefined };\r\n }\r\n}\r\n\r\nconst createFeaturedProducts = (xData: XData | undefined) => {\r\n if (xData?.type === XDataType.Query) {\r\n return Array.from({ length: xData.pageSize || 6 }, () => ({\r\n id: faker.string.uuid(),\r\n title: faker.commerce.productName(),\r\n description: faker.commerce.productDescription(),\r\n }));\r\n }\r\n}\r\n\r\nconst createLatestPosts = (xData: XData | undefined) => {\r\n if (xData?.type === XDataType.Query) {\r\n return Array.from({ length: xData.pageSize || 2 }, () => ({\r\n id: faker.string.uuid(),\r\n title: faker.lorem.sentence(),\r\n description: faker.lorem.sentence(),\r\n }));\r\n }\r\n}\r\n\r\nconst createPage = (xData: XData | undefined) => {\r\n switch (xData?.field) {\r\n case PAGE_TITLE:\r\n return { value: faker.lorem.sentence(5) };\r\n case PAGE_BREADCRUMBS:\r\n return {\r\n value: [\r\n { title: \"Home\", href: \"#\" },\r\n { title: \"Category\", href: \"#\" },\r\n { title: \"Product\" },\r\n ]\r\n };\r\n default:\r\n return { value: undefined };\r\n }\r\n}","import { MotionProps } from \"framer-motion\"\r\nimport { merge } from \"lodash-es\"\r\nimport { IComponentRenderSchema } from \"../ComponentView\"\r\nimport { TriggerType } from \"@rxdrag/website-components\"\r\n\r\n\r\nexport function useMotionProps(node: IComponentRenderSchema) {\r\n let motion: MotionProps = {}\r\n\r\n for (const effect of node.xMotion || []) {\r\n if (effect.initial) {\r\n motion.initial = effect.initial\r\n }\r\n\r\n if (effect.viewport) {\r\n motion.viewport = effect.viewport\r\n }\r\n\r\n switch (effect.trigger) {\r\n case TriggerType.whileHover:\r\n motion = {\r\n ...motion,\r\n whileHover: effect.animate\r\n }\r\n break\r\n case TriggerType.whileTap:\r\n motion = {\r\n ...motion,\r\n whileTap: effect.animate\r\n }\r\n break\r\n case TriggerType.whileDrag:\r\n motion = {\r\n ...motion,\r\n whileDrag: effect.animate\r\n }\r\n break\r\n case TriggerType.whileFocus:\r\n motion = {\r\n ...motion,\r\n whileFocus: effect.animate\r\n }\r\n break\r\n case TriggerType.whileInView:\r\n motion = {\r\n ...motion,\r\n whileInView: effect.animate\r\n }\r\n break\r\n case TriggerType.whileOpen:\r\n if (effect.animate) {\r\n motion = merge(motion, {\r\n variants: {\r\n open: effect.animate,\r\n },\r\n })\r\n }\r\n break\r\n case TriggerType.whileClose:\r\n if (effect.animate) {\r\n motion = merge(motion, {\r\n variants: {\r\n closed: effect.animate,\r\n },\r\n })\r\n }\r\n break\r\n }\r\n }\r\n\r\n return motion\r\n}","import React, { Fragment, useCallback } from \"react\"\r\nimport { memo, useMemo } from \"react\"\r\nimport { ID, isHTMLElement } from \"@rxdrag/shared\"\r\nimport { usePreviewComponent } from \"./hooks\"\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\"\r\nimport { useValue } from \"./hooks/useValue\"\r\nimport { MetaFilter, useFilterMeta } from \"@rxdrag/react-core-pro\"\r\nimport { useMotionProps } from \"./hooks/useMotionProps\"\r\nimport { RXID_ATTR_NAME } from \"@rxdrag/core-pro\"\r\nimport { IEntity } from \"@rxdrag/entify-hooks\"\r\nimport { IEffect, XData } from \"@rxdrag/website-components\"\r\n\r\nexport interface IComponentRenderSchema extends INodeSchema<XData, IEffect[]> {\r\n id: ID,\r\n children?: IComponentRenderSchema[]\r\n slots?: {\r\n [name: string]: IComponentRenderSchema | undefined\r\n },\r\n\r\n}\r\nexport type ComponentViewProps = {\r\n node: IComponentRenderSchema,\r\n metaFilters?: MetaFilter[],\r\n [RXID_ATTR_NAME]?: string,\r\n}\r\n\r\nexport const ComponentView = memo((\r\n props: ComponentViewProps,\r\n) => {\r\n const { node, metaFilters, [RXID_ATTR_NAME]: rxId, ...other } = props\r\n const Component = usePreviewComponent(node)\r\n const meta = useFilterMeta(node, metaFilters);\r\n const motionProps = useMotionProps(node)\r\n\r\n const slots = useMemo(() => {\r\n const slts: { [key: string]: React.ReactElement } = {}\r\n for (const name of Object.keys(node?.slots || {})) {\r\n const slot = node?.slots?.[name]\r\n if (slot) {\r\n slts[name] = <ComponentView node={slot} metaFilters={metaFilters} />\r\n }\r\n }\r\n\r\n return slts\r\n }, [metaFilters, node?.slots])\r\n\r\n const { value, isList } = useValue(node.xData)\r\n\r\n const nodeProps = useMemo(() => {\r\n return {\r\n ...meta?.props,\r\n value,\r\n ...motionProps,\r\n //禁用链接\r\n href: undefined,\r\n }\r\n }, [meta?.props, motionProps, value])\r\n\r\n const childElements = useMemo(() => {\r\n const elements = !node.selfRender && node.children?.map(child => {\r\n return (<ComponentView key={child.id} node={child} metaFilters={metaFilters} />)\r\n })\r\n\r\n if (isList) {\r\n const items = value as IEntity[] | undefined\r\n return (\r\n items?.map(itemObj => {\r\n return <Fragment\r\n key={itemObj.id}\r\n >\r\n {elements}\r\n </Fragment>\r\n })\r\n )\r\n }\r\n\r\n return elements\r\n }, [node.selfRender, node.children, isList, metaFilters, value])\r\n\r\n const handleRef = useCallback((element: HTMLElement | undefined) => {\r\n if (isHTMLElement(element) && rxId) {\r\n element?.setAttribute(RXID_ATTR_NAME, rxId)\r\n }\r\n }, [rxId])\r\n\r\n return (\r\n node && Component &&\r\n (\r\n node.children?.length ?\r\n <Component ref={rxId ? handleRef : undefined} {...nodeProps} {...slots} {...other} >\r\n {\r\n childElements\r\n }\r\n </Component>\r\n : <Component ref={rxId ? handleRef : undefined} {...nodeProps} {...slots} {...other} children={meta?.text} />\r\n )\r\n )\r\n})\r\n","import { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { makeRxId } from \"@rxdrag/shared\";\r\nimport { IComponentRenderSchema } from \"./ComponentView\";\r\nimport { IFieldMeta } from \"@rxdrag/fieldy-pro\";\r\n\r\nexport function transToRenderSchema(node: INodeSchema<IFieldMeta | undefined>): IComponentRenderSchema {\r\n const slots: { [name: string]: IComponentRenderSchema | undefined } = {}\r\n for (const key of Object.keys(node.slots || {})) {\r\n const slot = node.slots?.[key];\r\n if (slot) {\r\n slots[key] = transToRenderSchema(slot as INodeSchema<IFieldMeta | undefined>)\r\n }\r\n }\r\n\r\n return {\r\n id: makeRxId(),\r\n ...node,\r\n children: node?.children?.map(child => transToRenderSchema(child as INodeSchema<IFieldMeta | undefined>)),\r\n slots\r\n } as IComponentRenderSchema\r\n}","import { INodeSchema } from \"@rxdrag/schema-pro\"\r\nimport { memo, useEffect, useState } from \"react\"\r\nimport { ComponentView, IComponentRenderSchema } from \"./ComponentView\"\r\nimport { transToRenderSchema } from \"./transform\"\r\nimport { IFieldMeta } from \"@rxdrag/fieldy-pro\"\r\nimport { IReactComponents } from \"@rxdrag/react-shared\"\r\nimport { PreviewComponentsContext } from \"./contexts\"\r\nimport { MetaFilter } from \"@rxdrag/react-core-pro\"\r\n\r\nexport const PreviewRender = memo((props: {\r\n schema: INodeSchema,\r\n components: IReactComponents | undefined,\r\n metaFilters?: MetaFilter[],\r\n //传入自定义组件的卡槽,用于渲染自定义组件\r\n customziedSlots?: Record<string, React.ReactNode>,\r\n}) => {\r\n const { schema, components, metaFilters, ...rest } = props\r\n\r\n const [node, setNode] = useState<IComponentRenderSchema>()\r\n useEffect(() => {\r\n if (schema) {\r\n setNode(transToRenderSchema(schema as INodeSchema<IFieldMeta | undefined>))\r\n } else {\r\n setNode(undefined)\r\n }\r\n }, [schema])\r\n\r\n return (\r\n node\r\n ? <PreviewComponentsContext.Provider\r\n value={components || {}}\r\n >\r\n {node && <ComponentView node={node} metaFilters={metaFilters} {...rest} />}\r\n </PreviewComponentsContext.Provider>\r\n : <></>\r\n )\r\n})","import { MetaFilter, useDesignerEngine } from \"@rxdrag/react-core-pro\";\r\nimport { IReactComponents } from \"@rxdrag/react-shared\";\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\";\r\nimport { useMemo } from \"react\";\r\nimport { PreviewRender } from \"../../preview\";\r\n\r\nexport function SchemaPreview(props: {\r\n metaFilters?: MetaFilter[],\r\n schema?: INodeSchema | null,\r\n previews?: IReactComponents,\r\n}) {\r\n const { schema, metaFilters, previews } = props\r\n const engine = useDesignerEngine()\r\n const newPreviews: IReactComponents = useMemo(() => {\r\n const prews: IReactComponents = {}\r\n const materials = engine?.getComponentManager().getAllComponentConfigs()\r\n if (materials) {\r\n for (const key of Object.keys(materials)) {\r\n const material = materials[key]\r\n prews[key] = material?.preview || material?.component\r\n }\r\n }\r\n\r\n return { ...prews, ...previews }\r\n }, [engine, previews])\r\n\r\n\r\n return (schema &&\r\n <PreviewRender\r\n schema={schema}\r\n components={newPreviews}\r\n metaFilters={metaFilters}\r\n />\r\n )\r\n}","import { useMemo, useRef } from \"react\";\r\nimport { usePages } from \"../components/StudioRoot\";\r\nimport { PageType } from \"@rxdrag/rxcms-models\";\r\nimport { defaultFrameSchema } from \"./useSchema\";\r\n\r\n\r\nexport function useFrameSchema() {\r\n const pages = usePages();\r\n const pagesRef = useRef(pages)\r\n pagesRef.current = pages;\r\n\r\n const schema = useMemo(() => {\r\n const pageFrame = pagesRef.current?.items?.find((item) => item.pageType === PageType.Frame);\r\n\r\n if (pageFrame?.content?.elements.length) {\r\n return {\r\n ...defaultFrameSchema, children: pageFrame.content?.elements\r\n }\r\n }\r\n return undefined;\r\n }, []);\r\n\r\n return schema;\r\n}","import { uniqueId } from \"lodash-es\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useSetRecoilState } from \"recoil\";\r\nimport { canvasRefIdState } from \"../../recoil/atoms\";\r\n\r\nexport function FrameRoutePage() {\r\n const [id, setId] = useState<string>();\r\n const setCanvasRefId = useSetRecoilState(canvasRefIdState);\r\n\r\n useEffect(() => {\r\n setId(uniqueId(\"FrameRoutePage\"));\r\n }, []);\r\n\r\n const handleRefChange = useCallback((ref: HTMLDivElement) => {\r\n if (ref) {\r\n setCanvasRefId(id);\r\n } else {\r\n setCanvasRefId(undefined);\r\n }\r\n }, [id, setCanvasRefId]);\r\n\r\n //TODO 此次额外加了一层div,后面需要根据有无bug来决定是否优化\r\n return (\r\n <div\r\n ref={handleRefChange}\r\n id={id}\r\n className=\"xpage-temp-container min-h-80\"\r\n />\r\n );\r\n}","import { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\"\r\nimport { MetaFilter, useDesignerEngine, useDocument } from \"@rxdrag/react-core-pro\"\r\nimport { IFrameCanvasImpl, CanvasResizeDriver, CanvasScrollDriver, DragDropDriver, DragOverDriver, MouseClickDriver, MouseMoveDriver, MouseOverOutDriver, MouseUpDriver, KeyboardDriver, IDecorator } from \"@rxdrag/core-pro\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { useFrameInitialHTML } from \"./useFrameInitialHTML\";\r\nimport { useSetIFrameClasses } from \"./useSetIFrameClasses\";\r\nimport { CircularProgress } from \"@nextui-org/react\";\r\nimport { SchemaPreview } from \"../DocPreview/SchemaPreview\";\r\nimport { useFrameSchema } from \"../../hooks/useFrameSchema\";\r\nimport { FrameRoutePage } from \"./FrameRoutePage\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { canvasRefIdState, selectedContentState, showFrameState } from \"../../recoil/atoms\";\r\nimport { ContentType } from \"../../types\";\r\n\r\nexport const DocFrame = memo((\r\n props: {\r\n tailwindConfig?: string,\r\n tailwindCss?: string,\r\n decorators?: IDecorator[],\r\n isHome: boolean,\r\n bgColor: string,\r\n children?: React.ReactElement,\r\n metaFilters?: MetaFilter[]\r\n }\r\n) => {\r\n const { tailwindConfig, tailwindCss, decorators, isHome, bgColor, children } = props;\r\n const doc = useDocument()\r\n const engine = useDesignerEngine()\r\n const [iframeDoc, setIframeDoc] = useState<Document | null>(null);\r\n const canvasRef = useRef<HTMLIFrameElement>();\r\n const canvasRefId = useRecoilValue(canvasRefIdState)\r\n const frameSchema = useFrameSchema()\r\n const showFrame = useRecoilValue(showFrameState)\r\n const selectedContent = useRecoilValue(selectedContentState)\r\n\r\n const framePreviews = useMemo(() => {\r\n return {\r\n RoutePage: FrameRoutePage\r\n }\r\n }, [])\r\n\r\n useSetIFrameClasses(iframeDoc, isHome, bgColor)\r\n\r\n const initialHTML = useFrameInitialHTML({\r\n tailwindConfig,\r\n tailwindCss,\r\n })\r\n\r\n useEffect(() => {\r\n if (engine && decorators && doc?.id) {\r\n for (const decorator of decorators) {\r\n engine.getDecoratorManager().addDecorator(decorator, doc.id)\r\n }\r\n return () => {\r\n for (const decorator of decorators) {\r\n engine.getDecoratorManager().removeDecorator(decorator.name, doc.id)\r\n }\r\n }\r\n }\r\n }, [engine, decorators, doc?.id])\r\n\r\n\r\n useEffect(() => {\r\n if (iframeDoc) {\r\n const doc = iframeDoc\r\n const style = document.createElement('style');\r\n doc.head.append(style);\r\n\r\n return () => {\r\n style.remove();\r\n }\r\n }\r\n }, [iframeDoc]);\r\n\r\n\r\n const handleLoad = useCallback(() => {\r\n console.log('iframe loaded');\r\n const ifmDoc = canvasRef.current?.contentWindow?.document || null;\r\n setIframeDoc(ifmDoc);\r\n }, [])\r\n\r\n useEffect(() => {\r\n const shell = engine?.getShell()\r\n const rootNode = doc?.getRootNode()\r\n if (engine && doc && rootNode?.id && iframeDoc) {\r\n const root = iframeDoc.defaultView?.document.getElementById('root') as HTMLElement\r\n if (!root) {\r\n return\r\n }\r\n //root.style.overflow = \"auto\"\r\n const canvasImpl = new IFrameCanvasImpl(\r\n engine,\r\n root,\r\n doc.id,\r\n //防止重复处理事件\r\n [\r\n KeyboardDriver,\r\n DragDropDriver,\r\n DragOverDriver,\r\n MouseClickDriver,\r\n MouseMoveDriver,\r\n MouseOverOutDriver,\r\n CanvasResizeDriver,\r\n CanvasScrollDriver,\r\n MouseUpDriver\r\n ]\r\n )\r\n shell?.addCanvas(canvasImpl)\r\n return () => {\r\n shell?.removeCanvas(doc.id)\r\n }\r\n }\r\n }, [doc, engine, iframeDoc])\r\n\r\n\r\n const handleRefChange = useCallback((node: HTMLIFrameElement | null) => {\r\n canvasRef.current = node || undefined;\r\n const ifmDoc = canvasRef.current?.contentWindow?.document || null;\r\n setIframeDoc(ifmDoc);\r\n }, [])\r\n\r\n const containerId = canvasRefId || 'rx-canvas'\r\n\r\n return (\r\n <>\r\n {\r\n doc &&\r\n <iframe\r\n ref={handleRefChange}\r\n className=\"border-divider shadow-lg rounded-lg\"\r\n style={{\r\n flex: 1,\r\n height: '100%',\r\n width: \"100%\",\r\n border: 'solid 2px',\r\n backgroundColor: 'white',\r\n opacity: iframeDoc ? 1 : 0.3,\r\n }}\r\n srcDoc={initialHTML}\r\n onLoad={handleLoad}\r\n >\r\n {\r\n (selectedContent?.type === ContentType.PredefinedPage || selectedContent?.type === ContentType.Page) &&\r\n showFrame && frameSchema && iframeDoc && iframeDoc.getElementById('rx-canvas') && ReactDOM.createPortal(\r\n <SchemaPreview\r\n schema={frameSchema}\r\n metaFilters={props.metaFilters}\r\n previews={framePreviews}\r\n />,\r\n iframeDoc.getElementById('rx-canvas') as Element\r\n )\r\n }\r\n {\r\n iframeDoc && containerId && iframeDoc.getElementById(containerId) && ReactDOM.createPortal(\r\n children,\r\n iframeDoc.getElementById(containerId) as Element\r\n )\r\n }\r\n </iframe>\r\n }\r\n {\r\n !iframeDoc && <CircularProgress\r\n aria-label=\"Loading\"\r\n style={{\r\n position: 'fixed',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: 1000,\r\n }}\r\n />\r\n }\r\n </>\r\n )\r\n})","import { memo } from \"react\"\r\nimport { ComponentTreeWidget, MetaFilter, RxPropsFilter, useDocument } from \"@rxdrag/react-core-pro\"\r\n\r\nexport const DocTreeView = memo((\r\n props: {\r\n rxPropsFilter?: RxPropsFilter,\r\n metaFilters?: MetaFilter[]\r\n }\r\n) => {\r\n const { rxPropsFilter, metaFilters } = props;\r\n const doc = useDocument()\r\n\r\n return (\r\n doc\r\n ? <ComponentTreeWidget doc={doc} rxPropsFilter={rxPropsFilter} metaFilters={metaFilters} />\r\n : null\r\n )\r\n})","import { memo } from \"react\"\r\nimport { MetaFilter, RxPropsFilter } from \"@rxdrag/react-core-pro\"\r\nimport { IDecorator } from \"@rxdrag/core-pro\";\r\nimport { DocFrame } from \"./DocFrame\";\r\nimport { DocTreeView } from \"./DocTreeView\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { bgColorState, isHomeState } from \"../../recoil/atoms\";\r\n\r\nexport const DocCanvas = memo((\r\n props: {\r\n tailwindConfig?: string,\r\n tailwindCss?: string,\r\n rxPropsFilter?: RxPropsFilter,\r\n metaFilters?: MetaFilter[]\r\n decorators?: IDecorator[],\r\n\r\n }\r\n) => {\r\n const { rxPropsFilter, metaFilters, ...rest } = props;\r\n const isHome = useRecoilValue(isHomeState)\r\n const bgColor = useRecoilValue(bgColorState)\r\n\r\n return (\r\n <DocFrame\r\n isHome={isHome}\r\n bgColor={bgColor}\r\n metaFilters={metaFilters}\r\n {...rest}\r\n >\r\n <DocTreeView\r\n rxPropsFilter={rxPropsFilter}\r\n metaFilters={metaFilters}\r\n />\r\n </DocFrame>\r\n )\r\n})","import { cn } from \"@nextui-org/react\";\r\nimport { ITreeNode } from \"@rxdrag/core-pro\";\r\nimport { useActiveIdState, useCurrentNode, useSelect } from \"@rxdrag/react-core-pro\";\r\nimport { memo, useCallback, useMemo } from \"react\"\r\n\r\nexport const NodeTag = memo((props: {\r\n node: ITreeNode,\r\n zIndex: number,\r\n first: boolean,\r\n last: boolean,\r\n}) => {\r\n const { zIndex, node } = props;\r\n const [activedId, setActivedId] = useActiveIdState()\r\n\r\n const currentNode = useCurrentNode()\r\n\r\n const select = useSelect()\r\n\r\n const handleMouseOver = useCallback(() => {\r\n setActivedId(node.id)\r\n }, [node, setActivedId])\r\n\r\n const handleMouseLeave = useCallback(() => {\r\n setActivedId(undefined)\r\n }, [setActivedId])\r\n\r\n const selected = useMemo(() => node.id === currentNode?.id, [currentNode?.id, node.id])\r\n\r\n const actived = activedId === node.id && node.id != currentNode?.id\r\n\r\n const handleClick = useCallback(() => {\r\n node && select(node)\r\n }, [node, select])\r\n\r\n const backgroundClassName = useMemo(() => {\r\n if (selected) {\r\n return \"bg-primary-500\"\r\n }\r\n\r\n return actived ? \"bg-default-200\" : \"bg-default-50\"\r\n }, [actived, selected])\r\n\r\n const fillClassName = useMemo(() => {\r\n if (selected) {\r\n return \"fill-primary-500\"\r\n }\r\n\r\n return actived ? \"fill-default-200\" : \"fill-default-50\"\r\n\r\n }, [actived, selected])\r\n\r\n return (\r\n <div\r\n className=\"h-8\"\r\n style={{\r\n zIndex,\r\n position: 'relative',\r\n userSelect: 'none',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n }}\r\n onMouseOver={handleMouseOver}\r\n onMouseLeave={handleMouseLeave}\r\n onClick={handleClick}\r\n >\r\n\r\n <div\r\n className={\r\n cn(\r\n \"node-label z-10 h-full flex items-center pl-2 text-sm\",\r\n backgroundClassName,\r\n selected && \"text-white\",\r\n )\r\n }\r\n >\r\n <div className=\"px-2\">\r\n {node?.title || node?.meta.componentName}\r\n </div>\r\n <svg\r\n width=\"10\"\r\n height=\"32\"\r\n viewBox=\"0 0 10 32\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n right: -10,\r\n }}\r\n >\r\n <polygon points=\"0,0 8,16 0,32\" className={fillClassName} />\r\n <line x1=\"0\" y1=\"0\" x2=\"8\" y2=\"16\" className=\"stroke-divider\" strokeWidth=\"1\" />\r\n <line x1=\"0\" y1=\"32\" x2=\"8\" y2=\"16\" className=\"stroke-divider\" strokeWidth=\"1\" />\r\n </svg>\r\n </div>\r\n </div>\r\n )\r\n})","import { ITreeNode } from \"@rxdrag/core-pro\";\r\nimport { useCurrentNode, useGetNode } from \"@rxdrag/react-core-pro\";\r\nimport { useCallback, useMemo } from \"react\";\r\n\r\nexport function useNodesOnPath() {\r\n const currentNode = useCurrentNode()\r\n const getNode = useGetNode()\r\n const addParent = useCallback((node: ITreeNode, nodes: ITreeNode[]) => {\r\n if (node.parentId) {\r\n const parent = getNode(node.parentId)\r\n if (parent) {\r\n nodes.splice(0, 0, parent)\r\n addParent(parent, nodes)\r\n }\r\n }\r\n }, [getNode])\r\n\r\n const pathNodes = useMemo(() => {\r\n const nodes: ITreeNode[] = []\r\n if (currentNode) {\r\n nodes.push(currentNode)\r\n addParent(currentNode, nodes)\r\n }\r\n return nodes\r\n }, [addParent, currentNode])\r\n\r\n return pathNodes\r\n}","import React, { CSSProperties, memo } from \"react\"\r\nimport { NodeTag } from \"./NodeTag\";\r\nimport { useNodesOnPath } from \"./useNodesOnPath\";\r\nimport { cn } from \"@nextui-org/react\";\r\n\r\nexport const NodeNavs = memo((\r\n props: {\r\n className?: string,\r\n style?: CSSProperties,\r\n children?: React.ReactNode\r\n }\r\n) => {\r\n const { className, ...other } = props;\r\n const nodes = useNodesOnPath()\r\n\r\n return (\r\n nodes.length > 0\r\n ? <div\r\n className={cn(\"rx-editor-navbar\", className)}\r\n style={{\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'stretch',\r\n height: '100%',\r\n paddingRight: 24,\r\n pointerEvents: 'all',\r\n overflow: 'hidden',\r\n transform: 'translateX(-8px)',\r\n }}\r\n {...other}\r\n >\r\n {\r\n nodes.map((node, index) => {\r\n return <NodeTag\r\n key={node.id}\r\n node={node}\r\n zIndex={nodes.length - index}\r\n first={index === 0}\r\n last={nodes.length === (index + 1)}\r\n />\r\n })\r\n }\r\n </div>\r\n : null\r\n )\r\n})","import { memo } from \"react\";\r\nimport { Sheet } from \"../Sheet\";\r\nimport { NodeNavs } from \"../NodeNavs\";\r\n\r\nexport const CanvasNavbar = memo(() => {\r\n return (\r\n <Sheet className=\"h-8 flex items-center px-2 border-t\">\r\n <NodeNavs />\r\n </Sheet>\r\n );\r\n});","import { MetaFilter, RxPropsFilter } from \"@rxdrag/react-core-pro\";\r\nimport { CanvasTools } from \"../CanvasPanel/CanvasTools\";\r\nimport { ResizableWrapper } from \"../CanvasPanel/ResizableWrapper\";\r\nimport { Viewport } from \"../CanvasPanel/Viewport\";\r\nimport { DocCanvas } from \"../DocCanvas\";\r\nimport { useWebsiteTheme } from \"../StudioRoot\";\r\nimport { IDecorator } from \"@rxdrag/core-pro\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { viewModeState } from \"../../recoil/atoms\";\r\nimport { ViewMode } from \"../../types\";\r\nimport { CanvasNavbar } from \"../CanvasPanel/CanvasNavbar\";\r\n\r\nexport function DesignViewport(\r\n props: {\r\n rxPropsFilter?: RxPropsFilter\r\n metaFilters?: MetaFilter[]\r\n decorators?: IDecorator[],\r\n }\r\n) {\r\n const { rxPropsFilter, metaFilters, decorators } = props\r\n const viewMode = useRecoilValue(viewModeState)\r\n const theme = useWebsiteTheme()\r\n\r\n return (\r\n <>\r\n {\r\n\r\n <Viewport\r\n visiable={viewMode === ViewMode.Design}\r\n >\r\n <ResizableWrapper>\r\n <DocCanvas\r\n key={viewMode}\r\n tailwindConfig={theme?.tailwindConfig}\r\n tailwindCss={theme?.css}\r\n rxPropsFilter={rxPropsFilter}\r\n metaFilters={metaFilters}\r\n decorators={decorators}\r\n />\r\n <CanvasTools />\r\n </ResizableWrapper>\r\n </Viewport>}\r\n {viewMode === ViewMode.Design && <CanvasNavbar />}\r\n </>\r\n )\r\n}","export const PREFIX_JSON = \"$json$:\"","import { INodeSchema, TextNodeName } from \"@rxdrag/schema-pro\";\r\nimport { useCallback } from \"react\";\r\nimport { isArray, isObject } from \"lodash-es\";\r\nimport { PREFIX_JSON } from \"./consts\";\r\nimport { encode } from 'he';\r\nimport { CUSTOMIZED_COMPONENT_NAME_PREFIX, CUSTOMIZED_COMPONENT_TAG } from \"../../../customize/consts\";\r\n\r\n// 转义函数\r\nfunction escapeHtml(str: string): string {\r\n return encode(str);\r\n}\r\n\r\n// 驼峰转短横线\r\nexport function camelToKebab(camelStr?: string) {\r\n return camelStr?.replace(/(?<!^)([A-Z])/g, '-$1').toLowerCase();\r\n}\r\n\r\nexport function startsWithLowerCase(str: string) {\r\n return /^[a-z]/.test(str);\r\n}\r\n\r\nexport function useTransJsonToCode() {\r\n\r\n const transProps = useCallback((props: Record<string, unknown>) => {\r\n let code = \"\"\r\n for (const key of Object.keys(props)) {\r\n const value = props[key]\r\n let newKey = key === \"className\" ? \"class\" : key\r\n const kebabName = camelToKebab(newKey)\r\n newKey = kebabName!\r\n //如果时对象或者数组,需要转成字符串\r\n if (isObject(value) || isArray(value)) {\r\n code = code + ` ${newKey}='${PREFIX_JSON}${JSON.stringify(value)}'`\r\n } else if (value === true) {\r\n code = code + ` ${newKey}`\r\n } else if (value === false) {\r\n // 对于 false 值,不需要写该属性\r\n // 对于自定义组件,要保证属性值为 false 时,不写该属性,符合HTML规范\r\n continue;\r\n } else if (value !== undefined && value !== null) {\r\n code = code + ` ${newKey}=\"${escapeHtml(value?.toString())}\"`\r\n }\r\n }\r\n return code\r\n }, [])\r\n\r\n const transOne = useCallback((tab: string, node: INodeSchema<unknown, unknown>, slot?: string) => {\r\n let code = \"\"\r\n // 自定义组件用固定的标签名\r\n const nodeName = node?.componentName?.startsWith(CUSTOMIZED_COMPONENT_NAME_PREFIX) ? CUSTOMIZED_COMPONENT_TAG : camelToKebab(node?.componentName)\r\n if (nodeName === TextNodeName) {\r\n code = code + `${tab}${node.text}\\n`\r\n return code\r\n }\r\n\r\n const propsStr = transProps(node?.props || {})\r\n const slotProp = slot ? ` x-slot=\"${slot}\"` : \"\"\r\n const editableProp = node?.[\"xSlotRef\"] ? ` x-slot-ref=\"${node?.[\"xSlotRef\"]}\"` : \"\"\r\n const xData = node?.[\"xData\"] ? ` x-data='${JSON.stringify(node?.[\"xData\"])}'` : \"\"\r\n const xMotion = node?.[\"xMotion\"] ? ` x-motion='${JSON.stringify(node?.[\"xMotion\"])}'` : \"\"\r\n\r\n code = code + `${tab}<${nodeName}${slotProp}${editableProp}${propsStr || \"\"}${xData}${xMotion}>\\n`\r\n\r\n for (const key of Object.keys(node?.slots || {})) {\r\n const slot = node?.slots?.[key]\r\n if (slot) {\r\n code += transOne(tab + \"\\t\", slot, key)\r\n }\r\n }\r\n\r\n code = code + node?.children?.map(child => {\r\n return transOne(tab + \"\\t\", child)\r\n }).join(\"\\n\")\r\n\r\n code = code + `${tab}</${nodeName}>\\n`\r\n\r\n return code\r\n }, [transProps])\r\n\r\n const trans = useCallback((json?: INodeSchema<unknown, unknown> | null) => {\r\n let code = \"\"\r\n for (const child of json?.children || []) {\r\n code += transOne(\"\", child)\r\n }\r\n return code\r\n }, [transOne])\r\n\r\n return trans\r\n}\r\n","import { useComponentDesigners } from \"@rxdrag/react-core-pro\"\r\nimport { INodeSchema } from \"@rxdrag/schema-pro\"\r\nimport { isString } from \"lodash-es\";\r\nimport { useCallback } from \"react\"\r\nimport { PREFIX_JSON } from \"./consts\";\r\nimport { decode } from \"he\";\r\nimport { CUSTOMIZED_COMPONENT_TAG } from \"../../../customize/consts\";\r\nimport { getCustomizedComponentName } from \"../../../customize/funcs\";\r\n\r\n// 反转义函数\r\nfunction unescapeHtml(str: string): string {\r\n return decode(str);\r\n}\r\n\r\n\r\n// 所有属性都要做类似转换,不需要区分是否svg\r\n// export const svgAttributes = [\r\n// 'strokeWidth',\r\n// 'strokeLinecap',\r\n// 'strokeLinejoin',\r\n// 'stroke-dasharray',\r\n// 'fill-opacity',\r\n// 'stroke-opacity',\r\n// 'shape-rendering',\r\n// 'clip-path',\r\n// 'clip-rule',\r\n// 'fill-rule',\r\n// 'marker-end',\r\n// 'marker-mid',\r\n// 'marker-start',\r\n// 'stop-color',\r\n// 'stop-opacity',\r\n// 'stroke-miterlimit',\r\n// 'text-anchor',\r\n// // 添加更多 SVG 属性\r\n// ];\r\n\r\n//不需要转驼峰的属性\r\nconst needNotAttrs =[\r\n 'aria-hidden',\r\n 'data-testid',\r\n 'aria-label',\r\n 'aria-labelledby',\r\n 'aria-modal',\r\n 'aria-describedby',\r\n 'aria-expanded',\r\n 'aria-controls',\r\n 'data-slot',\r\n]\r\n\r\nexport function kebabToCamel(kebabStr: string) {\r\n return kebabStr?.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\r\n}\r\n\r\nexport function kebabToCamelAll(kebabStr: string) {\r\n const result = kebabToCamel(kebabStr);\r\n return result ? result.charAt(0).toUpperCase() + result.slice(1) : '';\r\n}\r\n\r\nexport function useTransCodeToJson() {\r\n const components = useComponentDesigners()\r\n const getComponentName = useCallback((node: ChildNode) => {\r\n const nodeName = node.nodeName\r\n\r\n if (node instanceof Element) {\r\n //如果是自定义组件\r\n if (nodeName.toLocaleLowerCase() === CUSTOMIZED_COMPONENT_TAG) {\r\n const name = node.getAttribute(\"name\")\r\n if (name) {\r\n return getCustomizedComponentName(name)\r\n }\r\n }\r\n }\r\n\r\n const name = nodeName.toLowerCase()\r\n const camelName = kebabToCamelAll(name)\r\n\r\n if (camelName && components[camelName]) {\r\n return camelName\r\n }\r\n return name\r\n }, [components])\r\n\r\n const transOneNode = useCallback((node: ChildNode) => {\r\n const nodeSchema: INodeSchema = {\r\n componentName: getComponentName(node),\r\n props: {},\r\n slots: {},\r\n children: [],\r\n }\r\n if (node instanceof Element) {\r\n Array.from(node.attributes).forEach((attr) => {\r\n let attrName = attr.name;\r\n let attrValue: object | string | boolean = attr.value;\r\n\r\n // 将 class 修改为 className\r\n if (attrName === 'class' || attrName.toLocaleLowerCase() === 'classname') {\r\n attrName = 'className';\r\n } else if (!needNotAttrs.includes(attrName)) {\r\n // 将 kebab-case 属性名转换为驼峰\r\n attrName = kebabToCamel(attrName);\r\n }\r\n if (attrName === 'xSlot') {\r\n return\r\n }\r\n // 将 style 修改为 JSX 支持的格式\r\n if (attrName === 'style') {\r\n attrValue = attr.value.split(';').reduce((styleObj, styleProp) => {\r\n const [property, value] = styleProp.split(':');\r\n if (!property || !value) return styleObj;\r\n return { ...styleObj, [kebabToCamel(property.trim())]: value.trim() };\r\n }, {});\r\n }\r\n if (attr.value === \"\") {\r\n nodeSchema.props![attrName] = true;\r\n } else if (attrName === 'xSlotRef') {\r\n nodeSchema[\"xSlotRef\"] = attrValue as string;\r\n }else if (attrName === 'xData') {\r\n nodeSchema['xData'] = attrValue ? JSON.parse(attrValue as string) : undefined;\r\n } else if (attrName === 'xMotion') {\r\n nodeSchema['xMotion'] = attrValue ? JSON.parse(attrValue as string) : undefined\r\n } else if (isString(attrValue) && attrValue.startsWith(PREFIX_JSON)) {\r\n nodeSchema.props![attrName] = JSON.parse(attrValue.substring(PREFIX_JSON.length));\r\n } else if (isString(attrValue)) {\r\n nodeSchema.props![attrName] = unescapeHtml(attrValue);\r\n } else {\r\n nodeSchema.props![attrName] = attrValue;\r\n }\r\n });\r\n\r\n node.childNodes.forEach((childNode) => {\r\n const { child, slotName } = transOneNode(childNode)\r\n if (slotName && child) {\r\n nodeSchema.slots![slotName] = child\r\n } else if (child) {\r\n nodeSchema.children!.push(child)\r\n }\r\n })\r\n return { child: nodeSchema, slotName: node.getAttribute('x-slot') }\r\n } else if (node instanceof Text && node.textContent?.trim()) {\r\n nodeSchema.text = node.textContent?.trim() || undefined\r\n return { child: nodeSchema }\r\n }\r\n return {}\r\n }, [getComponentName])\r\n\r\n const trans = useCallback((code: string) => {\r\n const nodes: INodeSchema[] = []\r\n const dom = document.createElement('body');\r\n dom.innerHTML = code;\r\n\r\n dom.childNodes.forEach((child) => {\r\n const { child: node } = transOneNode(child)\r\n if (node) {\r\n nodes.push(node)\r\n }\r\n })\r\n\r\n return nodes\r\n }, [transOneNode])\r\n\r\n return trans\r\n}\r\n","import { memo, useEffect, useRef, useState } from \"react\"\r\nimport MonacoEditor from '@monaco-editor/react';\r\nimport { useDocument } from \"@rxdrag/react-core-pro\";\r\nimport { useTransJsonToCode } from \"./useTransJsonToCode\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { useTransCodeToJson } from \"./useTransCodeToJson\";\r\nimport { HistoryableActionType } from \"@rxdrag/core-pro\";\r\nimport { viewModeState } from \"../../../recoil/atoms\";\r\nimport { Viewport } from \"../../CanvasPanel/Viewport\";\r\nimport { ViewMode } from \"../../../types\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction debounce<F extends (...args: any[]) => any>(func: F, wait: number): (...args: Parameters<F>) => void {\r\n let timeout: NodeJS.Timeout | null;\r\n return (...args: Parameters<F>) => {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n timeout = setTimeout(() => func(...args), wait);\r\n };\r\n}\r\n\r\nexport const CodeViewport = memo(() => {\r\n const [value, setValue] = useState<string>(\"\")\r\n const viewMode = useRecoilValue(viewModeState)\r\n const doc = useDocument()\r\n const transToCode = useTransJsonToCode()\r\n const transToJson = useTransCodeToJson()\r\n const valueRef = useRef(value)\r\n valueRef.current = value\r\n // const docRef = useRef(doc)\r\n // docRef.current = doc\r\n\r\n useEffect(() => {\r\n const json = doc?.getSchemaTree()\r\n if (viewMode === ViewMode.Code) {\r\n setValue(transToCode(json))\r\n }\r\n }, [doc, transToCode, viewMode])\r\n\r\n //这个函数要加防抖缓冲\r\n const handleChange = debounce((value?: string) => {\r\n const newValue = value || \"\";\r\n //setValue(newValue);\r\n const children = transToJson(newValue);\r\n doc?.backup(HistoryableActionType.CodeToNode)\r\n doc?.setChildren(doc.getRootNode()!.id, children)\r\n }, 300);\r\n\r\n return (\r\n viewMode === ViewMode.Code && <Viewport visiable={viewMode === ViewMode.Code} >\r\n <MonacoEditor\r\n height=\"100%\"\r\n language=\"html\"\r\n theme={\"vs-dark\"}\r\n value={value}\r\n onChange={handleChange}\r\n />\r\n </Viewport>\r\n )\r\n})","import { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\"\r\nimport { MetaFilter, useDocument } from \"@rxdrag/react-core-pro\"\r\nimport ReactDOM from \"react-dom\";\r\nimport { useWebsiteTheme } from \"../StudioRoot\";\r\nimport { useFrameInitialHTML, useSetIFrameClasses } from \"../DocCanvas\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { bgColorState, canvasRefIdState, isHomeState, selectedContentState, showFrameState } from \"../../recoil/atoms\";\r\nimport { CircularProgress } from \"@nextui-org/react\";\r\nimport { SchemaPreview } from \"./SchemaPreview\";\r\nimport { useFrameSchema } from \"../../hooks/useFrameSchema\";\r\nimport { ContentType } from \"../../types\";\r\nimport { FrameRoutePage } from \"../DocCanvas/FrameRoutePage\";\r\n\r\nexport const DocPreview = memo((\r\n props: {\r\n metaFilters?: MetaFilter[]\r\n }\r\n) => {\r\n const { metaFilters } = props\r\n const doc = useDocument()\r\n const [iframeDoc, setIframeDoc] = useState<Document | null>(null);\r\n const canvasRef = useRef<HTMLIFrameElement>();\r\n const theme = useWebsiteTheme()\r\n const bgColor = useRecoilValue(bgColorState)\r\n const isHome = useRecoilValue(isHomeState)\r\n const canvasRefId = useRecoilValue(canvasRefIdState)\r\n const frameSchema = useFrameSchema()\r\n const showFrame = useRecoilValue(showFrameState)\r\n const selectedContent = useRecoilValue(selectedContentState)\r\n \r\n useSetIFrameClasses(iframeDoc, isHome, bgColor)\r\n const framePreviews = useMemo(() => {\r\n return {\r\n RoutePage: FrameRoutePage\r\n }\r\n }, [])\r\n\r\n const initialHTML = useFrameInitialHTML({\r\n tailwindConfig: theme?.tailwindConfig,\r\n tailwindCss: theme?.css,\r\n })\r\n\r\n useEffect(() => {\r\n if (iframeDoc) {\r\n const doc = iframeDoc\r\n const style = document.createElement('style');\r\n doc.head.append(style);\r\n\r\n return () => {\r\n style.remove();\r\n }\r\n }\r\n }, [iframeDoc]);\r\n\r\n const handleLoad = useCallback(() => {\r\n const ifmDoc = canvasRef.current?.contentWindow?.document || null;\r\n setIframeDoc(ifmDoc);\r\n }, [])\r\n\r\n\r\n const handleRefChange = useCallback((node: HTMLIFrameElement | null) => {\r\n canvasRef.current = node || undefined;\r\n const ifmDoc = canvasRef.current?.contentWindow?.document || null;\r\n setIframeDoc(ifmDoc);\r\n }, [])\r\n\r\n const rootSchema = doc?.getSchemaTree()\r\n\r\n const containerId = canvasRefId || 'rx-canvas'\r\n return (\r\n <>\r\n {\r\n doc &&\r\n <iframe\r\n ref={handleRefChange}\r\n aria-label=\"doc-preview\"\r\n style={{\r\n flex: 1,\r\n height: '100%',\r\n width: \"100%\",\r\n border: 'solid 2px',\r\n backgroundColor: 'white',\r\n opacity: iframeDoc ? 1 : 0.3,\r\n }}\r\n srcDoc={initialHTML}\r\n onLoad={handleLoad}\r\n >\r\n {\r\n (selectedContent?.type === ContentType.PredefinedPage || selectedContent?.type === ContentType.Page) &&\r\n showFrame && frameSchema && iframeDoc && iframeDoc.getElementById('rx-canvas') && ReactDOM.createPortal(\r\n <SchemaPreview\r\n schema={frameSchema}\r\n metaFilters={props.metaFilters}\r\n previews={framePreviews}\r\n />,\r\n iframeDoc.getElementById('rx-canvas') as Element\r\n )\r\n }\r\n {\r\n iframeDoc && containerId && iframeDoc.getElementById(containerId) && ReactDOM.createPortal(\r\n <SchemaPreview\r\n schema={rootSchema}\r\n metaFilters={metaFilters}\r\n />,\r\n iframeDoc.getElementById(containerId) as Element\r\n )\r\n }\r\n </iframe>\r\n }\r\n {\r\n !iframeDoc && <CircularProgress\r\n aria-label=\"loading\"\r\n className=\"fixed left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2 z-50\"\r\n />\r\n }\r\n </>\r\n )\r\n})","import { MetaFilter } from \"@rxdrag/react-core-pro\";\r\nimport { CanvasTools } from \"../CanvasPanel/CanvasTools\";\r\nimport { ResizableWrapper } from \"../CanvasPanel/ResizableWrapper\";\r\nimport { Viewport } from \"../CanvasPanel/Viewport\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { viewModeState } from \"../../recoil/atoms\";\r\nimport { ViewMode } from \"../../types\";\r\nimport { DocPreview } from \"../DocPreview\";\r\n\r\nexport function PreviewViewport(\r\n props: {\r\n metaFilters?: MetaFilter[]\r\n }\r\n) {\r\n const { metaFilters } = props\r\n const viewMode = useRecoilValue(viewModeState)\r\n\r\n return (\r\n viewMode === ViewMode.Preview && <Viewport\r\n visiable={viewMode === ViewMode.Preview}\r\n >\r\n <ResizableWrapper>\r\n <DocPreview\r\n metaFilters={metaFilters}\r\n />\r\n <CanvasTools />\r\n </ResizableWrapper>\r\n </Viewport>\r\n )\r\n}","import { Button } from \"@nextui-org/react\";\r\nimport { useWebsite } from \"@rxdrag/biz-components\";\r\nimport { useUpsertOneTheme } from \"@rxdrag/rxcms-model-hooks\";\r\nimport { useCallback } from \"react\";\r\n\r\nexport function ThemeSetup() {\r\n const website = useWebsite()\r\n const [upsertTheme, { isMutating }] = useUpsertOneTheme()\r\n\r\n const handleCreateTheme = useCallback(() => {\r\n if (website?.id) {\r\n console.log('create theme')\r\n upsertTheme({\r\n name: website.name + '主题',\r\n selectedBy: {\r\n sync: { id: website.id }\r\n },\r\n website: {\r\n sync: { id: website.id }\r\n }\r\n })\r\n }\r\n }, [upsertTheme, website?.id, website?.name])\r\n\r\n return (<div className=\"w-full h-full flex flex-col items-center justify-center bg-default-100 gap-4\">\r\n <p>主题没有创建,请先创建网站主题样式</p>\r\n <Button\r\n size=\"lg\"\r\n color=\"primary\"\r\n isLoading={isMutating}\r\n onClick={handleCreateTheme}\r\n >\r\n 创建主题\r\n </Button>\r\n </div>)\r\n}","export function Welcome() {\r\n return (\r\n <div className=\"w-full h-full flex flex-col items-center justify-center bg-default-100\">\r\n <h1 className=\"text-5xl\">Welcome</h1>\r\n <p>Welcome content goes here</p>\r\n </div>\r\n )\r\n}","import { GroupNode } from \"@rxdrag/rxcms-common\";\r\nimport { EmpetyText, PageList } from \"../../common\";\r\nimport { NewButton, useIsLoading, useListData } from \"@rxdrag/rxcms-models-ui\";\r\nimport { Page } from \"@rxdrag/rxcms-models\";\r\nimport { ContentType, SelectedContent } from \"../../../types\";\r\nimport { useCallback } from \"react\";\r\nimport { useSetRecoilState } from \"recoil\";\r\nimport { isHomeState } from \"../../../recoil/atoms\";\r\n\r\nexport function PagesNode(props: {\r\n websiteId: string,\r\n selectedContent?: SelectedContent\r\n onSelectContent?: (content: SelectedContent) => void\r\n}) {\r\n const { websiteId, selectedContent, onSelectContent } = props;\r\n const data = useListData<Page>()\r\n const isLoading = useIsLoading()\r\n const setIsHome = useSetRecoilState(isHomeState)\r\n\r\n const handleSelect = useCallback((id: string | null) => {\r\n const page = data?.items?.find((item) => item.id === id)\r\n if (id) {\r\n setIsHome(false)\r\n onSelectContent?.({\r\n id,\r\n type: ContentType.Page,\r\n breadcrumbs: [\"自定义页面\", page?.title || \"\"]\r\n })\r\n }\r\n\r\n }, [data?.items, onSelectContent, setIsHome])\r\n\r\n const pageSelected = selectedContent?.type === ContentType.Page\r\n\r\n return (\r\n <GroupNode\r\n title=\"自定义页面\"\r\n icon={null}\r\n defaultExpanded={selectedContent?.type !== ContentType.PredefinedPage && selectedContent?.type !== ContentType.Frame}\r\n classNames={{\r\n title: \"text-sm font-semibold\",\r\n }}\r\n fiexdAction\r\n action={\r\n <NewButton\r\n size=\"sm\"\r\n variant=\"bordered\"\r\n color=\"primary\"\r\n >\r\n 创建页面\r\n </NewButton>\r\n }\r\n >\r\n {\r\n // isLoading && <div className=\"flex flex-col gap-2 p-4\">\r\n // {\r\n // new Array(5).fill(0).map((_, index) => (\r\n // <Skeleton key={index} className=\"w-full rounded-md\">\r\n // <div className=\"h-8 w-4/5 rounded-lg bg-default-300\"></div>\r\n // </Skeleton>\r\n // ))\r\n // }\r\n\r\n // </div>\r\n }\r\n {\r\n !isLoading && !data?.items?.length && <EmpetyText>未创建自定义页面</EmpetyText>\r\n }\r\n <PageList\r\n websiteId={websiteId}\r\n selectedId={pageSelected ? selectedContent?.id : undefined}\r\n onSelect={handleSelect}\r\n />\r\n </GroupNode>\r\n )\r\n}","import { FrameIcon, HomeIcon, LeafNode, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, RemoveIcon, StyledTooltip } from \"@rxdrag/rxcms-common\"\r\nimport { useDeletePageById, useUpsertOnePage } from \"@rxdrag/rxcms-model-hooks\"\r\nimport { PageType } from \"@rxdrag/rxcms-models\"\r\nimport React, { useMemo } from \"react\"\r\nimport { usePages } from \"../../StudioRoot\"\r\nimport { Button, cn, Divider } from \"@nextui-org/react\"\r\nimport { leafIcon } from \"../../common\"\r\nimport { SelectedContent } from \"../../../types\"\r\n\r\nexport type PredefinedTemplateNodeProps = {\r\n websiteId: string,\r\n title: string,\r\n pageType: PageType,\r\n selectedContent?: SelectedContent\r\n onSelect?: (id: string | undefined | null, title: string, pageType: PageType) => void\r\n showThumbnail?: boolean\r\n}\r\n\r\nexport function PredefinedPageNode(props: PredefinedTemplateNodeProps) {\r\n const { selectedContent, websiteId, title, pageType, onSelect, showThumbnail } = props\r\n const [open, setOpen] = React.useState<boolean>(false);\r\n const pages = usePages()\r\n\r\n const [remove, { isMutating: removing }] = useDeletePageById()\r\n\r\n const [save, { isMutating }] = useUpsertOnePage(\r\n {\r\n onSuccess(value) {\r\n setOpen(false)\r\n onSelect?.(value?.id || null, title, pageType)\r\n },\r\n }\r\n )\r\n\r\n const pagesOfType = pages?.items?.filter((item) => item.pageType === pageType)\r\n\r\n if (pagesOfType?.length && pagesOfType.length > 1) {\r\n console.warn('There are more than one predefined template with the same type')\r\n }\r\n\r\n const page = pagesOfType?.[0]\r\n\r\n const handleClick = () => {\r\n if (!page) {\r\n setOpen(true)\r\n } else {\r\n onSelect?.(page.id || null, title, pageType)\r\n }\r\n }\r\n\r\n const handleCreate = () => {\r\n save({\r\n website: { sync: { id: websiteId } },\r\n pageType: pageType,\r\n title: title,\r\n })\r\n }\r\n\r\n const icon = useMemo(() => {\r\n switch (pageType) {\r\n case PageType.Frame:\r\n return <FrameIcon className=\"size-4\" />\r\n\r\n case PageType.Home:\r\n return <HomeIcon className=\"size-4\" />\r\n default:\r\n return leafIcon\r\n }\r\n }, [pageType])\r\n\r\n return (\r\n <>\r\n <StyledTooltip\r\n content={\"预览模板\"}\r\n hidden={!showThumbnail}\r\n >\r\n <LeafNode\r\n selected={selectedContent?.id === page?.id && !!page?.id}\r\n onClick={handleClick}\r\n className={\r\n cn(\"text-sm\", page?.id ? \"\" : \"text-default-400\")\r\n }\r\n icon={icon}\r\n actions={\r\n page\r\n ? <Button\r\n size=\"sm\"\r\n isLoading={removing}\r\n isIconOnly\r\n variant=\"light\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n page.id && remove(page.id)\r\n if (selectedContent?.id === page.id) {\r\n onSelect?.(null, '', pageType)\r\n }\r\n }}\r\n >\r\n <RemoveIcon className=\"size-4 text-default-600\" />\r\n </Button>\r\n : undefined\r\n }\r\n >\r\n {title}\r\n </LeafNode>\r\n </StyledTooltip>\r\n <Modal isOpen={open} onClose={() => setOpen(false)}>\r\n <ModalContent>\r\n <ModalHeader>\r\n 创建{title}模板\r\n </ModalHeader>\r\n <Divider />\r\n <ModalBody>\r\n {title}还没创建,是否要创建?\r\n </ModalBody>\r\n <ModalFooter>\r\n <Button\r\n variant=\"solid\"\r\n color=\"primary\"\r\n isLoading={isMutating}\r\n onClick={handleCreate}\r\n >\r\n 创建\r\n </Button>\r\n <Button\r\n onClick={() => setOpen(false)}\r\n >\r\n 取消\r\n </Button>\r\n </ModalFooter>\r\n </ModalContent>\r\n </Modal>\r\n </>\r\n )\r\n}","import { GroupNode } from \"@rxdrag/rxcms-common\"\r\nimport { PageType } from \"@rxdrag/rxcms-models\"\r\nimport { PredefinedPageNode } from \"./PredefinedPageNode\"\r\nimport { ContentType, SelectedContent } from \"../../../types\"\r\nimport { useSetRecoilState } from \"recoil\"\r\nimport { isHomeState } from \"../../../recoil/atoms\"\r\n\r\nconst predefinedTypes = [\r\n {\r\n title: \"框架\",\r\n pageType: PageType.Frame,\r\n },\r\n {\r\n title: \"首页\",\r\n pageType: PageType.Home,\r\n },\r\n {\r\n title: \"文章页\",\r\n pageType: PageType.Post,\r\n },\r\n {\r\n title: \"产品页\",\r\n pageType: PageType.Product,\r\n },\r\n {\r\n title: \"文章分类页\",\r\n pageType: PageType.PostCategory,\r\n },\r\n {\r\n title: \"产品分类页\",\r\n pageType: PageType.ProductCategory,\r\n },\r\n {\r\n title: \"搜索页\",\r\n pageType: PageType.SearchList,\r\n },\r\n {\r\n title: \"个人简介页\",\r\n pageType: PageType.Profile,\r\n }\r\n]\r\n\r\nexport function PredefinedPages(\r\n props: {\r\n websiteId: string,\r\n selectedContent?: SelectedContent\r\n onSelectContent?: (content?: SelectedContent) => void\r\n }\r\n) {\r\n const { websiteId, selectedContent, onSelectContent } = props\r\n const setIsHome = useSetRecoilState(isHomeState)\r\n const handleSelect = (id: string | undefined | null, title: string, pageType: PageType) => {\r\n if (id) {\r\n if (pageType === PageType.Home) {\r\n setIsHome(true)\r\n } else {\r\n setIsHome(false)\r\n }\r\n const contentType = pageType === PageType.Frame ? ContentType.Frame : ContentType.PredefinedPage\r\n\r\n onSelectContent?.({\r\n id,\r\n type: contentType,\r\n breadcrumbs: [\"预定义页面\", title],\r\n })\r\n } else {\r\n setIsHome(false)\r\n onSelectContent?.(undefined)\r\n }\r\n }\r\n\r\n\r\n return (\r\n <GroupNode\r\n title=\"预定义页面\"\r\n icon={null}\r\n classNames={{\r\n title: \"text-sm font-semibold\",\r\n }}\r\n defaultExpanded={selectedContent?.type === ContentType.PredefinedPage || selectedContent?.type === ContentType.Frame}\r\n >\r\n {\r\n predefinedTypes.map((item) => (\r\n <PredefinedPageNode\r\n key={item.pageType}\r\n websiteId={websiteId}\r\n title={item.title}\r\n selectedContent={selectedContent}\r\n onSelect={handleSelect}\r\n pageType={item.pageType}\r\n />\r\n ))\r\n }\r\n </GroupNode>\r\n )\r\n}","import { TreeView } from \"@rxdrag/rxcms-common\";\r\nimport { memo, useMemo } from \"react\";\r\nimport { useWebsite } from \"@rxdrag/biz-components\";\r\nimport { PagesNode } from \"./PagesNode\";\r\nimport { SelectedContent } from \"../../../types\";\r\nimport { PredefinedPages } from \"./PredefinedPages\";\r\nimport { EntityListScope } from \"@rxdrag/rxcms-models-ui\";\r\nimport { usePages } from \"../../StudioRoot\";\r\nimport { PageEntityName, PageType } from \"@rxdrag/rxcms-models\";\r\n\r\nexport const MenuContent = memo((\r\n props: {\r\n selectedContent?: SelectedContent\r\n onSelectContent?: (content?: SelectedContent) => void\r\n }\r\n) => {\r\n const { selectedContent, onSelectContent } = props;\r\n const website = useWebsite()\r\n const pages = usePages()\r\n\r\n const customizedPages = useMemo(() => {\r\n return { items: pages?.items?.filter((item) => item.pageType === PageType.Customized) }\r\n }, [pages?.items])\r\n\r\n return (\r\n <TreeView\r\n >\r\n {\r\n website?.id && <EntityListScope\r\n entityName={PageEntityName}\r\n data={customizedPages}\r\n ><PagesNode\r\n websiteId={website.id}\r\n selectedContent={selectedContent}\r\n onSelectContent={onSelectContent}\r\n />\r\n </EntityListScope>\r\n }\r\n {\r\n website?.id &&\r\n <PredefinedPages\r\n websiteId={website.id}\r\n selectedContent={selectedContent}\r\n onSelectContent={onSelectContent}\r\n />\r\n }\r\n {/* <LeafNode\r\n className=\"text-sm font-semibold\"\r\n noIndicator\r\n icon={<svg xmlns=\"http://www.w3.org/2000/svg\" className=\"size-4\" viewBox=\"0 0 24 24\">\r\n <path fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M2.75 8.75v8a3 3 0 0 0 3 3H10m-7.25-11v-1.5a3 3 0 0 1 3-3h12.5a3 3 0 0 1 3 3v1.5m-18.5 0H10m11.25 0v8a3 3 0 0 1-3 3H10m11.25-11H10m0 0v11\"></path>\r\n </svg>}\r\n >\r\n 页面框架\r\n </LeafNode> */}\r\n </TreeView>\r\n )\r\n})","import { Button, cn, Divider } from \"@nextui-org/react\";\r\nimport { Popover, PopoverTrigger, PopoverContent } from \"@nextui-org/react\";\r\nimport { memo, useCallback, useState } from \"react\";\r\nimport { propsPanelWidth } from \"../PropsPanel\";\r\nimport { ContentType, SelectedContent } from \"../../types\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { MenuContent } from \"./MenuContent\";\r\nimport { useWebsite } from \"@rxdrag/biz-components\";\r\nimport { useRecoilValue, useSetRecoilState } from \"recoil\";\r\nimport { editingComponentState, editingPageState, selectedContentState, willSeletedContentState } from \"../../recoil/atoms\";\r\nimport { Drawer, MenuIcon, ModalBody, ModalClose, ModalHeader } from \"@rxdrag/rxcms-common\";\r\nimport { usePages } from \"../StudioRoot\";\r\n\r\nexport const Toolbar = memo(() => {\r\n const selectedContent = useRecoilValue(selectedContentState)\r\n const setWillSelectedContent = useSetRecoilState(willSeletedContentState)\r\n const [open, setOpen] = useState(false)\r\n const setEditingComponent = useSetRecoilState(editingComponentState)\r\n const setEditingPage = useSetRecoilState(editingPageState)\r\n\r\n const website = useWebsite()\r\n const pages = usePages()\r\n\r\n const handleSelectContent = useCallback((content?: SelectedContent) => {\r\n setOpen(false)\r\n setWillSelectedContent?.(content)\r\n if (content?.type === ContentType.Page || content?.type === ContentType.PredefinedPage) {\r\n setEditingPage(pages?.items?.find((item) => item.id === content.id))\r\n } else {\r\n setEditingPage(undefined)\r\n }\r\n setEditingComponent(undefined)\r\n }, [pages?.items, setEditingComponent, setEditingPage, setWillSelectedContent])\r\n\r\n return (\r\n <div\r\n className={`h-14 w-full flex px-0 justify-between items-center border-b border-divider`}\r\n >\r\n <div className=\"flex w-14 items-center justify-center\">\r\n <Button\r\n isIconOnly\r\n //size=\"sm\"\r\n variant=\"light\"\r\n className=\"text-default-600\"\r\n onClick={() => setOpen(true)}\r\n >\r\n <MenuIcon className=\"size-6\" />\r\n </Button>\r\n <Drawer\r\n placement=\"left\"\r\n className=\"shadow-xl\"\r\n width={420}\r\n isOpen={open}\r\n onClose={() => setOpen(false)}\r\n >\r\n <ModalHeader className=\"pr-2 h-14\">\r\n <span>页面管理</span>\r\n <ModalClose />\r\n </ModalHeader>\r\n <Divider />\r\n <ModalBody>\r\n <MenuContent\r\n selectedContent={selectedContent}\r\n onSelectContent={handleSelectContent}\r\n />\r\n </ModalBody>\r\n </Drawer>\r\n </div>\r\n <div className=\"flex-1 text-default-500 text-sm font-semibold\">\r\n {[website?.name || \"未命名网站\", ...selectedContent?.breadcrumbs || []]?.join(\" / \")}\r\n </div>\r\n <div className={cn(\"flex gap-1 pr-4 items-center justify-end\", propsPanelWidth)}>\r\n <Popover placement=\"bottom\" showArrow={true}>\r\n <PopoverTrigger>\r\n <Button\r\n size=\"sm\"\r\n variant=\"light\"\r\n className=\"text-default-500\"\r\n endContent={<Icon icon=\"heroicons:chevron-down\" className=\"w-3 h-3\" />}\r\n >\r\n 版本: 10\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent>\r\n <div className=\"px-1 py-2\">\r\n <div className=\"text-small\">v10</div>\r\n <div className=\"text-small\">v8</div>\r\n <div className=\"text-small\">v0</div>\r\n <div className=\"text-small\">创建版本</div>\r\n {/* 放入设置 <div className=\"text-small\">重置网站</div> */}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n\r\n\r\n <Button\r\n size=\"sm\"\r\n variant=\"flat\"\r\n //className=\"font-semibold\"\r\n >\r\n 预览网站\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n color=\"primary\"\r\n //className=\"font-semibold\"\r\n >\r\n 发布网站\r\n </Button>\r\n {/* <Button\r\n isIconOnly\r\n size=\"sm\"\r\n variant=\"flat\"\r\n onClick={toggleTheme}\r\n >\r\n {isDark ? (\r\n <SunIcon className=\"w-5 h-5\" />\r\n ) : (\r\n <MoonIcon className=\"w-5 h-5\" />\r\n )}\r\n </Button> */}\r\n </div>\r\n </div>\r\n );\r\n});","import { useMemo } from \"react\"\r\nimport { codeRunFilter } from \"../../customize/funcs\"\r\nimport { ExtendField } from \"@rxdrag/rxcms-models\"\r\n\r\nexport function useMetaFilters(componentProps: object|undefined, fields: ExtendField[]|undefined) {\r\n\r\n const metaFilters = useMemo(() => {\r\n return [\r\n codeRunFilter(componentProps, fields)\r\n ]\r\n }, [componentProps, fields])\r\n\r\n return metaFilters\r\n}","import { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { ContentType, DrawerConentType } from \"../../types\";\r\nimport { CanvasPanel } from \"../CanvasPanel\";\r\nimport { Leftbar, titles } from \"../Leftbar\";\r\nimport { PropsPanel } from \"../PropsPanel\";\r\nimport { CanvasDrawer } from \"../CanvasPanel/CanvasDrawer\";\r\nimport { ComponentSchemaPanel, ComponentTestPanel, InsertPanel, LayersPanel, SEMPanel, SEOPanel, SNSPanel } from \"../LeftDrawer\";\r\nimport { useFrontComponents, useStudioLoading, useWebsiteTheme } from \"../StudioRoot\";\r\nimport { DocumentRoot, RxPropsFilter, useDesignerEngine } from \"@rxdrag/react-core-pro\";\r\nimport { CanvasResizeDriver, ContainerImpl, DragDropDriver, IDecorator, IDocument, KeyboardDriver, MouseMoveDriver } from \"@rxdrag/core-pro\";\r\nimport { useSchema } from \"../../hooks/useSchema\";\r\nimport { uniqueId } from \"lodash-es\";\r\nimport { FrontComponent } from \"@rxdrag/rxcms-models\";\r\nimport { DesignViewport } from \"../views/DesignViewport\";\r\nimport { CodeViewport } from \"../views/CodeViewport\";\r\nimport { PreviewViewport } from \"../views/PreviewViewport\";\r\nimport { useRecoilState, useRecoilValue } from \"recoil\";\r\nimport { contentChangedState, drawerTypeState, editingComponentState, selectedContentState } from \"../../recoil/atoms\";\r\nimport { ThemeSetup } from \"./ThemeSetup\";\r\nimport { Welcome } from \"./Welcome\";\r\nimport { Toolbar } from \"../Toolbar\";\r\nimport { useMetaFilters } from \"./useMetaFilters\";\r\n\r\nexport function StudioCore(\r\n props: {\r\n rxPropsFilter?: RxPropsFilter\r\n decorators?: IDecorator[],\r\n }\r\n) {\r\n const { rxPropsFilter, decorators } = props\r\n const [drawerType, setDrawerType] = useRecoilState(drawerTypeState)\r\n const [editingComponent, setEditingComponent] = useRecoilState(editingComponentState)\r\n const [componentChanged, setComponentChanged] = useRecoilState(contentChangedState)\r\n const [drawerDocked, setDrawerDocked] = useState(false)\r\n const theme = useWebsiteTheme()\r\n const selectedContent = useRecoilValue(selectedContentState)\r\n const isNotSetup = !theme\r\n\r\n const isNotSelected = !selectedContent && !isNotSetup\r\n const isSelected = !!selectedContent\r\n\r\n const fComs = useFrontComponents()\r\n\r\n const selectedComponent = fComs?.find(c => c.id === selectedContent?.id && selectedContent?.type === ContentType.Component)\r\n\r\n useEffect(() => {\r\n if (selectedComponent && !componentChanged) {\r\n setEditingComponent(selectedComponent)\r\n }\r\n }, [selectedComponent, componentChanged, setEditingComponent])\r\n\r\n const [doc, setDoc] = useState<IDocument>()\r\n const engine = useDesignerEngine()\r\n const docRef = useRef<IDocument>()\r\n docRef.current = doc\r\n\r\n const metaFilters = useMetaFilters(selectedComponent?.testConfig, selectedComponent?.props?.items)\r\n\r\n const schema = useSchema(selectedContent)\r\n const loading = useStudioLoading()\r\n\r\n useEffect(() => {\r\n if (engine && schema) {\r\n console.log(\"创建 document\")\r\n if (docRef.current) {\r\n docRef.current.destroy()\r\n docRef.current = undefined\r\n }\r\n const document = engine.createDocument({\r\n schema,\r\n id: uniqueId('document_'),\r\n })\r\n engine.getActions().changeActivedDocument(document.id)\r\n setDoc(document)\r\n } else {\r\n console.log(\"销毁 document\")\r\n docRef.current?.destroy()\r\n setDoc(undefined)\r\n }\r\n }, [engine, schema])\r\n\r\n const handleDraggingResource = useCallback(() => {\r\n if (!drawerDocked) {\r\n setDrawerType(undefined)\r\n }\r\n }, [drawerDocked, setDrawerType])\r\n\r\n useEffect(() => {\r\n const draggingResourceOff = engine?.getMonitor().subscribeToDraggingResource(handleDraggingResource)\r\n return () => {\r\n draggingResourceOff?.()\r\n }\r\n }, [engine, handleDraggingResource])\r\n\r\n const handleRefChange = useCallback((el: HTMLDivElement) => {\r\n if (engine) {\r\n //删掉旧的\r\n engine.getShell().getContainer()?.destroy()\r\n const container = new ContainerImpl(engine, el, \"$$container$$\", [\r\n DragDropDriver,\r\n CanvasResizeDriver,\r\n MouseMoveDriver,\r\n KeyboardDriver\r\n ])\r\n engine.getShell()?.setContainer(container)\r\n // engine.getBehaviorManager().registerBehaviors(dropableBehavior)\r\n // engine.getBehaviorManager().registerBehaviors(undropableBehavior)\r\n }\r\n }, [engine])\r\n\r\n const handleCanvasDrawerClose = useCallback(() => {\r\n setDrawerType(undefined)\r\n }, [setDrawerType])\r\n\r\n const handleChangeComponent = useCallback((component: FrontComponent) => {\r\n setEditingComponent(component)\r\n setComponentChanged(true)\r\n }, [setComponentChanged, setEditingComponent])\r\n\r\n const handleDrawerTypeChange = useCallback((type: DrawerConentType) => {\r\n if (drawerType !== type) {\r\n setDrawerType(type)\r\n if (type === DrawerConentType.Layers) {\r\n setDrawerDocked(true)\r\n } else {\r\n setDrawerDocked(false)\r\n }\r\n } else {\r\n setDrawerType(undefined)\r\n }\r\n }, [drawerType, setDrawerType])\r\n\r\n return (\r\n <div\r\n ref={handleRefChange}\r\n className={`dark flex-1 flex flex-col min-h-screen`}\r\n >\r\n <Toolbar />\r\n <DocumentRoot doc={doc}>\r\n <div className=\"website-studio-core flex flex-1 h-full min-h-0 relative\">\r\n <Leftbar\r\n selectedDrawerType={drawerType}\r\n selectedContent={selectedContent}\r\n onSelectDrawerType={handleDrawerTypeChange}\r\n />\r\n <CanvasPanel\r\n drawer={\r\n <CanvasDrawer\r\n title={drawerType && titles[drawerType]}\r\n isOpen={!!drawerType}\r\n docked={drawerDocked}\r\n onDockChange={setDrawerDocked}\r\n onClose={handleCanvasDrawerClose}\r\n >\r\n <InsertPanel hidden={drawerType !== DrawerConentType.Insert} />\r\n <SEOPanel hidden={drawerType !== DrawerConentType.SEO} />\r\n <SEMPanel hidden={drawerType !== DrawerConentType.SEM} />\r\n <SNSPanel hidden={drawerType !== DrawerConentType.SNS} />\r\n <ComponentSchemaPanel\r\n hidden={drawerType !== DrawerConentType.ComponentSchema}\r\n editingComponent={editingComponent}\r\n onChangeComponent={handleChangeComponent}\r\n />\r\n <ComponentTestPanel\r\n hidden={drawerType !== DrawerConentType.ComponentTest}\r\n editingComponent={editingComponent}\r\n onChangeComponent={handleChangeComponent}\r\n />\r\n <LayersPanel hidden={drawerType !== DrawerConentType.Layers} />\r\n </CanvasDrawer>\r\n }\r\n >\r\n {\r\n doc && (\r\n <>\r\n <DesignViewport\r\n rxPropsFilter={rxPropsFilter}\r\n metaFilters={metaFilters}\r\n decorators={decorators}\r\n />\r\n <CodeViewport />\r\n <PreviewViewport\r\n metaFilters={metaFilters}\r\n />\r\n </>\r\n )\r\n }\r\n\r\n </CanvasPanel>\r\n {isNotSetup && !loading && <ThemeSetup />}\r\n {isNotSelected && <Welcome />}\r\n {isSelected && <PropsPanel />}\r\n </div>\r\n </DocumentRoot>\r\n\r\n </div>\r\n )\r\n}","import { EditorScope } from \"./components/EditorScope\";\r\nimport { StudioCore } from \"./components/StudioCore\";\r\nimport { useWebsite } from \"@rxdrag/biz-components\";\r\nimport { StudioRoot } from \"./components/StudioRoot\";\r\n\r\n/**\r\n * 必须放入WebsiteRoot之下\r\n */\r\nexport const WebsiteStudio = () => {\r\n const website = useWebsite()\r\n\r\n return (\r\n <StudioRoot\r\n websiteId={website?.id}\r\n >\r\n <WebsiteStudioInner />\r\n </StudioRoot>\r\n );\r\n};\r\n\r\nfunction WebsiteStudioInner() {\r\n\r\n return (\r\n <EditorScope>\r\n <StudioCore />\r\n </EditorScope>\r\n )\r\n}"],"names":["require$$0","l","m","p","q","a","g","React","ReactDebugCurrentFrame","x","hasOwnProperty","isArray","isValidElement","i","keys","jsxRuntimeModule","require$$1","schema","_a","_b","_c","_d","_e","selection","range","jsxs","jsx","previews","Fragment","value","createSchema","ContentType","DrawerConentType","DeviceType","ViewMode","forwardRef","r","classGroup","themeGetter","colors","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","getSpacingWithArbitrary","getLengthWithEmpty","getNumberWithAutoAndArbitrary","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumber","getNumberAndArbitrary","e","b","c","h","u","f","tvBase","y","clsx","createContext","$HgANd$react","$lmaYr$useRef","$lmaYr$useCallback","$bdb11010cef70236$var$idsUpdaterMap","$bdb11010cef70236$export$cd8c9cb68f842629","$ff5963eb1fccf552$export$e08e3b67e392101e","$3ef42575df84b30b$export$9d1611c77c2fe928","$7jXr9$clsx","$lPAwt$useRef","$lPAwt$useCallback","$lPAwt$useEffect","$6dfIe$useRef","$6dfIe$useLayoutEffect","$6dfIe$useEffectEvent","$6dfIe$useCallback","$hf0lj$useCallback","$hf0lj$getOwnerDocument","$28AnR$isMac","$28AnR$isVirtualClick","$28AnR$getOwnerWindow","$28AnR$getOwnerDocument","$28AnR$useEffect","$3b9Q0$useRef","$3b9Q0$useCallback","baseForwardRef","$jlOai$getOwnerDocument","$jlOai$getInteractionModality","$jlOai$runAfterTransition","$jlOai$focusWithoutScrolling","$isWE5$useRef","$isWE5$isFocusVisible","$isWE5$useState","$isWE5$useCallback","isFocused","$isWE5$useFocusVisibleListener","$isWE5$useFocus","$isWE5$useFocusWithin","$h8xso$react","$h8xso$useContext","$h8xso$useSyncRef","_","$h8xso$useFocus","$h8xso$useKeyboard","$h8xso$mergeProps","$h8xso$useRef","$h8xso$useEffect","$7R18e$isIOS","$7R18e$getOwnerDocument","$7R18e$runAfterTransition","$3aeG1$react","$7mdmh$useContext","$7mdmh$mergeProps","$7mdmh$useSyncRef","$7mdmh$_2","$7mdmh$_","$7mdmh$_1","$7mdmh$useState","$7mdmh$useRef","$7mdmh$useGlobalListeners","$7mdmh$useEffectEvent","$7mdmh$useMemo","pressProps","$7mdmh$getOwnerDocument","$7mdmh$chain","$7mdmh$isMac","$7mdmh$openLink","$7mdmh$isVirtualClick","$7mdmh$focusWithoutScrolling","$7mdmh$isVirtualPointerEvent","$7mdmh$getOwnerWindow","$7mdmh$useEffect","$AWxnT$useState","$AWxnT$useRef","$AWxnT$useEffect","$AWxnT$useMemo","triggerHoverEnd","hoverProps","usePress","useFocusable","mergeProps","filterDOMProps","style","_f","_g","_h","_i","spinner","useFocusRing","chain","useHover","Spinner","Ripple","Button","Input","deviceType","inputClassNames","field","Textarea","fields","props","open","page","merge","template","component","color","width","motion","doc","slot","name","document"],"mappings":"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ACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAI,gBAAgC,oBAAI,IAAI;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AC9KD,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,SAAS;AACb,SAAS,eAAe,OAAO,OAAO,IAAI;AACxC,MAAI;AAAA,IACF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAG;AACJ,MAAI,gBAAgB,CAAA;AACpB,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACR;AACD,aAAW,QAAQ,OAAO;AACxB,QAAI,iBAAiB,OAAO,SAAS,cAAc,IAAI,IAAI,GAAG;AAC5D;AAAA,IACD;AACD,SAAK,kBAAkB,OAAO,SAAS,eAAe,IAAI,IAAI,MAAM,OAAO,KAAK,IAAI,GAAG;AACrF;AAAA,IACD;AACD,QAAI,OAAO,KAAK,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI,GAAG;AACjD;AAAA,IACD;AACD,QAAI,iBAAiB,OAAO,KAAK,IAAI,GAAG;AACtC;AAAA,IACD;AACD,QAAI,kBAAkB,OAAO,KAAK,IAAI,GAAG;AACvC;AAAA,IACD;AACD,QAAI,OAAO,UAAU,eAAe,KAAK,OAAO,IAAI,MAAM,aAAa,IAAI,IAAI,KAAK,aAAa,OAAO,KAAK,IAAI,MAAM,aAAa,OAAO,SAAS,UAAU,IAAI,IAAI,MAAM,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,IAAI,GAAG;AACnN,oBAAc,IAAI,IAAI,MAAM,IAAI;AAAA,IACjC;AAAA,EACF;AACD,SAAO;AACT;ACxCA,IAAI,CAAC,iBAAiB,kBAAkB,IAAIsD,eAAc;AAAA,EACxD,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;ACPD,SAAS,6BAA6B,KAAK,mBAAmB;AAC1D,MAAI,kBAAkB,IAAI,GAAG,GAAG;AAC5B,UAAM,IAAI,UAAU,gEAAgE;AAAA,EACvF;AACL;ACFA,SAAS,0BAA0B,KAAK,YAAY,OAAO;AACvD,+BAA6B,KAAK,UAAU;AAC5C,aAAW,IAAI,KAAK,KAAK;AAC7B;ACQA,MAAM,4CAA4C,OAAO,aAAa,cAAkBC,eAAc,kBAAkB,MAAI;AAAE;ACE9H,SAAS,0CAA0C,IAAI;AACnD,QAAM,MAAUC,OAAe,IAAI;AACnC,EAAI,0CAA2C,MAAI;AAC/C,QAAI,UAAU;AAAA,EACtB,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AAED,SAAWC,YAAoB,IAAI,SAAO;AACtC,UAAM,IAAI,IAAI;AACd,WAAO,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,GAAG,IAAI;AAAA,EACzD,GAAE,CAAE,CAAA;AACT;ACNA,IAAIC,wCAAsC,oBAAI;AAqC9C,SAASC,4CAA0C,KAAK,KAAK;AACzD,MAAI,QAAQ;AAAK,WAAO;AACxB,MAAI,UAAUD,sCAAoC,IAAI,GAAG;AACzD,MAAI,SAAS;AACT,YAAQ,QAAQ,CAAC,OAAK,GAAG,GAAG,CAAC;AAC7B,WAAO;AAAA,EACV;AACD,MAAI,UAAUA,sCAAoC,IAAI,GAAG;AACzD,MAAI,SAAS;AACT,YAAQ,QAAQ,CAAC,OAAK,GAAG,GAAG,CAAC;AAC7B,WAAO;AAAA,EACV;AACD,SAAO;AACX;AC3DI,SAASE,+CAA6C,WAAW;AACjE,SAAO,IAAI,SAAO;AACd,aAAS,YAAY;AAAU,UAAI,OAAO,aAAa;AAAY,iBAAS,GAAG,IAAI;AAAA,EAC3F;AACA;AChBA,MAAM,4CAA4C,CAAC,OAAK;AACpD,MAAI;AACJ,UAAQ,oBAAoB,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,mBAAmB,QAAQ,sBAAsB,SAAS,oBAAoB;AACzJ;AACA,MAAM,4CAA4C,CAAC,OAAK;AACpD,MAAI,MAAM,YAAY,MAAM,GAAG,WAAW;AAAI,WAAO;AACrD,QAAM,MAAM,0CAA0C,EAAE;AACxD,SAAO,IAAI,eAAe;AAC9B;ACRA,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO;AAAE,SAAG;AAAA,WAAU,YAAU,OAAO;AAAE,QAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,UAAI,IAAE,EAAE;AAAO,WAAI,IAAE,GAAE,IAAE,GAAE;AAAI,UAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,IAAE;AAAM,WAAI,KAAK;AAAE,UAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE;AAAI,KAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;ACiB/W,SAASC,+CAA6C,MAAM;AAGxD,MAAI,SAAS;AAAA,IACT,GAAG,KAAK,CAAC;AAAA,EACjB;AACI,WAAQzD,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAI;AAChC,QAAI,QAAQ,KAAKA,EAAC;AAClB,aAAQ,OAAO,OAAM;AACjB,UAAIR,KAAI,OAAO,GAAG;AAClB,UAAI,IAAI,MAAM,GAAG;AAEjB,UAAI,OAAOA,OAAM,cAAc,OAAO,MAAM;AAAA,MAC5C,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,OAAO,IAAI,WAAW,CAAC;AAAA,MAAe,MAAM,IAAI,WAAW,CAAC;AAAA,MAAe;AAAI,eAAO,GAAG,IAAQgE,4CAA2ChE,IAAG,CAAC;AAAA,gBACnK,QAAQ,eAAe,QAAQ,uBAAuB,OAAOA,OAAM,YAAY,OAAO,MAAM;AAAU,eAAO,GAAG,IAAQkE,KAAalE,IAAG,CAAC;AAAA,eAC1I,QAAQ,QAAQA,MAAK;AAAG,eAAO,KAAS+D,4CAA2C/D,IAAG,CAAC;AAAA;AAC3F,eAAO,GAAG,IAAI,MAAM,SAAY,IAAIA;AAAA,IAC5C;AAAA,EACJ;AACD,SAAO;AACX;AC3BI,SAAS,0CAA0C,SAAS;AAC5D,MAAI,4CAA2C;AAAI,YAAQ,MAAM;AAAA,MAC7D,eAAe;AAAA,IACvB,CAAK;AAAA,OACI;AACD,QAAI,qBAAqB,4CAA4C,OAAO;AAC5E,YAAQ,MAAK;AACb,gDAA4C,kBAAkB;AAAA,EACjE;AACL;AACA,IAAI,oDAAoD;AACxD,SAAS,8CAA8C;AACnD,MAAI,qDAAqD,MAAM;AAC3D,wDAAoD;AACpD,QAAI;AACA,UAAI,YAAY,SAAS,cAAc,KAAK;AAC5C,gBAAU,MAAM;AAAA,QACZ,IAAI,gBAAiB;AACjB,8DAAoD;AACpD,iBAAO;AAAA,QACV;AAAA,MACjB,CAAa;AAAA,IACJ,SAAQ,GAAG;AAAA,IAEX;AAAA,EACJ;AACD,SAAO;AACX;AACA,SAAS,4CAA4C,SAAS;AAC1D,MAAI,SAAS,QAAQ;AACrB,MAAI,qBAAqB,CAAA;AACzB,MAAI,uBAAuB,SAAS,oBAAoB,SAAS;AACjE,SAAM,kBAAkB,eAAe,WAAW,sBAAqB;AACnE,QAAI,OAAO,eAAe,OAAO,gBAAgB,OAAO,cAAc,OAAO;AAAa,yBAAmB,KAAK;AAAA,QAC9G,SAAS;AAAA,QACT,WAAW,OAAO;AAAA,QAClB,YAAY,OAAO;AAAA,MAC/B,CAAS;AACD,aAAS,OAAO;AAAA,EACnB;AACD,MAAI,gCAAgC;AAAa,uBAAmB,KAAK;AAAA,MACrE,SAAS;AAAA,MACT,WAAW,qBAAqB;AAAA,MAChC,YAAY,qBAAqB;AAAA,IACzC,CAAK;AACD,SAAO;AACX;AACA,SAAS,4CAA4C,oBAAoB;AACrE,WAAS,EAAE,SAAkB,WAAsB,WAAwB,KAAI,oBAAmB;AAC9F,YAAQ,YAAY;AACpB,YAAQ,aAAa;AAAA,EACxB;AACL;ACpDI,SAAS,oCAAoC,IAAI;AACjD,MAAI;AACJ,MAAI,OAAO,WAAW,eAAe,OAAO,aAAa;AAAM,WAAO;AACtE,WAAS,kCAAkC,OAAO,UAAU,eAAe,OAAO,QAAQ,oCAAoC,SAAS,SAAS,gCAAgC,OAAO,KAAK,CAAC,UAAQ,GAAG,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,KAAK,OAAO,UAAU,SAAS;AACrQ;AACA,SAAS,mCAAmC,IAAI;AAC5C,MAAI;AACJ,SAAO,OAAO,WAAW,eAAe,OAAO,aAAa,OAAO,GAAG,OAAO,kCAAkC,OAAO,UAAU,eAAe,OAAO,QAAQ,oCAAoC,SAAS,SAAS,gCAAgC,aAAa,OAAO,UAAU,QAAQ,IAAI;AAClS;AACA,SAAS,6BAA6B,IAAI;AACtC,MAAI,MAAM;AACV,SAAO,MAAI;AACP,QAAI,OAAO;AAAM,YAAM,GAAE;AACzB,WAAO;AAAA,EACf;AACA;AACA,MAAM,4CAA4C,6BAA6B,WAAW;AACtF,SAAO,mCAAmC,OAAO;AACrD,CAAC;AACD,MAAM,2CAA2C,6BAA6B,WAAW;AACrF,SAAO,mCAAmC,UAAU;AACxD,CAAC;AACD,MAAM,4CAA4C,6BAA6B,WAAW;AACtF,SAAO,mCAAmC,QAAQ;AAAA,EAClD,+CAA+C,UAAU,iBAAiB;AAC9E,CAAC;AACD,MAAM,4CAA4C,6BAA6B,WAAW;AACtF,SAAO,yCAAwC,KAAM;AACzD,CAAC;AAID,MAAM,4CAA4C,6BAA6B,WAAW;AACtF,SAAO,oCAAoC,cAAc,KAAK,CAAC,0CAAyC;AAC5G,CAAC;AACD,MAAM,4CAA4C,6BAA6B,WAAW;AACtF,SAAO,oCAAoC,SAAS;AACxD,CAAC;AACD,MAAM,4CAA4C,6BAA6B,WAAW;AACtF,SAAO,oCAAoC,UAAU;AACzD,CAAC;AACD,MAAM,4CAA4C,6BAA6B,WAAW;AACtF,SAAO,oCAAoC,UAAU;AACzD,CAAC;ACDD,SAAS,0CAA0C,QAAQ,WAAW,aAAa,MAAM;AACrF,MAAI,oBAAoB;AACxB,MAAI,EAAE,SAAkB,SAAkB,QAAgB,SAAoB,IAAG;AAKjF,MAAQ,0CAA4C,OAAM,gBAAgB,OAAO,WAAW,QAAQ,kBAAkB,SAAS,UAAU,qBAAqB,cAAc,UAAU,QAAQ,uBAAuB,SAAS,SAAS,mBAAmB,WAAW,KAAK,MAAM,OAAO,WAAW,UAAU;AACxS,QAAQ,0CAAyC;AAAK,gBAAU;AAAA;AAC3D,gBAAU;AAAA,EAClB;AAGD,MAAI,QAAY,0CAA4C,KAAQ,0CAA4C,KAAI,CAAK,+CAAgD,OAAO,IAAI,cAAc,WAAW;AAAA,IACzM,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACR,CAAK,IAAI,IAAI,WAAW,SAAS;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,YAAY;AAAA,EACpB,CAAK;AACD,4CAA0C,YAAY;AACtD,EAAI,0CAA2C,MAAM;AACrD,SAAO,cAAc,KAAK;AAC1B,4CAA0C,YAAY;AAC1D;AAEA,0CAA0C,YAAY;ACrEtD,IAAI,6CAA6C,oBAAI;AAErD,IAAI,4CAA4C,oBAAI;AACpD,SAAS,0CAA0C;AAC/C,MAAI,OAAO,WAAW;AAAa;AACnC,WAAS,kBAAkB,OAAO;AAC9B,WAAO,kBAAkB;AAAA,EAC5B;AACD,MAAI,oBAAoB,CAAC,MAAI;AACzB,QAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AAAQ;AAExC,QAAI,cAAc,2CAA2C,IAAI,EAAE,MAAM;AACzE,QAAI,CAAC,aAAa;AACd,oBAAc,oBAAI;AAClB,iDAA2C,IAAI,EAAE,QAAQ,WAAW;AAIpE,QAAE,OAAO,iBAAiB,oBAAoB,iBAAiB;AAAA,QAC3D,MAAM;AAAA,MACtB,CAAa;AAAA,IACJ;AACD,gBAAY,IAAI,EAAE,YAAY;AAAA,EACtC;AACI,MAAI,kBAAkB,CAAC,MAAI;AACvB,QAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AAAQ;AAExC,QAAI,aAAa,2CAA2C,IAAI,EAAE,MAAM;AACxE,QAAI,CAAC;AAAY;AACjB,eAAW,OAAO,EAAE,YAAY;AAEhC,QAAI,WAAW,SAAS,GAAG;AACvB,QAAE,OAAO,oBAAoB,oBAAoB,eAAe;AAChE,iDAA2C,OAAO,EAAE,MAAM;AAAA,IAC7D;AAED,QAAI,2CAA2C,SAAS,GAAG;AACvD,eAAS,MAAM;AAA0C;AACzD,gDAA0C,MAAK;AAAA,IAClD;AAAA,EACT;AACI,WAAS,KAAK,iBAAiB,iBAAiB,iBAAiB;AACjE,WAAS,KAAK,iBAAiB,iBAAiB,eAAe;AACnE;AACA,IAAI,OAAO,aAAa,aAAa;AACjC,MAAI,SAAS,eAAe;AAAW,4CAAuC;AAAA;AACzE,aAAS,iBAAiB,oBAAoB,uCAAuC;AAC9F;AACA,SAAS,0CAA0C,IAAI;AAEnD,wBAAsB,MAAI;AAGtB,QAAI,2CAA2C,SAAS;AAAG,SAAE;AAAA;AACxD,gDAA0C,IAAI,EAAE;AAAA,EAC7D,CAAK;AACL;AC3DA,SAAS,4CAA4C;AACjD,MAAI,kBAAsBmE,OAAe,oBAAI,IAAK,CAAA;AAClD,MAAI,oBAAwBC,YAAoB,CAAC,aAAa,MAAM,UAAU,YAAU;AAEpF,QAAI,MAAM,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,QAAQ,IAAI,SAAO;AACnF,sBAAgB,QAAQ,OAAO,QAAQ;AACvC,eAAS,GAAG,IAAI;AAAA,IACnB,IAAG;AACJ,oBAAgB,QAAQ,IAAI,UAAU;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACZ,CAAS;AACD,gBAAY,iBAAiB,MAAM,UAAU,OAAO;AAAA,EACvD,GAAE,CAAE,CAAA;AACL,MAAI,uBAA2BA,YAAoB,CAAC,aAAa,MAAM,UAAU,YAAU;AACvF,QAAI;AACJ,QAAI,OAAO,+BAA+B,gBAAgB,QAAQ,IAAI,QAAQ,OAAO,QAAQ,iCAAiC,SAAS,SAAS,6BAA6B,OAAO;AACpL,gBAAY,oBAAoB,MAAM,IAAI,OAAO;AACjD,oBAAgB,QAAQ,OAAO,QAAQ;AAAA,EAC1C,GAAE,CAAE,CAAA;AACL,MAAI,2BAA+BA,YAAoB,MAAI;AACvD,oBAAgB,QAAQ,QAAQ,CAAC,OAAO,QAAM;AAC1C,2BAAqB,MAAM,aAAa,MAAM,MAAM,KAAK,MAAM,OAAO;AAAA,IAClF,CAAS;AAAA,EACT,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AAED,EAAIC,UAAkB,MAAI;AACtB,WAAO;AAAA,EACf,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AACD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACR;AACA;ACxCA,SAAS,0CAA0C,SAAS,KAAK;AAC7D,EAAI,0CAA2C,MAAI;AAC/C,QAAI,WAAW,QAAQ,OAAO,KAAK;AAC/B,cAAQ,IAAI,UAAU,IAAI;AAC1B,aAAO,MAAI;AACP,YAAI,QAAQ;AAAK,kBAAQ,IAAI,UAAU;AAAA,MACvD;AAAA,IACS;AAAA,EACT,CAAK;AACL;ACTA,SAAS,0CAA0C,OAAO;AAEtD,MAAI,MAAM,mBAAmB,KAAK,MAAM;AAAW,WAAO;AAI1D,MAAQ,0CAAyC,KAAO,MAAM;AAAa,WAAO,MAAM,SAAS,WAAW,MAAM,YAAY;AAC9H,SAAO,MAAM,WAAW,KAAK,CAAC,MAAM;AACxC;AACA,SAAS,0CAA0C,OAAO;AAOtD,SAAO,CAAK,+CAAgD,MAAM,UAAU,KAAK,MAAM,WAAW,KAAK,MAAM,UAAU,KAAK,MAAM,WAAW,KAAK,MAAM,aAAa,KAAK,MAAM,WAAW,KAAK,MAAM,gBAAgB;AAC1N;ACTA,IAAI,sCAAsC,oBAAI;AA4B9C,SAAS,0CAA0C,KAAK,KAAK;AACzD,MAAI,QAAQ;AAAK,WAAO;AACxB,MAAI,SAAS,oCAAoC,IAAI,GAAG;AACxD,MAAI,QAAQ;AACR,WAAO,GAAG;AACV,WAAO;AAAA,EACV;AACD,MAAI,SAAS,oCAAoC,IAAI,GAAG;AACxD,MAAI,QAAQ;AACR,WAAO,GAAG;AACV,WAAO;AAAA,EACV;AACD,SAAO;AACX;AClDI,SAAS,6CAA6C,WAAW;AACjE,SAAO,IAAI,SAAO;AACd,aAAS,YAAY;AAAU,UAAI,OAAO,aAAa;AAAY,iBAAS,GAAG,IAAI;AAAA,EAC3F;AACA;ACCA,SAAS,6CAA6C,MAAM;AAGxD,MAAI,SAAS;AAAA,IACT,GAAG,KAAK,CAAC;AAAA,EACjB;AACI,WAAQ7D,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAI;AAChC,QAAI,QAAQ,KAAKA,EAAC;AAClB,aAAQ,OAAO,OAAM;AACjB,UAAIR,KAAI,OAAO,GAAG;AAClB,UAAI,IAAI,MAAM,GAAG;AAEjB,UAAI,OAAOA,OAAM,cAAc,OAAO,MAAM;AAAA,MAC5C,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,OAAO,IAAI,WAAW,CAAC;AAAA,MAAe,MAAM,IAAI,WAAW,CAAC;AAAA,MAAe;AAAI,eAAO,GAAG,IAAQ,0CAA2CA,IAAG,CAAC;AAAA,gBACnK,QAAQ,eAAe,QAAQ,uBAAuB,OAAOA,OAAM,YAAY,OAAO,MAAM;AAAU,eAAO,GAAG,IAAQkE,KAAalE,IAAG,CAAC;AAAA,eAC1I,QAAQ,QAAQA,MAAK;AAAG,eAAO,KAAS,0CAA2CA,IAAG,CAAC;AAAA;AAC3F,eAAO,GAAG,IAAI,MAAM,SAAY,IAAIA;AAAA,IAC5C;AAAA,EACJ;AACD,SAAO;AACX;AC3BI,MAAM,qCAAqC,oBAAI,IAAI;AAAA,EACnD;AACJ,CAAC;AACD,MAAM,2CAA2C,oBAAI,IAAI;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAED,MAAM,sCAAsC,oBAAI,IAAI;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACD,MAAM,+BAA+B;AACrC,SAAS,0CAA0C,OAAO,OAAO,IAAI;AACjE,MAAI,EAAE,WAAsB,QAAgB,UAAsB,IAAG;AACrE,MAAI,gBAAgB,CAAA;AACpB,aAAU,QAAQ;AAAM,QAAI,OAAO,UAAU,eAAe,KAAK,OAAO,IAAI,MAAM,mCAAmC,IAAI,IAAI,KAAK,aAAa,yCAAyC,IAAI,IAAI,KAAK,UAAU,oCAAoC,IAAI,IAAI,MAAM,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,IAAI,IAAI,MAAM,6BAA6B,KAAK,IAAI;AAAI,oBAAc,IAAI,IAAI,MAAM,IAAI;AACzZ,SAAO;AACX;ACnCA,SAAS,4BAA4B,UAAU,YAAY;AACvD,MAAI,WAAW;AAAK,WAAO,WAAW,IAAI,KAAK,QAAQ;AAEvD,SAAO,WAAW;AACtB;ACJA,SAAS,gCAAgC,UAAU,YAAY,QAAQ;AACnE,MAAI,CAAC,WAAW,IAAI,QAAQ;AAAG,UAAM,IAAI,UAAU,kBAAkB,SAAS,gCAAgC;AAE9G,SAAO,WAAW,IAAI,QAAQ;AAClC;ACDA,SAAS,yBAAyB,UAAU,YAAY;AACpD,MAAI,aAAa,gCAAgC,UAAU,YAAY,KAAK;AAC5E,SAAO,4BAA4B,UAAU,UAAU;AAC3D;ACNA,SAAS,4BAA4B,UAAU,YAAY,OAAO;AAC9D,MAAI,WAAW;AAAK,eAAW,IAAI,KAAK,UAAU,KAAK;AAAA,OAClD;AACD,QAAI,CAAC,WAAW,UAAU;AAItB,YAAM,IAAI,UAAU,0CAA0C;AAAA,IACjE;AACD,eAAW,QAAQ;AAAA,EACtB;AACL;ACRA,SAAS,yBAAyB,UAAU,YAAY,OAAO;AAC3D,MAAI,aAAa,gCAAgC,UAAU,YAAY,KAAK;AAC5E,8BAA4B,UAAU,YAAY,KAAK;AACvD,SAAO;AACX;ACQA,MAAM,0CAA0C;AAAA,EAC5C,qBAAqB;AACjB,WAAO,KAAK,YAAY;AAAA,EAC3B;AAAA,EACD,iBAAiB;AACb,SAAK,mBAAmB;AACxB,SAAK,YAAY;EACpB;AAAA,EACD,kBAAkB;AACd,SAAK,YAAY;AACjB,SAAK,uBAAuB,MAAI;AAAA,EACnC;AAAA,EACD,uBAAuB;AACnB,WAAO;AAAA,EACV;AAAA,EACD,UAAU;AAAA,EAAE;AAAA,EACZ,YAAY,MAAM,aAAY;AAC1B,SAAK,cAAc;AACnB,SAAK,SAAS,YAAY;AAC1B,SAAK,gBAAgB,YAAY;AACjC,SAAK,gBAAgB,YAAY;AACjC,SAAK,UAAU,YAAY;AAC3B,SAAK,aAAa,YAAY;AAC9B,SAAK,mBAAmB,YAAY;AACpC,SAAK,aAAa,YAAY;AAC9B,SAAK,YAAY,YAAY;AAC7B,SAAK,YAAY,YAAY;AAC7B,SAAK,OAAO;AAAA,EACf;AACL;AACA,SAAS,0CAA0C,QAAQ;AACvD,MAAI,WAAesE,OAAe;AAAA,IAC9B,WAAW;AAAA,IACX,UAAU;AAAA,EAClB,CAAK;AAGD,EAAIC,0CAAwB,MAAI;AAC5B,UAAM,QAAQ,SAAS;AACvB,WAAO,MAAI;AACP,UAAI,MAAM,UAAU;AAChB,cAAM,SAAS;AACf,cAAM,WAAW;AAAA,MACpB;AAAA,IACb;AAAA,EACK,GAAE,CAAE,CAAA;AACL,MAAI,eAAmBC,0CAAuB,CAAC,MAAI;AAC/C,eAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,CAAC;AAAA,EAChE,CAAK;AAED,SAAWC,YAAoB,CAAC,MAAI;AAKhC,QAAI,EAAE,kBAAkB,qBAAqB,EAAE,kBAAkB,oBAAoB,EAAE,kBAAkB,uBAAuB,EAAE,kBAAkB,mBAAmB;AACnK,eAAS,QAAQ,YAAY;AAC7B,UAAI,SAAS,EAAE;AACf,UAAI,gBAAgB,CAACxB,OAAI;AACrB,iBAAS,QAAQ,YAAY;AAC7B,YAAI,OAAO;AACX,uBAAa,IAAI,0CAA0C,QAAQA,EAAC,CAAC;AAErE,YAAI,SAAS,QAAQ,UAAU;AAC3B,mBAAS,QAAQ,SAAS;AAC1B,mBAAS,QAAQ,WAAW;AAAA,QAC/B;AAAA,MACjB;AACY,aAAO,iBAAiB,YAAY,eAAe;AAAA,QAC/C,MAAM;AAAA,MACtB,CAAa;AACD,eAAS,QAAQ,WAAW,IAAI,iBAAiB,MAAI;AACjD,YAAI,SAAS,QAAQ,aAAa,OAAO,UAAU;AAC/C,cAAI;AACJ,WAAC,6BAA6B,SAAS,QAAQ,cAAc,QAAQ,+BAA+B,SAAS,SAAS,2BAA2B,WAAU;AAC3J,cAAI,kBAAkB,WAAW,SAAS,gBAAgB,OAAO,SAAS;AAC1E,iBAAO,cAAc,IAAI,WAAW,QAAQ;AAAA,YACxC,eAAe;AAAA,UAClB,CAAA,CAAC;AACF,iBAAO,cAAc,IAAI,WAAW,YAAY;AAAA,YAC5C,SAAS;AAAA,YACT,eAAe;AAAA,UAClB,CAAA,CAAC;AAAA,QACL;AAAA,MACjB,CAAa;AACD,eAAS,QAAQ,SAAS,QAAQ,QAAQ;AAAA,QACtC,YAAY;AAAA,QACZ,iBAAiB;AAAA,UACb;AAAA,QACH;AAAA,MACjB,CAAa;AAAA,IACJ;AAAA,EACT,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AACL;ACzFA,SAAS,0CAA0C,OAAO;AACtD,MAAI,EAAE,YAAwB,SAAS,aAAa,QAAQ,YAAY,cAA8B,IAAG;AACzG,QAAM,SAAayB,YAAoB,CAAC,MAAI;AACxC,QAAI,EAAE,WAAW,EAAE,eAAe;AAC9B,UAAI;AAAY,mBAAW,CAAC;AAC5B,UAAI;AAAe,sBAAc,KAAK;AACtC,aAAO;AAAA,IACV;AAAA,EACT,GAAO;AAAA,IACC;AAAA,IACA;AAAA,EACR,CAAK;AACD,QAAM,mBAAuB,0CAA2C,MAAM;AAC9E,QAAM,UAAcA,YAAoB,CAAC,MAAI;AAGzC,UAAM,gBAAoBC,0CAAyB,EAAE,MAAM;AAC3D,QAAI,EAAE,WAAW,EAAE,iBAAiB,cAAc,kBAAkB,EAAE,QAAQ;AAC1E,UAAI;AAAa,oBAAY,CAAC;AAC9B,UAAI;AAAe,sBAAc,IAAI;AACrC,uBAAiB,CAAC;AAAA,IACrB;AAAA,EACT,GAAO;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACR,CAAK;AACD,SAAO;AAAA,IACH,YAAY;AAAA,MACR,SAAS,CAAC,eAAe,eAAe,iBAAiB,cAAc,UAAU;AAAA,MACjF,QAAQ,CAAC,eAAe,cAAc,iBAAiB,SAAS;AAAA,IACnE;AAAA,EACT;AACA;ACjCA,IAAI,wCAAwC;AAC5C,IAAI,uCAAuC,oBAAI;AAC/C,IAAI,4CAA4C,oBAAI;AACpD,IAAI,4CAA4C;AAChD,IAAI,iDAAiD;AAErD,MAAM,iDAAiD;AAAA,EACnD,KAAK;AAAA,EACL,QAAQ;AACZ;AACA,SAAS,4CAA4C,UAAU,GAAG;AAC9D,WAAS,WAAW;AAAqC,YAAQ,UAAU,CAAC;AAChF;AAGI,SAAS,iCAAiC,GAAG;AAE7C,SAAO,EAAE,EAAE,WAAW,CAAKC,0CAAY,KAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,aAAa,EAAE,QAAQ,WAAW,EAAE,QAAQ;AACjI;AACA,SAAS,0CAA0C,GAAG;AAClD,8CAA4C;AAC5C,MAAI,iCAAiC,CAAC,GAAG;AACrC,4CAAwC;AACxC,gDAA4C,YAAY,CAAC;AAAA,EAC5D;AACL;AACA,SAAS,yCAAyC,GAAG;AACjD,0CAAwC;AACxC,MAAI,EAAE,SAAS,eAAe,EAAE,SAAS,eAAe;AACpD,gDAA4C;AAC5C,gDAA4C,WAAW,CAAC;AAAA,EAC3D;AACL;AACA,SAAS,uCAAuC,GAAG;AAC/C,MAAQC,0CAAuB,CAAC,GAAG;AAC/B,gDAA4C;AAC5C,4CAAwC;AAAA,EAC3C;AACL;AACA,SAAS,uCAAuC,GAAG;AAI/C,MAAI,EAAE,WAAW,UAAU,EAAE,WAAW;AAAU;AAGlD,MAAI,CAAC,6CAA6C,CAAC,gDAAgD;AAC/F,4CAAwC;AACxC,gDAA4C,WAAW,CAAC;AAAA,EAC3D;AACD,8CAA4C;AAC5C,mDAAiD;AACrD;AACA,SAAS,yCAAyC;AAG9C,8CAA4C;AAC5C,mDAAiD;AACrD;AAGI,SAAS,6CAA6C,SAAS;AAC/D,MAAI,OAAO,WAAW,eAAe,0CAA0C,IAAQC,0CAAuB,OAAO,CAAC;AAAG;AACzH,QAAM,eAAmBA,0CAAuB,OAAO;AACvD,QAAM,iBAAqBC,0CAAyB,OAAO;AAK3D,MAAI,QAAQ,aAAa,YAAY,UAAU;AAC/C,eAAa,YAAY,UAAU,QAAQ,WAAW;AAClD,gDAA4C;AAC5C,UAAM,MAAM,MAAM,SAAS;AAAA,EACnC;AACI,iBAAe,iBAAiB,WAAW,2CAA2C,IAAI;AAC1F,iBAAe,iBAAiB,SAAS,2CAA2C,IAAI;AACxF,iBAAe,iBAAiB,SAAS,wCAAwC,IAAI;AAGrF,eAAa,iBAAiB,SAAS,wCAAwC,IAAI;AACnF,eAAa,iBAAiB,QAAQ,wCAAwC,KAAK;AACnF,MAAI,OAAO,iBAAiB,aAAa;AACrC,mBAAe,iBAAiB,eAAe,0CAA0C,IAAI;AAC7F,mBAAe,iBAAiB,eAAe,0CAA0C,IAAI;AAC7F,mBAAe,iBAAiB,aAAa,0CAA0C,IAAI;AAAA,EACnG,OAAW;AACH,mBAAe,iBAAiB,aAAa,0CAA0C,IAAI;AAC3F,mBAAe,iBAAiB,aAAa,0CAA0C,IAAI;AAC3F,mBAAe,iBAAiB,WAAW,0CAA0C,IAAI;AAAA,EAC5F;AAED,eAAa,iBAAiB,gBAAgB,MAAI;AAC9C,sDAAkD,OAAO;AAAA,EACjE,GAAO;AAAA,IACC,MAAM;AAAA,EACd,CAAK;AACD,4CAA0C,IAAI,cAAc;AAAA,IACxD;AAAA,EACR,CAAK;AACL;AACA,MAAM,oDAAoD,CAAC,SAAS,iBAAe;AAC/E,QAAM,eAAmBD,0CAAuB,OAAO;AACvD,QAAM,iBAAqBC,0CAAyB,OAAO;AAC3D,MAAI;AAAc,mBAAe,oBAAoB,oBAAoB,YAAY;AACrF,MAAI,CAAC,0CAA0C,IAAI,YAAY;AAAG;AAClE,eAAa,YAAY,UAAU,QAAQ,0CAA0C,IAAI,YAAY,EAAE;AACvG,iBAAe,oBAAoB,WAAW,2CAA2C,IAAI;AAC7F,iBAAe,oBAAoB,SAAS,2CAA2C,IAAI;AAC3F,iBAAe,oBAAoB,SAAS,wCAAwC,IAAI;AACxF,eAAa,oBAAoB,SAAS,wCAAwC,IAAI;AACtF,eAAa,oBAAoB,QAAQ,wCAAwC,KAAK;AACtF,MAAI,OAAO,iBAAiB,aAAa;AACrC,mBAAe,oBAAoB,eAAe,0CAA0C,IAAI;AAChG,mBAAe,oBAAoB,eAAe,0CAA0C,IAAI;AAChG,mBAAe,oBAAoB,aAAa,0CAA0C,IAAI;AAAA,EACtG,OAAW;AACH,mBAAe,oBAAoB,aAAa,0CAA0C,IAAI;AAC9F,mBAAe,oBAAoB,aAAa,0CAA0C,IAAI;AAC9F,mBAAe,oBAAoB,WAAW,0CAA0C,IAAI;AAAA,EAC/F;AACD,4CAA0C,OAAO,YAAY;AACjE;AACA,SAAS,0CAA0C,SAAS;AACxD,QAAM,iBAAqBA,0CAAyB,OAAO;AAC3D,MAAI;AACJ,MAAI,eAAe,eAAe;AAAW,iDAA6C,OAAO;AAAA,OAC5F;AACD,mBAAe,MAAI;AACf,mDAA6C,OAAO;AAAA,IAChE;AACQ,mBAAe,iBAAiB,oBAAoB,YAAY;AAAA,EACnE;AACD,SAAO,MAAI,kDAAkD,SAAS,YAAY;AACtF;AAGA,IAAI,OAAO,aAAa;AAAa;AACrC,SAAS,4CAA4C;AACjD,SAAO,0CAA0C;AACrD;AACA,SAAS,4CAA4C;AACjD,SAAO;AACX;AAmBA,MAAM,0CAA0C,oBAAI,IAAI;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAIG,SAAS,2CAA2C,aAAa,UAAU,GAAG;AAC9E,MAAI;AACJ,QAAM,oBAAoB,OAAO,WAAW,cAAkBD,0CAAuB,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,MAAM,EAAE,mBAAmB;AACxJ,QAAM,uBAAuB,OAAO,WAAW,cAAkBA,0CAAuB,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,MAAM,EAAE,sBAAsB;AAC9J,QAAM,eAAe,OAAO,WAAW,cAAkBA,0CAAuB,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,MAAM,EAAE,cAAc;AAC9I,QAAM,iBAAiB,OAAO,WAAW,cAAkBA,0CAAuB,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,MAAM,EAAE,gBAAgB;AAClJ,gBAAc,gBAAgB,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,mBAAmB,qBAAqB,CAAC,wCAAwC,IAAI,MAAM,QAAQ,MAAM,SAAS,UAAU,YAAY,EAAE,YAAY,QAAQ,cAAc,SAAS,SAAS,UAAU,IAAI,MAAM,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,mBAAmB,yBAAyB,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,mBAAmB,iBAAiB,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,OAAO;AACve,SAAO,EAAE,eAAe,aAAa,cAAc,aAAa,kBAAkB,CAAC,+CAA+C,EAAE,GAAG;AAC3I;AAeA,SAAS,0CAA0C,IAAI,MAAM,MAAM;AAC/D;AACA,EAAIE,UAAkB,MAAI;AACtB,QAAI,UAAU,CAAC,UAAU,MAAI;AACzB,UAAI,CAAC,2CAA2C,CAAC,EAAE,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,cAAc,UAAU,CAAC;AAAG;AAChI,SAAG,0CAAyC,CAAE;AAAA,IAC1D;AACQ,yCAAqC,IAAI,OAAO;AAChD,WAAO,MAAI;AACP,2CAAqC,OAAO,OAAO;AAAA,IAC/D;AAAA,EAEK,GAAE,IAAI;AACX;ACrNA,SAAS,0CAA0C,OAAO;AACtD,MAAI,EAAE,YAAwB,cAA4B,eAA8B,oBAA0C,IAAG;AACrI,MAAI,QAAYC,OAAe;AAAA,IAC3B,eAAe;AAAA,EACvB,CAAK;AACD,MAAI,SAAaC,YAAoB,CAAC,MAAI;AAItC,QAAI,MAAM,QAAQ,iBAAiB,CAAC,EAAE,cAAc,SAAS,EAAE,aAAa,GAAG;AAC3E,YAAM,QAAQ,gBAAgB;AAC9B,UAAI;AAAc,qBAAa,CAAC;AAChC,UAAI;AAAqB,4BAAoB,KAAK;AAAA,IACrD;AAAA,EACT,GAAO;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACR,CAAK;AACD,MAAI,mBAAuB,0CAA2C,MAAM;AAC5E,MAAI,UAAcA,YAAoB,CAAC,MAAI;AAGvC,QAAI,CAAC,MAAM,QAAQ,iBAAiB,SAAS,kBAAkB,EAAE,QAAQ;AACrE,UAAI;AAAe,sBAAc,CAAC;AAClC,UAAI;AAAqB,4BAAoB,IAAI;AACjD,YAAM,QAAQ,gBAAgB;AAC9B,uBAAiB,CAAC;AAAA,IACrB;AAAA,EACT,GAAO;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACR,CAAK;AACD,MAAI;AAAY,WAAO;AAAA,MACnB,kBAAkB;AAAA;AAAA,QAEd,SAAS;AAAA,QACT,QAAQ;AAAA,MACX;AAAA,IACT;AACI,SAAO;AAAA,IACH,kBAAkB;AAAA,MACd;AAAA,MACA;AAAA,IACH;AAAA,EACT;AACA;ACxDI,SAAS,0CAA0C,SAAS;AAC5D,MAAI,CAAC;AAAS,WAAO;AACrB,MAAI,wBAAwB;AAC5B,SAAO,CAAC,MAAI;AACR,QAAI,QAAQ;AAAA,MACR,GAAG;AAAA,MACH,iBAAkB;AACd,UAAE,eAAc;AAAA,MACnB;AAAA,MACD,qBAAsB;AAClB,eAAO,EAAE;MACZ;AAAA,MACD,kBAAmB;AACf,gBAAQ,MAAM,sIAAsI;AAAA,MACvJ;AAAA,MACD,sBAAuB;AACnB,gCAAwB;AAAA,MAC3B;AAAA,IACb;AACQ,YAAQ,KAAK;AACb,QAAI;AAAuB,QAAE;EACrC;AACA;ACnBA,SAAS,0CAA0C,OAAO;AACtD,SAAO;AAAA,IACH,eAAe,MAAM,aAAa,KAAK;AAAA,MACnC,WAAe,0CAA2C,MAAM,SAAS;AAAA,MACzE,SAAa,0CAA2C,MAAM,OAAO;AAAA,IACxE;AAAA,EACT;AACA;AClBA,SAAS,WAAW,WAAW;AAC7B,SAAOC,aAAe,SAAS;AACjC;AAqBA,IAAI,mBAAmB,CAAC,OAAO,aAAa,qBAAqB,SAAS;AACxE,MAAI,CAAC,aAAa;AAChB,WAAO,CAAC,OAAO,CAAA,CAAE;AAAA,EAClB;AACD,QAAM,SAAS,YAAY,OAAO,CAAC,KAAK,QAAQ;AAC9C,QAAI,OAAO,OAAO;AAChB,aAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,GAAG;IACvC,OAAW;AACL,aAAO;AAAA,IACR;AAAA,EACF,GAAE,CAAE,CAAA;AACL,MAAI,oBAAoB;AACtB,UAAM,UAAU,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,SAAS,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,CAAE,CAAA;AACvI,WAAO,CAAC,SAAS,MAAM;AAAA,EAC3B,OAAS;AACL,WAAO,CAAC,OAAO,MAAM;AAAA,EACtB;AACH;ACtCA,IAAI,CAAC,qBAAqB,qBAAqB,IAAIzB,eAAc;AAAA,EAC/D,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;ACQD,SAAS,0CAA0C,SAAS;AAMxD,QAAM,gBAAoB0B,0CAAyB,OAAO;AAC1D,MAAQC,0CAAgC,MAAK,WAAW;AACpD,QAAI,qBAAqB,cAAc;AACvC,IAAIC,0CAA2B,MAAI;AAE/B,UAAI,cAAc,kBAAkB,sBAAsB,QAAQ;AAAa,QAAIC,0CAA8B,OAAO;AAAA,IACpI,CAAS;AAAA,EACT;AAAW,IAAIA,0CAA8B,OAAO;AACpD;ACxBA,SAAS,0CAA0C,QAAQ,IAAI;AAC3D,MAAI,EAAE,YAAuB,OAAO,aAA0B,OAAgB,IAAG;AACjF,MAAI,QAAYC,OAAe;AAAA,IAC3B,WAAW;AAAA,IACX,gBAAgB,aAAiBC,0CAAwB;AAAA,EACjE,CAAK;AACD,MAAI,CAAC,WAAW,UAAU,IAAQC,SAAiB,KAAK;AACxD,MAAI,CAAC,qBAAqB,eAAe,IAAQA,SAAiB,MAAI,MAAM,QAAQ,aAAa,MAAM,QAAQ,cAAc;AAC7H,MAAI,cAAkBC,YAAoB,MAAI,gBAAgB,MAAM,QAAQ,aAAa,MAAM,QAAQ,cAAc,GAAG,CAAE,CAAA;AAC1H,MAAI,gBAAoBA,YAAoB,CAACC,eAAY;AACrD,UAAM,QAAQ,YAAYA;AAC1B,eAAWA,UAAS;AACpB;EACR,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AACD,EAAIC,0CAAgC,CAAC,mBAAiB;AAClD,UAAM,QAAQ,iBAAiB;AAC/B;EACH,GAAE,IAAI;AAAA,IACH;AAAA,EACR,CAAK;AACD,MAAI,EAAE,WAAwB,IAAOC,0CAAiB;AAAA,IAClD,YAAY;AAAA,IACZ;AAAA,EACR,CAAK;AACD,MAAI,EAAE,iBAAoC,IAAOC,0CAAuB;AAAA,IACpE,YAAY,CAAC;AAAA,IACb,qBAAqB;AAAA,EAC7B,CAAK;AACD,SAAO;AAAA,IACH;AAAA,IACA,gBAAgB;AAAA,IAChB,YAAY,SAAS,mBAAmB;AAAA,EAChD;AACA;ACrBA,IAAI,yCAA2DC,+BAAc,cAAc,IAAI;AAC/F,SAAS,0CAA0C,KAAK;AACpD,MAAI,UAAcC,WAAmB,sCAAsC,KAAK,CAAA;AAChF,EAAIC,0CAAmB,SAAS,GAAG;AAEnC,MAAI,EAAE,KAAKC,IAAG,GAAG,WAAU,IAAK;AAChC,SAAO;AACX;AAeA,SAAS,0CAA0C,OAAO,QAAQ;AAC9D,MAAI,EAAE,WAAsB,IAASC,0CAAiB,KAAK;AAC3D,MAAI,EAAE,cAA4B,IAASC,0CAAoB,KAAK;AACpE,MAAI,eAAmBC,4CAAmB,YAAY,aAAa;AACnE,MAAI,WAAW,0CAA0C,MAAM;AAC/D,MAAI,mBAAmB,MAAM,aAAa,CAAA,IAAK;AAC/C,MAAI,eAAmBC,OAAe,MAAM,SAAS;AACrD,EAAIC,UAAkB,MAAI;AACtB,QAAI,aAAa,WAAW,OAAO;AAAS,MAAI,0CAA2C,OAAO,OAAO;AACzG,iBAAa,UAAU;AAAA,EAC/B,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AACD,SAAO;AAAA,IACH,gBAAoBF,4CAAmB;AAAA,MACnC,GAAG;AAAA,MACH,UAAU,MAAM,uBAAuB,CAAC,MAAM,aAAa,KAAK;AAAA,IACnE,GAAE,gBAAgB;AAAA,EAC3B;AACA;AC7CA,IAAI,8BAA8B;AAClC,IAAI,wCAAwC;AAC5C,IAAI,2CAA2C,oBAAI;AACnD,SAAS,0CAA0C,QAAQ;AACvD,MAAQG,0CAAY,GAAK;AACrB,QAAI,gCAAgC,WAAW;AAE3C,YAAM,iBAAqBC,0CAAyB,MAAM;AAC1D,8CAAwC,eAAe,gBAAgB,MAAM;AAC7E,qBAAe,gBAAgB,MAAM,mBAAmB;AAAA,IAC3D;AACD,kCAA8B;AAAA,EACjC,WAAU,kBAAkB,eAAe,kBAAkB,YAAY;AAGtE,6CAAyC,IAAI,QAAQ,OAAO,MAAM,UAAU;AAC5E,WAAO,MAAM,aAAa;AAAA,EAC7B;AACL;AACA,SAAS,0CAA0C,QAAQ;AACvD,MAAQD,0CAAY,GAAK;AAGrB,QAAI,gCAAgC;AAAY;AAChD,kCAA8B;AAG9B,eAAW,MAAI;AAGX,MAAIE,0CAA2B,MAAI;AAE/B,YAAI,gCAAgC,aAAa;AAE7C,gBAAM,iBAAqBD,0CAAyB,MAAM;AAC1D,cAAI,eAAe,gBAAgB,MAAM,qBAAqB;AAAQ,2BAAe,gBAAgB,MAAM,mBAAmB,yCAAyC;AACvK,kDAAwC;AACxC,wCAA8B;AAAA,QACjC;AAAA,MACjB,CAAa;AAAA,IACJ,GAAE,GAAG;AAAA,EACT,WAAU,kBAAkB,eAAe,kBAAkB,YAE9D;AACI,QAAI,UAAU,yCAAyC,IAAI,MAAM,GAAG;AAChE,UAAI,sBAAsB,yCAAyC,IAAI,MAAM;AAC7E,UAAI,OAAO,MAAM,eAAe;AAAQ,eAAO,MAAM,aAAa;AAClE,UAAI,OAAO,aAAa,OAAO,MAAM;AAAI,eAAO,gBAAgB,OAAO;AACvE,+CAAyC,OAAO,MAAM;AAAA,IACzD;AAAA,EACJ;AACL;ACrDA,MAAM,4CAAgDE,eAAc,cAAc;AAAA,EAC9E,UAAU,MAAI;AAAA,EAAE;AACpB,CAAC;AACD,0CAA0C,cAAc;ACaxD,SAAS,+CAA+C,OAAO;AAE3D,MAAI,UAAcC,WAAuB;AACzC,MAAI,SAAS;AACT,QAAI,EAAE,UAAoB,GAAG,aAAY,IAAK;AAC9C,YAAYC,4CAAmB,cAAc,KAAK;AAClD;EACH;AACD,EAAIC,0CAAmB,SAAS,MAAM,GAAG;AACzC,SAAO;AACX;AACA,IAAI,+CAA6D,oBAAI;AACrE,MAAM,iCAAiC;AAAA,EACnC,sBAAsB;AAClB,IAAIC,yBAAW,MAAM,8CAA8C,KAAK;AAAA,EAC3E;AAAA,EACD,IAAI,wBAAwB;AACxB,WAAWC,yBAAU,MAAM,4CAA4C;AAAA,EAC1E;AAAA,EACD,YAAY,MAAM,aAAa,eAAc;AACzC,IAAIC,0BAAW,MAAM,8CAA8C;AAAA,MAC/D,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,IAAIF,yBAAW,MAAM,8CAA8C,IAAI;AACvE,SAAK,OAAO;AACZ,SAAK,cAAc;AACnB,SAAK,SAAS,cAAc;AAC5B,SAAK,WAAW,cAAc;AAC9B,SAAK,UAAU,cAAc;AAC7B,SAAK,UAAU,cAAc;AAC7B,SAAK,SAAS,cAAc;AAAA,EAC/B;AACL;AACA,MAAM,qCAAqC,OAAO,aAAa;AAC/D,SAAS,0CAA0C,OAAO;AACtD,MAAI;AAAA,IAAE;AAAA,IAAkB;AAAA,IAA8B;AAAA,IAA4B;AAAA,IAAwB;AAAA,IAAsB;AAAA,IAAwB,WAAW;AAAA,IAAe;AAAA,IAA0C;AAAA,IAAsD;AAAA;AAAA,IAClR,KAAKb;AAAA,IAAG,GAAG;AAAA,EAAU,IAAG,+CAA+C,KAAK;AAC5E,MAAI,CAAC,WAAW,UAAU,IAAQgB,SAAiB,KAAK;AACxD,MAAI,MAAUC,OAAe;AAAA,IACzB,WAAW;AAAA,IACX,2BAA2B;AAAA,IAC3B,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,aAAa;AAAA,EACrB,CAAK;AACD,MAAI,EAAE,mBAAsC,yBAAoD,IAAOC;AACvG,MAAI,oBAAwBC,0CAAuB,CAAC,eAAe,gBAAc;AAC7E,QAAI,QAAQ,IAAI;AAChB,QAAI,cAAc,MAAM;AAAmB,aAAO;AAClD,QAAI,wBAAwB;AAC5B,UAAM,oBAAoB;AAC1B,QAAI,cAAc;AACd,UAAI,QAAQ,IAAI,iCAAiC,cAAc,aAAa,aAAa;AACzF,mBAAa,KAAK;AAClB,8BAAwB,MAAM;AAAA,IACjC;AACD,QAAI;AAAe,oBAAc,IAAI;AACrC,UAAM,oBAAoB;AAC1B,UAAM,oBAAoB;AAC1B,eAAW,IAAI;AACf,WAAO;AAAA,EACf,CAAK;AACD,MAAI,kBAAsBA,0CAAuB,CAAC,eAAe,aAAa,aAAa,SAAO;AAC9F,QAAI,QAAQ,IAAI;AAChB,QAAI,CAAC,MAAM;AAAmB,aAAO;AACrC,UAAM,wBAAwB;AAC9B,UAAM,oBAAoB;AAC1B,UAAM,oBAAoB;AAC1B,QAAI,wBAAwB;AAC5B,QAAI,YAAY;AACZ,UAAI,QAAQ,IAAI,iCAAiC,YAAY,aAAa,aAAa;AACvF,iBAAW,KAAK;AAChB,8BAAwB,MAAM;AAAA,IACjC;AACD,QAAI;AAAe,oBAAc,KAAK;AACtC,eAAW,KAAK;AAChB,QAAI,WAAW,cAAc,CAAC,YAAY;AACtC,UAAI,QAAQ,IAAI,iCAAiC,SAAS,aAAa,aAAa;AACpF,cAAQ,KAAK;AACb,gCAA0B,wBAAwB,MAAM;AAAA,IAC3D;AACD,UAAM,oBAAoB;AAC1B,WAAO;AAAA,EACf,CAAK;AACD,MAAI,iBAAqBA,0CAAuB,CAAC,eAAe,gBAAc;AAC1E,QAAI,QAAQ,IAAI;AAChB,QAAI;AAAY,aAAO;AACvB,QAAI,WAAW;AACX,YAAM,oBAAoB;AAC1B,UAAI,QAAQ,IAAI,iCAAiC,WAAW,aAAa,aAAa;AACtF,gBAAU,KAAK;AACf,YAAM,oBAAoB;AAC1B,aAAO,MAAM;AAAA,IAChB;AACD,WAAO;AAAA,EACf,CAAK;AACD,MAAI,SAAaA,0CAAuB,CAAC,MAAI;AACzC,QAAI,QAAQ,IAAI;AAChB,QAAI,MAAM,aAAa,MAAM,QAAQ;AACjC,UAAI,MAAM,gBAAgB,MAAM,eAAe;AAAM,wBAAgB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,MAAM,aAAa,KAAK;AACjJ,YAAM,YAAY;AAClB,YAAM,eAAe;AACrB,YAAM,kBAAkB;AACxB,YAAM,cAAc;AACpB;AACA,UAAI,CAAC;AAA2B,QAAI,0CAA2C,MAAM,MAAM;AAAA,IAC9F;AAAA,EACT,CAAK;AACD,MAAI,sBAA0BA,0CAAuB,CAAC,MAAI;AACtD,QAAI;AAA2B,aAAO,CAAC;AAAA,EAC/C,CAAK;AACD,MAAI,aAAiBC,QAAgB,MAAI;AACrC,QAAI,QAAQ,IAAI;AAChB,QAAIC,cAAa;AAAA,MACb,UAAW,GAAG;AACV,YAAI,2CAA2C,EAAE,aAAa,EAAE,aAAa,KAAK,EAAE,cAAc,SAAS,EAAE,MAAM,GAAG;AAClH,cAAI;AACJ,cAAI,mDAAmD,EAAE,QAAQ,EAAE,GAAG;AAAG,cAAE;AAI3E,cAAI,wBAAwB;AAC5B,cAAI,CAAC,MAAM,aAAa,CAAC,EAAE,QAAQ;AAC/B,kBAAM,SAAS,EAAE;AACjB,kBAAM,YAAY;AAClB,oCAAwB,kBAAkB,GAAG,UAAU;AAIvD,gBAAI,iBAAiB,EAAE;AACvB,gBAAI,UAAU,CAACvE,OAAI;AACf,kBAAI,2CAA2CA,IAAG,cAAc,KAAK,CAACA,GAAE,UAAU,eAAe,SAASA,GAAE,MAAM,KAAK,MAAM;AAAQ,+BAAe,kCAAkC,MAAM,QAAQA,EAAC,GAAG,UAAU;AAAA,YAC9O;AACwB,8BAAsBwE,0CAAyB,EAAE,aAAa,GAAG,SAAaC,4CAAc,SAAS,OAAO,GAAG,IAAI;AAAA,UACtH;AACD,cAAI;AAAuB,cAAE;AAQ7B,cAAI,EAAE,WAAeC,0CAAY;AAAK,aAAC,uBAAuB,MAAM,mBAAmB,QAAQ,yBAAyB,SAAS,SAAS,qBAAqB,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,QAC3M,WAA2B,EAAE,QAAQ;AAAQ,gBAAM,gBAAgB,oBAAI;MAC1D;AAAA,MACD,QAAS,GAAG;AACR,YAAI,KAAK,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AAC9C,YAAI,KAAK,EAAE,WAAW,KAAK,CAAC,MAAM,qBAAqB,CAAKC,0CAAiB,WAAW;AACpF,cAAI,wBAAwB;AAC5B,cAAI;AAAY,cAAE;AAGlB,cAAI,CAAC,MAAM,yBAAyB,CAAC,MAAM,6BAA6B,CAAC,MAAM,cAAc,MAAM,gBAAgB,aAAiBC,0CAAuB,EAAE,WAAW,IAAI;AAExK,gBAAI,CAAC,cAAc,CAAC;AAAqB,cAAIC,0CAA8B,EAAE,aAAa;AAC1F,gBAAI,iBAAiB,kBAAkB,GAAG,SAAS;AACnD,gBAAI,cAAc,eAAe,GAAG,SAAS;AAC7C,gBAAI,eAAe,gBAAgB,GAAG,SAAS;AAC/C,oCAAwB,kBAAkB,eAAe;AAAA,UAC5D;AACD,gBAAM,4BAA4B;AAClC,gBAAM,wBAAwB;AAC9B,cAAI;AAAuB,cAAE;QAChC;AAAA,MACJ;AAAA,IACb;AACQ,QAAI,UAAU,CAAC,MAAI;AACf,UAAI;AACJ,UAAI,MAAM,aAAa,MAAM,UAAU,2CAA2C,GAAG,MAAM,MAAM,GAAG;AAChG,YAAI;AACJ,YAAI,mDAAmD,EAAE,QAAQ,EAAE,GAAG;AAAG,YAAE;AAC3E,YAAI,SAAS,EAAE;AACf,wBAAgB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,YAAY,MAAM,OAAO,SAAS,MAAM,CAAC;AAC7G;AAIA,YAAI,EAAE,QAAQ,WAAW,uCAAuC,MAAM,MAAM,KAAK,MAAM,OAAO,SAAS,MAAM,KAAK,CAAC,EAAE,kCAAkC,GAAG;AAGtJ,YAAE,kCAAkC,IAAI;AACxC,UAAIF,0CAAiB,MAAM,QAAQ,GAAG,KAAK;AAAA,QAC9C;AACD,cAAM,YAAY;AAClB,SAAC,wBAAwB,MAAM,mBAAmB,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,OAAO,EAAE,GAAG;AAAA,MACxJ,WAAuB,EAAE,QAAQ,YAAY,uBAAuB,MAAM,mBAAmB,QAAQ,yBAAyB,SAAS,SAAS,qBAAqB,OAAO;AAC5J,YAAI;AAIJ,YAAI,SAAS,MAAM;AACnB,cAAM,gBAAgB;AACtB,iBAAS,SAAS,OAAO,OAAM;AAAG,WAAC,gBAAgB,MAAM,YAAY,QAAQ,kBAAkB,SAAS,SAAS,cAAc,cAAc,IAAI,cAAc,SAAS,KAAK,CAAC;AAAA,MACjL;AAAA,IACb;AACQ,QAAI,OAAO,iBAAiB,aAAa;AACrC,MAAAJ,YAAW,gBAAgB,CAAC,MAAI;AAE5B,YAAI,EAAE,WAAW,KAAK,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AAK3D,YAAQO,0CAA8B,EAAE,WAAW,GAAG;AAClD,gBAAM,cAAc;AACpB;AAAA,QACH;AAGD,YAAI,2CAA2C,EAAE,aAAa;AAAG,YAAE,eAAc;AACjF,cAAM,cAAc,EAAE;AACtB,YAAI,wBAAwB;AAC5B,YAAI,CAAC,MAAM,WAAW;AAClB,gBAAM,YAAY;AAClB,gBAAM,eAAe;AACrB,gBAAM,kBAAkB,EAAE;AAC1B,gBAAM,SAAS,EAAE;AACjB,cAAI,CAAC,cAAc,CAAC;AAAqB,YAAID,0CAA8B,EAAE,aAAa;AAC1F,cAAI,CAAC;AAA2B,YAAI,0CAA2C,MAAM,MAAM;AAC3F,kCAAwB,kBAAkB,GAAG,MAAM,WAAW;AAC9D,4BAAsBL,0CAAyB,EAAE,aAAa,GAAG,eAAe,eAAe,KAAK;AACpG,4BAAsBA,0CAAyB,EAAE,aAAa,GAAG,aAAa,aAAa,KAAK;AAChG,4BAAsBA,0CAAyB,EAAE,aAAa,GAAG,iBAAiB,iBAAiB,KAAK;AAAA,QAC3G;AACD,YAAI;AAAuB,YAAE;MAC7C;AACY,MAAAD,YAAW,cAAc,CAAC,MAAI;AAC1B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,YAAI,EAAE,WAAW,GAAG;AAIhB,cAAI,2CAA2C,EAAE,aAAa;AAAG,cAAE,eAAc;AACjF,YAAE,gBAAe;AAAA,QACpB;AAAA,MACjB;AACY,MAAAA,YAAW,cAAc,CAAC,MAAI;AAE1B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM,KAAK,MAAM,gBAAgB;AAAW;AAI5E,YAAI,EAAE,WAAW,KAAK,mCAAmC,GAAG,EAAE,aAAa;AAAG,yBAAe,GAAG,MAAM,eAAe,EAAE,WAAW;AAAA,MAClJ;AAIY,UAAI,gBAAgB,CAAC,MAAI;AACrB,YAAI,EAAE,cAAc,MAAM;AAAiB;AAC3C,YAAI,MAAM,UAAU,mCAAmC,GAAG,MAAM,MAAM,GAAG;AACrE,cAAI,CAAC,MAAM,gBAAgB,MAAM,eAAe,MAAM;AAClD,kBAAM,eAAe;AACrB,8BAAkB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,MAAM,WAAW;AAAA,UAC1F;AAAA,QACrB,WAA2B,MAAM,UAAU,MAAM,gBAAgB,MAAM,eAAe,MAAM;AACxE,gBAAM,eAAe;AACrB,0BAAgB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,MAAM,aAAa,KAAK;AAC5F,8BAAoB,CAAC;AAAA,QACxB;AAAA,MACjB;AACY,UAAI,cAAc,CAAC,MAAI;AACnB,YAAI,EAAE,cAAc,MAAM,mBAAmB,MAAM,aAAa,EAAE,WAAW,KAAK,MAAM,QAAQ;AAC5F,cAAI,mCAAmC,GAAG,MAAM,MAAM,KAAK,MAAM,eAAe;AAAM,4BAAgB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,MAAM,WAAW;AAAA,mBAClK,MAAM,gBAAgB,MAAM,eAAe;AAAM,4BAAgB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,MAAM,aAAa,KAAK;AACtJ,gBAAM,YAAY;AAClB,gBAAM,eAAe;AACrB,gBAAM,kBAAkB;AACxB,gBAAM,cAAc;AACpB;AACA,cAAI,CAAC;AAA2B,YAAI,0CAA2C,MAAM,MAAM;AAAA,QAC9F;AAAA,MACjB;AACY,UAAI,kBAAkB,CAAC,MAAI;AACvB,eAAO,CAAC;AAAA,MACxB;AACY,MAAAA,YAAW,cAAc,CAAC,MAAI;AAC1B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AAEzC,eAAO,CAAC;AAAA,MACxB;AAAA,IACA,OAAe;AACH,MAAAA,YAAW,cAAc,CAAC,MAAI;AAE1B,YAAI,EAAE,WAAW,KAAK,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AAG3D,YAAI,2CAA2C,EAAE,aAAa;AAAG,YAAE,eAAc;AACjF,YAAI,MAAM,2BAA2B;AACjC,YAAE,gBAAe;AACjB;AAAA,QACH;AACD,cAAM,YAAY;AAClB,cAAM,eAAe;AACrB,cAAM,SAAS,EAAE;AACjB,cAAM,cAAkBK,0CAAuB,EAAE,WAAW,IAAI,YAAY;AAC5E,YAAI,CAAC,cAAc,CAAC;AAAqB,UAAIC,0CAA8B,EAAE,aAAa;AAC1F,YAAI,wBAAwB,kBAAkB,GAAG,MAAM,WAAW;AAClE,YAAI;AAAuB,YAAE;AAC7B,0BAAsBL,0CAAyB,EAAE,aAAa,GAAG,WAAW,WAAW,KAAK;AAAA,MAC5G;AACY,MAAAD,YAAW,eAAe,CAAC,MAAI;AAC3B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,YAAI,wBAAwB;AAC5B,YAAI,MAAM,aAAa,CAAC,MAAM,6BAA6B,MAAM,eAAe,MAAM;AAClF,gBAAM,eAAe;AACrB,kCAAwB,kBAAkB,GAAG,MAAM,WAAW;AAAA,QACjE;AACD,YAAI;AAAuB,YAAE;MAC7C;AACY,MAAAA,YAAW,eAAe,CAAC,MAAI;AAC3B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,YAAI,wBAAwB;AAC5B,YAAI,MAAM,aAAa,CAAC,MAAM,6BAA6B,MAAM,eAAe,MAAM;AAClF,gBAAM,eAAe;AACrB,kCAAwB,gBAAgB,GAAG,MAAM,aAAa,KAAK;AACnE,8BAAoB,CAAC;AAAA,QACxB;AACD,YAAI;AAAuB,YAAE;MAC7C;AACY,MAAAA,YAAW,YAAY,CAAC,MAAI;AACxB,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,YAAI,CAAC,MAAM,6BAA6B,EAAE,WAAW;AAAG,yBAAe,GAAG,MAAM,eAAe,OAAO;AAAA,MACtH;AACY,UAAI,YAAY,CAAC,MAAI;AAEjB,YAAI,EAAE,WAAW;AAAG;AACpB,cAAM,YAAY;AAClB;AACA,YAAI,MAAM,2BAA2B;AACjC,gBAAM,4BAA4B;AAClC;AAAA,QACH;AACD,YAAI,MAAM,UAAU,mCAAmC,GAAG,MAAM,MAAM,KAAK,MAAM,eAAe;AAAM,0BAAgB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,MAAM,WAAW;AAAA,iBAClL,MAAM,UAAU,MAAM,gBAAgB,MAAM,eAAe;AAAM,0BAAgB,kCAAkC,MAAM,QAAQ,CAAC,GAAG,MAAM,aAAa,KAAK;AACtK,cAAM,eAAe;AAAA,MACrC;AACY,MAAAA,YAAW,eAAe,CAAC,MAAI;AAC3B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,YAAI,QAAQ,wCAAwC,EAAE,WAAW;AACjE,YAAI,CAAC;AAAO;AACZ,cAAM,kBAAkB,MAAM;AAC9B,cAAM,4BAA4B;AAClC,cAAM,eAAe;AACrB,cAAM,YAAY;AAClB,cAAM,SAAS,EAAE;AACjB,cAAM,cAAc;AAGpB,YAAI,CAAC,cAAc,CAAC;AAAqB,UAAIM,0CAA8B,EAAE,aAAa;AAC1F,YAAI,CAAC;AAA2B,UAAI,0CAA2C,MAAM,MAAM;AAC3F,YAAI,wBAAwB,kBAAkB,GAAG,MAAM,WAAW;AAClE,YAAI;AAAuB,YAAE;AAC7B,0BAAsBE,0CAAuB,EAAE,aAAa,GAAG,UAAU,UAAU,IAAI;AAAA,MACvG;AACY,MAAAR,YAAW,cAAc,CAAC,MAAI;AAC1B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,YAAI,CAAC,MAAM,WAAW;AAClB,YAAE,gBAAe;AACjB;AAAA,QACH;AACD,YAAI,QAAQ,mCAAmC,EAAE,aAAa,MAAM,eAAe;AACnF,YAAI,wBAAwB;AAC5B,YAAI,SAAS,mCAAmC,OAAO,EAAE,aAAa,GAAG;AACrE,cAAI,CAAC,MAAM,gBAAgB,MAAM,eAAe,MAAM;AAClD,kBAAM,eAAe;AACrB,oCAAwB,kBAAkB,GAAG,MAAM,WAAW;AAAA,UACjE;AAAA,QACJ,WAAU,MAAM,gBAAgB,MAAM,eAAe,MAAM;AACxD,gBAAM,eAAe;AACrB,kCAAwB,gBAAgB,GAAG,MAAM,aAAa,KAAK;AACnE,8BAAoB,CAAC;AAAA,QACxB;AACD,YAAI;AAAuB,YAAE;MAC7C;AACY,MAAAA,YAAW,aAAa,CAAC,MAAI;AACzB,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,YAAI,CAAC,MAAM,WAAW;AAClB,YAAE,gBAAe;AACjB;AAAA,QACH;AACD,YAAI,QAAQ,mCAAmC,EAAE,aAAa,MAAM,eAAe;AACnF,YAAI,wBAAwB;AAC5B,YAAI,SAAS,mCAAmC,OAAO,EAAE,aAAa,KAAK,MAAM,eAAe,MAAM;AAClG,yBAAe,GAAG,MAAM,WAAW;AACnC,kCAAwB,gBAAgB,GAAG,MAAM,WAAW;AAAA,QAC/D,WAAU,MAAM,gBAAgB,MAAM,eAAe;AAAM,kCAAwB,gBAAgB,GAAG,MAAM,aAAa,KAAK;AAC/H,YAAI;AAAuB,YAAE;AAC7B,cAAM,YAAY;AAClB,cAAM,kBAAkB;AACxB,cAAM,eAAe;AACrB,cAAM,4BAA4B;AAClC,YAAI,MAAM,UAAU,CAAC;AAA2B,UAAI,0CAA2C,MAAM,MAAM;AAC3G;MAChB;AACY,MAAAA,YAAW,gBAAgB,CAAC,MAAI;AAC5B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,UAAE,gBAAe;AACjB,YAAI,MAAM;AAAW,iBAAO,CAAC;AAAA,MAC7C;AACY,UAAI,WAAW,CAAC,MAAI;AAChB,YAAI,MAAM,aAAa,EAAE,OAAO,SAAS,MAAM,MAAM;AAAG,iBAAO;AAAA,YAC3D,eAAe,MAAM;AAAA,YACrB,UAAU;AAAA,YACV,SAAS;AAAA,YACT,SAAS;AAAA,YACT,QAAQ;AAAA,UAC5B,CAAiB;AAAA,MACjB;AACY,MAAAA,YAAW,cAAc,CAAC,MAAI;AAC1B,YAAI,CAAC,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG;AACzC,eAAO,CAAC;AAAA,MACxB;AAAA,IACS;AACD,WAAOA;AAAA,EACf,GAAO;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACR,CAAK;AAGD,EAAIS,UAAkB,MAAI;AACtB,WAAO,MAAI;AACP,UAAI;AACJ,UAAI,CAAC;AACL,QAAI,2CAA4C,sBAAsB,IAAI,QAAQ,YAAY,QAAQ,wBAAwB,SAAS,sBAAsB,MAAS;AAAA,IAClL;AAAA,EACA,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AACD,SAAO;AAAA,IACH,WAAW,iBAAiB;AAAA,IAC5B,YAAgBnB,4CAAmB,UAAU,UAAU;AAAA,EAC/D;AACA;AACA,SAAS,uCAAuC,QAAQ;AACpD,SAAO,OAAO,YAAY,OAAO,OAAO,aAAa,MAAM;AAC/D;AACA,SAAS,2CAA2C,OAAO,eAAe;AACtE,QAAM,EAAE,KAAU,KAAU,IAAK;AACjC,QAAM,UAAU;AAChB,QAAM,OAAO,QAAQ,aAAa,MAAM;AAGxC,UAAQ,QAAQ,WAAW,QAAQ,OAAO,QAAQ,cAAc,SAAS,YAAY,EAAE,mBAAuBkB,0CAAuB,OAAO,EAAE,oBAAoB,CAAC,sCAAsC,SAAS,GAAG,KAAK,mBAAuBA,0CAAuB,OAAO,EAAE,uBAAuB,QAAQ;AAAA,EAChT,GAAG,SAAS,UAAU,CAAC,QAAQ,uCAAuC,OAAO,MAAM,QAAQ;AAC/F;AACA,SAAS,wCAAwC,OAAO;AACpD,QAAM,EAAE,cAA8B,IAAG;AACzC,MAAI,cAAc,SAAS;AAAG,WAAO,cAAc,CAAC;AACpD,SAAO;AACX;AACA,SAAS,mCAAmC,OAAO,WAAW;AAC1D,QAAM,iBAAiB,MAAM;AAC7B,WAAQxH,KAAI,GAAGA,KAAI,eAAe,QAAQA,MAAI;AAC1C,UAAM,QAAQ,eAAeA,EAAC;AAC9B,QAAI,MAAM,eAAe;AAAW,aAAO;AAAA,EAC9C;AACD,SAAO;AACX;AACA,SAAS,kCAAkC,QAAQ,GAAG;AAClD,SAAO;AAAA,IACH,eAAe;AAAA,IACf,UAAU,EAAE;AAAA,IACZ,SAAS,EAAE;AAAA,IACX,SAAS,EAAE;AAAA,IACX,QAAQ,EAAE;AAAA,EAClB;AACA;AACA,SAAS,yCAAyC,OAAO;AACrD,MAAI,UAAU;AACd,MAAI,UAAU;AACd,MAAI,MAAM,UAAU;AAAW,cAAU,MAAM,QAAQ;AAAA,WAC9C,MAAM,YAAY;AAAW,cAAU,MAAM;AACtD,MAAI,MAAM,WAAW;AAAW,cAAU,MAAM,SAAS;AAAA,WAChD,MAAM,YAAY;AAAW,cAAU,MAAM;AACtD,SAAO;AAAA,IACH,KAAK,MAAM,UAAU;AAAA,IACrB,OAAO,MAAM,UAAU;AAAA,IACvB,QAAQ,MAAM,UAAU;AAAA,IACxB,MAAM,MAAM,UAAU;AAAA,EAC9B;AACA;AACA,SAAS,+CAA+CR,IAAG,GAAG;AAE1D,MAAIA,GAAE,OAAO,EAAE,SAAS,EAAE,OAAOA,GAAE;AAAO,WAAO;AAEjD,MAAIA,GAAE,MAAM,EAAE,UAAU,EAAE,MAAMA,GAAE;AAAQ,WAAO;AACjD,SAAO;AACX;AACA,SAAS,mCAAmC,OAAO,QAAQ;AACvD,MAAI,OAAO,OAAO;AAClB,MAAI,YAAY,yCAAyC,KAAK;AAC9D,SAAO,+CAA+C,MAAM,SAAS;AACzE;AACA,SAAS,2CAA2C,QAAQ;AAExD,SAAO,EAAE,kBAAkB,gBAAgB,CAAC,OAAO,aAAa,WAAW;AAC/E;AACA,SAAS,mDAAmD,QAAQ,KAAK;AACrE,MAAI,kBAAkB;AAAkB,WAAO,CAAC,sCAAsC,QAAQ,GAAG;AACjG,MAAI,kBAAkB;AAAmB,WAAO,OAAO,SAAS,YAAY,OAAO,SAAS;AAC5F,MAAI,uCAAuC,MAAM;AAAG,WAAO;AAC3D,SAAO;AACX;AACA,MAAM,0CAA0C,oBAAI,IAAI;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACD,SAAS,sCAAsC,QAAQ,KAAK;AAExD,SAAO,OAAO,SAAS,cAAc,OAAO,SAAS,UAAU,QAAQ,MAAM,wCAAwC,IAAI,OAAO,IAAI;AACxI;AC7hBA,IAAI,wDAAwD;AAC5D,IAAI,mCAAmC;AACvC,SAAS,2DAA2D;AAChE,0DAAwD;AAKxD,aAAW,MAAI;AACX,4DAAwD;AAAA,EAC3D,GAAE,EAAE;AACT;AACA,SAAS,+CAA+C,GAAG;AACvD,MAAI,EAAE,gBAAgB;AAAS,6DAAwD;AAC3F;AACA,SAAS,+CAA+C;AACpD,MAAI,OAAO,aAAa;AAAa;AACrC,MAAI,OAAO,iBAAiB;AAAa,aAAS,iBAAiB,aAAa,8CAA8C;AAAA;AACzH,aAAS,iBAAiB,YAAY,wDAAwD;AACnG;AACA,SAAO,MAAI;AACP;AACA,QAAI,mCAAmC;AAAG;AAC1C,QAAI,OAAO,iBAAiB;AAAa,eAAS,oBAAoB,aAAa,8CAA8C;AAAA;AAC5H,eAAS,oBAAoB,YAAY,wDAAwD;AAAA,EAC9G;AACA;AACA,SAAS,0CAA0C,OAAO;AACtD,MAAI,EAAE,cAA4B,eAA8B,YAAwB,WAAwB,IAAG;AACnH,MAAI,CAAC,WAAW,UAAU,IAAQkI,SAAiB,KAAK;AACxD,MAAI,QAAYC,OAAe;AAAA,IAC3B,WAAW;AAAA,IACX,2BAA2B;AAAA,IAC3B,aAAa;AAAA,IACb,QAAQ;AAAA,EACX,CAAA,EAAE;AACH,EAAIC,UAAkB,8CAA8C,CAAA,CAAE;AACtE,MAAI,EAAE,YAAwB,gBAAkC,IAAOC,QAAgB,MAAI;AACvF,QAAI,oBAAoB,CAAC,OAAO,gBAAc;AAC1C,YAAM,cAAc;AACpB,UAAI,cAAc,gBAAgB,WAAW,MAAM,aAAa,CAAC,MAAM,cAAc,SAAS,MAAM,MAAM;AAAG;AAC7G,YAAM,YAAY;AAClB,UAAI,SAAS,MAAM;AACnB,YAAM,SAAS;AACf,UAAI;AAAc,qBAAa;AAAA,UAC3B,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QAChB,CAAa;AACD,UAAI;AAAe,sBAAc,IAAI;AACrC,iBAAW,IAAI;AAAA,IAC3B;AACQ,QAAIC,mBAAkB,CAAC,OAAO,gBAAc;AACxC,YAAM,cAAc;AACpB,YAAM,SAAS;AACf,UAAI,gBAAgB,WAAW,CAAC,MAAM;AAAW;AACjD,YAAM,YAAY;AAClB,UAAI,SAAS,MAAM;AACnB,UAAI;AAAY,mBAAW;AAAA,UACvB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QAChB,CAAa;AACD,UAAI;AAAe,sBAAc,KAAK;AACtC,iBAAW,KAAK;AAAA,IAC5B;AACQ,QAAIC,cAAa,CAAA;AACjB,QAAI,OAAO,iBAAiB,aAAa;AACrC,MAAAA,YAAW,iBAAiB,CAAC,MAAI;AAC7B,YAAI,yDAAyD,EAAE,gBAAgB;AAAS;AACxF,0BAAkB,GAAG,EAAE,WAAW;AAAA,MAClD;AACY,MAAAA,YAAW,iBAAiB,CAAC,MAAI;AAC7B,YAAI,CAAC,cAAc,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG,UAAAD,iBAAgB,GAAG,EAAE,WAAW;AAAA,MACvG;AAAA,IACA,OAAe;AACH,MAAAC,YAAW,eAAe,MAAI;AAC1B,cAAM,4BAA4B;AAAA,MAClD;AACY,MAAAA,YAAW,eAAe,CAAC,MAAI;AAC3B,YAAI,CAAC,MAAM,6BAA6B,CAAC;AAAuD,4BAAkB,GAAG,OAAO;AAC5H,cAAM,4BAA4B;AAAA,MAClD;AACY,MAAAA,YAAW,eAAe,CAAC,MAAI;AAC3B,YAAI,CAAC,cAAc,EAAE,cAAc,SAAS,EAAE,MAAM;AAAG,UAAAD,iBAAgB,GAAG,OAAO;AAAA,MACjG;AAAA,IACS;AACD,WAAO;AAAA,MACH,YAAYC;AAAA,MACZ,iBAAiBD;AAAA,IAC7B;AAAA,EACA,GAAO;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACR,CAAK;AACD,EAAIF,UAAkB,MAAI;AAGtB,QAAI;AAAY,sBAAgB;AAAA,QAC5B,eAAe,MAAM;AAAA,MACjC,GAAW,MAAM,WAAW;AAAA,EAE5B,GAAO;AAAA,IACC;AAAA,EACR,CAAK;AACD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACR;AACA;AChIA,SAAS,cAAc,OAAO,KAAK;AACjC,MAAI;AAAA,IACF,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EACD,IAAG;AACJ,MAAI;AACJ,MAAI,gBAAgB,UAAU;AAC5B,sBAAkB;AAAA,MAChB;AAAA,MACA,UAAU;AAAA,IAChB;AAAA,EACA,OAAS;AACL,sBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,UAAU,aAAa,SAAS;AAAA,MAChC,MAAM,gBAAgB,OAAO,aAAa,SAAS;AAAA,MACnD,QAAQ,gBAAgB,MAAM,SAAS;AAAA,MACvC,MAAM,gBAAgB,UAAU,OAAO;AAAA,MACvC,UAAU,gBAAgB,UAAU,aAAa;AAAA,MACjD,iBAAiB,CAAC,cAAc,gBAAgB,UAAU,SAAS;AAAA,MACnE,KAAK,gBAAgB,MAAM,MAAM;AAAA,IACvC;AAAA,EACG;AACD,MAAI,EAAE,YAAY,UAAW,IAAGI,0CAAS;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AACD,MAAI,EAAE,eAAgB,IAAGC,0CAAa,OAAO,GAAG;AAChD,MAAI,wBAAwB;AAC1B,mBAAe,WAAW,aAAa,KAAK,eAAe;AAAA,EAC5D;AACD,MAAI,cAAcC;AAAAA,IAChB;AAAA,IACA;AAAA,IACAC,0CAAe,OAAO,EAAE,WAAW,KAAI,CAAE;AAAA,EAC7C;AACE,SAAO;AAAA,IACL;AAAA,IACA,aAAaD,0CAAW,iBAAiB,aAAa;AAAA,MACpD,iBAAiB,MAAM,eAAe;AAAA,MACtC,iBAAiB,MAAM,eAAe;AAAA,MACtC,iBAAiB,MAAM,eAAe;AAAA,MACtC,gBAAgB,MAAM,cAAc;AAAA,MACpC,SAAS,CAAC,MAAM;AACd,6BAAqB,OAAO,SAAS,kBAAkB,CAAC;AAAA,MACzD;AAAA,IACP,CAAK;AAAA,EACL;AACA;AChEA,IAAI,SAAS,CAAC,UAAU;AACtB,QAAM,EAAE,UAAU,CAAE,GAAE,aAAa,QAAQ,gBAAgB,OAAAE,QAAO,QAAS,IAAG;AAC9E,SAAuBvH,kCAAAA,IAAIE,kBAAAA,UAAU,EAAE,UAAU,QAAQ,IAAI,CAAC,WAAW;AACvE,UAAM,WAAW,MAAM,OAAO,OAAO,MAAM,KAAK,OAAO,OAAO,MAAM,OAAO,GAAG;AAC9E,WAAuBF,sCAAI,YAAY,EAAE,UAAU,cAAc,UAA0BA,kCAAG,IAAC,iBAAiB,EAAE,MAAM,aAAa,UAA0BA,kCAAG;AAAA,MAChK,EAAE;AAAA,MACF;AAAA,QACE,SAAS,EAAE,WAAW,YAAY,SAAS,EAAG;AAAA,QAC9C,WAAW;AAAA,QACX,MAAM,EAAE,SAAS,EAAG;AAAA,QACpB,SAAS,EAAE,WAAW,YAAY,SAAS,KAAM;AAAA,QACjD,OAAO;AAAA,UACL,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,eAAe;AAAA,UACf,UAAU;AAAA,UACV,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,KAAK,OAAO;AAAA,UACZ,MAAM,OAAO;AAAA,UACb,OAAO,GAAG,OAAO,IAAI;AAAA,UACrB,QAAQ,GAAG,OAAO,IAAI;AAAA,UACtB,GAAGuH;AAAA,QACJ;AAAA,QACD,YAAY,EAAE,SAAU;AAAA,QACxB,qBAAqB,MAAM;AACzB,kBAAQ,OAAO,GAAG;AAAA,QACnB;AAAA,QACD,GAAG;AAAA,MACJ;AAAA,IACF,EAAA,CAAE,EAAG,GAAE,OAAO,GAAG;AAAA,EACnB,CAAA,EAAG,CAAA;AACN;AACA,OAAO,cAAc;AACrB,IAAI,iBAAiB;ACrCrB,SAAS,UAAU,QAAQ,IAAI;AAC7B,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,CAAE,CAAA;AACzC,QAAM,UAAU,YAAY,CAAC,UAAU;AACrC,UAAM,UAAU,MAAM;AACtB,UAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,QAAQ,YAAY;AAC/D,UAAM,OAAO,QAAQ;AACrB,eAAW,CAAC,gBAAgB;AAAA,MAC1B,GAAG;AAAA,MACH;AAAA,QACE,KAAK,YAAY,YAAY,OAAO,SAAQ,CAAE;AAAA,QAC9C;AAAA,QACA,GAAG,MAAM,UAAU,KAAK,OAAO,OAAO;AAAA,QACtC,GAAG,MAAM,UAAU,KAAK,MAAM,OAAO;AAAA,MACtC;AAAA,IACP,CAAK;AAAA,EACF,GAAE,CAAE,CAAA;AACL,QAAM,UAAU,YAAY,CAAC,QAAQ;AACnC,eAAW,CAAC,cAAc,UAAU,OAAO,CAAC,WAAW,OAAO,QAAQ,GAAG,CAAC;AAAA,EAC3E,GAAE,CAAE,CAAA;AACL,SAAO,EAAE,SAAS,SAAS,SAAS,GAAG,MAAK;AAC9C;ACRA,SAAS,UAAU,OAAO;AACxB,MAAI/H,KAAIC,KAAIC,KAAIC,KAAIC,KAAI4H,KAAIC,KAAIC,KAAIC;AACpC,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,YAAY,CAAC,CAAC;AACpB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,SAAAC;AAAA,IACA,YAAY;AAAA,IACZ,eAAe,oBAAoB;AAAA,IACnC,aAAapI,MAAK,gBAAgB,OAAO,SAAS,aAAa,cAAc,OAAOA,MAAK;AAAA,IACzF,SAAS,gBAAgB,OAAO,SAAS,aAAa;AAAA,IACtD,QAAQC,MAAK,gBAAgB,OAAO,SAAS,aAAa,SAAS,OAAOA,MAAK;AAAA,IAC/E,SAASC,MAAK,gBAAgB,OAAO,SAAS,aAAa,UAAU,OAAOA,MAAK;AAAA,IACjF,WAAWC,MAAK,gBAAgB,OAAO,SAAS,aAAa,YAAY,OAAOA,MAAK;AAAA,IACrF,oBAAoB6H,OAAM5H,MAAK,gBAAgB,OAAO,SAAS,aAAa,qBAAqB,OAAOA,MAAK,iBAAiB,OAAO,SAAS,cAAc,qBAAqB,OAAO4H,MAAK;AAAA,IAC7L,YAAY,kBAAkBC,MAAK,gBAAgB,OAAO,SAAS,aAAa,eAAe,OAAOA,MAAK;AAAA,IAC3G,cAAcC,MAAK,gBAAgB,OAAO,SAAS,aAAa,eAAe,OAAOA,MAAK;AAAA,IAC3F,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACJ,IAAG;AACJ,QAAM,YAAY,MAAM;AACxB,QAAM,uBAAuB,OAAO,cAAc;AAClD,QAAM,SAAS,UAAU,GAAG;AAC5B,QAAM,iBAAiBC,MAAK,sBAAsB,iBAAiB,OAAO,SAAS,cAAc,mBAAmB,OAAOA,MAAK;AAChI,QAAM,EAAE,gBAAgB,WAAW,WAAU,IAAKE,0CAAa;AAAA,IAC7D;AAAA,EACJ,CAAG;AACD,QAAM,aAAa,kBAAkB;AACrC,QAAM,SAAS;AAAA,IACb,MAAM,OAAO;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAAA,IACD;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACL;AACE,QAAM,EAAE,SAAS,sBAAsB,SAAS,eAAe,QAAO,IAAK;AAC3E,QAAM,cAAc;AAAA,IAClB,CAAC,MAAM;AACL,UAAI,iBAAiB,cAAc;AACjC;AACF,aAAO,WAAW,qBAAqB,CAAC;AAAA,IACzC;AAAA,IACD,CAAC,eAAe,YAAY,kBAAkB,QAAQ,oBAAoB;AAAA,EAC9E;AACE,QAAM,EAAE,aAAa,iBAAiB,UAAW,IAAG;AAAA,IAClD;AAAA,MACE,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,SAASC,0CAAM,SAAS,WAAW;AAAA,MACnC,GAAG;AAAA,IACJ;AAAA,IACD;AAAA,EACJ;AACE,QAAM,EAAE,WAAW,WAAU,IAAKC,0CAAS,EAAE,WAAU,CAAE;AACzD,QAAM,iBAAiB;AAAA,IACrB,CAAC,SAAS,CAAA,OAAQ;AAAA,MAChB,iBAAiB,SAAS,UAAU;AAAA,MACpC,cAAc,SAAS,SAAS;AAAA,MAChC,gBAAgB,SAAS,SAAS;AAAA,MAClC,sBAAsB,SAAS,cAAc;AAAA,MAC7C,cAAc,SAAS,SAAS;AAAA,MAChC,gBAAgB,SAAS,SAAS;AAAA,MAClC,GAAGV;AAAAA,QACD;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,YAAY;AAAA,UACzB,SAAS;AAAA,QACnB,CAAS;AAAA,QACD,eAAe,MAAM;AAAA,MACtB;AAAA,IACP;AAAA,IACI;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACL;AACE,QAAM,eAAe,CAAC,SAAS,eAAe,IAAI,IAAI,aAAa,MAAM;AAAA,IACvE,eAAe;AAAA,IACf,WAAW;AAAA,IACX,UAAU;AAAA,EACX,CAAA,IAAI;AACL,QAAM,eAAe,aAAa,gBAAgB;AAClD,QAAM,aAAa,aAAa,cAAc;AAC9C,QAAM,cAAc,QAAQ,MAAM;AAChC,UAAM,uBAAuB;AAAA,MAC3B,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACV;AACI,WAAO,qBAAqB,IAAI;AAAA,EACpC,GAAK,CAAC,IAAI,CAAC;AACT,QAAM,iBAAiB;AAAA,IACrB,OAAO,EAAE,SAAS,SAAS;IAC3B,CAAC,SAAS,aAAa;AAAA,EAC3B;AACE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAAO;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AClKA,SAAS,WAAW,eAAe;AACjC,QAAM,CAAC,OAAO,YAAY,IAAI,iBAAiB,eAAe,QAAQ,WAAW;AACjF,QAAM,EAAE,UAAU,WAAW,YAAY,OAAO,WAAW,GAAG,WAAY,IAAG;AAC7E,QAAM,QAAQ,QAAQ,MAAM,QAAQ,EAAE,GAAG,aAAc,CAAA,GAAG,CAAC,aAAa,YAAY,CAAC,CAAC;AACtF,QAAM,aAAaxF,OAAK,cAAc,OAAO,SAAS,WAAW,MAAM,SAAS;AAChF,QAAM,QAAQ,aAAa;AAC3B,QAAM,YAAY,QAAQ,MAAM;AAC9B,QAAI,SAAS,OAAO,UAAU,UAAU;AACtC,aAAO;AAAA,IACR;AACD,WAAO,CAAC,WAAW,YAAY,IAAI,YAAY;AAAA,EACnD,GAAK,CAAC,UAAU,OAAO,WAAW,YAAY,CAAC,CAAC;AAC9C,QAAM,kBAAkB;AAAA,IACtB,OAAO;AAAA,MACL,cAAc;AAAA,MACd,WAAW,MAAM,KAAK;AAAA,QACpB,OAAO;AAAA,MACf,CAAO;AAAA,MACD,GAAG;AAAA,IACT;AAAA,IACI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,EAC7C;AACE,SAAO,EAAE,OAAO,OAAO,YAAY,gBAAe;AACpD;ACrBA,IAAI,UAAU,WAAW,CAAC,OAAO,QAAQ;AACvC,QAAM,EAAE,OAAO,YAAY,OAAO,gBAAiB,IAAG,WAAW,EAAE,GAAG,MAAK,CAAE;AAC7E,SAAuBrC,kCAAAA,KAAK,OAAO,EAAE,KAAK,GAAG,gBAAiB,GAAE,UAAU;AAAA,IACxDA,kCAAI,KAAC,OAAO,EAAE,WAAW,MAAM,QAAQ,EAAE,OAAO,cAAc,OAAO,SAAS,WAAW,QAAS,CAAA,GAAG,UAAU;AAAA,MAC7GC,kCAAAA,IAAI,KAAK,EAAE,WAAW,MAAM,QAAQ,EAAE,OAAO,cAAc,OAAO,SAAS,WAAW,QAAO,CAAE,EAAC,CAAE;AAAA,MAClGA,kCAAAA,IAAI,KAAK,EAAE,WAAW,MAAM,QAAQ,EAAE,OAAO,cAAc,OAAO,SAAS,WAAW,QAAO,CAAE,EAAC,CAAE;AAAA,IACxH,GAAO;AAAA,IACH,SAAyBA,kCAAG,IAAC,QAAQ,EAAE,WAAW,MAAM,MAAM,EAAE,OAAO,cAAc,OAAO,SAAS,WAAW,MAAK,CAAE,GAAG,UAAU,OAAO;AAAA,EAC5I,EAAA,CAAE;AACL,CAAC;AACD,QAAQ,cAAc;AACtB,IAAI,kBAAkB;ACRtB,IAAI,SAAS,WAAW,CAAC,OAAO,QAAQ;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAA4H,WAA0B5H,kCAAG,IAACgI,iBAAS,EAAE,OAAO,WAAW,MAAM,aAAa;AAAA,IAC9E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAG,UAAU,EAAE,GAAG,OAAO,IAAK,CAAA;AAC/B,SAAuBjI,kCAAI,KAAC,WAAW,EAAE,KAAK,QAAQ,WAAW,QAAQ,GAAG,eAAgB,GAAE,UAAU;AAAA,IACtG;AAAA,IACA,aAAa,qBAAqB,WAAW6H;AAAA,IAC7C,aAAa,aAAa,OAAO;AAAA,IACjC,aAAa,qBAAqB,SAASA;AAAA,IAC3C;AAAA,IACA,CAAC,iBAAiC5H,kCAAAA,IAAIiI,gBAAQ,EAAE,GAAG,eAAgB,EAAA,CAAE;AAAA,EACtE,EAAA,CAAE;AACL,CAAC;AACD,OAAO,cAAc;AACrB,IAAI,iBAAiB;ACjCd,SAAS,oBAAoB,OAGjC;AACD,QAAM,EAAE,UAAU,WAAW,QAAQ,OAAO,GAAG,KAAS,IAAA;AAEtD,SAAAjI,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MAEA,UAAAA,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,YAAU;AAAA,UACV,SAAS,SAAS,SAAY;AAAA,UAC9B,WAAW,GAAG,oBAAoB,SAAS;AAAA,UAC1C,GAAG;AAAA,UAEH;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;ACpBO,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;AAE3B,MAAM,uBAAuB;AAAA,EAClC;AAAA,IACE,KAAK;AAAA,IACL,SAAS;AAAA,EACX;AACF;AAEO,MAAM,0BAA0B;AAAA,EACrC;AAAA,IACE,KAAK;AAAA,IACL,SAAS;AAAA,EACX;AACF;AAEO,MAAM,kBAAkB,KAAmC;AAAA,EAChE,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAE+B,KAAc;AAAA,EAC5C,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,kBAAkB,KAAiB;AAAA,EAC9C,KAAK;AAAA,EACL,SAAS,WAAW;AACtB,CAAC;AAGM,MAAM,gBAAgB,KAAe;AAAA,EAC1C,KAAK;AAAA,EACL,SAAS,SAAS;AACpB,CAAC;AAGM,MAAM,cAAc,KAAc;AAAA,EACvC,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,eAAe,KAAa;AAAA,EACvC,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,iBAAiB,KAAc;AAAA,EAC1C,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,qBAAqB,KAAa;AAAA,EAC7C,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,sBAAsB,KAAa;AAAA,EAC9C,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,mBAAmB,KAAa;AAAA,EAC3C,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,wBAAwB,KAAiC;AAAA,EACpE,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,mBAAmB,KAAuB;AAAA,EACrD,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAEM,MAAM,sBAAsB,KAA0B;AAAA,EAC3D,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AAGM,MAAM,mBAAmB,KAAyB;AAAA,EACvD,KAAK;AAAA,EACL,SAAS;AACX,CAAC;AC1FM,MAAM,gBAAgB,SAAS;AAAA,EACpC,KAAK;AAAA,EACL,KAAK,CAAC,EAAE,UAAU;AACV,UAAA,cAAc,IAAI,gBAAgB;AAClC,UAAA,gBAAgB,IAAI,kBAAkB;AAExC,QAAA,CAAC,eAAe,CAAC,eAAe;AAC3B,aAAA;AAAA,IACT;AACA,QAAI,gBAAgB,aAAa;AACxB,aAAA;AAAA,IACT;AACA,WAAO,gBAAgB;AAAA,EACzB;AACF,CAAC;ACdM,SAAS,0BAA0B;AAExC,QAAM,kBAAkB,YAAY,CAAC,MAAqB,UAAuC;;AAC/F,UAAM,WAA0B,CAAA;AAChC,eAAW,WAAW,MAAM;AAC1B,UAAI,QAAQ,UAAU;AACd,cAAA,QAAQ,QAAQ,IAAI;AACjB,iBAAA,KAAK,EAAE,eAAe,QAAQ,eAAe,UAAU,QAAQ,UAAU;AAAA,MAAA,OAC7E;AACL,iBAAS,KAAK,OAAO;AAAA,MACvB;AACI,WAAA1I,MAAA,QAAQ,aAAR,gBAAAA,IAAkB,QAAQ;AAC5B,gBAAQ,WAAW,gBAAgB,QAAQ,UAAU,KAAK;AAAA,MAC5D;AAAA,IACF;AACO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEC,QAAA,QAAQ,YAAY,CAAC,UAAyB;AAClD,UAAM,QAAqC,CAAA;AACrC,UAAA,WAAW,gBAAgB,OAAO,KAAK;AACtC,WAAA,EAAE,OAAO;EAAS,GACxB,CAAC,eAAe,CAAC;AAEb,SAAA;AACT;AClBO,SAAS,sBAAsB;AACpC,QAAM,MAAM;AACN,QAAA,YAAY,eAAe,oBAAoB;AAC/C,QAAA,YAAY,eAAe,qBAAqB;AACtD,QAAM,CAAC,QAAQ,YAAY,IAAI,wBAAwB;AACvD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,eAAe,mBAAmB;AAClF,QAAM,cAAc;AAEpB,QAAM,CAAC,MAAM,EAAE,WAAY,CAAA,IAAI,6BAA6B,0BAA0B;AAAA,IACpF,WAAW,MAAM;AACF;AACb,0BAAoB,KAAK;AAAA,IAC3B;AAAA,EAAA,CACD;AAEK,QAAA,SAAS,YAAY,MAAM;AACzB,UAAA,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAW;AACV,UAAA,EAAE,OAAO,SAAS,IAAI,aAAY,6BAAM,aAAY,CAAA,CAAE;AAEvD,SAAA;AAAA,MACH,IAAI,UAAU;AAAA,MACd,OAAO,UAAU;AAAA,MACjB,YAAY,UAAU;AAAA,MACtB,SAAS,EAAE,SAAS;AAAA,MACpB;AAAA,MACA,WAAW,UAAU;AAAA,IAAA,CACtB;AAAA,KACA,CAAC,KAAK,WAAW,aAAa,IAAI,CAAC;AAEhC,QAAA,WAAW,CAAC,UAAU,CAAC;AAE7B,SACE,cAAa,uCAAW,UAAS,YAAY,YAC3CQ,kCAAA;AAAA,IAACkI;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,OAAM;AAAA,MACN,SAAS;AAAA,MACV,UAAA;AAAA,IAAA;AAAA,EAGC,IAAA;AAER;AC7CO,SAAS,qBAAqB;;AAC7B,QAAA,YAAY,eAAe,oBAAoB;AACrD,QAAM,YAAW1I,MAAA,aAAA,MAAA,gBAAAA,IAAgB,KAAK,CAAK,MAAA,EAAE,QAAO,uCAAW,QAC7D,uCAAW,UAAS,YAAY;AAClC,QAAM,MAAM;AACZ,QAAM,CAAC,QAAQ,YAAY,IAAI,wBAAwB;AACvD,QAAM,CAAC,MAAM,EAAE,WAAY,CAAA,IAAI,6BAA6B,oBAAoB;AAAA,IAC9E,WAAW,MAAM;AACF;IACf;AAAA,EAAA,CACD;AAEK,QAAA,SAAS,YAAY,MAAM;AACzB,UAAA,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAU;AAEf,UAAM,UAAU,EAAE,WAAU,6BAAM,aAAY,CAAG,EAAA;AAC5C,SAAA;AAAA,MACH,IAAI,SAAS;AAAA,MACb;AAAA,IAAA,CACD;AAAA,EACA,GAAA,CAAC,KAAK,MAAM,QAAQ,CAAC;AAExB,SACE,WACIQ,kCAAA;AAAA,IAACkI;AAAAA,IAAA;AAAA,MACD,MAAK;AAAA,MACL,WAAW;AAAA,MACX,YAAY,CAAC;AAAA,MACb,OAAM;AAAA,MACN,SAAS;AAAA,MACV,UAAA;AAAA,IAAA;AAAA,EAGC,IAAA;AAER;ACrCO,SAAS,iBAAiB;AAC/B,QAAM,MAAM;AACN,QAAA,YAAY,eAAe,oBAAoB;AAC/C,QAAA,OAAO,eAAe,gBAAgB;AAC5C,QAAM,CAAC,QAAQ,YAAY,IAAI,wBAAwB;AACvD,QAAM,CAAC,aAAa,cAAc,IAAI,eAAe,mBAAmB;AACxE,QAAM,CAAC,MAAM,EAAE,WAAY,CAAA,IAAI,iBAAiB;AAAA,IAC9C,WAAW,MAAM;AACF;AACb,qBAAe,KAAK;AAAA,IACtB;AAAA,EAAA,CACD;AAEK,QAAA,SAAS,YAAY,MAAM;AACzB,UAAA,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAM;AACX,UAAM,UAAU,EAAE,WAAU,6BAAM,aAAY,CAAG,EAAA;AAC5C,SAAA;AAAA,MACH,IAAI,KAAK;AAAA,MACT,UAAU,KAAK;AAAA,MACf,gBAAgB,KAAK;AAAA,MACrB,aAAa,KAAK;AAAA,MAClB,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,eAAe,KAAK;AAAA,MACpB,SAAS,KAAK,UAAU,EAAE,MAAM,aAAa,KAAK,OAAO,EAAM,IAAA;AAAA,MAC/D;AAAA,IAAA,CACD;AAAA,EACA,GAAA,CAAC,KAAK,MAAM,IAAI,CAAC;AAEd,QAAA,WAAW,CAAC,UAAU,CAAC;AAG3B,SAAA,UAAS,uCAAW,UAAS,YAAY,SACvC,uCAAW,UAAS,YAAY,kBAChClI,kCAAA;AAAA,IAACkI;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,OAAM;AAAA,MACN,SAAS;AAAA,MACV,UAAA;AAAA,IAAA;AAAA,EAGC,IAAA;AAER;ACnDO,SAAS,cACd,OAUA;AACM,QAAA,EAAE,SAAS,WAAW,YAAY,YAAY,UAAU,GAAG,KAAS,IAAA;AAExE,SAAAlI,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,aAAY;AAAA,MACZ,cAAc;AAAA,QACZ,OAAO,EAAE,IAAI,QAAQ;AAAA,QACrB,UAAU,EAAE,IAAI,WAAW;AAAA,QAC3B,SAAS;AAAA,UACP,IAAI;AAAA,QACN;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MAEC,GAAG;AAAA,MAEJ,UAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,uBACb,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UAAA;AAAA,QACF;AAAA,QAEE,CAAC,cAAcA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACd,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,cAAW;AAAA,YACX,cACE,IAAI;AAAA,cACF,CAAC,uBAAuB,IAAI,uBAAuB,IAAI;AAAA,cACvD;AAAA,gBACE,OAAO;AAAA,kBACL,SAAS;AAAA,oBACP,IAAI;AAAA,sBACF,KAAK;AAAA,oBACP;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YAAA,EACA,WAAW,CAAC,SAAS;AAAA,UAAA;AAAA,QAE3B;AAAA,QAEFA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,MAAK;AAAA,YACL,gBAAe;AAAA,YACf,aAAY;AAAA,UAAA;AAAA,QACd;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACtEO,SAAS,0BAA0B,OAEvC;;AACK,QAAA,EAAE,UAAc,IAAA;AACtB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAmB;AACzD,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,QAAM,MAAM;AAEN,QAAA,cAAc,YAAY,MAAM;AACrB,mBAAA;AAAA,MACb,OAAO,EAAE,IAAI,qCAAU,GAAG;AAAA,MAC1B,SAAS,EAAE,IAAI,UAAU;AAAA,IAAA,CAC1B;AAAA,EACA,GAAA,CAAC,qCAAU,IAAI,SAAS,CAAC;AAEtB,QAAA,eAAe,YAAY,CAAC,UAAoB;AACpD,UAAMT,UAAS,2BAAK,eAAc,2CAAa,OAAM;AACrD,QAAIA,SAAQ;AACV,YAAM,OAAO,EAAE,eAAe,QAAQ,UAAU,CAACA,OAAM;AAChD,aAAA;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,UACP,UAAU,6BAAM;AAAA,QAClB;AAAA,MAAA;AAAA,IACF,OACK;AACE,aAAA;AAAA,IACT;AAAA,EAAA,GACC,CAAC,aAAa,GAAG,CAAC;AAErB,SAEIQ,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAF,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,MAAK;AAAA,QACL,YAAY,EAAC,2CAAa,eAAYR,MAAA,YAAY,SAAZ,gBAAAA,IAAkB,mBAAkB;AAAA,QAC1E,SAAS;AAAA,QAET,iDAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aACjE,UAAA;AAAA,UAAAQ,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,0IAAyI;AAAA,UAAQA,kCAAA,IAAA,QAAA,EAAK,MAAK,gBAAe,GAAE,4GAA2G;AAAA,QAAA,GACrT;AAAA,MAAA;AAAA,IACF;AAAA,IACAA,kCAAAA,IAAC,qBAEG,EAAA,WAAA,qCAAU,OAAMA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACf,SAAS,qCAAU;AAAA,QACnB;AAAA,QACA,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IAAA,GAGhB;AAAA,EACF,EAAA,CAAA;AAEJ;AC7DO,SAAS,mBAAmB;;AACjC,QAAM,cAAc;AACpB,QAAM,UAAU;AAChB,QAAM,MAAM;AACN,QAAA,mBAAmB,eAAe,qBAAqB;AAE7D,QAAM,WAAW,YAAY,CAAC,QAAgB,SAAqC;;AAC3E,UAAA,OAAO,QAAQ,MAAM;AACvB,UAAAR,MAAA,6BAAM,SAAN,gBAAAA,IAAa,iBAAgB,QAAQ,KAAK,QAAO,2CAAa,KAAI;AAC7D,aAAA;AAAA,IACT;AACA,eAAW,YAAW,6BAAM,aAAY,CAAA,GAAI;AACpC,YAAA,QAAQ,SAAS,SAAS,IAAI;AACpC,UAAI,OAAO;AACF,eAAA;AAAA,MACT;AAAA,IACF;AACO,WAAA;AAAA,EACN,GAAA,CAAC,2CAAa,IAAI,OAAO,CAAC;AAEvB,QAAA,YAAY,YAAY,CAAC,SAAiB;;AAC3C,SAAAC,OAAAD,MAAA,qDAAkB,UAAlB,gBAAAA,IAAyB,UAAzB,gBAAAC,IAAgC,KAAK,CAAC,SAAS,KAAK,SAAS,OAAO;AAC9D,aAAA;AAAA,IACT;AACM,UAAA,WAAW,2BAAK;AACtB,QAAI,qCAAU,IAAI;AACT,aAAA,SAAS,qCAAU,IAAI,IAAI;AAAA,IACpC;AAEO,WAAA;AAAA,EAAA,GACN,CAAC,UAAU,MAAKD,MAAA,qDAAkB,UAAlB,gBAAAA,IAAyB,KAAK,CAAC;AAE3C,SAAA;AACT;ACnCO,SAAS,gBAAgB;AAC9B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAkB,KAAK;AACvD,QAAM,cAAc;AACpB,QAAM,UAAU;AAEV,QAAA,gBAAgB,YAAY,CAAC,WAA4B;;AACvD,UAAA,OAAO,QAAQ,MAAM;AAC3B,UAAM,WAAW,6BAAM;AACvB,QAAI,UAAU;AACN,YAAA,SAAS,QAAQ,QAAQ;AAC/B,UAAI,QAAQ;AACN,aAAAA,MAAA,OAAO,SAAP,gBAAAA,IAAc,aAAa;AACtB,iBAAA;AAAA,QAAA,OACF;AACL,iBAAO,cAAc,QAAQ;AAAA,QAC/B;AAAA,MAAA,OACK;AACE,eAAA;AAAA,MACT;AAAA,IACF;AACO,WAAA;AAAA,EAAA,GACN,CAAC,OAAO,CAAC;AAEN,QAAA,kBAAkB,YAAY,CAAC,WAA4B;;AACzD,UAAA,OAAO,QAAQ,MAAM;AAC3B,eAAW,YAAW,6BAAM,aAAY,CAAA,GAAI;AACpC,YAAA,QAAQ,QAAQ,OAAO;AACzB,WAAAA,MAAA,+BAAO,SAAP,gBAAAA,IAAc,aAAa;AACtB,eAAA;AAAA,MACT;AACI,UAAA,gBAAgB,OAAO,GAAG;AACrB,eAAA;AAAA,MACT;AAAA,IACF;AACO,WAAA;AAAA,EAAA,GACN,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AACd,QAAI,2CAAa,IAAI;AACP,kBAAA,CAAC,cAAc,2CAAa,EAAE,KAAK,CAAC,gBAAgB,2CAAa,EAAE,CAAC;AAAA,IAClF;AAAA,EACC,GAAA,CAAC,iBAAiB,aAAa,aAAa,CAAC;AAEzC,SAAA;AACT;ACtCA,MAAM,kBAAkB;AAEjB,SAAS,oBAAoB;;AAClC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAiB,eAAe;AAChE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB;AAE3C,QAAM,cAAc;AACpB,QAAM,aAAa;AACb,QAAA,WAAW,YAAY,2CAAa,EAAE;AAC5C,QAAM,QAAQ;AACd,QAAM,WAAW;AAEjB,YAAU,MAAM;AACF,iBAAA,qCAAW,gBAAe,eAAe;AAAA,EAAA,GACpD,CAAC,QAAQ,CAAC;AAEP,QAAA,oBAAoB,YAAY,MAAM;AAC1C,QAAI,aAAa;AACf,YAAM,WAAW,YAAY;AAC7B,UAAI,UAAU;AACZ;AAAA,UAAW,YAAY;AAAA,UACrB;AAAA,YACE,GAAG,YAAY;AAAA,YACf,GAAG;AAAA,YACH,YAAY;AAAA,UACd;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AACA,YAAQ,KAAK;AAAA,KACZ,CAAC,YAAY,aAAa,UAAU,QAAQ,CAAC;AAE1C,QAAA,cAAc,YAAY,MAAM;AACxB,iBAAA,qCAAW,gBAAe,eAAe;AACrD,YAAQ,KAAK;AACb,aAAS,MAAS;AAAA,EAAA,GACjB,CAAC,QAAQ,CAAC;AAEP,QAAA,aAAa,YAAY,MAAM;AACnC,YAAQ,IAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,mBAAmB,YAAY,MAAM;AACrC,QAAA,qCAAW,aAAa;AAC1B,UAAI,aAAa;AACf,cAAM,WAAW,YAAY;AAC7B,YAAI,UAAU;AACZ;AAAA,YAAW,YAAY;AAAA,YACrB;AAAA,cACE,GAAG,YAAY;AAAA,cACf,GAAG;AAAA,cACH,YAAY;AAAA,YACd;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAAA,IACF;AAAA,EACC,GAAA,CAAC,YAAY,aAAa,QAAQ,CAAC;AAEhC,QAAA,uBAAuB,YAAY,CAAC,QAAgB;AACxD,gBAAY,GAAG;AACf,aAAS,MAAS;AAAA,EACpB,GAAG,CAAE,CAAA;AAEC,QAAA,gBAAgB,YAAY,MAAM;AACtC,QAAI,aAAa,YAAY;AAC3B,eAAS,0CAA0C;AACnD;AAAA,IACF;AACA,QAAI,CAAC,SAAS,MAAM,mBAAmB,GAAG;AACxC,eAAS,gCAAgC;AACzC;AAAA,IACF;AAEM,UAAA,MAAM,MAAM,QAAQ;AAC1B,QAAI,KAAK;AACP,eAAS,GAAG;AACZ;AAAA,IACF;AAEkB;EACjB,GAAA,CAAC,OAAO,mBAAmB,QAAQ,CAAC;AAEvC,SAEIO,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAH,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,WAAW;AAAA,QACX,SAAS;AAAA,QAET,UAAA;AAAA,UAAAC,sCAAC,gBACC,EAAA,UAAAA,kCAAA;AAAA,YAACkI;AAAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,MAAK;AAAA,cACL,YAAU;AAAA,cACV,YAAY,EAAC,2CAAa,eAAY1I,MAAA,YAAY,SAAZ,gBAAAA,IAAkB,mBAAkB,gBAAgB,CAAC;AAAA,cAC3F,UAAS,qCAAW,eAAc,UAAU;AAAA,cAC5C,SAAS;AAAA,cAET,UAAAQ,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,kBAEP,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,2BAA0B,SAAQ,aAClF,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,mgBAAmgB,CAAA,GACjiB;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA,GAEJ;AAAA,gDACC,gBAAe,EAAA,WAAU,OACxB,UAACD,kCAAA,KAAA,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,YAAAC,kCAAA;AAAA,cAACmI;AAAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,gBAAe;AAAA,gBACf,aAAY;AAAA,gBACZ,OAAO;AAAA,gBACP,cAAc;AAAA,gBACd,aAAY;AAAA,gBACZ,cAAc;AAAA,gBACd,WAAW,CAAC,CAAC;AAAA,gBACb,eAAe;AAAA,cAAA;AAAA,YACjB;AAAA,YACApI,kCAAAA,KAAC,OAAI,EAAA,WAAU,0BACb,UAAA;AAAA,cAAAC,kCAAA;AAAA,gBAACkI;AAAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACV,UAAA;AAAA,gBAAA;AAAA,cAED;AAAA,cACAlI,kCAAA;AAAA,gBAACkI;AAAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,SAAS;AAAA,kBACV,UAAA;AAAA,gBAAA;AAAA,cAED;AAAA,YAAA,GACF;AAAA,UAAA,EAAA,CACF,EACF,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,KAEE,qCAAW,gBACXlI,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,SAAS;AAAA,QAET,UAAAA,kCAAAA,IAAC,SAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aACjE,UAAAA,kCAAAA,IAAC,QAAK,EAAA,MAAK,QAAO,QAAO,gBAAe,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,oJAAA,CAAoJ,EAC7P,CAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAGJ,EAAA,CAAA;AAGJ;AC9JO,SAAS,kBAAkB;;AAChC,QAAM,MAAM;AACN,QAAA,YAAY,eAAe,oBAAoB;AACrD,QAAM,CAAC,QAAQ,YAAY,IAAI,wBAAwB;AAEvD,QAAM,QAAQ;AACd,QAAM,SAAQR,MAAA,+BAAO,UAAP,gBAAAA,IAAc,KAAK,CAAC,SAAS,KAAK,QAAO,uCAAW,QAAM,uCAAW,UAAS,YAAY;AAExG,QAAM,CAAC,MAAM,EAAE,WAAY,CAAA,IAAI,iBAAiB;AAAA,IAC9C,WAAW,MAAM;AACF;IACf;AAAA,EAAA,CACD;AAEK,QAAA,SAAS,YAAY,MAAM;AACzB,UAAA,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAO;AACZ,UAAM,UAAU,EAAE,WAAU,6BAAM,aAAY,CAAG,EAAA;AAC5C,SAAA;AAAA,MACH,IAAI,MAAM;AAAA,MACV;AAAA,IAAA,CACD;AAAA,EACA,GAAA,CAAC,KAAK,OAAO,IAAI,CAAC;AAErB,QAAM,WAAW,CAAC;AAClB,SACE,UAAS,uCAAW,UAAS,YAAY,QACvCQ,kCAAA;AAAA,IAACkI;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,OAAM;AAAA,MACN,SAAS;AAAA,MACV,UAAA;AAAA,IAAA;AAAA,EAGC,IAAA;AAER;AC3CO,SAAS,eACd,OAQA;AACA,QAAM,EAAE,SAAS,YAAY,YAAY,UAAU,GAAG,KAAS,IAAA;AAE7D,SAAAlI,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,aAAY;AAAA,MACZ,cAAc;AAAA,QACZ,OAAO,EAAE,IAAI,QAAQ;AAAA,QACrB,UAAU,EAAE,IAAI,WAAW;AAAA,MAC7B;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACC,GAAG;AAAA,MAEJ,UAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,uBACb,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAS;AAAA,YACT,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,YACA,gBAAe;AAAA,YACf,aAAY;AAAA,UAAA;AAAA,QACd;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,YACA,gBAAe;AAAA,YACf,aAAY;AAAA,UAAA;AAAA,QACd;AAAA,QAEE,CAAC,cAAcA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACd,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,cACE,IAAI;AAAA,cACF,CAAC,wBAAwB,IAAI,wBAAwB,IAAI;AAAA,cACzD;AAAA,gBACE,OAAO;AAAA,kBACL,OAAO;AAAA,oBACL,IAAI;AAAA,sBACF,KAAK;AAAA,oBACP;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YAAA,EACA,WAAW,CAAC,OAAO;AAAA,UAAA;AAAA,QAEzB;AAAA,QAEFA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,MAAK;AAAA,YACL,gBAAe;AAAA,YACf,aAAY;AAAA,UAAA;AAAA,QACd;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;AC1EO,SAAS,yBAAyB;;AACvC,QAAM,CAAC,cAAc,eAAe,IAAI,SAAyB;AACjE,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,QAAM,MAAM;AAEN,QAAA,cAAc,YAAY,MAAM;AACpB,oBAAA;AAAA,MACd,OAAO,EAAE,IAAI,qCAAU,GAAG;AAAA,IAAA,CAC3B;AAAA,EAAA,GACA,CAAC,qCAAU,EAAE,CAAC;AAEX,QAAA,eAAe,YAAY,CAAC,UAA0B;AAC1D,UAAMT,UAAS,2BAAK,eAAc,2CAAa,OAAM;AACrD,QAAIA,SAAQ;AACV,YAAM,OAAO,EAAE,eAAe,QAAQ,UAAU,CAACA,OAAM;AAChD,aAAA;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,UACP,UAAU,6BAAM;AAAA,QAClB;AAAA,MAAA;AAAA,IACF,OACK;AACE,aAAA;AAAA,IACT;AAAA,EAAA,GACC,CAAC,aAAa,GAAG,CAAC;AAErB,SAEIQ,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAF,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,MAAK;AAAA,QACL,YAAY,EAAC,2CAAa,eAAYR,MAAA,YAAY,SAAZ,gBAAAA,IAAkB,mBAAkB;AAAA,QAC1E,SAAS;AAAA,QAET,UAACQ,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aACjE,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,+sBAA+sB,CAAA,GAC7uB;AAAA,MAAA;AAAA,IACF;AAAA,IACAA,kCAAAA,IAAC,qBAEG,EAAA,WAAA,qCAAU,OAAMA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACf,SAAS,qCAAU;AAAA,QACnB,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IAAA,GAGhB;AAAA,EACF,EAAA,CAAA;AAEJ;ACzCa,MAAA,gBAAgB,KAAK,CAChC,UAIG;;AACG,QAAA,EAAE,WAAW,UAAc,IAAA;AACjC,QAAM,CAAC,QAAQ,QAAQ,IAAI,SAAS,KAAK;AACzC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAChC,QAAA,kBAAkB,eAAe,oBAAoB;AAC3D,QAAM,CAAC,aAAa,cAAc,IAAI,eAAe,gBAAgB;AACrE,QAAM,CAAC,YAAY,mBAAmB,IAAI,eAAe,eAAe;AACxE,QAAM,CAAC,UAAU,WAAW,IAAI,eAAe,aAAa;AACtD,QAAA,QAAQ,eAAe,aAAa;AAC1C,QAAM,CAAC,SAAS,IAAI,IAAI,QAAQ;AAChC,QAAM,CAAC,SAAS,IAAI,IAAI,QAAQ;AAChC,QAAM,UAAU;AAEhB,QAAM,SAAS;AACT,QAAA,eAAaR,MAAA,kBAAA,gBAAAA,IAAe,OAAM;AACxC,YAAU,MAAM;AACL,aAAA,CAAC,EAAC,iCAAQ,sBAAsB,aAAa,uBAAuB,YAAW;AAChF,YAAA,CAAC,EAAC,iCAAQ,sBAAsB,aAAa,oBAAoB,YAAW;AAAA,EAAA,GACnF,CAAC,YAAY,MAAM,CAAC;AAEvB,YAAU,MAAM;AACd,aAAQ,iCAAQ,sBAAsB,aAAa,oBAAoB,iBAAgB,MAAS;AAChG,cAAS,iCAAQ,sBAAsB,aAAa,uBAAuB,iBAAgB,MAAS;AAAA,EAAA,GACnG,CAAC,YAAY,MAAM,CAAC;AAEjB,QAAA,kBAAkB,YAAY,MAAM;AACxC,QAAI,MAAM;AACR,uCAAQ,sBAAsB,gBAAgB,oBAAoB;AAClE,cAAQ,KAAK;AAAA,IAAA,OACR;AACL,uCAAQ,sBAAsB,aAAa,IAAI,cAAA,GAAiB;AAChE,cAAQ,IAAI;AAAA,IACd;AAAA,EACC,GAAA,CAAC,YAAY,QAAQ,IAAI,CAAC;AAEvB,QAAA,oBAAoB,YAAY,MAAM;AAC1C,QAAI,QAAQ;AACV,uCAAQ,sBAAsB,gBAAgB,uBAAuB;AACrE,eAAS,KAAK;AAAA,IAAA,OACT;AACL,uCAAQ,sBAAsB,aAAa,IAAI,gBAAA,GAAmB;AAClE,eAAS,IAAI;AAAA,IACf;AAAA,EACC,GAAA,CAAC,YAAY,QAAQ,MAAM,CAAC;AAEzB,QAAA,yBAAyB,YAAY,CAAC4I,gBAA2B;AACrE,wBAAoBA,WAAU;AAC9B,YAAQA,aAAY;AAAA,MAClB,KAAK,WAAW;AACd,uBAAe,mBAAmB;AAClC;AAAA,MACF,KAAK,WAAW;AACd,uBAAe,kBAAkB;AACjC;AAAA,MACF,KAAK,WAAW;AACd,uBAAe,kBAAkB;AACjC;AAAA,IACJ;AAAA,EAAA,GACC,CAAC,qBAAqB,cAAc,CAAC;AAExC,gDACG,OAAM,EAAA,WAAW,GAAG,wDAAwD,SAAS,GACpF,UAAA;AAAA,IAACrI,kCAAAA,KAAA,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,MAAAC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,YAAY,CAAC;AAAA,UACb,SAAS;AAAA,UAET,gDAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAD,kCAAA,KAAC,OAAE,MAAK,QAAO,QAAO,gBAAe,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,UAAA;AAAA,YAACC,kCAAAA,IAAA,QAAA,EAAK,GAAE,WAAW,CAAA;AAAA,YAAOA,kCAAAA,IAAC,QAAK,EAAA,GAAE,4CAA4C,CAAA;AAAA,UAAA,EAAA,CAAO,EAAI,CAAA;AAAA,QAAA;AAAA,MAC5Q;AAAA,MACAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,YAAY,CAAC;AAAA,UACb,SAAS;AAAA,UAET,gDAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAD,kCAAA,KAAC,OAAE,MAAK,QAAO,QAAO,gBAAe,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,UAAA;AAAA,YAACC,kCAAAA,IAAA,QAAA,EAAK,GAAE,aAAa,CAAA;AAAA,YAAOA,kCAAAA,IAAC,QAAK,EAAA,GAAE,4CAA4C,CAAA;AAAA,UAAA,EAAA,CAAO,EAAI,CAAA;AAAA,QAAA;AAAA,MAC9Q;AAAA,MACCA,kCAAA,IAAA,SAAA,EAAQ,aAAY,YAAW,WAAU,OAAM;AAAA,MAChDA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UAET,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,eAAc,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,8eAA8e,CAAA,GAAO;AAAA,QAAA;AAAA,MACpmB;AAAA,MACAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UAET,gDAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAA,kCAAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,UAAS,WAAU,GAAE,ypBAAwpB,UAAS,UAAU,CAAA,GAAO;AAAA,QAAA;AAAA,MAClzB;AAAA,MAEE;AAAA,MAEDA,kCAAA,IAAA,SAAA,EAAQ,aAAY,YAAW,WAAU,OAAM;AAAA,OAE9C,mDAAiB,UAAS,YAAY,mDAAc,mBAAkB,EAAA;AAAA,OAGtE,mDAAiB,UAAS,YAAY,mDAAc,wBAAuB,EAAA;AAAA,OAG3E,mDAAiB,UAAS,YAAY,cAAa,mCAAS,OAC3DA,kCAAA,IAAA,2BAAA,EAA0B,WAAW,QAAQ,GAAI,CAAA;AAAA,IAAA,GAEtD;AAAA,IACAD,kCAAAA,KAAC,OAAI,EAAA,WAAU,2BACb,UAAA;AAAA,MAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,aAAa;AAAA,UACb,mBAAmB,CAAO,QAAA,uBAAuB,GAAiB;AAAA,UAElE,UAAA;AAAA,YAAAC,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OACED,kCAAA,KAAC,OAAI,EAAA,WAAU,0CACb,UAAA;AAAA,kBAAAC,kCAAA,IAAC,MAAK,EAAA,MAAK,8BAA6B,WAAU,UAAS;AAAA,kBAC3DA,kCAAAA,IAAC,UAAK,UAAE,KAAA,CAAA;AAAA,gBAAA,GACV;AAAA,cAAA;AAAA,cALG,WAAW;AAAA,YAOlB;AAAA,YACAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OACED,kCAAA,KAAC,OAAI,EAAA,WAAU,0CACb,UAAA;AAAA,kBAAAC,kCAAA,IAAC,MAAK,EAAA,MAAK,2BAA0B,WAAU,UAAS;AAAA,kBACxDA,kCAAAA,IAAC,UAAK,UAAE,KAAA,CAAA;AAAA,gBAAA,GACV;AAAA,cAAA;AAAA,cALG,WAAW;AAAA,YAOlB;AAAA,YACAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OACED,kCAAA,KAAC,OAAI,EAAA,WAAU,0CACb,UAAA;AAAA,kBAAAC,kCAAA,IAAC,MAAK,EAAA,MAAK,iCAAgC,WAAU,UAAS;AAAA,kBAC9DA,kCAAAA,IAAC,UAAK,UAAE,KAAA,CAAA;AAAA,gBAAA,GACV;AAAA,cAAA;AAAA,cALG,WAAW;AAAA,YAOlB;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,MACCA,kCAAA,IAAA,KAAA,EAAE,WAAU,4BACV,UAAG,GAAA,WAAW,QAAQ,KAAK,MAAM,QAAQ,GAAG,CAAC,KAChD;AAAA,IAAA,GACF;AAAA,IACAD,kCAAAA,KAAC,OAAI,EAAA,WAAU,2BAab,UAAA;AAAA,MAAAC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,QAAQ,aAAa,SAAS;AAAA,UAC9B,OAAM;AAAA,UACN,SAAS,MAAM,YAAY,SAAS,MAAM;AAAA,UAE1C,UAAAA,kCAAA,IAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAD,uCAAC,KAAE,EAAA,MAAK,gBAAe,UAAA;AAAA,YAACC,kCAAAA,IAAA,QAAA,EAAK,GAAE,yJAAyJ,CAAA;AAAA,YAAOA,kCAAAA,IAAC,QAAK,EAAA,GAAE,kOAAkO,CAAA;AAAA,UAAA,EAAA,CAAO,EAAI,CAAA;AAAA,QAAA;AAAA,MACrgB;AAAA,MACAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAQ,aAAa,SAAS;AAAA,UAC9B,SAAS,MAAM,YAAY,SAAS,IAAI;AAAA,UAExC,UAACA,kCAAA,IAAA,MAAA,EAAK,MAAK,0BAAyB,WAAU,UAAS;AAAA,QAAA;AAAA,MACzD;AAAA,MACAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAQ,aAAa,SAAS;AAAA,UAC9B,SAAS,MAAM,YAAY,SAAS,OAAO;AAAA,UAE3C,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aACjE,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,4GAA4G,CAAA,GAC1I;AAAA,QAAA;AAAA,MACF;AAAA,4CACC,qBAAoB,EAAA;AAAA,4CACpB,oBAAmB,EAAA;AAAA,4CACnB,gBAAe,EAAA;AAAA,4CACf,iBAAgB,EAAA;AAAA,IAAA,GACnB;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;AClND,MAAM,iBAAiB;AAEhB,SAAS,gBACd,OAMA;AACA,QAAM,EAAE,OAAO,OAAO,SAAS,WAAW,QAAY,IAAA;AACtD,+CACG,OAAM,EAAA,QAAQ,MAAM,SACnB,iDAAC,cACC,EAAA,UAAA;AAAA,IAAAA,kCAAAA,IAAC,eAAY,UAEb,OAAA,CAAA;AAAA,0CACC,SAAQ,EAAA;AAAA,IACTD,kCAAAA,KAAC,WAAU,EAAA,WAAU,uBACnB,UAAA;AAAA,MAACC,kCAAAA,IAAA,aAAA,EAAY,WAAU,SAAS,CAAA;AAAA,MAE9B,YAAY,OAAO,iBAAkB,WAAW;AAAA,IAAA,GAEpD;AAAA,2CACC,aACC,EAAA,UAAA;AAAA,MAAAA,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MACAlI,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA,GACF;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ;ACzCO,MAAM,0BAA0B;AAEhC,MAAM,cAAoC;AAAA,EAA1C;AACL,gCAAe;AACP;AAAA;AAAA,EAER,SAAS,KAAoB,MAAuB;;AAC5C,UAAA,WAAU1I,MAAA,KAAK,SAAL,gBAAAA,IAAY;AAE5B,eAAW,MAAM,KAAK;AAEpB,YAAM,MAAM,GAAG;AAGf,UAAI,CAAC,IAAI,cAAc,uBAAuB,GAAG;AAC1C,aAAA,eAAe,IAAI,cAAc,OAAO;AAC7C,aAAK,aAAa,KAAK;AACvB,aAAK,aAAa,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB5B,YAAA,KAAK,YAAY,KAAK,YAAY;AAAA,MACxC;AAEA,UAAI,SAAS;AACR,WAAA,UAAU,IAAI,YAAY;AAC1B,WAAA,aAAa,iBAAiB,OAAO;AAAA,MAAA,OACnC;AACF,WAAA,UAAU,OAAO,YAAY;AAChC,WAAG,gBAAgB,eAAe;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,KAA0B;AACnC,eAAW,MAAM,KAAK;AACjB,SAAA,UAAU,OAAO,YAAY;AAChC,SAAG,gBAAgB,eAAe;AAGlC,YAAM,MAAM,GAAG;AACT,YAAA+H,SAAQ,IAAI,cAAc,uBAAuB;AACvD,UAAIA,QAAO;AACT,QAAAA,OAAM,OAAO;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF;ACjDa,MAAA,cAAc,KAAK,CAAC,UAA4B;;AACrD,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACE,IAAA;AACJ,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,eAAe,oBAAoB;AACjF,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,eAAe,uBAAuB;AACtF,QAAA,CAAC,MAAM,IAAI;AACjB,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,eAAe,mBAAmB;AAE9E,QAAM,SAAS;AACT,QAAA,cAAa/H,MAAA,YAAe,MAAf,gBAAAA,IAAe;AAElC,YAAU,MAAM;AACd,QAAI,qBAAqB;AACvB,UAAI,kBAAkB,QAAQ;AAC5B,qBAAa,IAAI;AAAA,MAAA,OACZ;AACL,2BAAmB,mBAAmB;AACtC,+BAAuB,MAAS;AAAA,MAClC;AAAA,IACF;AAAA,EAAA,GACC,CAAC,QAAQ,gBAAgB,iBAAiB,oBAAoB,wBAAwB,mBAAmB,CAAC;AAEvG,QAAA,mBAAmB,YAAY,MAAM;AACzC,iBAAa,KAAK;AAClB,2BAAuB,MAAS;AAAA,EAAA,GAC/B,CAAC,sBAAsB,CAAC;AAErB,QAAA,gBAAgB,YAAY,MAAM;AACtC,uBAAmB,mBAAmB;AACtC,2BAAuB,MAAS;AAChC,iBAAa,KAAK;AAClB,sBAAkB,KAAK;AAAA,KACtB,CAAC,mBAAmB,oBAAoB,wBAAwB,mBAAmB,CAAC;AAEvF,YAAU,MAAM;AACd,SAAI,mDAAiB,UAAS,YAAY,aAAa,YAAY;AACjE,uCAAQ,sBAAsB,aAAa,IAAI,cAAA,GAAiB;AAChE,aAAO,MAAM;AACX,yCAAQ,sBAAsB,gBAAgB,cAAc,MAAM;AAAA,MAAU;AAAA,IAEhF;AAAA,KACC,CAAC,YAAY,QAAQ,mDAAiB,IAAI,CAAC;AAG5C,SAAAO,kCAAAA,KAAC,OAAI,EAAA,WAAW,uCACb,UAAA;AAAA,IAAA;AAAA,IAEC,CAAC,CAAC,uFAEE,UAACA,kCAAA,KAAA,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,MAAAC,kCAAA,IAAC,eAAc,EAAA;AAAA,MACd;AAAA,IAAA,EAAA,CACH,EACF,CAAA;AAAA,IAGJA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;ACrEY,MAAA,iBAAiB,KAAK,CAAC,UAA+B;AACjE,QAAM,EAAE,UAAU,WAAW,OAAO,UAAU,GAAG,KAAS,IAAA;AAExD,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS;AAAA,MAET,UAAAA,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,YAAU;AAAA,UACV,QAAO;AAAA,UACP,SAAS,WAAW,UAAU;AAAA,UAE9B,WAAW,GAAG,WAAW,KAAK,oBAAoB,SAAS;AAAA,UAC1D,GAAG;AAAA,UAEH;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;ACvBM,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsF9B,SAAS,gBAAgB;AAC9B,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAiB;AAC7D,QAAM,QAAQ;AAEd,QAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,kBAAkB;AAEjD,YAAU,MAAM;AACd,sBAAkB,+BAAO,cAAc;AAAA,EAAA,GACtC,CAAC,KAAK,CAAC;AAEJ,QAAA,6BAA6B,YAAY,CAAC,UAAmB;AACjE,sBAAkB,KAAK;AAAA,EACzB,GAAG,CAAE,CAAA;AAEC,QAAA,4BAA4B,YAAY,MAAM;AAClD,sBAAkB,qBAAqB;AAAA,EACzC,GAAG,CAAE,CAAA;AAEC,QAAA,2BAA2B,YAAY,MAAM;AAC5C,SAAA;AAAA,MACH,IAAI,+BAAO;AAAA,MACX;AAAA,IAAA,CACD;AAAA,KACA,CAAC,MAAM,gBAAgB,+BAAO,EAAE,CAAC;AAEpC,SAEInI,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAACF,kCAAAA,IAAA,WAAA,EAAU,WAAU,UACnB,UAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAO;AAAA,QACP,UAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,0CACC,SAAQ,EAAA;AAAA,2CACR,aACC,EAAA,UAAA;AAAA,MAAAA,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,YAAY,mBAAmB;AAAA,UAC/B,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MACAlI,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAM;AAAA,UACN,YAAY,oBAAmB,+BAAO;AAAA,UACtC,WAAW;AAAA,UACX,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;AC/IO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCnB,SAAS,WAAW;AACzB,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB;AAC7C,QAAM,QAAQ;AAEd,QAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,kBAAkB;AAEjD,YAAU,MAAM;AACd,cAAU,+BAAO,GAAG;AAAA,EAAA,GACnB,CAAC,KAAK,CAAC;AAEJ,QAAA,kBAAkB,YAAY,CAAC,UAAmB;AACtD,cAAU,KAAK;AAAA,EACjB,GAAG,CAAE,CAAA;AAEC,QAAA,iBAAiB,YAAY,MAAM;AACvC,cAAU,UAAU;AAAA,EACtB,GAAG,CAAE,CAAA;AAEC,QAAA,gBAAgB,YAAY,MAAM;AACjC,SAAA;AAAA,MACH,IAAI,+BAAO;AAAA,MACX,KAAK;AAAA,IAAA,CACN;AAAA,KACA,CAAC,QAAQ,MAAM,+BAAO,EAAE,CAAC;AAE5B,SAEInI,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAACF,kCAAAA,IAAA,WAAA,EAAU,WAAU,UACnB,UAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAO;AAAA,QACP,UAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,0CACC,SAAQ,EAAA;AAAA,2CACR,aACC,EAAA,UAAA;AAAA,MAAAA,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,YAAY,WAAW;AAAA,UACvB,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MACAlI,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAM;AAAA,UACN,YAAY,YAAW,+BAAO;AAAA,UAC9B,WAAW;AAAA,UACX,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;ACnGA,MAAM,SAAS;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,YACd,OACA;AAEE,SAAAlI,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,mBAAiB;AAAA,MACjB,SAAQ;AAAA,MACR,gBAAe;AAAA,MACf,aAAY;AAAA,MACX,GAAG;AAAA,MAEH,UAAA,OAAO,IAAI,CAAC,UACXA,kCAAAA,IAAC,oBAA6B,OAAO,OAClC,UADoB,MAAA,GAAA,KAEvB,CACD;AAAA,IAAA;AAAA,EAAA;AAGP;ACxBO,MAAMqI,oBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AACf;AAEA,SAAwB,aAAa,OAGlC;AACK,QAAA,EAAE,QAAQ,SAAa,IAAA;AAEvB,QAAA,iBAAiB,YAAY,MAAM;AACvC,yCAAW,CAAC,GAAG,UAAU,IAAI;AAAA,MAC3B,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM,gBAAgB;AAAA,MACtB,WAAW,cAAc;AAAA,IAC1B,CAAA;AAAA,EAAC,GAED,CAAC,QAAQ,QAAQ,CAAC;AAErB,SAEItI,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAF,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QAGP,WAAQ,iCAAA,IAAI,CAAC,OAAO,UAAU;AAE1B,iBAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,YAAY;AAAA,gBACV,OAAO;AAAA,cACT;AAAA,cACA,OAAO,IAAI,QAAQ,CAAC,IAAI,MAAM,SAAS,MAAM,IAAI;AAAA,cAEjD,UAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,4BACb,UAAA;AAAA,gBAAAC,kCAAA;AAAA,kBAACmI;AAAAA,kBAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,OAAO,MAAM;AAAA,oBACb,MAAK;AAAA,oBACL,OAAM;AAAA,oBACN,gBAAe;AAAA,oBACf,YAAYE;AAAAA,oBACZ,UAAU,CAAC,MAAM;AACT,4BAAA,UAAU,EAAE,OAAO;AACzB,2DAAW,OAAO,IAAI,CAACC,QAAOnJ,OAAM;AAClC,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,MAAM;AAAA,0BAAA;AAAA,wBAEV;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,kBAAA;AAAA,gBACF;AAAA,gBACAtI,kCAAA;AAAA,kBAACmI;AAAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,OAAO,MAAM;AAAA,oBACb,gBAAe;AAAA,oBACf,YAAYE;AAAAA,oBACZ,UAAU,CAAC,MAAM;AACT,4BAAA,WAAW,EAAE,OAAO;AAC1B,2DAAW,OAAO,IAAI,CAACC,QAAOnJ,OAAM;AAClC,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,OAAO;AAAA,0BAAA;AAAA,wBAEX;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,kBAAA;AAAA,gBACF;AAAA,gBACAvI,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,cAAc,MAAM,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;AAAA,oBAC3C,gBAAe;AAAA,oBACf,YAAYsI;AAAAA,oBACZ,UAAU,CAAC,MAAM;AACf,2DAAW,OAAO,IAAI,CAACC,QAAOnJ,OAAM;AAClC,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,MAAM,EAAE,OAAO,SAA4B;AAAA,0BAAA;AAAA,wBAE/C;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,oBAEA,UAAA;AAAA,sBAACtI,kCAAA,IAAA,YAAA,EAAwC,UAAxB,KAAA,GAAA,gBAAgB,MAAU;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAAwC,UAAxB,KAAA,GAAA,gBAAgB,MAAU;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAAyC,UAAzB,KAAA,GAAA,gBAAgB,OAAW;AAAA,sBAC3CA,kCAAA,IAAA,YAAA,EAAsC,UAAtB,OAAA,GAAA,gBAAgB,IAAU;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAAsC,UAAtB,KAAA,GAAA,gBAAgB,IAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAC3C;AAAA,gBAEAD,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,cAAc,MAAM,YAAY,CAAC,MAAM,SAAS,IAAI,CAAC;AAAA,oBACrD,gBAAe;AAAA,oBACf,YAAYsI;AAAAA,oBACZ,UAAU,CAAC,MAAM;AACf,2DAAW,OAAO,IAAI,CAACC,QAAOnJ,OAAM;AAClC,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,WAAW,EAAE,OAAO,SAA0B;AAAA,0BAAA;AAAA,wBAElD;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,oBACA,YAAYtI,kCAAA;AAAA,sBAACkI;AAAAA,sBAAA;AAAA,wBACX,IAAI;AAAA,wBACJ,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,YAAU;AAAA,wBACV,WAAU;AAAA,wBAEV,UAAAlI,kCAAAA,IAAC,cAAa,EAAA,WAAU,SAAS,CAAA;AAAA,sBAAA;AAAA,oBACnC;AAAA,oBAEA,UAAA;AAAA,sBAACA,kCAAA,IAAA,YAAA,EAAqC,UAArB,QAAA,GAAA,cAAc,KAAY;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAA2C,UAA3B,OAAA,GAAA,cAAc,WAAiB;AAAA,sBAC/CA,kCAAA,IAAA,YAAA,EAAwC,UAAxB,QAAA,GAAA,cAAc,QAAe;AAAA,sBAC7CA,kCAAA,IAAA,YAAA,EAAsC,UAAtB,KAAA,GAAA,cAAc,MAAU;AAAA,sBACxCA,kCAAA,IAAA,YAAA,EAA2C,UAA3B,OAAA,GAAA,cAAc,WAAiB;AAAA,sBAC/CA,kCAAA,IAAA,YAAA,EAA0C,UAA1B,OAAA,GAAA,cAAc,UAAgB;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACjD;AAAA,gBAEAA,kCAAA;AAAA,kBAACkI;AAAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,OAAM;AAAA,oBACN,SAAS,MAAM;AACb,2DAAW,OAAO,OAAO,CAACpD,IAAG3F,OAAMA,OAAM,KAAK;AAAA,oBAChD;AAAA,oBACD,UAAA;AAAA,kBAAA;AAAA,gBAAI;AAAA,cAAA,GACP;AAAA,YAAA;AAAA,YArHK;AAAA,UAAA;AAAA,QAwHV,OAAK,CAAC;AAAA,MAAA;AAAA,IAEX;AAAA,IACAa,kCAAA;AAAA,MAACkI;AAAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QACV,cAAclI,kCAAAA,IAAC,SAAQ,EAAA,WAAU,SAAS,CAAA;AAAA,QAC1C,SAAS;AAAA,QACV,UAAA;AAAA,MAAA;AAAA,IAED;AAAA,EACF,EAAA,CAAA;AAEJ;ACvKO,SAAS,UACd,OAIA;AACM,QAAA,EAAE,UAAU,SAAa,IAAA;AAG7B,SAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO,qCAAU,eAAc;AAAA,YAC/B,UAAU,CAAC,MAAM;AACJ,mDAAA;AAAA,gBACT,GAAG;AAAA,gBACH,YAAY,EAAE,OAAO,SAAS;AAAA,cAAA;AAAA,YAElC;AAAA,UAAA;AAAA,QACF;AAAA,QACAD,kCAAAA,KAAC,OAAI,EAAA,WAAU,uBACb,UAAA;AAAA,UAACC,kCAAA,IAAA,SAAA,EAAM,WAAU,WAAU,UAAI,QAAA;AAAA,UAC/BA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,QAAQ,qCAAU;AAAA,cAClB,UAAU,CAAC,WAAW;AACT,qDAAA;AAAA,kBACT,GAAG;AAAA,kBACH;AAAA,gBAAA;AAAA,cAEJ;AAAA,YAAA;AAAA,UACF;AAAA,QAAA,GACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;ACpCO,SAAS,aACd,OAIA;AACM,QAAA,EAAE,UAAU,SAAa,IAAA;AAG7B,SAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO,qCAAU,eAAc;AAAA,YAC/B,UAAU,CAAC,MAAM;AACJ,mDAAA;AAAA,gBACT,GAAG;AAAA,gBACH,YAAY,EAAE,OAAO,SAAS;AAAA,cAAA;AAAA,YAElC;AAAA,UAAA;AAAA,QACF;AAAA,QACAD,kCAAAA,KAAC,OAAI,EAAA,WAAU,uBACb,UAAA;AAAA,UAACC,kCAAA,IAAA,SAAA,EAAM,WAAU,WAAU,UAAI,QAAA;AAAA,UAC/BA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,QAAQ,qCAAU;AAAA,cAClB,UAAU,CAAC,WAAW;AACT,qDAAA;AAAA,kBACT,GAAG;AAAA,kBACH;AAAA,gBAAA;AAAA,cAEJ;AAAA,YAAA;AAAA,UACF;AAAA,QAAA,GACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AC/BO,SAAS,eAAe;AAC7B,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA+B;AACzE,QAAM,kBAAkB;AACxB,QAAM,WAAW;AAEjB,QAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,kBAAkB;AAE3C,QAAA,UAAU,QAAQ,MAAM;AACrB,WAAA,KAAK,UAAU,iBAAiB,CAAE,CAAA,MAAM,KAAK,UAAU,mBAAmB,CAAA,CAAE;AAAA,EAAA,GAClF,CAAC,eAAe,eAAe,CAAC;AAE7B,QAAA,cAAc,YAAY,MAAM;AACpC,qBAAiB,eAAe;AAAA,EAAA,GAC/B,CAAC,eAAe,CAAC;AAEd,QAAA,aAAa,YAAY,MAAM;AAC9B,SAAA;AAAA,MACH,IAAI,qCAAU;AAAA,MACd,UAAU,iBAAiB;AAAA,IAAA,CAC5B;AAAA,KACA,CAAC,MAAM,eAAe,qCAAU,EAAE,CAAC;AAEtC,YAAU,MAAM;AACd,qBAAiB,eAAe;AAAA,EAAA,GAC/B,CAAC,eAAe,CAAC;AAEpB,SAEID,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAACF,kCAAAA,IAAA,WAAA,EAAU,WAAU,gCACnB,UAAAD,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAW;AAAA,QACX,WAAU;AAAA,QACV,MAAK;AAAA,QAEL,UAAA;AAAA,UAACC,kCAAAA,IAAA,KAAA,EAAkB,OAAM,MACvB,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,UAAU,+CAAe;AAAA,cACzB,UAAU,CAAC,aAAa;AACL,iCAAA;AAAA,kBACf,GAAG;AAAA,kBACH,SAAS;AAAA,gBAAA,CACV;AAAA,cACH;AAAA,YAAA;AAAA,eARK,SAUT;AAAA,UACAA,kCAAAA,IAAC,KAAe,EAAA,OAAM,MACpB,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,UAAU,+CAAe;AAAA,cACzB,UAAU,CAAC,aAAa;AACL,iCAAA;AAAA,kBACf,GAAG;AAAA,kBACH,MAAM;AAAA,gBAAA,CACP;AAAA,cACH;AAAA,YAAA;AAAA,eARK,MAUT;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,2CACC,aACC,EAAA,UAAA;AAAA,MAAAA,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,YAAY,CAAC;AAAA,UACb,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MACAlI,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,YAAY,CAAC;AAAA,UACb,WAAW;AAAA,UACX,OAAM;AAAA,UACN,SAAS;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;AC1EO,SAAS,sBAAsB;AACpC,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAmC,IAAI;AAEvF,SAEInI,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAH,uCAAC,UACC,EAAA,UAAA;AAAA,MAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,QAACkI;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,YAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAAlI,kCAAAA,IAAC,cAAa,EAAA,WAAU,SAAS,CAAA;AAAA,QAAA;AAAA,MAAA,GAErC;AAAA,MACAD,kCAAAA,KAAC,cAAa,EAAA,cAAW,UACvB,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cACGA,kCAAAA,IAAA,OAAA,EAAI,MAAK,gBAAe,WAAU,UAAS,SAAQ,iBAAgB,SAAQ,OAAM,OAAM,8BACtF,gDAAC,QAAK,EAAA,GAAE,i0BAAi0B,CAAA,GAC30B;AAAA,YAEF,SAAS,MAAM;AAAA,cAAoB;AAAA;AAAA,YAA0B;AAAA,YAC9D,UAAA;AAAA,UAAA;AAAA,UAPiB;AAAA,QASlB;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cACEA,kCAAAA,IAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,gDAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,22BAA22B,CAAA,GAAO;AAAA,YAE/9B,SAAS,MAAM;AAAA,cAAoB;AAAA;AAAA,YAAqB;AAAA,YACzD,UAAA;AAAA,UAAA;AAAA,UALiB;AAAA,QAOlB;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAW;AAAA,YAEX,cACEA,kCAAAA,IAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,gDAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,4PAA4P,CAAA,GAAO;AAAA,YAEhX,SAAS,MAAM;AAAA,cAAoB;AAAA;AAAA,YAAyB;AAAA,YAC7D,UAAA;AAAA,UAAA;AAAA,UALK;AAAA,QAON;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAU;AAAA,YAAe,OAAM;AAAA,YAC/B,cACEA,kCAAAA,IAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,gDAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,ujBAAujB,CAAA,GAAO;AAAA,YAE5qB,UAAA;AAAA,UAAA;AAAA,UALK;AAAA,QAON;AAAA,MAAA,GACF;AAAA,IAAA,GACF;AAAA,IACAD,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ,CAAC,CAAC;AAAA,QACV,WAAU;AAAA,QACV,OAAO,qBAAqB,YAA4B,MAAM;AAAA,QAC9D,WAAU;AAAA,QACV,SAAS,MAAM,oBAAoB,IAAI;AAAA,QAEvC,UAAA;AAAA,UAAAA,uCAAC,aACE,EAAA,UAAA;AAAA,YAAA,qBAAqB,cAA8B;AAAA,YACnD,qBAAqB,SAAyB;AAAA,YAC9C,qBAAqB,aAA6B;AAAA,kDAClD,YAAW,EAAA;AAAA,UAAA,GACd;AAAA,gDACC,SAAQ,EAAA;AAAA,UAEP,qBAAqB,cACrBC,sCAAC,eAAc,CAAA,CAAA;AAAA,UAGf,qBAAqB,SACrBA,sCAAC,UAAS,CAAA,CAAA;AAAA,UAGV,qBAAqB,aACrBA,sCAAC,cAAa,CAAA,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAElB;AAAA,EACF,EAAA,CAAA;AAEJ;ACrFO,MAAM,SAAS;AAAA,EACpB,CAAC,iBAAiB,MAAM,GAAG;AAAA,EAC3B,CAAC,iBAAiB,GAAG,GAAG;AAAA,EACxB,CAAC,iBAAiB,GAAG,GAAG;AAAA,EACxB,CAAC,iBAAiB,GAAG,GAAG;AAAA,EACxB,CAAC,iBAAiB,eAAe,GAAG;AAAA,EACpC,CAAC,iBAAiB,aAAa,GAAG;AAAA,EAClC,CAAC,iBAAiB,MAAM,GAAG;AAC7B;AAEa,MAAA,UAAU,KAAK,CAAC,UAAwB;AACnD,QAAM,EAAE,oBAAoB,iBAAiB,mBAAA,IAAuB;AACpE,QAAM,QAAQ;AAGZ,SAAAD,kCAAAA,KAAC,OAAM,EAAA,WAAW,+BAChB,UAAA;AAAA,IAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,gDACb,UAAA;AAAA,MAAAC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO,OAAO,iBAAiB,MAAM;AAAA,UACrC,UAAU,uBAAuB,iBAAiB;AAAA,UAClD,SAAS,MAAM,yDAAqB,iBAAiB;AAAA,UAErD,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,urBAAurB,CAAA,GAClyB;AAAA,QAAA;AAAA,MACF;AAAA,QAEG,mDAAiB,UAAS,YAAY,SAAQ,mDAAiB,UAAS,YAAY,mBAEnFD,kCAAAA,KAAAG,kBAAA,UAAA,EAAA,UAAA;AAAA,QAAAF,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,OAAO,iBAAiB,GAAG;AAAA,YAClC,UAAU,uBAAuB,iBAAiB;AAAA,YAClD,SAAS,MAAM,yDAAqB,iBAAiB;AAAA,YAErD,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,4VAA4V,CAAA,GAAO;AAAA,UAAA;AAAA,QAChd;AAAA,QAQAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,OAAO,iBAAiB,GAAG;AAAA,YAClC,UAAU,uBAAuB,iBAAiB;AAAA,YAClD,SAAS,MAAM,yDAAqB,iBAAiB;AAAA,YAErD,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,mWAAmW,CAAA,GAAO;AAAA,UAAA;AAAA,QACvd;AAAA,MAAA,GACF;AAAA,OAGA,mDAAiB,UAAS,YAAY,aAEpCD,kCAAAA,KAAAG,kBAAAA,UAAA,EAAA,UAAA;AAAA,QAAAF,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,OAAO,iBAAiB,eAAe;AAAA,YAC9C,UAAU,uBAAuB,iBAAiB;AAAA,YAClD,SAAS,MAAM,yDAAqB,iBAAiB;AAAA,YAErD,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,eAAc,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,oqCAAoqC,CAAA,GAAO;AAAA,UAAA;AAAA,QAC1xC;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,OAAO,iBAAiB,aAAa;AAAA,YAC5C,UAAU,uBAAuB,iBAAiB;AAAA,YAClD,SAAS,MAAM,yDAAqB,iBAAiB;AAAA,YAErD,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,eAAc,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,66BAA66B,CAAA,GAAO;AAAA,UAAA;AAAA,QACniC;AAAA,MAAA,GACF;AAAA,IAAA,GAGJ;AAAA,IAGE,SACAD,kCAAA,KAAC,OAAI,EAAA,WAAU,6CACZ,UAAA;AAAA,MAAmB,mBAAAC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACnB,OAAO,OAAO,iBAAiB,MAAM;AAAA,UACrC,UAAU,uBAAuB,iBAAiB;AAAA,UAClD,SAAS,MAAM,yDAAqB,iBAAiB;AAAA,UAErD,UAACA,kCAAAA,IAAA,OAAA,EAAI,OAAM,8BAA6B,WAAU,UAAS,SAAQ,aAAY,UAAAA,kCAAA,IAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,wYAAwY,CAAA,GAAO;AAAA,QAAA;AAAA,MAC5f;AAAA,4CAEC,qBAAoB,EAAA;AAAA,IAAA,GACvB;AAAA,EAGJ,EAAA,CAAA;AAEJ,CAAC;AC/FD,MAAM,cAAcnB,eAAM;AAAA,EACxB,CAAC,EAAE,aAAa,CAAA,GAAI,GAAG,MAAA,GAAS,QAAQ;AAEpC,WAAAmB,kCAAA;AAAA,MAACuI;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,cAAW;AAAA,QACX,WAAU;AAAA,QACV,YAAY;AAAA,UACV,GAAG;AAAA,UACH,OAAO,GAAG,UAAU,yCAAY,KAAK;AAAA,UACrC,OAAO,GAAG,QAAQ,yCAAY,KAAK;AAAA,QACrC;AAAA,QACA,SAAS;AAAA,QACT,aAAY;AAAA,QACZ,QAAO;AAAA,QACP,SAAQ;AAAA,QACP,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAIA,YAAY,cAAc;ACzBb,MAAA,eAAe,KAAK,MAAM;AACrC,QAAM,SAAS;AACf,QAAM,cAAc;AACd,QAAA,OAAO,YAAY,2CAAa,EAAE;AACxC,QAAM,aAAa;AACnB,QAAM,OAAO;AACb,QAAM,UAAU;AAEV,QAAA,cAAc,QAAQ,MAAM;AAC5B,QAAA,eAAe,YAAY,aAAa;AAE1C,YAAMhJ,UAAS,YAAY;AAEpB,aAAA,iCAAQ,oBACZ;AAAA,QAAwB,2CAAa,KAAK;AAAA,QACzC,KAAK,MAAM,KAAK,UAAUA,OAAM,CAAC;AAAA;AAAA,IACnC,OACG;AACE,aAAA;AAAA,IACT;AAAA,EAEC,GAAA,CAAC,aAAa,QAAQ,IAAI,CAAC;AACxB,QAAA,mBAAmB,YAAY,CAAC,OAAkB;AAClD,QAAA,eAAe,SAAS,IAAI;AACnB,iBAAA,YAAY,IAAI,EAAE;AAAA,IAC/B;AAAA,EACC,GAAA,CAAC,YAAY,aAAa,IAAI,CAAC;AAGhC,SAAAS,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAc;AAAA,MACd,eAAe;AAAA,MAIb,UACA,eAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,QAAQ;AAAA,UACR,YAAY;AAAA,QAAA;AAAA,MAEd;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;ACtCM,MAAM,kBAAkB;AAElB,MAAA,aAAa,KAAK,MAAM;AAC7B,QAAA,WAAW,eAAe,aAAa;AACvC,QAAA,aAAa,eAAe,eAAe;AACjD,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,EAAE;AAC/C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAmB,aAAa;AAEtD,QAAA,gBAAgB,CAAC,UAAkB;AAC7B,cAAA,CAAC,SAAS,KAAK,OAAO,CAAC8E,IAAG3F,OAAMA,OAAM,KAAK,CAAC;AAElD,QAAA,OAAO,WAAW,GAAG;AACvB,gBAAU,aAAa;AAAA,IACzB;AAAA,EAAA;AAGI,QAAA,aAAa,QAAQ,MAAM;AAC3B,QAAA,eAAe,WAAW,QAAQ;AACpC,aAAO,kBAAkB;AAAA,IAAA,WAChB,eAAe,WAAW,QAAQ;AAC3C,aAAO,kBAAkB;AAAA,IAAA,OACpB;AACL,aAAO,kBAAkB;AAAA,IAC3B;AAAA,EAAA,GACC,CAAC,UAAU,CAAC;AAEf,SACGa,kCAAAA,IAAA,cAAc,UAAd,EAAuB,OAAO,YAC7B,UAACD,kCAAA,KAAA,OAAA,EAAM,WAAW,GAAG,iBAAiB,wDAAwD,GAC5F,UAAA;AAAA,IAACC,kCAAAA,IAAA,OAAA,EAAI,WAAU,uDAEX,UAAA,aAAa,SAAS,UAAUA,kCAAA,IAAC,gBAAa,EA0BlD,CAAA;AAAA,IACAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QAEV,UAAAD,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,iBAAiB;AAAA,cACjB,kBAAkB;AAAA,cAClB,gBAAgB;AAAA,YAClB;AAAA,YAEA,UAAA;AAAA,cAAAC,kCAAAA,IAAC,SAAI,WAAU,8BACZ,iBAAO,IAAI,CAAC,OAAO,UAClBA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,WAAS;AAAA,kBACT,WAAU;AAAA,kBACV,SACEA,kCAAA;AAAA,oBAACkI;AAAAA,oBAAA;AAAA,sBACC,YAAU;AAAA,sBACV,QAAO;AAAA,sBACP,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,SAAS,MAAM,cAAc,KAAK;AAAA,sBAElC,gDAAC,MAAK,EAAA,WAAU,mBAAkB,MAAK,wBAAuB,OAAO,IAAI;AAAA,oBAAA;AAAA,kBAC3E;AAAA,kBAGF,UAAAlI,kCAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,KAAI;AAAA,sBACJ,WAAU;AAAA,sBACV,KAAK;AAAA,oBAAA;AAAA,kBACP;AAAA,gBAAA;AAAA,gBAnBK;AAAA,cAqBR,CAAA,GACH;AAAA,cACAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,YAAY;AAAA,oBACV,cAAc;AAAA,oBACd,cAAc;AAAA,oBACd,OAAO;AAAA,kBACT;AAAA,kBACA,YACED,kCAAA,KAAC,OAAI,EAAA,WAAU,yEACb,UAAA;AAAA,oBAACC,kCAAAA,IAAA,SAAA,EAAQ,WAAS,MAAC,SAAQ,SACzB,gDAACkI,UAAO,EAAA,YAAU,MAAC,QAAO,QAAO,MAAK,MAAK,SAAQ,SACjD,UAAClI,kCAAAA,IAAA,MAAA,EAAK,WAAU,oBAAmB,MAAK,6BAA4B,OAAO,GAAI,CAAA,EAAA,CACjF,EACF,CAAA;AAAA,oBACAD,kCAAAA,KAAC,OAAI,EAAA,WAAU,wBACb,UAAA;AAAA,sBAACA,kCAAAA,KAAA,KAAA,EAAE,WAAU,mCAAmC,UAAA;AAAA,wBAAO,OAAA;AAAA,wBAAO;AAAA,sBAAA,GAAK;AAAA,sBAClEC,kCAAA,IAAA,SAAA,EAAQ,WAAS,MAAC,SAAQ,gBACzB,UAAAA,kCAAA;AAAA,wBAACkI;AAAAA,wBAAA;AAAA,0BACC,YAAU;AAAA,0BACV,OAAO,CAAC,SAAS,YAAY;AAAA,0BAC7B,YAAY,CAAC;AAAA,0BACb,QAAO;AAAA,0BACP,MAAK;AAAA,0BACL,SAAQ;AAAA,0BAER,UAAAlI,kCAAA;AAAA,4BAAC;AAAA,4BAAA;AAAA,8BACC,WAAW;AAAA,gCACT;AAAA,gCACA,CAAC,SAAS,qBAAqB;AAAA,8BACjC;AAAA,8BACA,MAAK;AAAA,8BACL,OAAO;AAAA,4BAAA;AAAA,0BACT;AAAA,wBAAA;AAAA,sBAAA,GAEJ;AAAA,oBAAA,GACF;AAAA,kBAAA,GACF;AAAA,kBAEF,SAAS;AAAA,kBACT,QAAO;AAAA,kBACP,cACGA,kCAAAA,IAAA,SAAA,EAAQ,WAAS,MAAC,SAAQ,aACzB,UAAAA,sCAACkI,UAAO,EAAA,YAAU,MAAC,QAAO,QAAO,MAAK,MAAK,SAAQ,SACjD,UAAAlI,kCAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,MAAK;AAAA,sBACL,OAAO;AAAA,oBAAA;AAAA,qBAEX,EACF,CAAA;AAAA,kBAEF,OAAO;AAAA,kBACP,SAAQ;AAAA,kBACR,eAAe;AAAA,gBAAA;AAAA,cACjB;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAC;AC1KM,SAAS,aACd,OAUA;AACM,QAAA,EAAE,OAAO,SAAS,OAAO,WAAW,QAAQ,KAAK,QAAQ,SAAS,cAAc,SAAA,IAAa;AAE7F,QAAA,aAAa,YAAY,MAAM;AACnB,oBAAA,aAAa,CAAC,MAAM;AAAA,EAAA,GACnC,CAAC,QAAQ,YAAY,CAAC;AAGvB,SAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WACE;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,KAAK;AAAA,MAChB;AAAA,MAEF,OAAO;AAAA,QACL,OAAO,SAAS,QAAQ;AAAA,MAC1B;AAAA,MAEA,UAAA;AAAA,QAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,iFACZ,UAAA;AAAA,UAAA;AAAA,UACDC,kCAAA;AAAA,YAACkI;AAAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,SAAS,UAAU;AAAA,cAC5B,YAAU;AAAA,cACV,WAAU;AAAA,cACV,SAAS;AAAA,cAET,UAAAlI,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WACE;AAAA,oBACE;AAAA,oBACA,SAAS,qBAAqB;AAAA,kBAChC;AAAA,gBAAA;AAAA,cAEJ;AAAA,YAAA;AAAA,UACF;AAAA,UACAA,kCAAA;AAAA,YAACkI;AAAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,YAAU;AAAA,cACV,WAAU;AAAA,cACV,SAAS;AAAA,cAET,UAAAlI,kCAAAA,IAAC,WAAU,EAAA,WAAU,0BAA0B,CAAA;AAAA,YAAA;AAAA,UACjD;AAAA,QAAA,GACF;AAAA,QACCA,kCAAAA,IAAA,OAAA,EAAI,WAAU,8CACZ,SACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AClEO,SAAS,UAAU,OAIvB;AACD,QAAM,EAAE,QAAQ,WAAW,UAAU,GAAG,KAAS,IAAA;AACzC,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACP,WACE;AAAA,QACE;AAAA,QACA,SAAS,WAAW;AAAA,QACpB;AAAA,MACF;AAAA,MAED,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAEL;AChBO,MAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AACf;AAEO,SAAS,YACd,OAIA;;AACM,QAAA,EAAE,kBAAkB,kBAAsB,IAAA;AAE1C,QAAA,UAASR,MAAA,qDAAkB,UAAlB,gBAAAA,IAAyB;AAGlC,QAAA,qBAAqB,YAAY,CAACgJ,YAA0B;AAC9C,sBAAA;AAAA,MAChB,GAAG;AAAA,MACH,OAAO;AAAA,QACL,GAAG,qDAAkB;AAAA,QACrB,OAAOA;AAAAA,MACT;AAAA,IAAA,CACD;AAAA,EAAA,GACA,CAAC,kBAAkB,iBAAiB,CAAC;AAElC,QAAA,wBAAwB,YAAY,CAAC,cAAuB;AAC5C,2DAAA;AAAA,MAClB,GAAG;AAAA,MACH;AAAA,IAAA;AAAA,EACD,GACA,CAAC,kBAAkB,iBAAiB,CAAC;AAElC,QAAA,kBAAkB,YAAY,MAAM;AACxC,UAAM,SAAQ,iCAAQ,IAAI,WAAS,MAAM,UAAS;AAClD,QAAI,QAAQ;AACZ,WAAO,MAAM,SAAS,WAAW,KAAK,EAAE,GAAG;AACzC;AAAA,IACF;AACA,WAAO,WAAW,KAAK;AAAA,EAAA,GACtB,CAAC,MAAM,CAAC;AAEL,QAAA,iBAAiB,YAAY,MAAM;AACvC,UAAM,YAAY,CAAC,GAAG,UAAU,IAAI;AAAA,MAClC,MAAM,gBAAgB;AAAA,MACtB,OAAO;AAAA,MACP,MAAM,gBAAgB;AAAA,MACtB,WAAW,cAAc;AAAA,IAAA,CAC1B;AACD,uBAAmB,SAAS;AAAA,EAC3B,GAAA,CAAC,QAAQ,iBAAiB,kBAAkB,CAAC;AAEhD,SAEIzI,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAACF,kCAAAA,IAAA,OAAA,EAAI,WAAU,aACb,UAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,aAAY,qDAAkB,cAAa;AAAA,QAC3C,YAAY;AAAA,UACV,OAAO;AAAA,QACT;AAAA,QACA,eAAe;AAAA,QAChB,UAAA;AAAA,MAAA;AAAA,IAAA,GACH;AAAA,IACAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QAGP,WAAQ,iCAAA,IAAI,CAAC,OAAO,UAAU;AAE1B,iBAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,YAAY;AAAA,gBACV,OAAO;AAAA,cACT;AAAA,cACA,OAAO,IAAI,QAAQ,CAAC,IAAI,MAAM,SAAS,MAAM,IAAI;AAAA,cAEjD,UAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,4BACb,UAAA;AAAA,gBAAAC,kCAAA;AAAA,kBAACmI;AAAAA,kBAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,OAAO,MAAM;AAAA,oBACb,MAAK;AAAA,oBACL,OAAM;AAAA,oBACN,gBAAe;AAAA,oBACf,YAAY;AAAA,oBACZ,UAAU,CAAC,MAAM;AACT,4BAAA,UAAU,EAAE,OAAO;AACzB,+EAAqB,OAAO,IAAI,CAACG,QAAOnJ,OAAM;AAC5C,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,MAAM;AAAA,0BAAA;AAAA,wBAEV;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,kBAAA;AAAA,gBACF;AAAA,gBACAtI,kCAAA;AAAA,kBAACmI;AAAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,OAAO,MAAM;AAAA,oBACb,gBAAe;AAAA,oBACf,YAAY;AAAA,oBACZ,UAAU,CAAC,MAAM;AACT,4BAAA,WAAW,EAAE,OAAO;AAC1B,+EAAqB,OAAO,IAAI,CAACG,QAAOnJ,OAAM;AAC5C,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,OAAO;AAAA,0BAAA;AAAA,wBAEX;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,kBAAA;AAAA,gBACF;AAAA,gBACAvI,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,OAAO,MAAM;AAAA,oBACb,gBAAe;AAAA,oBACf,YAAY;AAAA,oBACZ,UAAU,CAAC,MAAM;AACf,+EAAqB,OAAO,IAAI,CAACuI,QAAOnJ,OAAM;AAC5C,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,MAAM,EAAE,OAAO,SAA4B;AAAA,0BAAA;AAAA,wBAE/C;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,oBAEA,UAAA;AAAA,sBAACtI,kCAAA,IAAA,YAAA,EAAwC,UAAxB,KAAA,GAAA,gBAAgB,MAAU;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAAwC,UAAxB,KAAA,GAAA,gBAAgB,MAAU;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAAyC,UAAzB,KAAA,GAAA,gBAAgB,OAAW;AAAA,sBAC3CA,kCAAA,IAAA,YAAA,EAAsC,UAAtB,OAAA,GAAA,gBAAgB,IAAU;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAAsC,UAAtB,KAAA,GAAA,gBAAgB,IAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAC3C;AAAA,gBAEAD,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,OAAO,MAAM;AAAA,oBACb,gBAAe;AAAA,oBACf,YAAY;AAAA,oBACZ,UAAU,CAAC,MAAM;AACf,+EAAqB,OAAO,IAAI,CAACuI,QAAOnJ,OAAM;AAC5C,4BAAIA,OAAM,OAAO;AACR,iCAAA;AAAA,4BACL,GAAGmJ;AAAAA,4BACH,WAAW,EAAE,OAAO,SAA0B;AAAA,0BAAA;AAAA,wBAElD;AACOA,+BAAAA;AAAAA,sBACR,CAAA;AAAA,oBACH;AAAA,oBACA,YAAYtI,kCAAA;AAAA,sBAACkI;AAAAA,sBAAA;AAAA,wBACX,IAAG;AAAA,wBACH,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,YAAU;AAAA,wBACV,WAAU;AAAA,wBAEV,UAAAlI,kCAAAA,IAAC,cAAa,EAAA,WAAU,SAAS,CAAA;AAAA,sBAAA;AAAA,oBACnC;AAAA,oBAEA,UAAA;AAAA,sBAACA,kCAAA,IAAA,YAAA,EAAqC,UAArB,QAAA,GAAA,cAAc,KAAY;AAAA,sBAC1CA,kCAAA,IAAA,YAAA,EAA2C,UAA3B,OAAA,GAAA,cAAc,WAAiB;AAAA,sBAC/CA,kCAAA,IAAA,YAAA,EAAwC,UAAxB,QAAA,GAAA,cAAc,QAAe;AAAA,sBAC7CA,kCAAA,IAAA,YAAA,EAAsC,UAAtB,KAAA,GAAA,cAAc,MAAU;AAAA,sBACxCA,kCAAA,IAAA,YAAA,EAA2C,UAA3B,OAAA,GAAA,cAAc,WAAiB;AAAA,sBAC/CA,kCAAA,IAAA,YAAA,EAA0C,UAA1B,OAAA,GAAA,cAAc,UAAgB;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACjD;AAAA,gBAEAA,kCAAA;AAAA,kBAACkI;AAAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,OAAM;AAAA,oBACN,SAAS,MAAM;AACb,yCAAmB,OAAO,OAAO,CAACpD,IAAG3F,OAAMA,OAAM,KAAK,CAAC;AAAA,oBACzD;AAAA,oBACD,UAAA;AAAA,kBAAA;AAAA,gBAAI;AAAA,cAAA,GACP;AAAA,YAAA;AAAA,YArHK;AAAA,UAAA;AAAA,QAwHV,OAAK,CAAC;AAAA,MAAA;AAAA,IAEX;AAAA,IACAa,kCAAAA,IAAC,OAAI,EAAA,WAAU,OACb,UAAAA,kCAAA;AAAA,MAACkI;AAAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QACV,WAAS;AAAA,QACT,cAAclI,kCAAAA,IAAC,SAAQ,EAAA,WAAU,SAAS,CAAA;AAAA,QAC1C,SAAS;AAAA,QACV,UAAA;AAAA,MAAA;AAAA,IAAA,GAGH;AAAA,EACF,EAAA,CAAA;AAEJ;AClNO,SAAS,qBAAqB,OAIlC;AACD,QAAM,EAAE,kBAAkB,mBAAmB,OAAA,IAAW;AAExD,+CACG,MACC,EAAA,UAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MAEA,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ,EAAA,CAAA;AAEJ;ACpBO,SAAS,UACd,OAIA;;AACM,QAAA,EAAE,kBAAkB,kBAAsB,IAAA;AAC1C,QAAA,UAASR,MAAA,qDAAkB,UAAlB,gBAAAA,IAAyB;AAGlC,QAAA,eAAe,YAAY,CAAC,UAAe;AAC7B,sBAAA;AAAA,MAChB,GAAG;AAAA,MACH,YAAY;AAAA,QACV,GAAG,qDAAkB;AAAA,QACrB,GAAG;AAAA,MACL;AAAA,IAAA,CACD;AAAA,EAAA,GACA,CAAC,kBAAkB,iBAAiB,CAAC;AAGtC,SAAAQ,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAO,qDAAkB;AAAA,MACzB,eAAe;AAAA,IAAA;AAAA,EAAA;AAGrB;AC3BO,SAAS,mBAAmB,OAIhC;AACD,QAAM,EAAE,kBAAkB,mBAAmB,OAAA,IAAW;AAExD,+CACG,MACC,EAAA,UAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MAEA,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ,EAAA,CAAA;AAEJ;ACvBO,SAAS,WAAW,OAExB;AACD,SAAQA,kCAAA,IAAA,KAAA,EAAE,WAAU,mGAAmG,gBAAM,SAAS,CAAA;AACxI;AAEO,MAAM,WAAYA,kCAAA,IAAA,MAAA,EAAK,MAAK,4BAA2B,WAAU,WAAU;ACG3E,SAAS,cACd,OAOA;AACA,QAAM,EAAE,WAAW,UAAU,YAAY,aAAa;AACtD,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,aAAa;AAC9C,QAAM,CAAC,SAAS,UAAU,IAAIA,eAAM,SAAkB;AAEtD,QAAM,SAAS;AACf,QAAM,OAAO;AAGb,YAAU,MAAM;;AACd,QAAI,QAAQ;AACV,YAAM,gBAAgB,2BAA2B,UAAU,QAAQ,EAAE;AACrE,YAAM,WAAW,CAAA;AACN,iBAAA,OAAO,UAAU,OAAO;AACjC,iBAAS,GAAG,IAAI,EAAE,GAAG,UAAU,MAAM,GAAG;AAE/B,iBAAA,GAAG,EAAE,WAAW;AAAA,MAC3B;AAEO,aAAA,qBAAqB,kBAAkB;AAAA,QAC5C,MAAM;AAAA,QACN,OAAO,UAAU;AAAA,QACjB,UAAU;AAAA,UACR;AAAA;AAAA,YAEE;AAAA,YACA,OAAO;AAAA,cACL,MAAM,UAAU;AAAA;AAAA,cAEhB,GAAG,UAAU;AAAA,YACf;AAAA;AAAA,YAEA,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MAAA,CACD;AAED,YAAM4J,UAAQjJ,MAAA,OAAO,mBAAA,EAAqB,kBAAkB,aAAa,MAA3D,gBAAAA,IAA8D;AAC5E,UAAIiJ,QAAO;AACT,mBAAWA,MAAK;AAAA,MAClB;AACA,aAAO,MAAM;AACJ,eAAA,mBAAA,EAAqB,oBAAoB,aAAa;AAAA,MAAA;AAAA,IAEjE;AAAA,EAAA,GACC,CAAC,QAAQ,SAAS,CAAC;AAEtB,QAAM,mBAAmB5J,eAAM,YAAY,CAAC6J,UAAkB;AAC5D,YAAQA,KAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,cAAc7J,eAAM,YAAY,MAAM;AAC/B,yCAAA,UAAU,MAAM;AAAA,EAC1B,GAAA,CAAC,UAAU,UAAU,EAAE,CAAC;AAE3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAeEmB,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAa,QAAQ;AAAA,QACrB,OAAO,QAAQ;AAAA,QACf,MAAM;AAAA,QACN,WAAU;AAAA,QACV,UAAU,eAAe,UAAU;AAAA,QACnC,SAAS,CAAC,YACRD,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAc;AAAA,YAEd,UAAA;AAAA,cAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,gBAACkI;AAAAA,gBAAA;AAAA,kBACC,WAAW;AAAA,kBACX,YAAU;AAAA,kBACV,SAAQ;AAAA,kBACR,MAAK;AAAA,kBAEL,UAAClI,kCAAA,IAAA,MAAA,EAAK,MAAK,kBAAiB,WAAU,2BAA0B;AAAA,gBAAA;AAAA,cAAA,GAEpE;AAAA,cACAD,kCAAAA,KAAC,cAAa,EAAA,cAAW,WACvB,UAAA;AAAA,gBAAAC,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBAEC,SAAS;AAAA,oBACV,UAAA;AAAA,kBAAA;AAAA,kBAFK;AAAA,gBAIN;AAAA,gBAEAA,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBAEC,OAAM;AAAA,oBACN,SAAS,MAAM,OAAO;AAAA,oBACvB,UAAA;AAAA,kBAAA;AAAA,kBAHK;AAAA,gBAKN;AAAA,cAAA,GACF;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,QAEF,SAAS,CAAC,WAAW,cAAc;AAAA,QAClC,GAAG;AAAA,QAEH,UAAA,UAAU,SAAS,UAAU;AAAA,MAAA;AAAA,IAChC;AAAA;AAGJ;ACjIO,SAAS,cACd,OAWA;;AACM,QAAA,EAAE,SAAS,UAAU,MAAM,UAAU,cAAc,YAAY,YAAY,UAAU,oBAAA,IAAwB;AAGjH,SAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,MAAM;AAAA,MAGJ,UAAA;AAAA,SAAMP,MAAA,6BAAA,UAAA,gBAAAA,IAAO,IAAI,CAAC,SAAS;AAEvB,iBAAAQ,kCAAAA,IAAC,gBAA6B,EAAA,KAAK,MACjC,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,cACX;AAAA,cACA;AAAA,cACA,YAAY,qCAAU;AAAA,cACtB;AAAA,YAAA;AAAA,UAAA,KANiB,KAAK,EAQ1B;AAAA,QAAA;AAAA,QAKJ,CAAC,YAAYA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACZ;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA,SAAS;AAAA,YACT,YAAY,qCAAU;AAAA,UAAA;AAAA,QACxB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAKR;AC3Ca,MAAA,wBAAwB,KAAK,CAAC,UAMrC;;AACJ,QAAM,EAAE,UAAU,SAAS,UAAU,YAAY,SAAa,IAAA;AAC9D,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,aAAa;AAC9C,QAAM,CAAC,cAAc,eAAe,IAAIA,eAAM,SAAyB;AAEvE,QAAM,OAAO;AACb,QAAM,aAAa;AAEnB,QAAM,uBAAuB;AAAA,IAC3B,MAAM,yCAAY,OAAO,CAAC;;AAAS,eAAAW,MAAA,KAAK,aAAL,gBAAAA,IAAe,QAAO,SAAS;AAAA;AAAA,IAClE,CAAC,YAAY,SAAS,EAAE;AAAA,EAAA;AAG1B,QAAM,mBAAmBX,eAAM,YAAY,CAAC6J,UAAkB;AAC5D,YAAQA,KAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,qBAAqB7J,eAAM,YAAY,MAAM;AACjC,oBAAA;AAAA,MACd,UAAU,EAAE,IAAI,SAAS,GAAG;AAAA,MAC5B,OAAO,EAAE,IAAI,QAAQ;AAAA,IAAA,CACtB;AACD,YAAQ,KAAK;AAAA,EACZ,GAAA,CAAC,SAAS,IAAI,OAAO,CAAC;AAEnB,QAAA,aAAaA,eAAM,YAAY,MAAM;AACpC;AACL,YAAQ,KAAK;AAAA,EAAA,GACZ,CAAC,IAAI,CAAC;AAEH,QAAA,OAAO,QAAQ,MAAM;AAClB,WAAA;AAAA,MACL,OAAO;AAAA,IAAA;AAAA,EACT,GACC,CAAC,oBAAoB,CAAC;AAGvB,SAAAmB,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,SAAS;AAAA,MAChB,aAAa,QAAQ;AAAA,MACrB,MAAM;AAAA,MACN,YAAY;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB,CAAC,GAACR,MAAA,KAAK,UAAL,gBAAAA,IAAY,KAAK,CAAC,SAAS,KAAK,OAAO;AAAA,MAC1D,QAAQ,CAAC,YACPO,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAc;AAAA,UAEd,UAAA;AAAA,YAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,cAACkI;AAAAA,cAAA;AAAA,gBACC,WAAW;AAAA,gBACX,YAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,MAAK;AAAA,gBAEL,UAAClI,kCAAA,IAAA,MAAA,EAAK,MAAK,kBAAiB,WAAU,2BAA0B;AAAA,cAAA;AAAA,YAAA,GAEpE;AAAA,YACAD,kCAAAA,KAAC,cAAa,EAAA,cAAW,WAEvB,UAAA;AAAA,cAAAC,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,SAAS;AAAA,kBACV,UAAA;AAAA,gBAAA;AAAA,gBAFK;AAAA,cAIN;AAAA,cACAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,SAAS;AAAA,kBACV,UAAA;AAAA,gBAAA;AAAA,gBAFK;AAAA,cAIN;AAAA,cAEAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,OAAM;AAAA,kBACN,SAAS,MAAM,OAAO;AAAA,kBACvB,UAAA;AAAA,gBAAA;AAAA,gBAHK;AAAA,cAKN;AAAA,YAAA,GACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,MAGF,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA,qBAAqB,MAAM,gBAAgB,MAAS;AAAA,QAAA;AAAA,MACtD;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AC9GM,SAAS,sBACd,OAKA;;AACA,QAAM,EAAE,UAAU,YAAY,SAAA,IAAa;AAC3C,QAAM,OAAO;AAEb,SAGMA,kCAAA,IAAAE,kBAAA,UAAA,EAAA,WAAAV,MAAA,6BAAM,UAAN,gBAAAA,IAAa,IAAI,CAAC,SAAS;;AACzB,iDACG,gBAAe,EAAA,KAAK,MAEjB,YAAAA,MAAA,KAAK,UAAL,gBAAAA,IAAY,OAAMQ,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACjB,UAAU;AAAA,QACV,UAASP,MAAA,KAAK,UAAL,gBAAAA,IAAY;AAAA,QACrB;AAAA,QACA;AAAA,QACA,UAAU,CAAC,OAAO,qCAAW,IAAI,CAAC,KAAK,QAAQ,EAAE;AAAA,MAAC;AAAA,IAAA,KAPxB,KAAK,EAUrC;AAAA,EAEH,GAEL,CAAA;AAEJ;AC/BO,SAAS,2BACd,OAIA;AACM,QAAA,EAAE,SAAS,SAAa,IAAA;AAE9B,SACE,WACAO,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SACE,IAAI;AAAA,QACF;AAAA,UACE,wBAAwB;AAAA,UACxB,wBAAwB;AAAA,UACxB,wBAAwB;AAAA,UACxB,wBAAwB;AAAA,QAC1B;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,OAAO;AAAA,cACL,IAAI;AAAA,gBACF,KAAK;AAAA,cACP;AAAA,YACF;AAAA,UACF;AAAA,UACA,SAAS;AAAA,YACP;AAAA,cACE,CAAC,wBAAwB,QAAQ,GAAG,QAAQ;AAAA,YAC9C;AAAA,YACA;AAAA,cACE,CAAC,wBAAwB,SAAS,GAAG,QAAQ;AAAA,YAC/C;AAAA,UACF;AAAA,QACF;AAAA,QACA,MAAM;AAAA,MAGT;AAAA,IAAA;AAAA,EAAA;AAGP;AC1CO,MAAM,iBAAsC;AAAA,EACjD;AAAA,IACE,OAAO;AAAA,IACP,WAAU,qCAAgC,aAAhC,mBAA0C;AAAA,EACtD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,oCAA+B,aAA/B,mBAAyC;AAAA,EACrD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,qCAAgC,aAAhC,mBAA0C;AAAA,EACtD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,mCAA8B,aAA9B,mBAAwC;AAAA,EACpD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,iCAA4B,aAA5B,mBAAsC;AAAA,EAClD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,iCAA4B,aAA5B,mBAAsC;AAAA,EAClD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,mCAA8B,aAA9B,mBAAwC;AAAA,EACpD;AACF;AAEO,MAAM,aAAkC;AAAA,EAC7C;AAAA,IACE,OAAO;AAAA,IACP,WAAU,uBAAkB,aAAlB,mBAA4B;AAAA,EACxC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,yBAAoB,aAApB,mBAA8B;AAAA,EAC1C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAsB,aAAtB,mBAAgC;AAAA,EAC5C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,0BAAqB,aAArB,mBAA+B;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,wBAAmB,aAAnB,mBAA6B;AAAA,EACzC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,sBAAiB,aAAjB,mBAA2B;AAAA,EACvC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,yBAAoB,aAApB,mBAA8B;AAAA,EAC1C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAsB,aAAtB,mBAAgC;AAAA,EAC5C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,0BAAqB,aAArB,mBAA+B;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAsB,aAAtB,mBAAgC;AAAA,EAC5C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,4BAAuB,aAAvB,mBAAiC;AAAA,EAC7C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,uBAAkB,aAAlB,mBAA4B;AAAA,EACxC;AACF;AAEO,MAAM,wBAA6C;AAAA,EACxD;AAAA,IACE,OAAO;AAAA,IACP,WAAU,kCAA6B,aAA7B,mBAAuC;AAAA,EACnD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,mCAA8B,aAA9B,mBAAwC;AAAA,EACpD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,yCAAoC,aAApC,mBAA8C;AAAA,EAC1D;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,uCAAkC,aAAlC,mBAA4C;AAAA,EACxD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,uCAAkC,aAAlC,mBAA4C;AAAA,EACxD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,sCAAiC,aAAjC,mBAA2C;AAAA,EACvD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,kCAA6B,aAA7B,mBAAuC;AAAA,EACnD;AACF;AAEO,MAAM,qBAA0C;AAAA,EACrD;AAAA,IACE,OAAO;AAAA,IACP,WAAU,+BAA0B,aAA1B,mBAAoC;AAAA,EAChD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,sCAAiC,aAAjC,mBAA2C;AAAA,EACvD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,oCAA+B,aAA/B,mBAAyC;AAAA,EACrD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,oCAA+B,aAA/B,mBAAyC;AAAA,EACrD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,gCAA2B,aAA3B,mBAAqC;AAAA,EACjD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,+BAA0B,aAA1B,mBAAoC;AAAA,EAChD;AACF;AAEO,MAAM,gBAAqC;AAAA,EAChD;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAsB,aAAtB,mBAAgC;AAAA,EAC5C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,gCAA2B,aAA3B,mBAAqC;AAAA,EACjD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAsB,aAAtB,mBAAgC;AAAA,EAC5C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,4BAAuB,aAAvB,mBAAiC;AAAA,EAC7C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,iCAA4B,aAA5B,mBAAsC;AAAA,EAClD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,8BAAyB,aAAzB,mBAAmC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,6BAAwB,aAAxB,mBAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,8BAAyB,aAAzB,mBAAmC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,8BAAyB,aAAzB,mBAAmC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,iCAA4B,aAA5B,mBAAsC;AAAA,EAClD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,+BAA0B,aAA1B,mBAAoC;AAAA,EAChD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,+BAA0B,aAA1B,mBAAoC;AAAA,EAChD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,yCAAoC,aAApC,mBAA8C;AAAA,EAC1D;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,iCAA4B,aAA5B,mBAAsC;AAAA,EAClD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,6BAAwB,aAAxB,mBAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,0BAAqB,aAArB,mBAA+B;AAAA,EAC3C;AACF;AAEO,MAAM,mBAAwC;AAAA,EACnD;AAAA,IACE,OAAO;AAAA,IACP,WAAU,6BAAwB,aAAxB,mBAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,6BAAwB,aAAxB,mBAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,6BAAwB,aAAxB,mBAAkC;AAAA,EAC9C;AACF;AAEO,MAAM,aAAkC;AAAA,EAC7C;AAAA,IACE,OAAO;AAAA,IACP,WAAU,wBAAmB,aAAnB,mBAA6B;AAAA,EACzC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,yBAAoB,aAApB,mBAA8B;AAAA,EAC1C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,wBAAmB,aAAnB,mBAA6B;AAAA,EACzC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,+BAAyB,aAAzB,oBAAmC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAqB,aAArB,oBAA+B;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,+BAAyB,aAAzB,oBAAmC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,6BAAuB,aAAvB,oBAAiC;AAAA,EAC7C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,6BAAuB,aAAvB,oBAAiC;AAAA,EAC7C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,uCAAiC,aAAjC,oBAA2C;AAAA,EACvD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAqB,aAArB,oBAA+B;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,wBAAkB,aAAlB,oBAA4B;AAAA,EACxC;AACF;ACzPO,MAAM,aAAkC;AAAA,EAC7C;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAqB,aAArB,oBAA+B;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,wBAAkB,aAAlB,oBAA4B;AAAA,EACxC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,+BAAyB,aAAzB,oBAAmC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,mCAA6B,aAA7B,oBAAuC;AAAA,EACnD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,4BAAsB,aAAtB,oBAAgC;AAAA,EAC5C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,gCAA0B,aAA1B,oBAAoC;AAAA,EAChD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,0BAAoB,aAApB,oBAA8B;AAAA,EAC1C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,gCAA0B,aAA1B,oBAAoC;AAAA,EAChD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,2BAAqB,aAArB,oBAA+B;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,WAAU,0BAAoB,aAApB,oBAA8B;AAAA,IACxC,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oCAA8B,aAA9B,oBAAwC;AAAA,MACpD;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oCAA8B,aAA9B,oBAAwC;AAAA,MACpD;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,+BAAyB,aAAzB,oBAAmC;AAAA,MAC/C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,mCAA6B,aAA7B,oBAAuC;AAAA,MACnD;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,+BAAyB,aAAzB,oBAAmC;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,cAAmC;AAAA,EAC9C;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,WAAU,yBAAmB,aAAnB,oBAA6B;AAAA,MACzC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,2BAAqB,aAArB,oBAA+B;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AACF;ACnIO,MAAM,UAAU;AAAA,EACrB,SAAS;AAAA,IACP,OAAO;AAAA,IACP,UAAU,CACV;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,OAAO;AAAA,IACP,UAAU,CACV;AAAA,EACF;AACF;AAGO,MAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,EACX;AACF;ACbO,SAAS,iBAAiB,SAAmD;AAC3E,SAAA,QAAQ,IAAI,CAACT,aAAY;AAAA,IAC9B,eAAeA,QAAO,iBAAiB;AAAA,IACvC,OAAO;AAAA,MACL,MAAMA,QAAO;AAAA,IACf;AAAA,EACA,EAAA;AACJ;ACZgB,SAAA,aACd,UAAwB,IACX;AACb,QAAM,EAAE,aAAa,mBAAmB,aAAa,SAAS,YAAgB,IAAA;AAE9E,QAAM,YAAY,CAAA;AAClB,MAAI,CAAC,SAAS;AACZ,cAAU,KAAK,EAAE,KAAK,SAAS,OAAO,MAAM;AAAA,EAC9C;AAEA,MAAI,CAAC,aAAa;AAChB,cAAU,KAAK,EAAE,KAAK,aAAa,OAAO,MAAM;AAAA,EAClD;AAMA,QAAM,YAAW,2CAAa,YAAU,2CAAa,YAAU,uDAAmB;AAClF,QAAM,WAAW,WACb;AAAA,IACA,EAAE,KAAK,SAAS,OAAO,KAAK;AAAA,IAC5B,GAAG;AAAA,EAEH,IAAA;AAEJ,QAAM,cAAc,CAAC,UAAqC,OAAe,cAAuB;AACvF,WAAA;AAAA,MACL,eAAe;AAAA,MACf,OAAO;AAAA,QACL;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,eAAe;AAAA,UACf,OAAO;AAAA,YACL,WAAW,0BAA0B,aAAa;AAAA,UACpD;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAGF,QAAM,aAAa;AAAA,IACjB;AAAA,MACE,IAAI,eAAe,CAAA,GAAI,IAAI,CAACA,YAAW;;AAC9B,eAAA;AAAA,UACL,GAAGA;AAAA,UACH,OAAM;AAAA,YACJ,GAAGA,QAAO;AAAA,YACV,QAAOC,MAAAD,QAAO,UAAP,gBAAAC,IAAc;AAAA,UACvB;AAAA,QAAA;AAAA,MACF,CACD;AAAA,MACD,GAAG,qBAAqB,CAAC;AAAA,MACzB,GAAG,iBAAiB,eAAe,EAAE;AAAA,IAAC;AAAA,IACxC;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,aAAa,YAAY;AAAA,IAC7B;AAAA,MACE,eAAe;AAAA,MACf,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,KACC,OAAO;AACV,QAAM,iBAAiB,YAAY;AAAA,IACjC;AAAA,MACE,eAAe;AAAA,MACf,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,KACC,WAAW;AAGd,QAAM,cAAc,CAAA;AACpB,MAAI,CAAC,SAAS;AACZ,gBAAY,KAAK,UAAU;AAAA,EAC7B;AACA,MAAI,CAAC,aAAa;AAChB,gBAAY,KAAK,cAAc;AAAA,EACjC;AAGA,QAAM,YAAY,WACd;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAEH,IAAA;AAEG,SAAA;AAAA,IACL,eAAe;AAAA,IACf,OAAO;AAAA,MACL,cAAc,WAAW,UAAU;AAAA,IACrC;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,eAAe;AAAA,QACf,OAAO;AAAA,UACL,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EAAA;AAEJ;AChHO,MAAM,SAAS,aAAa;AAAA,EACjC,aAAa;AAAA,IACX;AAAA,MACE,eAAe;AAAA,MACf,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF,CAAC;ACRD,MAAM,YAAY;AACX,MAAM,gBAA2B;AAAA,EACtC,eAAe;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,UAAU;AAAA,IACR,MAAM;AAAA,IACN;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,eAAe;AAAA,QACf,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,QAAQ;AAAA,EACV;AACF;ACrBO,MAAM,oBAAyC;AAAA,EACpD;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,yBAAmB,aAAnB,oBAA6B;AAAA,MACzC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oBAAc,aAAd,oBAAwB;AAAA,MACpC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oBAAc,aAAd,oBAAwB;AAAA,MACpC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,WAAU,kBAAY,aAAZ,oBAAsB;AAAA,MAElC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MAET;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oBAAc,aAAd,oBAAwB;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oBAAc,aAAd,oBAAwB;AAAA,MACpC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,qBAAe,aAAf,oBAAyB;AAAA,MACrC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,0BAAoB,aAApB,oBAA8B;AAAA,MAC1C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,wBAAkB,aAAlB,oBAA4B;AAAA,MACxC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,sBAAgB,aAAhB,oBAA0B;AAAA,MACtC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,qBAAe,aAAf,oBAAyB;AAAA,MACrC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,qBAAe,aAAf,oBAAyB;AAAA,MACrC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,+BAAyB,aAAzB,oBAAmC;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,WAAU,uBAAiB,aAAjB,oBAA2B;AAAA,MACvC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,mBAAa,aAAb,oBAAuB;AAAA,MACnC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,UAAU;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,YACR;AAAA,cACE,eAAe;AAAA,cACf,OAAO;AAAA,gBACL,WAAW;AAAA,cACb;AAAA,cACA,UAAU;AAAA,gBACR;AAAA,kBACE,eAAe;AAAA,kBACf,OAAO;AAAA,oBACL,WAAW;AAAA,kBACb;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,eAAe;AAAA,kBACf,OAAO;AAAA,oBACL,WAAW;AAAA,kBACb;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,eAAe;AAAA,kBACf,OAAO;AAAA,oBACL,WAAW;AAAA,kBACb;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,eAAe;AAAA,kBACf,OAAO;AAAA,oBACL,WAAW;AAAA,kBACb;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,wBAAkB,aAAlB,oBAA4B;AAAA,MACxC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oBAAc,aAAd,oBAAwB;AAAA,MACpC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,4BAAsB,aAAtB,oBAAgC;AAAA,MAC5C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,wBAAkB,aAAlB,oBAA4B;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,WAAU,oBAAc,aAAd,oBAAwB;AAAA,MACpC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,yBAAmB,aAAnB,oBAA6B;AAAA,MACzC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,wBAAkB,aAAlB,oBAA4B;AAAA,MACxC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,2BAAqB,aAArB,oBAA+B;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,uBAAiB,aAAjB,oBAA2B;AAAA,MACvC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,2BAAqB,aAArB,oBAA+B;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,sBAAgB,aAAhB,oBAA0B;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,WAAU,gBAAU,aAAV,oBAAoB;AAAA,MAChC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,wBAAkB,KAAK,EAAE,aAAzB,oBAAmC;AAAA,MAC/C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,WAAU,wBAAkB,MAAM,EAAE,aAA1B,oBAAoC;AAAA,MAChD;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;AC1PO,SAAS,yBAAyB,SAA8B;AACrE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAyC;AACrF,QAAM,eAAe,gBAAgB,OAAO,YAAY,WAAW,UAAU,EAAE;AAG/E,QAAM,SAAS;AAEf,YAAU,MAAM;AACd,QAAI,QAAQ;AACN,UAAA,OAAO,YAAY,YAAY,SAAS;AACnC,eAAA,mBAAA,EAAqB,kBAAkB,OAAO;AACrD,0BAAkB,OAAO,mBAAmB,EAAE,kBAAkB,QAAQ,IAAI,CAAmC;AAAA,MACjH;AAEA,aAAO,MAAM;AACP,YAAA,OAAO,YAAY,YAAY,SAAS;AAC1C,iBAAO,mBAAmB,EAAE,oBAAoB,QAAQ,IAAI;AAAA,QAC9D;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA,GACC,CAAC,QAAQ,OAAO,CAAC;AAEb,SAAA,OAAO,YAAY,WAAW,eAAe;AACtD;ACrBA,SAAwB,iBAAiB,OAEtC;;AACK,QAAA,EAAE,KAAS,IAAA;AACX,QAAA,eAAe,yBAAyB,KAAK,QAAQ;AAGzD,SAAA,GAACA,MAAA,KAAK,aAAL,gBAAAA,IAAe,UACZO,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACD,MAAM;AAAA,MACN,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG,6CAAc;AAAA,MAEjB,UAAA;AAAA,QAAA,KAAK,UAAS,6CAAc;AAAA,SAE3B,6BAAM,cAAY,6BAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAG1BC,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACD,OAAO,KAAK;AAAA,MAEZ,MAAM;AAAA,MACN,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG,6CAAc;AAAA,MAGhB,WAAKP,MAAA,KAAA,aAAA,gBAAAA,IAAU,IAAI,CAAC,UAAU;AAC5B,eACGO,kCAAAA,IAAA,kBAAA,EAAmC,MAAM,SAAnB,MAAM,KAAoB;AAAA,MAAA;AAAA,IAEpD;AAAA,EAAA;AAIX;ACrCO,SAAS,gBAAgB;AAE9B,SAGMA,kCAAAA,IAAAE,kBAAAA,UAAA,EAAA,UAAA,kBAAkB,IAAI,CAAC,SAAS;AAC9B,WACGF,kCAAAA,IAAA,kBAAA,EAAkC,KAAZ,GAAA,KAAK,KAAmB;AAAA,EAElD,CAAA,EAEL,CAAA;AAEJ;ACZO,SAAS,UACd,OAMA;AACA,QAAM,EAAE,WAAW,UAAU,GAAG,SAAS;AAEvC,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,aAAY;AAAA,MACZ,cAAc;AAAA,QACZ,SAAS,EAAE,IAAI,UAAU;AAAA,QACzB,UAAU,SAAS;AAAA,MACrB;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACC,GAAG;AAAA,MAEJ,UAAAA,kCAAAA,IAAC,SAAI,WAAU,uBACb,gDAAC,cAAa,EAAA,YAAW,SAAQ,EAQnC,CAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AChCO,SAAS,SACd,OAMA;AACA,QAAM,EAAE,WAAW,MAAM,UAAU,aAAa;AAChD,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,aAAa;AAC9C,QAAM,OAAO;AAEb,QAAM,mBAAmBA,eAAM,YAAY,CAAC6J,UAAkB;AAC5D,YAAQA,KAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,cAAc7J,eAAM,YAAY,MAAM;AAC/B,yCAAA,KAAK,MAAM;AAAA,EACrB,GAAA,CAAC,UAAU,KAAK,EAAE,CAAC;AAGpB,SAAAmB,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAa,QAAQ;AAAA,MACrB,OAAO,QAAQ;AAAA,MACf,MAAM;AAAA,MACN,WAAW,GAAG,WAAW,SAAS;AAAA,MAClC;AAAA,MACA,SACED,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAc;AAAA,UAEd,UAAA;AAAA,YAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,cAACkI;AAAAA,cAAA;AAAA,gBACC,WAAW;AAAA,gBACX,YAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,MAAK;AAAA,gBAEL,UAAClI,kCAAA,IAAA,MAAA,EAAK,MAAK,kBAAiB,WAAU,2BAA0B;AAAA,cAAA;AAAA,YAAA,GAEpE;AAAA,YACAD,kCAAAA,KAAC,cAAa,EAAA,cAAW,WACvB,UAAA;AAAA,cAAAC,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,SAAS;AAAA,kBACV,UAAA;AAAA,gBAAA;AAAA,gBAFK;AAAA,cAIN;AAAA,cAEAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,OAAM;AAAA,kBACN,SAAS,MAAM,OAAO;AAAA,kBACvB,UAAA;AAAA,gBAAA;AAAA,gBAHK;AAAA,cAKN;AAAA,YAAA,GACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,SAAS;AAAA,MAER,UAAK,KAAA;AAAA,IAAA;AAAA,EAAA;AAGZ;ACpEO,SAAS,SACd,OAMA;;AACA,QAAM,EAAE,WAAW,YAAY,UAAU,mBAAmB;AAE5D,QAAM,OAAO;AAEb,SAGMD,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,KAAMV,MAAA,6BAAA,UAAA,gBAAAA,IAAO,IAAI,CAAC,SAAS;AAEvB,aAAAQ,kCAAAA,IAAC,gBAA6B,EAAA,KAAK,MACjC,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,UAAU,KAAK,OAAO;AAAA,UACtB;AAAA,QAAA;AAAA,MAAA,KAJiB,KAAK,EAM1B;AAAA,IAAA;AAAA,IAMJA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EAEJ,EAAA,CAAA;AAEJ;AChCO,SAAS,aACd,OAQA;AACA,QAAM,EAAE,UAAU,UAAU,YAAY,UAAU,cAAkB,IAAA;AACpE,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,aAAa;AAC9C,QAAM,CAAC,SAAS,UAAU,IAAIA,eAAM,SAAkB;AAEtD,QAAM,SAAS;AACf,QAAM,OAAO;AAEb,YAAU,MAAM;;AACd,QAAI,QAAQ;AACH,aAAA,qBAAqB,kBAAkB;AAAA,QAC5C,MAAM,SAAS,MAAM;AAAA,QACrB,OAAO,SAAS;AAAA,QAChB,YAAUW,MAAA,SAAS,YAAT,gBAAAA,IAAkB,aAAY,CAAC;AAAA,MAAA,CAC1C;AAEKiJ,YAAAA,UAAQhJ,MAAA,OAAO,qBAAqB,kBAAkB,SAAS,MAAM,EAAE,MAA/D,gBAAAA,IAAkE;AAChF,UAAIgJ,QAAO;AACT,mBAAWA,MAAK;AAAA,MAClB;AACA,aAAO,MAAM;AACX,eAAO,mBAAmB,EAAE,oBAAoB,SAAS,MAAM,EAAE;AAAA,MAAA;AAAA,IAErE;AAAA,EAAA,GACC;AAAA,IAAC;AAAA;AAAA,IAAwB,SAAS;AAAA,IAAS,SAAS;AAAA,IAAI,SAAS;AAAA,EAAA,CAAK;AAEzE,QAAM,mBAAmB5J,eAAM,YAAY,CAAC6J,UAAkB;AAC5D,YAAQA,KAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,cAAc7J,eAAM,YAAY,MAAM;AAC/B,yCAAA,SAAS,MAAM;AAAA,EACzB,GAAA,CAAC,UAAU,SAAS,EAAE,CAAC;AAGxB,SAAAmB,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ,CAAC;AAAA,MAET,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAa,QAAQ;AAAA,UACrB,OAAO,QAAQ;AAAA,UACf,MAAM;AAAA,UACN,UAAU,eAAe,SAAS;AAAA,UAClC,SAAS,CAAC,YACRD,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,cAAc;AAAA,cAEd,UAAA;AAAA,gBAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,kBAACkI;AAAAA,kBAAA;AAAA,oBACC,WAAW;AAAA,oBACX,YAAU;AAAA,oBACV,MAAK;AAAA,oBACL,SAAQ;AAAA,oBAER,UAAClI,kCAAA,IAAA,MAAA,EAAK,MAAK,kBAAiB,WAAU,2BAA0B;AAAA,kBAAA;AAAA,gBAAA,GAEpE;AAAA,gBACAD,kCAAAA,KAAC,cAAa,EAAA,cAAW,WACvB,UAAA;AAAA,kBAAAC,kCAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,SAAS;AAAA,sBACT,aAAa;AAAA,sBACd,UAAA;AAAA,oBAAA;AAAA,oBAHK;AAAA,kBAKN;AAAA,kBAEAA,kCAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,OAAM;AAAA,sBACN,SAAS,MAAM,OAAO;AAAA,sBACvB,UAAA;AAAA,oBAAA;AAAA,oBAHK;AAAA,kBAKN;AAAA,gBAAA,GACF;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,WACE,GAAG,SAAS;AAAA,UAEd,SAAS,CAAC,WAAW,cAAc;AAAA,UAClC,GAAG;AAAA,UAEH,UAAS,SAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AAGN;ACtGO,SAAS,aACd,OAYA;;AACM,QAAA,EAAE,SAAS,WAAW,UAAU,MAAM,UAAU,aAAa,YAAY,oBAAoB,YAAY,SAAA,IAAa;AAG1H,SAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,MAAM;AAAA,MAGJ,UAAA;AAAA,SAAMP,MAAA,6BAAA,UAAA,gBAAAA,IAAO,IAAI,CAAC,SAAS;AAEvB,iBAAAQ,kCAAAA,IAAC,gBAA6B,EAAA,KAAK,MACjC,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA,UAAU;AAAA,cACV;AAAA,cACA,YAAY,qCAAU;AAAA,YAAA;AAAA,UAAA,KANL,KAAK,EAQ1B;AAAA,QAAA;AAAA,QAKJ,CAAC,YAAYA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACZ;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YAEA,SAAS;AAAA,YACT,YAAY,qCAAU;AAAA,UAAA;AAAA,QACxB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAKR;AC9Ca,MAAA,uBAAuB,KAAK,CAAC,UAQpC;;AACE,QAAA,EAAE,UAAU,kBAAkB,SAAS,WAAW,UAAU,YAAY,SAAa,IAAA;AAC3F,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,aAAa;AAC9C,QAAM,CAAC,aAAa,cAAc,IAAIA,eAAM,SAAmB;AAE/D,QAAM,OAAO;AACb,QAAM,YAAY;AAElB,QAAM,sBAAsB;AAAA,IAC1B,MAAM,uCAAW,OAAO,CAAC;;AAAS,eAAAW,MAAA,KAAK,aAAL,gBAAAA,IAAe,QAAO,iBAAiB;AAAA;AAAA,IACzE,CAAC,WAAW,iBAAiB,EAAE;AAAA,EAAA;AAGjC,QAAM,mBAAmBX,eAAM,YAAY,CAAC6J,UAAkB;AAC5D,YAAQA,KAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,oBAAoB7J,eAAM,YAAY,MAAM;AACjC,mBAAA;AAAA,MACb,UAAU,EAAE,IAAI,iBAAiB,GAAG;AAAA,MACpC,OAAO,EAAE,IAAI,QAAQ;AAAA,MACrB,SAAS,EAAE,IAAI,UAAU;AAAA,IAAA,CAC1B;AACD,YAAQ,KAAK;AAAA,KACZ,CAAC,iBAAiB,IAAI,SAAS,SAAS,CAAC;AAEtC,QAAA,aAAaA,eAAM,YAAY,MAAM;AACpC;AACL,YAAQ,KAAK;AAAA,EAAA,GACZ,CAAC,IAAI,CAAC;AAEH,QAAA,OAAO,QAAQ,MAAM;AAClB,WAAA;AAAA,MACL,OAAO;AAAA,IAAA;AAAA,EACT,GACC,CAAC,mBAAmB,CAAC;AAGtB,SAAAmB,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,iBAAiB;AAAA,MACxB,MAAM;AAAA,MACN,aAAa,QAAQ;AAAA,MACrB,YAAY;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB,CAAC,GAACR,MAAA,KAAK,UAAL,gBAAAA,IAAY,KAAK,CAAC,SAAS,KAAK,OAAO;AAAA,MAC1D,QAAQ,CAAC,YACPO,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAc;AAAA,UAEd,UAAA;AAAA,YAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,cAACkI;AAAAA,cAAA;AAAA,gBACC,WAAW;AAAA,gBACX,YAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,MAAK;AAAA,gBAEL,UAAClI,kCAAA,IAAA,MAAA,EAAK,MAAK,kBAAiB,WAAU,2BAA0B;AAAA,cAAA;AAAA,YAAA,GAEpE;AAAA,YACAD,kCAAAA,KAAC,cAAa,EAAA,cAAW,WACvB,UAAA;AAAA,cAAAC,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,SAAS;AAAA,kBACV,UAAA;AAAA,gBAAA;AAAA,gBAFK;AAAA,cAIN;AAAA,cACAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,SAAS;AAAA,kBACT,aAAa;AAAA,kBACd,UAAA;AAAA,gBAAA;AAAA,gBAHK;AAAA,cAKN;AAAA,cACAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,OAAM;AAAA,kBACN,SAAS,MAAM,OAAO;AAAA,kBACvB,UAAA;AAAA,gBAAA;AAAA,gBAHK;AAAA,cAKN;AAAA,YAAA,GACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,MAGF,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAU;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,UAAU,CAAC,OAAO,qCAAW,IAAI,CAAC,iBAAiB,QAAQ,EAAE;AAAA,UAC7D,oBAAoB,MAAM,eAAe,MAAS;AAAA,QAAA;AAAA,MACpD;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;ACjHM,SAAS,qBACd,OAMA;;AACA,QAAM,EAAE,WAAW,UAAU,YAAY,aAAa;AACtD,QAAM,OAAO;AAEb,SAGMA,kCAAA,IAAAE,kBAAA,UAAA,EAAA,WAAAV,MAAA,6BAAM,UAAN,gBAAAA,IAAa,IAAI,CAAC,SAAS;;AACzB,iDACG,gBAAe,EAAA,KAAK,MAEjB,YAAAA,MAAA,KAAK,UAAL,gBAAAA,IAAY,OAAMQ,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACjB,UAAU;AAAA,QACV,UAASP,MAAA,KAAK,UAAL,gBAAAA,IAAY;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA,KAR0B,KAAK,EAWrC;AAAA,EAEH,GAEL,CAAA;AAEJ;ACjCO,SAAS,0BACd,OAKA;AACA,QAAM,EAAE,WAAW,SAAS,SAAA,IAAa;AAEzC,SACE,WACAO,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SACE,IAAI;AAAA,QACF;AAAA,UACE,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,OAAO;AAAA,cACL,IAAI;AAAA,gBACF,KAAK;AAAA,cACP;AAAA,YACF;AAAA,YACA,SAAS;AAAA,cACP,IAAI;AAAA,gBACF,KAAK;AAAA,cACP;AAAA,YACF;AAAA,UACF;AAAA,UACA,SAAS;AAAA,YACP;AAAA,cACE,CAAC,uBAAuB,QAAQ,GAAG,QAAQ;AAAA,YAC7C;AAAA,YACA;AAAA,cACE,CAAC,uBAAuB,SAAS,GAAG,QAAQ;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,QACA,MAAM;AAAA,MAGT;AAAA,IAAA;AAAA,EAAA;AAGP;AChDO,SAAS,uBACd,OAIA;AACM,QAAA,EAAE,SAAS,QAAY,IAAA;AAG3B,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,aAAY;AAAA,MACZ,cAAc;AAAA,QACZ,OAAO,EAAE,IAAI,QAAQ;AAAA,MACvB;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MAEA,UAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,iBACb,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,YACA,gBAAe;AAAA,YACf,aAAY;AAAA,UAAA;AAAA,QACd;AAAA,QAEAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,MAAK;AAAA,YACL,gBAAe;AAAA,YACf,aAAY;AAAA,UAAA;AAAA,QACd;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;AClCO,SAAS,mBACd,OAMA;AACA,QAAM,EAAE,SAAS,UAAU,iBAAiB,oBAAoB;AAChE,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,cAAc,eAAe,IAAIA,eAAM,SAAyB;AAEvE,QAAM,oBAAoB;AAC1B,QAAM,aAAa;AAEnB,QAAM,iBAAiB;AAAA,IACrB,MAAM,yCAAY,OAAO,CAAC,SAAS;;AAAA,gBAACW,MAAA,KAAK,aAAL,gBAAAA,IAAe;AAAA;AAAA,IACnD,CAAC,UAAU;AAAA,EAAA;AAIP,QAAA,qBAAqBX,eAAM,YAAY,MAAM;AACjC,oBAAA;AAAA,MACd,OAAO,EAAE,IAAI,QAAQ;AAAA,IAAA,CACtB;AAAA,EAAA,GAEA,CAAC,OAAO,CAAC;AAGZ,QAAM,mBAAmBA,eAAM,YAAY,CAAC6J,UAAkB;AAC5D,YAAQA,KAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,OAAO,QAAQ,MAAM;AAClB,WAAA;AAAA,MACL,OAAO;AAAA,IAAA;AAAA,EACT,GACC,CAAC,cAAc,CAAC;AAEnB,QAAM,eAAe7J,eAAM,YAAY,CAAC,IAAmB,gBAA2B;AACpF,UAAM,YAAY,yCAAY,KAAK,CAAC,SAAS,KAAK,OAAO;AACzD,QAAI,IAAI;AACY,yDAAA;AAAA,QAChB,MAAM,YAAY;AAAA,QAClB;AAAA,QACA,aAAa,CAAC,SAAS,GAAI,eAAe,CAAA,IAAK,uCAAW,SAAQ,EAAE;AAAA,MAAA;AAAA,IAExE;AAAA,EAAA,GACC,CAAC,iBAAiB,UAAU,CAAC;AAEhC,MAAI,CAAC,SAAS;AACL,WAAA;AAAA,EACT;AAEA,SAEIkB,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAH,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,aAAa;AAAA,QACb,MAAM;AAAA,QACN,YAAY;AAAA,UACV,OAAO;AAAA,QACT;AAAA,QACA,kBAAiB,mDAAiB,UAAS,YAAY;AAAA,QACvD,QAAQA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACP,cAAc;AAAA,YAEd,UAAA;AAAA,cAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,gBAACkI;AAAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,YAAU;AAAA,kBAEV,UAAClI,kCAAA,IAAA,MAAA,EAAK,MAAK,kBAAiB,WAAU,2BAA0B;AAAA,gBAAA;AAAA,cAAA,GAEpE;AAAA,cACAD,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,cAAW;AAAA,kBAEX,UAAA;AAAA,oBAAAC,kCAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,SAAS;AAAA,wBACV,UAAA;AAAA,sBAAA;AAAA,oBAED;AAAA,oBACAA,kCAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,SAAS;AAAA,wBACV,UAAA;AAAA,sBAAA;AAAA,oBAED;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,QAEA,UAAA;AAAA,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,YAAY,mDAAiB;AAAA,cAC7B,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,UACAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA,MAAM;AAAA,cACN;AAAA,cACA,YAAY,mDAAiB;AAAA,cAC7B,UAAU;AAAA,cACV,qBAAqB,MAAM,gBAAgB,MAAS;AAAA,YAAA;AAAA,UACtD;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;ACxHO,SAAS,sBACd,OAMA;AACA,QAAM,EAAE,WAAW,SAAS,SAAS,UAAU;AAG7C,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,aAAa,SAAS;AAAA,MACtB,cAAc;AAAA,QACZ,OAAO,EAAE,IAAI,QAAQ;AAAA,QACrB,SAAS,EAAE,IAAI,UAAU;AAAA,MAC3B;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MAEA,UAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,uBACb,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAS;AAAA,YACT,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UAAA;AAAA,QACF;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAK;AAAA,YACL,OAAM;AAAA,YACN,gBAAe;AAAA,YACf,aAAY;AAAA,UAAA;AAAA,QACd;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACtCO,SAAS,aACd,OAOA;AACA,QAAM,EAAE,SAAS,WAAW,UAAU,iBAAiB,gBAAoB,IAAA;AAC3E,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,aAAa,cAAc,IAAIA,eAAM,SAAmB;AAE/D,QAAM,oBAAoB;AAC1B,QAAM,YAAY;AAElB,QAAM,sBAAsB;AAAA,IAC1B,MAAM,uCAAW,OAAO,CAAC,SAAS;;AAAA,gBAACW,MAAA,KAAK,aAAL,gBAAAA,IAAe;AAAA;AAAA,IAClD,CAAC,SAAS;AAAA,EAAA;AAIN,QAAA,oBAAoBX,eAAM,YAAY,MAAM;AACjC,mBAAA;AAAA,MACb,OAAO,EAAE,IAAI,QAAQ;AAAA,MACrB,SAAS,EAAE,IAAI,UAAU;AAAA,IAAA,CAC1B;AAAA,EAAA,GAEA,CAAC,SAAS,SAAS,CAAC;AAGvB,QAAM,mBAAmBA,eAAM,YAAY,CAAC6J,UAAkB;AAC5D,YAAQA,KAAI;AAAA,EACd,GAAG,CAAE,CAAA;AAEC,QAAA,OAAO,QAAQ,MAAM;AAClB,WAAA;AAAA,MACL,OAAO;AAAA,IAAA;AAAA,EACT,GACC,CAAC,mBAAmB,CAAC;AAExB,QAAM,eAAe7J,eAAM,YAAY,CAAC,IAAmB,gBAA2B;AACpF,UAAM,WAAW,uCAAW,KAAK,CAAC,SAAS,KAAK,OAAO;AACvD,QAAI,IAAI;AACY,yDAAA;AAAA,QAChB,MAAM,YAAY;AAAA,QAClB;AAAA,QACA,aAAa,CAAC,QAAQ,GAAI,eAAe,CAAA,IAAK,qCAAU,SAAQ,EAAE;AAAA,MAAA;AAAA,IAEtE;AAAA,EAAA,GACC,CAAC,iBAAiB,SAAS,CAAC;AAE/B,MAAI,CAAC,SAAS;AACL,WAAA;AAAA,EACT;AAEA,SAEIkB,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAH,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,aAAa;AAAA,QACb,MAAM;AAAA,QACN,YAAY;AAAA,UACV,OAAO;AAAA,QACT;AAAA,QACA,kBAAiB,mDAAiB,UAAS,YAAY;AAAA,QACvD,QAAQA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACP,cAAc;AAAA,YAEd,UAAA;AAAA,cAAAC,sCAAC,iBACC,EAAA,UAAAA,kCAAA;AAAA,gBAACkI;AAAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,YAAU;AAAA,kBAEV,UAAClI,kCAAA,IAAA,MAAA,EAAK,MAAK,kBAAiB,WAAU,2BAA0B;AAAA,gBAAA;AAAA,cAAA,GAEpE;AAAA,cACAD,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,cAAW;AAAA,kBAEX,UAAA;AAAA,oBAAAC,kCAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,SAAS;AAAA,wBACV,UAAA;AAAA,sBAAA;AAAA,oBAED;AAAA,oBACAA,kCAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,SAAS;AAAA,wBACV,UAAA;AAAA,sBAAA;AAAA,oBAED;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,QAGA,UAAA;AAAA,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,YAAY,mDAAiB;AAAA,cAC7B,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,UACAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA,MAAM;AAAA,cACN;AAAA,cACA,YAAY,mDAAiB;AAAA,cAC7B,UAAU;AAAA,cACV,oBAAoB,MAAM,eAAe,MAAS;AAAA,YAAA;AAAA,UACpD;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;ACrHO,SAAS,YAAY,OAEzB;;AACK,QAAA,EAAE,OAAW,IAAA;AACb,QAAA,gBAAgB,kBAAkB,eAAe;AACvD,QAAM,UAAU;AAChB,QAAM,eAAe;AACf,QAAA,kBAAkB,eAAe,oBAAoB;AACrD,QAAA,yBAAyB,kBAAkB,uBAAuB;AAClE,QAAA,YAAY,kBAAkB,WAAW;AAEzC,QAAA,kBAAkB,YAAY,CAAC,YAA6B;AAChE,2BAAuB,OAAO;AAC9B,kBAAc,MAAS;AACvB,cAAU,KAAK;AAAA,EACd,GAAA,CAAC,eAAe,WAAW,sBAAsB,CAAC;AAGnD,SAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MAEA,UAAA;AAAA,QAACC,kCAAAA,IAAA,OAAA,EAAI,WAAU,8BACb,UAAAA,kCAAA;AAAA,UAACmI;AAAAA,UAAA;AAAA,YACC,cAAW;AAAA,YACX,aAAY;AAAA,YACZ,WAAU;AAAA,YACV,cACEnI,kCAAAA,IAAC,YAAW,EAAA,WAAU,SAAS,CAAA;AAAA,UAAA;AAAA,QAAA,GAGrC;AAAA,QACCA,sCAAA,OAAA,EAAI,WAAU,yCACb,iDAAC,UACC,EAAA,UAAA;AAAA,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,UAASR,MAAA,mCAAS,kBAAT,gBAAAA,IAAwB;AAAA,cACjC,WAAW,mCAAS;AAAA,cAGlB,WAAS,mCAAA,SAAMC,MAAA,mCAAS,kBAAT,gBAAAA,IAAwB,OAAMO,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAC5C,WAAW,mCAAS;AAAA,kBACpB,UAASN,MAAA,mCAAS,kBAAT,gBAAAA,IAAwB;AAAA,kBACjC;AAAA,kBACA,iBAAiB;AAAA,gBAAA;AAAA,cACnB;AAAA,YAAA;AAAA,UAEJ;AAAA,UACAM,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS,6CAAc;AAAA,cAEvB,UAAAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAS,6CAAc;AAAA,kBACvB;AAAA,kBACA,iBAAiB;AAAA,gBAAA;AAAA,cACnB;AAAA,YAAA;AAAA,UACF;AAAA,UACAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,MAAM;AAAA,cACN,YAAY;AAAA,gBACV,OAAO;AAAA,cACT;AAAA,cAEA,gDAAC,eAAc,EAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA,EAAA,CACF,EACF,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AC3Ea,MAAA,cAAc,KAAK,CAAC,UAE3B;;AACE,QAAA,EAAE,KAAS,IAAA;AACjB,QAAM,CAAG,EAAA,YAAY,IAAI;AACzB,QAAM,UAAU;AAChB,QAAM,UAAU;AAChB,QAAM,cAAc;AACd,QAAA,kBAAkB,mBAAmB,2CAAa,UAAU;AAE5D,QAAA,mBAAmB,YAAY,MAAM;AACzC,iBAAa,6BAAM,EAAE;AAAA,EACpB,GAAA,CAAC,cAAc,6BAAM,EAAE,CAAC;AAErB,QAAA,mBAAmB,YAAY,MAAM;AACzC,iBAAa,IAAI;AAAA,EAAA,GAChB,CAAC,YAAY,CAAC;AAEX,QAAA,cAAc,YAAY,MAAM;AACpC,kCAAM,QAAM,mCAAS,YAAY,CAAC,6BAAM,EAAE;AAAA,EACzC,GAAA,CAAC,SAAS,6BAAM,EAAE,CAAC;AAEhB,QAAA,WAAW,CAAC,EAAC,mDAAiB,KAAK,CAAC,OAAO,QAAO,6BAAM;AAG5D,SAAA,GAACR,MAAA,6BAAM,aAAN,gBAAAA,IAAgB,WAAU,CAAC,MAAK,6BAAM,UAAS,CAAA,CAAE,EAAE,SAChDQ,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACD,WAAU;AAAA,MACV,MACEA,kCAAAA,IAAC,OAAI,EAAA,OAAM,8BAA6B,WAAU,UAAS,SAAQ,eAAc,gDAAC,QAAK,EAAA,MAAK,gBAAe,GAAE,iMAAiM,CAAA,GAAO;AAAA,MAEvT;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,MACd,SAAS;AAAA,MACT,WAAA,6BAAM,WAAS,6BAAM,KAAK;AAAA,IAAA;AAAA,EAAA,IAC1BA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACD,YAAY;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,iBAAiB;AAAA,MACjB,QAAO,6BAAM,WAAS,6BAAM,KAAK;AAAA,MACjC,SAAS;AAAA,MAGP,WAAMP,MAAA,6BAAA,aAAA,gBAAAA,IAAU,IAAI,CAAC,YAAY;AACzB,cAAA,QAAQ,QAAQ,OAAO;AACzB,aAAA,+BAAO,KAAK,mBAAkB,SAAS;AAClC,iBAAA;AAAA,QACT;AACA,eACE,SAASO,kCAAAA,IAAC,aAA0B,EAAA,MAAM,SAAf,OAAsB;AAAA,MAAA;AAAA,IAEpD;AAAA,EAAA;AAIX,CAAC;AC5DY,MAAA,cAAc,KAAK,CAAC,UAAyC;AACxE,QAAM,cAAc;AAGlB,SAAAA,sCAAC,YAAU,GAAG,OACZ,gDAAC,aAAY,EAAA,MAAM,YAAa,CAAA,EAClC,CAAA;AAEJ,CAAC;ACVM,SAAS,YAAY,OAEzB;AACK,QAAA,EAAE,OAAW,IAAA;AAEjB,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MAEA,gDAAC,aAAY,EAAA;AAAA,IAAA;AAAA,EAAA;AAInB;ACRO,SAAS,SAAS,OAEtB;AACK,QAAA,EAAE,OAAW,IAAA;AACnB,QAAM,CAAC,MAAM,cAAc,IAAI,eAAe,gBAAgB;AACxD,QAAA,aAAa,kBAAkB,mBAAmB;AAElD,QAAA,oBAAoB,YAAY,CAAC,WAAqC;AAC1E;AAAA,MAAe,CAAA2I,WAAS;AAAA,QACtB,GAAGA;AAAAA,QACH,GAAG;AAAA,MAAA;AAAA,IACL;AAEA,eAAW,IAAI;AAAA,EAAA,GACd,CAAC,YAAY,cAAc,CAAC;AAEzB,QAAA,eAAe,QAAQ,OAAO;AAAA,IAClC,CAAC,WAAW,QAAQ,IAAG,6BAAM,aAAY;AAAA,IACzC,CAAC,WAAW,WAAW,IAAG,6BAAM,gBAAe;AAAA,IAC/C,CAAC,WAAW,cAAc,IAAG,6BAAM,mBAAkB;AAAA,EAAA,IACnD,CAAC,IAAI,CAAC;AAGR,SAAA3I,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,eAAe;AAAA,MAEf,UAAAD,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV;AAAA,UAEA,UAAA;AAAA,YAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,cAAAC,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAM,WAAW;AAAA,gBAAA;AAAA,cACnB;AAAA,cACAA,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAM,WAAW;AAAA,gBAAA;AAAA,cACnB;AAAA,YAAA,GACF;AAAA,YACAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,WAAW;AAAA,gBACjB,OAAM;AAAA,gBACN,gBAAe;AAAA,gBACf,aAAY;AAAA,cAAA;AAAA,YACd;AAAA,YACAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,WAAW;AAAA,gBACjB,OAAM;AAAA,gBACN,SAAS;AAAA,gBACT,gBAAe;AAAA,gBACf,aAAY;AAAA,cAAA;AAAA,YACd;AAAA,YACAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,WAAW;AAAA,gBACjB,OAAM;AAAA,gBACN,gBAAe;AAAA,gBACf,aAAY;AAAA,gBACZ,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACpEO,SAAS,SAAS,OAEtB;AACK,QAAA,EAAE,OAAW,IAAA;AACX,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACP,WAAU;AAAA,MACV;AAAA,MACD,UAAA;AAAA,IAAA;AAAA,EAAA;AAGH;ACJO,SAAS,SAAS,OAEtB;AACK,QAAA,EAAE,OAAW,IAAA;AACnB,QAAM,UAAU;AAChB,QAAM,CAAC,MAAM,cAAc,IAAI,eAAe,gBAAgB;AACxD,QAAA,aAAa,kBAAkB,mBAAmB;AAElD,QAAA,oBAAoB,YAAY,CAAC,WAAqC;AAC1E;AAAA,MAAe,CAAA2I,WAAS;AAAA,QACtB,GAAGA;AAAAA,QACH,GAAG;AAAA,MAAA;AAAA,IACL;AAEA,eAAW,IAAI;AAAA,EAAA,GACd,CAAC,YAAY,cAAc,CAAC;AAEzB,QAAA,eAAe,QAAQ,OAAO;AAAA,IAClC,CAAC,gBAAgB,OAAO,GAAG,6BAAM;AAAA,IACjC,CAAC,WAAW,OAAO,IAAG,6BAAM,YAAW;AAAA,IACvC,CAAC,WAAW,aAAa,IAAG,6BAAM,kBAAiB;AAAA,EAAA,IACjD,CAAC,IAAI,CAAC;AAIR,SAAA3I,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,eAAe;AAAA,MAEf,UAAAD,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV;AAAA,UAEA,UAAA;AAAA,YAAAC,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,gBAAgB;AAAA,gBACtB,OAAM;AAAA,gBACN,WAAW,mCAAS;AAAA,gBACpB,WAAU;AAAA,gBACV,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,YAAY,CAAC,UAAU,KAAK;AAAA,cAAA;AAAA,YAC9B;AAAA,YACAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,WAAW;AAAA,gBACjB,OAAM;AAAA,gBACN,gBAAe;AAAA,gBACf,aAAY;AAAA,cAAA;AAAA,YACd;AAAA,YACAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,WAAW;AAAA,gBACjB,OAAM;AAAA,gBACN,SAAS;AAAA,gBACT,gBAAe;AAAA,gBACf,aAAY;AAAA,cAAA;AAAA,YACd;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;AC9DO,SAAS,0BAA0B;AACxC,QAAM,YAAY,YAAY,CAAC,UAAyB,cAA6C;AACnG,UAAM,cAAc,SAAS,IAAI,CAAC,OAAO;;AACjC,YAAA,WAAW,GAAG,UAAU;AAC9B,UAAI,UAAU;AACR,aAAAR,MAAA,UAAU,UAAV,gBAAAA,IAAkB,WAAW;AACxB,iBAAA,UAAU,MAAM,QAAQ;AAAA,QACjC;AAAA,MACF;AACO,aAAA,EAAE,GAAG,IAAI,UAAU,UAAU,GAAG,YAAY,CAAA,GAAI,SAAS;IAAE,CACnE;AAEM,WAAA;AAAA,EAET,GAAG,CAAE,CAAA;AAEC,QAAAoJ,SAAQ,YAAY,CAAC,cAA8B;;AACvD,UAAM,aAA0BpJ,MAAA,UAAU,YAAV,gBAAAA,IAAmB,aAAY,CAAA;AACxD,WAAA,UAAU,UAAU,SAAS;AAAA,EAAA,GACnC,CAAC,SAAS,CAAC;AAEP,SAAAoJ;AACT;ACpBA,MAAM,gBAA6B;AAAA,EACjC,iBAAiB;AACnB;AAEA,MAAM,oBAAiC;AAAA,EACrC,iBAAiB;AACnB;AAEO,MAAM,qBAAkC;AAAA,EAC7C,iBAAiB;AACnB;AAEO,SAAS,UAAU,iBAAmC;AAC3D,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAM,uBAAuB;AAC7B,QAAM,QAAQ;AACR,QAAA,eAAe,OAAO,SAAS;AAC/B,QAAA,gBAAgB,OAAO,UAAU;AACjC,QAAA,WAAW,OAAO,KAAK;AAC7B,eAAa,UAAU;AACvB,gBAAc,UAAU;AACxB,WAAS,UAAU;AAEb,QAAArJ,UAAS,QAAQ,MAAM;;AACvB,SAAA,mDAAiB,UAAS,YAAY,UAAU;AAC5C,YAAA,YAAWC,MAAA,aAAa,YAAb,gBAAAA,IAAsB,KAAK,CAACqJ,cAAaA,UAAS,OAAO,gBAAgB;AAC1F,UAAI,UAAU;AACZ,eAAO,EAAE,GAAG,eAAe,WAAUpJ,MAAA,SAAS,YAAT,gBAAAA,IAAkB;MACzD;AAAA,IAES,YAAA,mDAAiB,UAAS,YAAY,WAAW;AACpD,YAAA,aAAYC,MAAA,cAAc,YAAd,gBAAAA,IAAuB,KAAK,CAACoJ,eAAcA,WAAU,OAAO,gBAAgB;AAC9F,UAAI,WAAW;AACP,cAAA,WAAW,qBAAqB,SAAS;AACxC,eAAA;AAAA,UACL,GAAG;AAAA,UAAe,UAAU;AAAA,QAAA;AAAA,MAEhC;AAAA,IAAA,YAES,mDAAiB,UAAS,YAAY,mBAAkB,mDAAiB,UAAS,YAAY,MAAM;AACvG,YAAA,QAAOlJ,OAAAD,MAAA,SAAS,YAAT,gBAAAA,IAAkB,UAAlB,gBAAAC,IAAyB,KAAK,CAAC,SAAS,KAAK,OAAO,gBAAgB;AACjF,UAAI,MAAM;AACD,eAAA;AAAA,UACL,GAAG;AAAA,UAAmB,WAAU4H,MAAA,KAAK,YAAL,gBAAAA,IAAc;AAAA,QAAA;AAAA,MAElD;AAAA,IAES,YAAA,mDAAiB,UAAS,YAAY,OAAO;AAChD,YAAA,QAAOE,OAAAD,MAAA,SAAS,YAAT,gBAAAA,IAAkB,UAAlB,gBAAAC,IAAyB,KAAK,CAAC,SAAS,KAAK,OAAO,gBAAgB;AACjF,UAAI,MAAM;AACD,eAAA;AAAA,UACL,GAAG;AAAA,UAAoB,WAAUC,MAAA,KAAK,YAAL,gBAAAA,IAAc;AAAA,QAAA;AAAA,MAEnD;AAAA,IACF;AACO,WAAA;AAAA,EAAA,GACN,CAAC,sBAAsB,mDAAiB,IAAI,mDAAiB,IAAI,CAAC;AAE9D,SAAApI;AACT;AC7DO,SAAS,cACd,OAIA;AACM,QAAA,EAAE,OAAO,SAAa,IAAA;AAC5B,QAAM,CAAC,QAAQ,SAAS,IAAIV,eAAM,SAAS,KAAK;AAE1C,QAAA,uBAAuB,YAAY,CAACkK,WAAmB;AAC3D,aAASA,UAAS,SAAS;AAC3B,cAAU,KAAK;AAAA,EAAA,GACd,CAAC,QAAQ,CAAC;AAIX,SAAAhJ,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,WAAW;AAAA,MACX;AAAA,MAAgB,cAAc,CAAC,SAAS,UAAU,IAAI;AAAA,MAEtD,UAAA;AAAA,QAAAC,sCAAC,gBACC,EAAA,UAAAA,kCAAA;AAAA,UAACkI;AAAAA,UAAA;AAAA,YACC,YAAU;AAAA,YACV,MAAK;AAAA,YACL,SAAQ;AAAA,YAER,UAAAlI,kCAAA,IAAC,eAAc,EAAA,SAAS,SACtB,UAAAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO;AAAA,kBACL,iBAAiB;AAAA,gBACnB;AAAA,gBAEA,UAAAA,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,WAAU;AAAA,oBACV,OAAO;AAAA,sBACL,OAAO,UAAU,KAAK,EAAE,YAAY,YAAY;AAAA,oBAClD;AAAA,oBACA,SAAQ;AAAA,oBAER,UAACA,kCAAA,IAAA,QAAA,EAAK,MAAK,gBAAe,GAAE,6NAA2N;AAAA,kBAAA;AAAA,gBACzP;AAAA,cAAA;AAAA,YAAA,GAEJ;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,8CAEC,gBACC,EAAA,UAAAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP,UAAU;AAAA,UAAA;AAAA,QAAA,GAEd;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;ACvDO,SAAS,cAAc;AAC5B,QAAM,CAAC,QAAQ,cAAc,IAAI,eAAe,WAAW;AAC3D,QAAM,CAAC,SAAS,eAAe,IAAI,eAAe,YAAY;AAC9D,QAAM,CAAC,WAAW,iBAAiB,IAAI,eAAe,cAAc;AAC9D,QAAA,kBAAkB,eAAe,oBAAoB;AAGzD,SAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,6EACb,UAAA;AAAA,IAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,aAAa;AAAA,UACb,iBAAiB;AAAA,QACnB;AAAA,QAEC,UAAA;AAAA,WAAiB,mDAAA,UAAS,YAAY,aAAa;AAAA,WACnD,mDAAiB,UAAS,YAAY,QAAQ;AAAA,WAC9C,mDAAiB,UAAS,YAAY,kBAAkB;AAAA,WACxD,mDAAiB,UAAS,YAAY,SAAS;AAAA,WAC/C,mDAAiB,UAAS,YAAY,YAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAErD;AAAA,IACAA,kCAAAA,KAAC,OAAI,EAAA,WAAU,wBAEV,UAAA;AAAA,QAAA,mDAAiB,UAAS,YAAY,mBACrC,mDAAiB,UAAS,YAAY,SACxCC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,SAAS,YAAY,UAAU;AAAA,UAC/B,WAAW,YAAY,eAAe;AAAA,UACtC,SAAS,MAAM,kBAAkB,CAAC,SAAS;AAAA,UAE3C,UAAAA,kCAAAA,IAAC,WAAU,EAAA,WAAU,SAAS,CAAA;AAAA,QAAA;AAAA,MAChC;AAAA,MAGFA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,SAAS,SAAS,UAAU;AAAA,UAC5B,WAAW,SAAS,eAAe;AAAA,UACnC,SAAS,MAAM,eAAe,CAAC,MAAM;AAAA,UAErC,UAAAA,kCAAAA,IAAC,UAAS,EAAA,WAAU,SAAS,CAAA;AAAA,QAAA;AAAA,MAC/B;AAAA,MACCA,kCAAA,IAAA,eAAA,EAAc,OAAO,SAAS,UAAU,iBAAiB;AAAA,IAAA,GAC5D;AAAA,EACF,EAAA,CAAA;AAEJ;;ACnDO,SAAS,cAAc,OAAuC;AACnE,QAAM,EAAE,WAAW,GAAG,KAAA,IAAS;AAE7B,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WACE,GAAG,0FAA0F,SAAS;AAAA,MAExG,WAAW;AAAA,MACV,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;ACRO,SAAS,iBAAiB,OAE9B;AACK,QAAA,EAAE,SAAa,IAAA;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAI,eAAe,gBAAgB;AACnD,QAAA,iBAAiB,eAAe,mBAAmB;AAEnD,QAAA,QAAQ,eAAe,aAAa;AAG1C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAiB;AACrD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAiB;AAC3D,QAAM,CAAC,UAAU,WAAW,IAAI,SAA0B;AACpD,QAAA,MAAM,OAAuB,IAAI;AACjC,QAAA,gBAAgB,OAAO,UAAU;AACvC,gBAAc,UAAU;AAClB,QAAA,mBAAmB,OAAO,aAAa;AAC7C,mBAAiB,UAAU;AACrB,QAAA,cAAc,OAAO,QAAQ;AACnC,cAAY,UAAU;AAMhB,QAAA,gBAAgB,YAAY,MAAM;AACtC,QAAI,IAAI,SAAS;AACf,YAAM,EAAE,OAAAgJ,OAAAA,IAAU,IAAI,QAAQ;AAC9B,oBAAcA,MAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAE,CAAA;AAEC,QAAA,uBAAuB,YAAY,CAAC,MAAwB;AAClD;AACd,qBAAiB,EAAE,OAAO;AAC1B,gBAAY,OAAO;AAAA,EAAA,GAClB,CAAC,aAAa,CAAC;AAEZ,QAAA,qBAAqB,YAAY,CAAC,MAAwB;AAChD;AACd,qBAAiB,EAAE,OAAO;AAC1B,gBAAY,KAAK;AAAA,EAAA,GAChB,CAAC,aAAa,CAAC;AAEZ,QAAA,kBAAkB,YAAY,CAAC,MAAkB;AACjD,QAAA,YAAY,YAAY,SAAS;AACnC,YAAM,YAAY,EAAE,UAAU,iBAAiB,WAAY;AACrD,YAAA,WAAW,cAAc,UAAW;AAC/B,2CAAA,KAAK,MAAM,QAAQ;AAAA,IAAC,WACtB,YAAY,YAAY,OAAO;AACxC,YAAM,YAAY,iBAAiB,UAAW,EAAE,WAAW;AACrD,YAAA,WAAW,cAAc,UAAW;AAC/B,2CAAA,KAAK,MAAM,QAAQ;AAAA,IAChC;AAAA,EAAA,GACC,CAAC,QAAQ,CAAC;AAEP,QAAA,gBAAgB,YAAY,MAAM;AACtC,QAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,UAAU;AAC5C;AAAA,IACF;AACW,yCAAA,KAAK,MAAM,KAAe;AACrC,qBAAiB,MAAS;AAC1B,gBAAY,MAAS;AAAA,KACpB,CAAC,UAAU,UAAU,eAAe,KAAK,CAAC;AAE7C,QAAM,uBAAuB;AAAA,IAC3B,CAAC,MAAsB;AACrB,sBAAgB,EAAE,aAAa;AAAA,IACjC;AAAA,IACA,CAAC,eAAe;AAAA,EAAA;AAGlB,YAAU,MAAM;AACL,aAAA,iBAAiB,aAAa,eAAe;AAC7C,aAAA,iBAAiB,WAAW,aAAa;AAElD,WAAO,MAAM;AACF,eAAA,oBAAoB,aAAa,eAAe;AAChD,eAAA,oBAAoB,WAAW,aAAa;AAAA,IAAA;AAAA,EAEtD,GAAA,CAAC,eAAe,iBAAiB,oBAAoB,CAAC;AAGvD,SAAAhJ,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,QACL,QAAQ,iBAAiB;AAAA,QACzB;AAAA,QACA,WAAW,SAAS,KAAK;AAAA,QACzB,MAAM;AAAA,QACN,KAAK;AAAA,QACL,iBAAiB;AAAA,MACnB;AAAA,MAEA,UAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,kEACb,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAa;AAAA,UAAA;AAAA,QACf;AAAA,QAEE;AAAA;AAAA,QAIA,iBACAA,kCAAAA,IAAC,OAAI,EAAA,WAAU,mDAAmD,CAAA;AAAA,QAEpEA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAa;AAAA,UAAA;AAAA,QACf;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACrHO,SAAS,SACd,OAKA;AACA,QAAM,EAAE,WAAW,UAAU,SAAA,IAAa;AACpC,QAAA,mBAAmB,kBAAkB,kBAAkB;AACvD,QAAA,oBAAoB,kBAAkB,mBAAmB;AAC/D,QAAM,cAAc;AACd,QAAA,qBAAqB,YAAY,MAAM;AACvC,QAAA,YAAY,WAAW,UAAU;AACnC,uBAAiB,KAAK,MAAM,YAAY,QAAQ,WAAW,IAAI,GAAG;AAClE,wBAAkB,KAAK,MAAM,YAAY,QAAQ,eAAe,CAAC,CAAC;AAAA,IACpE;AAAA,EACC,GAAA,CAAC,UAAU,kBAAkB,iBAAiB,CAAC;AAE5C,QAAA,kBAAkB,YAAY,CAAC,SAAyB;AAC5D,QAAI,MAAM;AACR,kBAAY,UAAU;AACH;IACrB;AAAA,EAAA,GACC,CAAC,kBAAkB,CAAC;AAGvB,YAAU,MAAM;AACd,QAAI,YAAY,SAAS;AACjB,YAAA,iBAAiB,IAAI,eAAe,kBAAkB;AAC7C,qBAAA,QAAQ,YAAY,OAAO;AAE1C,aAAO,MAAM;AACX,uBAAe,WAAW;AAAA,MAAA;AAAA,IAE9B;AAAA,EAAA,GACC,CAAC,kBAAkB,CAAC;AAGrB,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WACE;AAAA,QACE;AAAA,QACA,WAAW,SAAS;AAAA,QACpB;AAAA,MACF;AAAA,MAGD;AAAA,IAAA;AAAA,EAAA;AAGP;ACxDO,MAAM,SAAS;AAAA,EACpB,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACF;AC5RO,SAAS,oBACd,QACA;AACM,QAAA,EAAE,gBAAgB,YAAgB,IAAA;AAExC,QAAM,cAAc;AAAA,IAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQf,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA;AAAA,wBAE5B,kBAAkB,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmC1C,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaX,CAAC,gBAAgB,WAAW;AAAA,EAAA;AAGvB,SAAA;AACT;ACxEgB,SAAA,oBAAoB,WAA4B,QAAiB,SAAiB;AAEhG,YAAU,MAAM;AACd,QAAI,WAAW;AAEb,YAAM,eAAe,MAAM;AACzB,cAAM,YAAY,UAAU,gBAAgB,aAAa,UAAU,KAAK;AACxE,YAAI,YAAY,IAAI;AACR,oBAAA,KAAK,UAAU,IAAI,WAAW;AAAA,QAAA,OACnC;AACK,oBAAA,KAAK,UAAU,OAAO,WAAW;AAAA,QAC7C;AAAA,MAAA;AAGQ,gBAAA,iBAAiB,UAAU,YAAY;AAEjD,aAAO,MAAM;AACD,kBAAA,oBAAoB,UAAU,YAAY;AAAA,MAAA;AAAA,IAExD;AAAA,EAAA,GACC,CAAC,SAAS,CAAC;AAEd,YAAU,MAAM;AACd,QAAI,WAAW;AACb,UAAI,QAAQ;AACA,kBAAA,gBAAgB,UAAU,IAAI,MAAM;AAAA,MAAA,OACzC;AACK,kBAAA,gBAAgB,UAAU,OAAO,MAAM;AAAA,MACnD;AAAA,IACF;AAAA,EAAA,GACC,CAAC,WAAW,MAAM,CAAC;AAEtB,YAAU,MAAM;AACd,QAAI,WAAW;AACH,gBAAA,KAAK,MAAM,kBAAkB;AAAA,IACzC;AAAA,EAAA,GACC,CAAC,WAAW,OAAO,CAAC;AAEzB;ACrCa,MAAA,2BAA2B,cAAgC,EAAE;ACAnE,SAAS,uBAAuB;AACrC,SAAO,WAAW,wBAAwB;AAC5C;ACDO,MAAM,mBAAmB;AAAA,EAC9B,GAAG,OAAO;AAAA,EACV,SAAS,OAAO;AAAA,EAChB,OAAO,OAAO;AAAA,EACd,OAAO,OAAO;AAAA,EACd,QAAQ,OAAO;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,KAAK,OAAO;AAAA,EACZ,QAAQ,OAAO;AAAA,EACf,MAAM,OAAO;AAAA,EACb,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,QAAQ,OAAO;AAAA,EACf,IAAI,OAAO;AAAA,EACX,QAAQ,OAAO;AAAA,EACf,KAAK,OAAO;AAAA,EACZ,OAAO,OAAO;AAAA,EACd,IAAI,OAAO;AAAA,EACX,MAAM,OAAO;AAAA,EACb,KAAK,OAAO;AAAA,EACZ,IAAI,OAAO;AAAA,EACX,QAAQ,OAAO;AAAA,EACf,GAAG,OAAO;AAAA,EACV,SAAS,OAAO;AAAA,EAChB,SAAS,OAAO;AAAA,EAChB,QAAQ,OAAO;AAAA,EACf,MAAM,OAAO;AAAA,EACb,KAAK,OAAO;AAAA,EACZ,OAAO,OAAO;AAAA,EACd,OAAO,OAAO;AAAA,EACd,IAAI,OAAO;AAAA,EACX,UAAU,OAAO;AAAA,EACjB,OAAO,OAAO;AAAA,EACd,IAAI,OAAO;AAAA,EACX,OAAO,OAAO;AAAA,EACd,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,OAAO,OAAO;AAChB;AAEO,SAAS,oBAAoB,MAA8B;AAChE,QAAM,OAAO,6BAAM;AACnB,QAAM,aAAa;AACnB,QAAM,gBAAgB,OAAQ,WAAW,IAAI,KAAK,OAAQ;AAEtD,MAAA,KAAK,WAAW,OAAO,KAAK,KAAK,OAAO,EAAE,SAAS,KAAK,eAAe;AAClE,WAAA,iBAAiB,aAA8C,KAAK;AAAA,EAC7E;AACO,SAAA;AACT;ACzDO,MAAM,wBAAwB;AAAA,EACnC,SAAS;AAAA,IACP;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,YAAY;AAAA,YACV;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,wBACA;AAAA,0BACE,OAAO;AAAA,0BACP,QAAQ;AAAA,wBACV;AAAA,wBACA;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,wBACA;AAAA,0BACE,OAAO;AAAA,0BACP,QAAQ;AAAA,wBACV;AAAA,wBACA;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,wBACA;AAAA,0BACE,OAAO;AAAA,0BACP,QAAQ;AAAA,wBACV;AAAA,wBACA;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,wBACA;AAAA,0BACE,OAAO;AAAA,0BACP,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY;AAAA,gBACV;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,SAAS;AAAA,sBACT,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,YAAY;AAAA,oBACV;AAAA,sBACE,YAAY;AAAA,wBACV;AAAA,0BACE,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,sBACA,QAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB;AAAA,EACpC,SAAS;AAAA,IACP;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,YAAY;AAAA,YACV;AAAA,cACE,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAY;AAAA,YACV;AAAA,cACE,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAY;AAAA,YACV;AAAA,cACE,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAY;AAAA,YACV;AAAA,cACE,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAY;AAAA,YACV;AAAA,cACE,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAY;AAAA,YACV;AAAA,cACE,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,MAAM,qBAAqB;AAAA,EAChC,SAAS;AAAA,IACP;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AC97BA,MAAM,eAAe,MAAM,OAAO,IAAI,EAAE,KAAK,GAAG,KAAK,EAAA,CAAG;AACxD,MAAM,eAAe,CAAC,WAAmB,MAAM,KAAK,EAAE,OAAA,GAAU,OAAO;AAAA,EACrE,IAAI,MAAM,OAAO,KAAK;AAAA,EACtB,OAAO,MAAM,SAAS,YAAY;AAAA,EAClC,aAAa,MAAM,SAAS,mBAAmB;AACjD,EAAE;AAEF,MAAM,kBAAkB,CAAC,WAAmB,MAAM,KAAK,EAAE,OAAA,GAAU,OAAO;AAAA,EACxE,IAAI,MAAM,OAAO,KAAK;AAAA,EACtB,MAAM,MAAM,SAAS,YAAY;AAAA,EACjC,SAAS;AACX,EAAE;AAGK,SAAS,SAAS,OAA0B;AAE3C,QAAA,QAA+C,QAAQ,MAAM;AAC7D,SAAA,+BAAO,UAAS,UAAU,OAAO;AAC5B,aAAA;AAAA,QACL,OAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MAAA;AAAA,IAEJ;AACA,YAAQ,+BAAO,OAAO;AAAA,MACpB,KAAK,WAAW;AACd,eAAO,sBAAsB,KAAK;AAAA,MACpC,KAAK,WAAW;AACd,eAAO,sBAAsB,KAAK;AAAA,MACpC,KAAK,WAAW;AACd,eAAO,cAAc,KAAK;AAAA,MAC5B,KAAK,WAAW;AACd,eAAO,WAAW,KAAK;AAAA,MACzB,KAAK,WAAW;AACd,eAAO,WAAW,KAAK;AAAA,MACzB,KAAK,WAAW;AACP,eAAA,EAAE,OAAO,aAAa,MAAM,YAAY,CAAC,GAAG,QAAQ;MAC7D,KAAK,WAAW;AACP,eAAA;AAAA,UACL,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,OAAO;AAAA,YACtC,IAAI,MAAM,OAAO,KAAK;AAAA,YACtB,OAAO,MAAM,MAAM,SAAS;AAAA,YAC5B,aAAa,MAAM,MAAM,SAAS;AAAA,UAAA,EAClC;AAAA,UAAG,QAAQ;AAAA,QAAA;AAAA,MAEjB,KAAK,WAAW;AACd,eAAO,EAAE,OAAO,uBAAuB,KAAK,GAAG,QAAQ;MACzD,KAAK,WAAW;AACd,eAAO,EAAE,OAAO,kBAAkB,KAAK,GAAG,QAAQ;MACpD,KAAK,WAAW;AACP,eAAA;AAAA,UACL,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,OAAO;AAAA,YACtC,IAAI,MAAM,OAAO,KAAK;AAAA,YACtB,OAAO,MAAM,SAAS,WAAW;AAAA,UAAA,EACjC;AAAA,UAAG,QAAQ;AAAA,QAAA;AAAA,MAEjB,KAAK,WAAW;AACP,eAAA;AAAA,UACL,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,OAAO;AAAA,YACtC,IAAI,MAAM,OAAO,KAAK;AAAA,YACtB,OAAO,MAAM,SAAS,WAAW;AAAA,UAAA,EACjC;AAAA,UAAG,QAAQ;AAAA,QAAA;AAAA,MAEjB,KAAK,WAAW;AACd,eAAO,WAAW,KAAK;AAAA,MACzB,KAAK,WAAW;AACd,eAAO,YAAY,KAAK;AAAA,MAC1B;AACS,eAAA,EAAE,OAAO;IACpB;AAAA,EAAA,GACC,CAAC,KAAK,CAAC;AAEH,SAAA;AACT;AAEa,MAAA,cAAc,CAAC,UAA6B;AACvD,UAAQ,+BAAO,OAAO;AAAA,IACpB,KAAK,YAAY;AACf,aAAO,EAAE,OAAO,MAAM,SAAS,YAAc,EAAA;AAAA,IAC/C,KAAK;AACI,aAAA,EAAE,OAAO;IAClB,KAAK;AACI,aAAA,EAAE,OAAO;IAClB;AACS,aAAA,EAAE,OAAO;EACpB;AACF;AAEA,MAAM,wBAAwB,CAAC,UAA6B;AAC1D,UAAQ,+BAAO,OAAO;AAAA,IACpB,KAAK,sBAAsB;AACzB,aAAO,EAAE,OAAO,MAAM,SAAS,MAAS,EAAA;AAAA,IAC1C,KAAK,sBAAsB;AACzB,aAAO,EAAE,OAAO,MAAM,MAAM,KAAO,EAAA;AAAA,IACrC,KAAK,sBAAsB;AACzB,aAAO,EAAE,OAAO,MAAM,MAAM,KAAO,EAAA;AAAA,IACrC,KAAK,sBAAsB;AACzB,aAAO,EAAE,OAAO,MAAM,SAAS,cAAgB,EAAA;AAAA,IACjD,KAAK,sBAAsB;AACzB,aAAO,EAAE,OAAO,MAAM,OAAO,SAAW,EAAA;AAAA,IAC1C;AACS,aAAA,EAAE,OAAO;EACpB;AACF;AAEA,MAAM,wBAAwB,CAAC,UAA6B;AAC1D,UAAQ,+BAAO,OAAO;AAAA,IACpB,KAAK,sBAAsB;AACzB,aAAO,EAAE,OAAO,MAAM,SAAS,WAAa,EAAA;AAAA,IAC9C,KAAK;AACH,aAAO,EAAE,OAAO,MAAM,SAAS,mBAAqB,EAAA;AAAA,IACtD,KAAK,2BAA2B;AACvB,aAAA,EAAE,OAAO,aAAa,MAAM,YAAY,YAAY,GAAG,QAAQ;IAExE;AACS,aAAA,EAAE,OAAO;EACpB;AACF;AAEA,MAAM,gBAAgB,CAAC,UAA6B;AAClD,UAAQ,+BAAO,OAAO;AAAA,IACpB,KAAK,cAAc;AACjB,aAAO,EAAE,OAAO,MAAM,SAAS,YAAc,EAAA;AAAA,IAC/C,KAAK,cAAc;AACjB,aAAO,EAAE,OAAO,MAAM,SAAS,YAAc,EAAA;AAAA,IAC/C,KAAK,cAAc;AACjB,aAAO,EAAE,OAAO,MAAM,SAAS,mBAAqB,EAAA;AAAA,IACtD,KAAK,cAAc;AACV,aAAA,EAAE,OAAO;IAClB,KAAK,cAAc;AACV,aAAA,EAAE,OAAO;IAClB,KAAK;AACI,aAAA;AAAA,QACL,OAAO;AAAA,UACL,QAAQ,MAAM,KAAK,EAAE,QAAQ,KAAK,OAAO;AAAA,YACvC,IAAI,MAAM,OAAO,KAAK;AAAA,YACtB,KAAK;AAAA,YACL,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,KAAK,MAAM,SAAS,YAAY;AAAA,UAAA,EAChC;AAAA,QACJ;AAAA,MAAA;AAAA,IAEJ,KAAK;AACI,aAAA;AAAA,QACL,OAAO,gBAAgB,CAAC;AAAA,QAAG,QAAQ;AAAA,MAAA;AAAA,IAEvC,KAAK,cAAc;AACV,aAAA;AAAA,QACL,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAO,MAAM,SAAS,mBAAA,CAAqB,EAAE,KAAK,IAAI;AAAA,MAAA;AAAA,IAE3F,KAAK;AACI,aAAA;AAAA,QACL,OAAO;AAAA,UACL,KAAK,MAAM,SAAS,YAAY;AAAA,UAChC,KAAK;AAAA,UACL,WAAW;AAAA,UACX,QAAQ;AAAA,QACV;AAAA,MAAA;AAAA,IAEJ,KAAK;AACI,aAAA;AAAA,QACL,OAAO,aAAa,CAAC;AAAA,QAAG,QAAQ;AAAA,MAAA;AAAA,IAEpC;AACS,aAAA,EAAE,OAAO;EACpB;AACF;AAEA,MAAM,aAAa,CAAC,UAA6B;AAC/C,UAAQ,+BAAO,OAAO;AAAA,IACpB,KAAK,WAAW;AACd,aAAO,EAAE,OAAO,MAAM,MAAM,SAAW,EAAA;AAAA,IACzC,KAAK,gBAAgB;AACZ,aAAA;AAAA,QACL,OAAO;AAAA,UACL,KAAK,MAAM,MAAM,SAAS;AAAA,UAC1B,KAAK;AAAA,QACP;AAAA,MAAA;AAAA,IAEJ,KAAK,WAAW;AACP,aAAA,EAAE,OAAO;IAClB,KAAK,WAAW;AACd,aAAO,EAAE,OAAO,MAAM,MAAM,SAAW,EAAA;AAAA,IACzC,KAAK,WAAW;AACd,aAAO,EAAE,OAAO,MAAM,KAAK,OAAS,EAAA;AAAA,IACtC,KAAK,WAAW;AACd,aAAO,EAAE,OAAO,MAAM,KAAK,OAAS,EAAA;AAAA,IACtC,KAAK,WAAW;AACd,aAAO,EAAE,OAAO,MAAM,KAAK,OAAS,EAAA;AAAA,IACtC;AACS,aAAA,EAAE,OAAO;EACpB;AACF;AAEA,MAAM,aAAa,CAAC,UAA6B;AAC/C,UAAQ,+BAAO,OAAO;AAAA,IACpB,KAAK,WAAW;AACd,aAAO,EAAE,OAAO,MAAM,OAAO,SAAW,EAAA;AAAA,IAC1C,KAAK,gBAAgB;AACZ,aAAA;AAAA,QACL,OAAO;AAAA,UACL,KAAK;AAAA,UACL,KAAK,MAAM,OAAO,SAAS;AAAA,QAC7B;AAAA,MAAA;AAAA,IAEJ,KAAK,WAAW;AACP,aAAA;AAAA,QACL,OAAO;AAAA,MAAA;AAAA,IAGX;AACS,aAAA,EAAE,OAAO;EACpB;AACF;AAEA,MAAM,yBAAyB,CAAC,UAA6B;AACvD,OAAA,+BAAO,UAAS,UAAU,OAAO;AAC5B,WAAA,MAAM,KAAK,EAAE,QAAQ,MAAM,YAAY,EAAA,GAAK,OAAO;AAAA,MACxD,IAAI,MAAM,OAAO,KAAK;AAAA,MACtB,OAAO,MAAM,SAAS,YAAY;AAAA,MAClC,aAAa,MAAM,SAAS,mBAAmB;AAAA,IAC/C,EAAA;AAAA,EACJ;AACF;AAEA,MAAM,oBAAoB,CAAC,UAA6B;AAClD,OAAA,+BAAO,UAAS,UAAU,OAAO;AAC5B,WAAA,MAAM,KAAK,EAAE,QAAQ,MAAM,YAAY,EAAA,GAAK,OAAO;AAAA,MACxD,IAAI,MAAM,OAAO,KAAK;AAAA,MACtB,OAAO,MAAM,MAAM,SAAS;AAAA,MAC5B,aAAa,MAAM,MAAM,SAAS;AAAA,IAClC,EAAA;AAAA,EACJ;AACF;AAEA,MAAM,aAAa,CAAC,UAA6B;AAC/C,UAAQ,+BAAO,OAAO;AAAA,IACpB,KAAK;AACH,aAAO,EAAE,OAAO,MAAM,MAAM,SAAS,CAAC;IACxC,KAAK;AACI,aAAA;AAAA,QACL,OAAO;AAAA,UACL,EAAE,OAAO,QAAQ,MAAM,IAAI;AAAA,UAC3B,EAAE,OAAO,YAAY,MAAM,IAAI;AAAA,UAC/B,EAAE,OAAO,UAAU;AAAA,QACrB;AAAA,MAAA;AAAA,IAEJ;AACS,aAAA,EAAE,OAAO;EACpB;AACF;AC7PO,SAAS,eAAe,MAA8B;AAC3D,MAAIiJ,UAAsB,CAAA;AAE1B,aAAW,UAAU,KAAK,WAAW,CAAA,GAAI;AACvC,QAAI,OAAO,SAAS;AAClB,MAAAA,QAAO,UAAU,OAAO;AAAA,IAC1B;AAEA,QAAI,OAAO,UAAU;AACnB,MAAAA,QAAO,WAAW,OAAO;AAAA,IAC3B;AAEA,YAAQ,OAAO,SAAS;AAAA,MACtB,KAAK,YAAY;AACN,QAAAA,UAAA;AAAA,UACP,GAAGA;AAAA,UACH,YAAY,OAAO;AAAA,QAAA;AAErB;AAAA,MACF,KAAK,YAAY;AACN,QAAAA,UAAA;AAAA,UACP,GAAGA;AAAA,UACH,UAAU,OAAO;AAAA,QAAA;AAEnB;AAAA,MACF,KAAK,YAAY;AACN,QAAAA,UAAA;AAAA,UACP,GAAGA;AAAA,UACH,WAAW,OAAO;AAAA,QAAA;AAEpB;AAAA,MACF,KAAK,YAAY;AACN,QAAAA,UAAA;AAAA,UACP,GAAGA;AAAA,UACH,YAAY,OAAO;AAAA,QAAA;AAErB;AAAA,MACF,KAAK,YAAY;AACN,QAAAA,UAAA;AAAA,UACP,GAAGA;AAAA,UACH,aAAa,OAAO;AAAA,QAAA;AAEtB;AAAA,MACF,KAAK,YAAY;AACf,YAAI,OAAO,SAAS;AAClB,UAAAA,UAAS,MAAMA,SAAQ;AAAA,YACrB,UAAU;AAAA,cACR,MAAM,OAAO;AAAA,YACf;AAAA,UAAA,CACD;AAAA,QACH;AACA;AAAA,MACF,KAAK,YAAY;AACf,YAAI,OAAO,SAAS;AAClB,UAAAA,UAAS,MAAMA,SAAQ;AAAA,YACrB,UAAU;AAAA,cACR,QAAQ,OAAO;AAAA,YACjB;AAAA,UAAA,CACD;AAAA,QACH;AACA;AAAA,IACJ;AAAA,EACF;AAEO,SAAAA;AACT;AC7Ca,MAAA,gBAAgB,KAAK,CAChC,UACG;;AACG,QAAA,EAAE,MAAM,aAAa,CAAC,cAAc,GAAG,MAAM,GAAG,MAAU,IAAA;AAC1D,QAAA,YAAY,oBAAoB,IAAI;AACpC,QAAA,OAAO,cAAc,MAAM,WAAW;AACtC,QAAA,cAAc,eAAe,IAAI;AAEjC,QAAA,QAAQ,QAAQ,MAAM;;AAC1B,UAAM,OAA8C,CAAA;AACpD,eAAW,QAAQ,OAAO,MAAK,6BAAM,UAAS,CAAA,CAAE,GAAG;AAC3C,YAAA,QAAOzJ,MAAA,6BAAM,UAAN,gBAAAA,IAAc;AAC3B,UAAI,MAAM;AACR,aAAK,IAAI,IAAIQ,sCAAC,eAAc,EAAA,MAAM,MAAM,YAA0B,CAAA;AAAA,MACpE;AAAA,IACF;AAEO,WAAA;AAAA,EACN,GAAA,CAAC,aAAa,6BAAM,KAAK,CAAC;AAE7B,QAAM,EAAE,OAAO,OAAA,IAAW,SAAS,KAAK,KAAK;AAEvC,QAAA,YAAY,QAAQ,MAAM;AACvB,WAAA;AAAA,MACL,GAAG,6BAAM;AAAA,MACT;AAAA,MACA,GAAG;AAAA;AAAA,MAEH,MAAM;AAAA,IAAA;AAAA,KAEP,CAAC,6BAAM,OAAO,aAAa,KAAK,CAAC;AAE9B,QAAA,gBAAgB,QAAQ,MAAM;;AAClC,UAAM,WAAW,CAAC,KAAK,gBAAcR,MAAA,KAAK,aAAL,gBAAAA,IAAe,IAAI,CAAS,UAAA;AAC/D,mDAAS,eAA6B,EAAA,MAAM,OAAO,YAAA,GAAvB,MAAM,EAA2C;AAAA,IAAA;AAG/E,QAAI,QAAQ;AACV,YAAM,QAAQ;AAEZ,aAAA,+BAAO,IAAI,CAAW,YAAA;AACb,eAAAQ,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAGL,UAAA;AAAA,UAAA;AAAA,UAFI,QAAQ;AAAA,QAAA;AAAA,MAGf;AAAA,IAGN;AAEO,WAAA;AAAA,EAAA,GACN,CAAC,KAAK,YAAY,KAAK,UAAU,QAAQ,aAAa,KAAK,CAAC;AAEzD,QAAA,YAAY,YAAY,CAAC,YAAqC;AAC9D,QAAA,cAAc,OAAO,KAAK,MAAM;AACzB,yCAAA,aAAa,gBAAgB;AAAA,IACxC;AAAA,EAAA,GACC,CAAC,IAAI,CAAC;AAET,SACE,QAAQ,gBAENR,MAAA,KAAK,aAAL,gBAAAA,IAAe,UACZQ,kCAAA,IAAA,WAAA,EAAU,KAAK,OAAO,YAAY,QAAY,GAAG,WAAY,GAAG,OAAQ,GAAG,OAExE,UAAA,cAEJ,CAAA,IACEA,kCAAAA,IAAC,WAAU,EAAA,KAAK,OAAO,YAAY,QAAY,GAAG,WAAY,GAAG,OAAQ,GAAG,OAAO,UAAU,6BAAM,KAAM,CAAA;AAGnH,CAAC;AC5FM,SAAS,oBAAoB,MAAmE;;AACrG,QAAM,QAAgE,CAAA;AACtE,aAAW,OAAO,OAAO,KAAK,KAAK,SAAS,CAAA,CAAE,GAAG;AACzC,UAAA,QAAOR,MAAA,KAAK,UAAL,gBAAAA,IAAa;AAC1B,QAAI,MAAM;AACF,YAAA,GAAG,IAAI,oBAAoB,IAA2C;AAAA,IAC9E;AAAA,EACF;AAEO,SAAA;AAAA,IACL,IAAI,SAAS;AAAA,IACb,GAAG;AAAA,IACH,WAAUC,MAAA,6BAAM,aAAN,gBAAAA,IAAgB,IAAI,CAAS,UAAA,oBAAoB,KAA4C;AAAA,IACvG;AAAA,EAAA;AAEJ;ACXa,MAAA,gBAAgB,KAAK,CAAC,UAM7B;AACJ,QAAM,EAAE,QAAAF,SAAQ,YAAY,aAAa,GAAG,KAAS,IAAA;AAErD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAiC;AACzD,YAAU,MAAM;AACd,QAAIA,SAAQ;AACF,cAAA,oBAAoBA,OAA6C,CAAC;AAAA,IAAA,OACrE;AACL,cAAQ,MAAS;AAAA,IACnB;AAAA,EAAA,GACC,CAACA,OAAM,CAAC;AAEX,SACE,OACIS,kCAAA;AAAA,IAAC,yBAAyB;AAAA,IAAzB;AAAA,MACD,OAAO,cAAc,CAAC;AAAA,MAErB,kBAASA,kCAAAA,IAAA,eAAA,EAAc,MAAY,aAA2B,GAAG,MAAM;AAAA,IAAA;AAAA,EAAA,IAEtEA,kCAAA,IAAAE,4BAAA,CAAA,CAAA;AAEV,CAAC;AC9BM,SAAS,cAAc,OAI3B;AACD,QAAM,EAAE,QAAAX,SAAQ,aAAa,SAAA,IAAa;AAC1C,QAAM,SAAS;AACT,QAAA,cAAgC,QAAQ,MAAM;AAClD,UAAM,QAA0B,CAAA;AAChC,UAAM,YAAY,iCAAQ,sBAAsB;AAChD,QAAI,WAAW;AACb,iBAAW,OAAO,OAAO,KAAK,SAAS,GAAG;AAClC,cAAA,WAAW,UAAU,GAAG;AAC9B,cAAM,GAAG,KAAI,qCAAU,aAAW,qCAAU;AAAA,MAC9C;AAAA,IACF;AAEA,WAAO,EAAE,GAAG,OAAO,GAAG;EAAS,GAC9B,CAAC,QAAQ,QAAQ,CAAC;AAGrB,SAAQA,WACNS,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAAT;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AAGN;AC5BO,SAAS,iBAAiB;AAC/B,QAAM,QAAQ;AACR,QAAA,WAAW,OAAO,KAAK;AAC7B,WAAS,UAAU;AAEb,QAAAA,UAAS,QAAQ,MAAM;;AACrB,UAAA,aAAYE,OAAAD,MAAA,SAAS,YAAT,gBAAAA,IAAkB,UAAlB,gBAAAC,IAAyB,KAAK,CAAC,SAAS,KAAK,aAAa,SAAS;AAEjF,SAAAC,MAAA,uCAAW,YAAX,gBAAAA,IAAoB,SAAS,QAAQ;AAChC,aAAA;AAAA,QACL,GAAG;AAAA,QAAoB,WAAUC,MAAA,UAAU,YAAV,gBAAAA,IAAmB;AAAA,MAAA;AAAA,IAExD;AACO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEE,SAAAJ;AACT;AClBO,SAAS,iBAAiB;AAC/B,QAAM,CAAC,IAAI,KAAK,IAAI,SAAiB;AAC/B,QAAA,iBAAiB,kBAAkB,gBAAgB;AAEzD,YAAU,MAAM;AACR,UAAA,SAAS,gBAAgB,CAAC;AAAA,EAClC,GAAG,CAAE,CAAA;AAEC,QAAA,kBAAkB,YAAY,CAAC,QAAwB;AAC3D,QAAI,KAAK;AACP,qBAAe,EAAE;AAAA,IAAA,OACZ;AACL,qBAAe,MAAS;AAAA,IAC1B;AAAA,EAAA,GACC,CAAC,IAAI,cAAc,CAAC;AAIrB,SAAAS,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;ACfa,MAAA,WAAW,KAAK,CAC3B,UASG;AACH,QAAM,EAAE,gBAAgB,aAAa,YAAY,QAAQ,SAAS,SAAa,IAAA;AAC/E,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAM,CAAC,WAAW,YAAY,IAAI,SAA0B,IAAI;AAChE,QAAM,YAAY;AACZ,QAAA,cAAc,eAAe,gBAAgB;AACnD,QAAM,cAAc;AACd,QAAA,YAAY,eAAe,cAAc;AACzC,QAAA,kBAAkB,eAAe,oBAAoB;AAErD,QAAA,gBAAgB,QAAQ,MAAM;AAC3B,WAAA;AAAA,MACL,WAAW;AAAA,IAAA;AAAA,EAEf,GAAG,CAAE,CAAA;AAEe,sBAAA,WAAW,QAAQ,OAAO;AAE9C,QAAM,cAAc,oBAAoB;AAAA,IACtC;AAAA,IACA;AAAA,EAAA,CACD;AAED,YAAU,MAAM;AACV,QAAA,UAAU,eAAc,2BAAK,KAAI;AACnC,iBAAW,aAAa,YAAY;AAClC,eAAO,oBAAoB,EAAE,aAAa,WAAW,IAAI,EAAE;AAAA,MAC7D;AACA,aAAO,MAAM;AACX,mBAAW,aAAa,YAAY;AAClC,iBAAO,sBAAsB,gBAAgB,UAAU,MAAM,IAAI,EAAE;AAAA,QACrE;AAAA,MAAA;AAAA,IAEJ;AAAA,KACC,CAAC,QAAQ,YAAY,2BAAK,EAAE,CAAC;AAGhC,YAAU,MAAM;AACd,QAAI,WAAW;AACb,YAAMkJ,OAAM;AACN,YAAA3B,SAAQ,SAAS,cAAc,OAAO;AAC5C2B,WAAI,KAAK,OAAO3B,MAAK;AAErB,aAAO,MAAM;AACX,QAAAA,OAAM,OAAO;AAAA,MAAA;AAAA,IAEjB;AAAA,EAAA,GACC,CAAC,SAAS,CAAC;AAGR,QAAA,aAAa,YAAY,MAAM;;AACnC,YAAQ,IAAI,eAAe;AAC3B,UAAM,WAAS9H,OAAAD,MAAA,UAAU,YAAV,gBAAAA,IAAmB,kBAAnB,gBAAAC,IAAkC,aAAY;AAC7D,iBAAa,MAAM;AAAA,EACrB,GAAG,CAAE,CAAA;AAEL,YAAU,MAAM;;AACR,UAAA,QAAQ,iCAAQ;AAChB,UAAA,WAAW,2BAAK;AACtB,QAAI,UAAU,QAAO,qCAAU,OAAM,WAAW;AAC9C,YAAM,QAAOD,MAAA,UAAU,gBAAV,gBAAAA,IAAuB,SAAS,eAAe;AAC5D,UAAI,CAAC,MAAM;AACT;AAAA,MACF;AAEA,YAAM,aAAa,IAAI;AAAA,QACrB;AAAA,QACA;AAAA,QACA,IAAI;AAAA;AAAA,QAEJ;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MAAA;AAEF,qCAAO,UAAU;AACjB,aAAO,MAAM;AACJ,uCAAA,aAAa,IAAI;AAAA,MAAE;AAAA,IAE9B;AAAA,EACC,GAAA,CAAC,KAAK,QAAQ,SAAS,CAAC;AAGrB,QAAA,kBAAkB,YAAY,CAAC,SAAmC;;AACtE,cAAU,UAAU,QAAQ;AAC5B,UAAM,WAASC,OAAAD,MAAA,UAAU,YAAV,gBAAAA,IAAmB,kBAAnB,gBAAAC,IAAkC,aAAY;AAC7D,iBAAa,MAAM;AAAA,EACrB,GAAG,CAAE,CAAA;AAEL,QAAM,cAAc,eAAe;AAEnC,SAGMM,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IACA,OAAAH,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAU;AAAA,QACV,OAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,SAAS,YAAY,IAAI;AAAA,QAC3B;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,QAGL,UAAA;AAAA,YAAA,mDAAiB,UAAS,YAAY,mBAAkB,mDAAiB,UAAS,YAAY,SAC/F,aAAa,eAAe,aAAa,UAAU,eAAe,WAAW,KAAK,SAAS;AAAA,YACzFC,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,QAAQ;AAAA,gBACR,aAAa,MAAM;AAAA,gBACnB,UAAU;AAAA,cAAA;AAAA,YACZ;AAAA,YACA,UAAU,eAAe,WAAW;AAAA,UACtC;AAAA,UAGA,aAAa,eAAe,UAAU,eAAe,WAAW,KAAK,SAAS;AAAA,YAC5E;AAAA,YACA,UAAU,eAAe,WAAW;AAAA,UACtC;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,IAGA,CAAC,aAAaA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACb,cAAW;AAAA,QACX,OAAO;AAAA,UACL,UAAU;AAAA,UACV,MAAM;AAAA,UACN,KAAK;AAAA,UACL,WAAW;AAAA,UACX,QAAQ;AAAA,QACV;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ,EAAA,CAAA;AAEJ,CAAC;AC3KY,MAAA,cAAc,KAAK,CAC9B,UAIG;AACG,QAAA,EAAE,eAAe,YAAgB,IAAA;AACvC,QAAM,MAAM;AAEZ,SACE,MACKA,kCAAA,IAAA,qBAAA,EAAoB,KAAU,eAA8B,aAA0B,IACvF;AAER,CAAC;ACTY,MAAA,YAAY,KAAK,CAC5B,UAQG;AACH,QAAM,EAAE,eAAe,aAAa,GAAG,SAAS;AAC1C,QAAA,SAAS,eAAe,WAAW;AACnC,QAAA,UAAU,eAAe,YAAY;AAGzC,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AC9BY,MAAA,UAAU,KAAK,CAAC,UAKvB;AACE,QAAA,EAAE,QAAQ,KAAS,IAAA;AACzB,QAAM,CAAC,WAAW,YAAY,IAAI,iBAAiB;AAEnD,QAAM,cAAc;AAEpB,QAAM,SAAS;AAET,QAAA,kBAAkB,YAAY,MAAM;AACxC,iBAAa,KAAK,EAAE;AAAA,EAAA,GACnB,CAAC,MAAM,YAAY,CAAC;AAEjB,QAAA,mBAAmB,YAAY,MAAM;AACzC,iBAAa,MAAS;AAAA,EAAA,GACrB,CAAC,YAAY,CAAC;AAEjB,QAAM,WAAW,QAAQ,MAAM,KAAK,QAAO,2CAAa,KAAI,CAAC,2CAAa,IAAI,KAAK,EAAE,CAAC;AAEtF,QAAM,UAAU,cAAc,KAAK,MAAM,KAAK,OAAM,2CAAa;AAE3D,QAAA,cAAc,YAAY,MAAM;AACpC,YAAQ,OAAO,IAAI;AAAA,EAAA,GAClB,CAAC,MAAM,MAAM,CAAC;AAEX,QAAA,sBAAsB,QAAQ,MAAM;AACxC,QAAI,UAAU;AACL,aAAA;AAAA,IACT;AAEA,WAAO,UAAU,mBAAmB;AAAA,EAAA,GACnC,CAAC,SAAS,QAAQ,CAAC;AAEhB,QAAA,gBAAgB,QAAQ,MAAM;AAClC,QAAI,UAAU;AACL,aAAA;AAAA,IACT;AAEA,WAAO,UAAU,qBAAqB;AAAA,EAAA,GAErC,CAAC,SAAS,QAAQ,CAAC;AAGpB,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,YAAY;AAAA,MACd;AAAA,MACA,aAAa;AAAA,MACb,cAAc;AAAA,MACd,SAAS;AAAA,MAGT,UAAAD,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WACE;AAAA,YACE;AAAA,YACA;AAAA,YACA,YAAY;AAAA,UACd;AAAA,UAGF,UAAA;AAAA,YAAAC,kCAAAA,IAAC,SAAI,WAAU,QACZ,wCAAM,WAAS,6BAAM,KAAK,eAC7B,CAAA;AAAA,YACAD,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,KAAK;AAAA,kBACL,OAAO;AAAA,gBACT;AAAA,gBAEA,UAAA;AAAA,kBAAAC,kCAAA,IAAC,WAAQ,EAAA,QAAO,iBAAgB,WAAW,eAAe;AAAA,kBACzDA,kCAAA,IAAA,QAAA,EAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,WAAU,kBAAiB,aAAY,KAAI;AAAA,kBAC7EA,kCAAA,IAAA,QAAA,EAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,WAAU,kBAAiB,aAAY,KAAI;AAAA,gBAAA;AAAA,cAAA;AAAA,YACjF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AC9FM,SAAS,iBAAiB;AAC/B,QAAM,cAAc;AACpB,QAAM,UAAU;AAChB,QAAM,YAAY,YAAY,CAAC,MAAiB,UAAuB;AACrE,QAAI,KAAK,UAAU;AACX,YAAA,SAAS,QAAQ,KAAK,QAAQ;AACpC,UAAI,QAAQ;AACJ,cAAA,OAAO,GAAG,GAAG,MAAM;AACzB,kBAAU,QAAQ,KAAK;AAAA,MACzB;AAAA,IACF;AAAA,EAAA,GACC,CAAC,OAAO,CAAC;AAEN,QAAA,YAAY,QAAQ,MAAM;AAC9B,UAAM,QAAqB,CAAA;AAC3B,QAAI,aAAa;AACf,YAAM,KAAK,WAAW;AACtB,gBAAU,aAAa,KAAK;AAAA,IAC9B;AACO,WAAA;AAAA,EAAA,GACN,CAAC,WAAW,WAAW,CAAC;AAEpB,SAAA;AACT;ACtBa,MAAA,WAAW,KAAK,CAC3B,UAKG;AACH,QAAM,EAAE,WAAW,GAAG,MAAA,IAAU;AAChC,QAAM,QAAQ;AAGZ,SAAA,MAAM,SAAS,IACXA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACD,WAAW,GAAG,oBAAoB,SAAS;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,eAAe;AAAA,QACf,UAAU;AAAA,QACV,WAAW;AAAA,MACb;AAAA,MACC,GAAG;AAAA,MAGF,UAAM,MAAA,IAAI,CAAC,MAAM,UAAU;AAClB,eAAAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEN;AAAA,YACA,QAAQ,MAAM,SAAS;AAAA,YACvB,OAAO,UAAU;AAAA,YACjB,MAAM,MAAM,WAAY,QAAQ;AAAA,UAAA;AAAA,UAJ3B,KAAK;AAAA,QAAA;AAAA,MAKZ,CACD;AAAA,IAAA;AAAA,EAGH,IAAA;AAER,CAAC;ACzCY,MAAA,eAAe,KAAK,MAAM;AACrC,+CACG,OAAM,EAAA,WAAU,uCACf,UAAAA,kCAAAA,IAAC,YAAS,EACZ,CAAA;AAEJ,CAAC;ACEM,SAAS,eACd,OAKA;AACA,QAAM,EAAE,eAAe,aAAa,WAAA,IAAe;AAC7C,QAAA,WAAW,eAAe,aAAa;AAC7C,QAAM,QAAQ;AAEd,SAIMD,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAF,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UAAU,aAAa,SAAS;AAAA,QAEhC,iDAAC,kBACC,EAAA,UAAA;AAAA,UAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,gBAAgB,+BAAO;AAAA,cACvB,aAAa,+BAAO;AAAA,cACpB;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,YALK;AAAA,UAMP;AAAA,gDACC,aAAY,EAAA;AAAA,QAAA,GACf;AAAA,MAAA;AAAA,IACF;AAAA,IACD,aAAa,SAAS,UAAUA,kCAAAA,IAAC,cAAa,CAAA,CAAA;AAAA,EACjD,EAAA,CAAA;AAEJ;AC7CO,MAAM,cAAc;ACQ3B,SAAS,WAAW,KAAqB;AACvC,SAAO,OAAO,GAAG;AACnB;AAGO,SAAS,aAAa,UAAmB;AAC9C,SAAO,qCAAU,QAAQ,WAAA,iBAAA,GAAkB,GAAA,OAAO;AACpD;AAMO,SAAS,qBAAqB;AAE7B,QAAA,aAAa,YAAY,CAAC,UAAmC;AACjE,QAAI,OAAO;AACX,eAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AAC9B,YAAA,QAAQ,MAAM,GAAG;AACnB,UAAA,SAAS,QAAQ,cAAc,UAAU;AACvC,YAAA,YAAY,aAAa,MAAM;AAC5B,eAAA;AAET,UAAI,SAAS,KAAK,KAAK,QAAQ,KAAK,GAAG;AAC9B,eAAA,OAAO,IAAI,MAAM,KAAK,WAAW,GAAG,KAAK,UAAU,KAAK,CAAC;AAAA,MAAA,WACvD,UAAU,MAAM;AAClB,eAAA,OAAO,IAAI,MAAM;AAAA,MAAA,WACf,UAAU,OAAO;AAG1B;AAAA,MACS,WAAA,UAAU,UAAa,UAAU,MAAM;AACzC,eAAA,OAAO,IAAI,MAAM,KAAK,WAAW,+BAAO,UAAU,CAAC;AAAA,MAC5D;AAAA,IACF;AACO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEL,QAAM,WAAW,YAAY,CAAC,KAAa,MAAqC,SAAkB;;AAChG,QAAI,OAAO;AAEL,UAAA,aAAWR,MAAA,6BAAM,kBAAN,gBAAAA,IAAqB,WAAW,qCAAoC,2BAA2B,aAAa,6BAAM,aAAa;AAChJ,QAAI,aAAa,cAAc;AAC7B,aAAO,OAAO,GAAG,GAAG,GAAG,KAAK,IAAI;AAAA;AACzB,aAAA;AAAA,IACT;AAEA,UAAM,WAAW,YAAW,6BAAM,UAAS,CAAE,CAAA;AAC7C,UAAM,WAAW,OAAO,YAAY,IAAI,MAAM;AACxC,UAAA,gBAAe,6BAAO,eAAc,gBAAgB,6BAAO,WAAW,MAAM;AAC5E,UAAA,SAAQ,6BAAO,YAAW,YAAY,KAAK,UAAU,6BAAO,QAAQ,CAAC,MAAM;AAC3E,UAAA,WAAU,6BAAO,cAAa,cAAc,KAAK,UAAU,6BAAO,UAAU,CAAC,MAAM;AAEzF,WAAO,OAAO,GAAG,GAAG,IAAI,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,EAAE,GAAG,KAAK,GAAG,OAAO;AAAA;AAE7F,eAAW,OAAO,OAAO,MAAK,6BAAM,UAAS,CAAA,CAAE,GAAG;AAC1C2J,YAAAA,SAAO1J,MAAA,6BAAM,UAAN,gBAAAA,IAAc;AAC3B,UAAI0J,OAAM;AACR,gBAAQ,SAAS,MAAM,KAAMA,OAAM,GAAG;AAAA,MACxC;AAAA,IACF;AAEA,WAAO,SAAOzJ,MAAA,6BAAM,aAAN,gBAAAA,IAAgB,IAAI,CAAS,UAAA;AAClC,aAAA,SAAS,MAAM,KAAM,KAAK;AAAA,IAAA,GAChC,KAAK;AAER,WAAO,OAAO,GAAG,GAAG,KAAK,QAAQ;AAAA;AAE1B,WAAA;AAAA,EAAA,GACN,CAAC,UAAU,CAAC;AAET,QAAA,QAAQ,YAAY,CAAC,SAAgD;AACzE,QAAI,OAAO;AACX,eAAW,UAAS,6BAAM,aAAY,CAAA,GAAI;AAChC,cAAA,SAAS,IAAI,KAAK;AAAA,IAC5B;AACO,WAAA;AAAA,EAAA,GACN,CAAC,QAAQ,CAAC;AAEN,SAAA;AACT;AC9EA,SAAS,aAAa,KAAqB;AACzC,SAAO,OAAO,GAAG;AACnB;AA0BA,MAAM,eAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,aAAa,UAAkB;AACtC,SAAA,qCAAU,QAAQ,aAAa,CAACd,OAAMA,GAAE,CAAC,EAAE,YAAA;AACpD;AAEO,SAAS,gBAAgB,UAAkB;AAC1C,QAAA,SAAS,aAAa,QAAQ;AAC7B,SAAA,SAAS,OAAO,OAAO,CAAC,EAAE,YAAgB,IAAA,OAAO,MAAM,CAAC,IAAI;AACrE;AAEO,SAAS,qBAAqB;AACnC,QAAM,aAAa;AACb,QAAA,mBAAmB,YAAY,CAAC,SAAoB;AACxD,UAAM,WAAW,KAAK;AAEtB,QAAI,gBAAgB,SAAS;AAEvB,UAAA,SAAS,kBAAkB,MAAM,0BAA0B;AACvDwK,cAAAA,QAAO,KAAK,aAAa,MAAM;AACrC,YAAIA,OAAM;AACR,iBAAO,2BAA2BA,KAAI;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAEM,UAAA,OAAO,SAAS;AAChB,UAAA,YAAY,gBAAgB,IAAI;AAElC,QAAA,aAAa,WAAW,SAAS,GAAG;AAC/B,aAAA;AAAA,IACT;AACO,WAAA;AAAA,EAAA,GACN,CAAC,UAAU,CAAC;AAET,QAAA,eAAe,YAAY,CAAC,SAAoB;;AACpD,UAAM,aAA0B;AAAA,MAC9B,eAAe,iBAAiB,IAAI;AAAA,MACpC,OAAO,CAAC;AAAA,MACR,OAAO,CAAC;AAAA,MACR,UAAU,CAAC;AAAA,IAAA;AAEb,QAAI,gBAAgB,SAAS;AAC3B,YAAM,KAAK,KAAK,UAAU,EAAE,QAAQ,CAAC,SAAS;AAC5C,YAAI,WAAW,KAAK;AACpB,YAAI,YAAuC,KAAK;AAGhD,YAAI,aAAa,WAAW,SAAS,kBAAA,MAAwB,aAAa;AAC7D,qBAAA;AAAA,QACF,WAAA,CAAC,aAAa,SAAS,QAAQ,GAAG;AAE3C,qBAAW,aAAa,QAAQ;AAAA,QAClC;AACA,YAAI,aAAa,SAAS;AACxB;AAAA,QACF;AAEA,YAAI,aAAa,SAAS;AACZ,sBAAA,KAAK,MAAM,MAAM,GAAG,EAAE,OAAO,CAAC,UAAU,cAAc;AAChE,kBAAM,CAAC,UAAU,KAAK,IAAI,UAAU,MAAM,GAAG;AACzC,gBAAA,CAAC,YAAY,CAAC;AAAc,qBAAA;AAChC,mBAAO,EAAE,GAAG,UAAU,CAAC,aAAa,SAAS,KAAK,CAAC,CAAC,GAAG,MAAM,KAAA;UAC/D,GAAG,CAAE,CAAA;AAAA,QACP;AACI,YAAA,KAAK,UAAU,IAAI;AACV,qBAAA,MAAO,QAAQ,IAAI;AAAA,QAAA,WACrB,aAAa,YAAY;AAClC,qBAAW,UAAU,IAAI;AAAA,QAAA,WACjB,aAAa,SAAS;AAC9B,qBAAW,OAAO,IAAI,YAAY,KAAK,MAAM,SAAmB,IAAI;AAAA,QAAA,WAC3D,aAAa,WAAW;AACjC,qBAAW,SAAS,IAAI,YAAY,KAAK,MAAM,SAAmB,IAAI;AAAA,QAAA,WAC7D,SAAS,SAAS,KAAK,UAAU,WAAW,WAAW,GAAG;AACxD,qBAAA,MAAO,QAAQ,IAAI,KAAK,MAAM,UAAU,UAAU,YAAY,MAAM,CAAC;AAAA,QAAA,WACvE,SAAS,SAAS,GAAG;AAC9B,qBAAW,MAAO,QAAQ,IAAI,aAAa,SAAS;AAAA,QAAA,OAC/C;AACM,qBAAA,MAAO,QAAQ,IAAI;AAAA,QAChC;AAAA,MAAA,CACD;AAEI,WAAA,WAAW,QAAQ,CAAC,cAAc;AACrC,cAAM,EAAE,OAAO,SAAS,IAAI,aAAa,SAAS;AAClD,YAAI,YAAY,OAAO;AACV,qBAAA,MAAO,QAAQ,IAAI;AAAA,mBACrB,OAAO;AACL,qBAAA,SAAU,KAAK,KAAK;AAAA,QACjC;AAAA,MAAA,CACD;AACD,aAAO,EAAE,OAAO,YAAY,UAAU,KAAK,aAAa,QAAQ;IAAE,WACzD,gBAAgB,UAAQ5J,MAAA,KAAK,gBAAL,gBAAAA,IAAkB,SAAQ;AAC3D,iBAAW,SAAOC,MAAA,KAAK,gBAAL,gBAAAA,IAAkB,WAAU;AACvC,aAAA,EAAE,OAAO;IAClB;AACA,WAAO;EAAC,GACP,CAAC,gBAAgB,CAAC;AAEf,QAAA,QAAQ,YAAY,CAAC,SAAiB;AAC1C,UAAM,QAAuB,CAAA;AACvB,UAAA,MAAM,SAAS,cAAc,MAAM;AACzC,QAAI,YAAY;AAEZ,QAAA,WAAW,QAAQ,CAAC,UAAU;AAChC,YAAM,EAAE,OAAO,KAAK,IAAI,aAAa,KAAK;AAC1C,UAAI,MAAM;AACR,cAAM,KAAK,IAAI;AAAA,MACjB;AAAA,IAAA,CACD;AAEM,WAAA;AAAA,EAAA,GACN,CAAC,YAAY,CAAC;AAEV,SAAA;AACT;ACtJA,SAAS,SAA4C,MAAS,MAAgD;AACxG,MAAA;AACJ,SAAO,IAAI,SAAwB;AACjC,QAAI,SAAS;AACX,mBAAa,OAAO;AAAA,IACtB;AACA,cAAU,WAAW,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI;AAAA,EAAA;AAElD;AAEa,MAAA,eAAe,KAAK,MAAM;AACrC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,EAAE;AACvC,QAAA,WAAW,eAAe,aAAa;AAC7C,QAAM,MAAM;AACZ,QAAM,cAAc;AACpB,QAAM,cAAc;AACd,QAAA,WAAW,OAAO,KAAK;AAC7B,WAAS,UAAU;AAInB,YAAU,MAAM;AACR,UAAA,OAAO,2BAAK;AACd,QAAA,aAAa,SAAS,MAAM;AACrB,eAAA,YAAY,IAAI,CAAC;AAAA,IAC5B;AAAA,EACC,GAAA,CAAC,KAAK,aAAa,QAAQ,CAAC;AAGzB,QAAA,eAAe,SAAS,CAACU,WAAmB;AAChD,UAAM,WAAWA,UAAS;AAEpB,UAAA,WAAW,YAAY,QAAQ;AAChC,+BAAA,OAAO,sBAAsB;AAClC,+BAAK,YAAY,IAAI,YAAY,EAAG,IAAI;AAAA,KACvC,GAAG;AAGJ,SAAA,aAAa,SAAS,QAAQH,kCAAA,IAAC,YAAS,UAAU,aAAa,SAAS,MACtE,UAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,UAAS;AAAA,MACT,OAAO;AAAA,MACP;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,EAEd,EAAA,CAAA;AAEJ,CAAC;AC/CY,MAAA,aAAa,KAAK,CAC7B,UAGG;AACG,QAAA,EAAE,YAAgB,IAAA;AACxB,QAAM,MAAM;AACZ,QAAM,CAAC,WAAW,YAAY,IAAI,SAA0B,IAAI;AAChE,QAAM,YAAY;AAClB,QAAM,QAAQ;AACR,QAAA,UAAU,eAAe,YAAY;AACrC,QAAA,SAAS,eAAe,WAAW;AACnC,QAAA,cAAc,eAAe,gBAAgB;AACnD,QAAM,cAAc;AACd,QAAA,YAAY,eAAe,cAAc;AACzC,QAAA,kBAAkB,eAAe,oBAAoB;AAEvC,sBAAA,WAAW,QAAQ,OAAO;AACxC,QAAA,gBAAgB,QAAQ,MAAM;AAC3B,WAAA;AAAA,MACL,WAAW;AAAA,IAAA;AAAA,EAEf,GAAG,CAAE,CAAA;AAEL,QAAM,cAAc,oBAAoB;AAAA,IACtC,gBAAgB,+BAAO;AAAA,IACvB,aAAa,+BAAO;AAAA,EAAA,CACrB;AAED,YAAU,MAAM;AACd,QAAI,WAAW;AACb,YAAMkJ,OAAM;AACN,YAAA3B,SAAQ,SAAS,cAAc,OAAO;AAC5C2B,WAAI,KAAK,OAAO3B,MAAK;AAErB,aAAO,MAAM;AACX,QAAAA,OAAM,OAAO;AAAA,MAAA;AAAA,IAEjB;AAAA,EAAA,GACC,CAAC,SAAS,CAAC;AAER,QAAA,aAAa,YAAY,MAAM;;AACnC,UAAM,WAAS9H,OAAAD,MAAA,UAAU,YAAV,gBAAAA,IAAmB,kBAAnB,gBAAAC,IAAkC,aAAY;AAC7D,iBAAa,MAAM;AAAA,EACrB,GAAG,CAAE,CAAA;AAGC,QAAA,kBAAkB,YAAY,CAAC,SAAmC;;AACtE,cAAU,UAAU,QAAQ;AAC5B,UAAM,WAASA,OAAAD,MAAA,UAAU,YAAV,gBAAAA,IAAmB,kBAAnB,gBAAAC,IAAkC,aAAY;AAC7D,iBAAa,MAAM;AAAA,EACrB,GAAG,CAAE,CAAA;AAEC,QAAA,aAAa,2BAAK;AAEtB,QAAM,cAAc,eAAe;AACrC,SAGMM,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IACA,OAAAH,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,cAAW;AAAA,QACX,OAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,SAAS,YAAY,IAAI;AAAA,QAC3B;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,QAGL,UAAA;AAAA,YAAA,mDAAiB,UAAS,YAAY,mBAAkB,mDAAiB,UAAS,YAAY,SAC/F,aAAa,eAAe,aAAa,UAAU,eAAe,WAAW,KAAK,SAAS;AAAA,YACzFC,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,QAAQ;AAAA,gBACR,aAAa,MAAM;AAAA,gBACnB,UAAU;AAAA,cAAA;AAAA,YACZ;AAAA,YACA,UAAU,eAAe,WAAW;AAAA,UACtC;AAAA,UAGC,aAAa,eAAe,UAAU,eAAe,WAAW,KAAK,SAAS;AAAA,YAC7EA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,QAAQ;AAAA,gBACR;AAAA,cAAA;AAAA,YACF;AAAA,YACA,UAAU,eAAe,WAAW;AAAA,UACtC;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,IAGA,CAAC,aAAaA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACb,cAAW;AAAA,QACX,WAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EAEJ,EAAA,CAAA;AAEJ,CAAC;AC5GM,SAAS,gBACd,OAGA;AACM,QAAA,EAAE,YAAgB,IAAA;AAClB,QAAA,WAAW,eAAe,aAAa;AAG3C,SAAA,aAAa,SAAS,WAAWA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MAChC,UAAU,aAAa,SAAS;AAAA,MAEhC,iDAAC,kBACC,EAAA,UAAA;AAAA,QAAAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,UAAA;AAAA,QACF;AAAA,8CACC,aAAY,EAAA;AAAA,MAAA,GACf;AAAA,IAAA;AAAA,EAAA;AAGN;ACxBO,SAAS,aAAa;AAC3B,QAAM,UAAU;AAChB,QAAM,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,kBAAkB;AAElD,QAAA,oBAAoB,YAAY,MAAM;AAC1C,QAAI,mCAAS,IAAI;AACf,cAAQ,IAAI,cAAc;AACd,kBAAA;AAAA,QACV,MAAM,QAAQ,OAAO;AAAA,QACrB,YAAY;AAAA,UACV,MAAM,EAAE,IAAI,QAAQ,GAAG;AAAA,QACzB;AAAA,QACA,SAAS;AAAA,UACP,MAAM,EAAE,IAAI,QAAQ,GAAG;AAAA,QACzB;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EAAA,GACC,CAAC,aAAa,mCAAS,IAAI,mCAAS,IAAI,CAAC;AAEpC,SAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,gFACrB,UAAA;AAAA,IAAAC,kCAAAA,IAAC,OAAE,UAAiB,oBAAA,CAAA;AAAA,IACpBA,kCAAA;AAAA,MAACkI;AAAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS;AAAA,QACV,UAAA;AAAA,MAAA;AAAA,IAED;AAAA,EACF,EAAA,CAAA;AACF;ACnCO,SAAS,UAAU;AAEtB,SAAAnI,kCAAA,KAAC,OAAI,EAAA,WAAU,0EACb,UAAA;AAAA,IAACC,kCAAA,IAAA,MAAA,EAAG,WAAU,YAAW,UAAO,WAAA;AAAA,IAChCA,kCAAAA,IAAC,OAAE,UAAyB,4BAAA,CAAA;AAAA,EAC9B,EAAA,CAAA;AAEJ;ACEO,SAAS,UAAU,OAIvB;;AACD,QAAM,EAAE,WAAW,iBAAiB,gBAAA,IAAoB;AACxD,QAAM,OAAO;AACb,QAAM,YAAY;AACZ,QAAA,YAAY,kBAAkB,WAAW;AAEzC,QAAA,eAAe,YAAY,CAAC,OAAsB;;AAChD,UAAA,QAAOR,MAAA,6BAAM,UAAN,gBAAAA,IAAa,KAAK,CAAC,SAAS,KAAK,OAAO;AACrD,QAAI,IAAI;AACN,gBAAU,KAAK;AACG,yDAAA;AAAA,QAChB;AAAA,QACA,MAAM,YAAY;AAAA,QAClB,aAAa,CAAC,UAAS,6BAAM,UAAS,EAAE;AAAA,MAAA;AAAA,IAE5C;AAAA,KAEC,CAAC,6BAAM,OAAO,iBAAiB,SAAS,CAAC;AAEtC,QAAA,gBAAe,mDAAiB,UAAS,YAAY;AAGzD,SAAAO,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,MAAM;AAAA,MACN,kBAAiB,mDAAiB,UAAS,YAAY,mBAAkB,mDAAiB,UAAS,YAAY;AAAA,MAC/G,YAAY;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,aAAW;AAAA,MACX,QACEC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,OAAM;AAAA,UACP,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MAgBA,UAAA;AAAA,QAAA,CAAC,aAAa,GAACR,MAAA,6BAAM,UAAN,gBAAAA,IAAa,WAAUQ,kCAAA,IAAC,cAAW,UAAQ,YAAA;AAAA,QAE5DA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,YAAY,eAAe,mDAAiB,KAAK;AAAA,YACjD,UAAU;AAAA,UAAA;AAAA,QACZ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;ACzDO,SAAS,mBAAmB,OAAoC;;AACrE,QAAM,EAAE,iBAAiB,WAAW,OAAO,UAAU,UAAU,cAAkB,IAAA;AACjF,QAAM,CAAC,MAAM,OAAO,IAAInB,eAAM,SAAkB,KAAK;AACrD,QAAM,QAAQ;AAEd,QAAM,CAAC,QAAQ,EAAE,YAAY,SAAU,CAAA,IAAI;AAE3C,QAAM,CAAC,MAAM,EAAE,WAAA,CAAY,IAAI;AAAA,IAC7B;AAAA,MACE,UAAU,OAAO;AACf,gBAAQ,KAAK;AACb,8CAAW,+BAAO,OAAM,MAAM,OAAO;AAAA,MACvC;AAAA,IACF;AAAA,EAAA;AAGI,QAAA,eAAcW,MAAA,+BAAO,UAAP,gBAAAA,IAAc,OAAO,CAAC,SAAS,KAAK,aAAa;AAErE,OAAI,2CAAa,WAAU,YAAY,SAAS,GAAG;AACjD,YAAQ,KAAK,gEAAgE;AAAA,EAC/E;AAEM,QAAA,OAAO,2CAAc;AAE3B,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,MAAM;AACT,cAAQ,IAAI;AAAA,IAAA,OACP;AACL,2CAAW,KAAK,MAAM,MAAM,OAAO;AAAA,IACrC;AAAA,EAAA;AAGF,QAAM,eAAe,MAAM;AACpB,SAAA;AAAA,MACH,SAAS,EAAE,MAAM,EAAE,IAAI,YAAY;AAAA,MACnC;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA;AAGG,QAAA,OAAO,QAAQ,MAAM;AACzB,YAAQ,UAAU;AAAA,MAChB,KAAK,SAAS;AACL,eAAAQ,kCAAA,IAAC,WAAU,EAAA,WAAU,SAAS,CAAA;AAAA,MAEvC,KAAK,SAAS;AACL,eAAAA,kCAAA,IAAC,UAAS,EAAA,WAAU,SAAS,CAAA;AAAA,MACtC;AACS,eAAA;AAAA,IACX;AAAA,EAAA,GACC,CAAC,QAAQ,CAAC;AAEb,SAEID,kCAAA,KAAAG,4BAAA,EAAA,UAAA;AAAA,IAAAF,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QAET,UAAAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU,mDAAiB,SAAO,6BAAM,OAAM,CAAC,EAAC,6BAAM;AAAA,YACtD,SAAS;AAAA,YACT,WACE,GAAG,YAAW,6BAAM,MAAK,KAAK,kBAAkB;AAAA,YAElD;AAAA,YACA,SACE,OACIA,kCAAA;AAAA,cAACkI;AAAAA,cAAA;AAAA,gBACD,MAAK;AAAA,gBACL,WAAW;AAAA,gBACX,YAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,SAAS,CAAC,MAAM;AACd,oBAAE,gBAAgB;AACb,uBAAA,MAAM,OAAO,KAAK,EAAE;AACrB,uBAAA,mDAAiB,QAAO,KAAK,IAAI;AACxB,yDAAA,MAAM,IAAI;AAAA,kBACvB;AAAA,gBACF;AAAA,gBAEA,UAAAlI,kCAAAA,IAAC,YAAW,EAAA,WAAU,0BAA0B,CAAA;AAAA,cAAA;AAAA,YAEhD,IAAA;AAAA,YAGL,UAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IACF;AAAA,IACAA,kCAAAA,IAAC,OAAM,EAAA,QAAQ,MAAM,SAAS,MAAM,QAAQ,KAAK,GAC/C,UAAAD,kCAAA,KAAC,cACC,EAAA,UAAA;AAAA,MAAAA,uCAAC,aAAY,EAAA,UAAA;AAAA,QAAA;AAAA,QACR;AAAA,QAAM;AAAA,MAAA,GACX;AAAA,4CACC,SAAQ,EAAA;AAAA,6CACR,WACE,EAAA,UAAA;AAAA,QAAA;AAAA,QAAM;AAAA,MAAA,GACT;AAAA,6CACC,aACC,EAAA,UAAA;AAAA,QAAAC,kCAAA;AAAA,UAACkI;AAAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,WAAW;AAAA,YACX,SAAS;AAAA,YACV,UAAA;AAAA,UAAA;AAAA,QAED;AAAA,QACAlI,kCAAA;AAAA,UAACkI;AAAAA,UAAA;AAAA,YACC,SAAS,MAAM,QAAQ,KAAK;AAAA,YAC7B,UAAA;AAAA,UAAA;AAAA,QAED;AAAA,MAAA,GACF;AAAA,IAAA,EAAA,CACF,EACF,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;AC/HA,MAAM,kBAAkB;AAAA,EACtB;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,UAAU,SAAS;AAAA,EACrB;AACF;AAEO,SAAS,gBACd,OAKA;AACA,QAAM,EAAE,WAAW,iBAAiB,gBAAA,IAAoB;AAClD,QAAA,YAAY,kBAAkB,WAAW;AAC/C,QAAM,eAAe,CAAC,IAA+B,OAAe,aAAuB;AACzF,QAAI,IAAI;AACF,UAAA,aAAa,SAAS,MAAM;AAC9B,kBAAU,IAAI;AAAA,MAAA,OACT;AACL,kBAAU,KAAK;AAAA,MACjB;AACA,YAAM,cAAc,aAAa,SAAS,QAAQ,YAAY,QAAQ,YAAY;AAEhE,yDAAA;AAAA,QAChB;AAAA,QACA,MAAM;AAAA,QACN,aAAa,CAAC,SAAS,KAAK;AAAA,MAAA;AAAA,IAC7B,OACI;AACL,gBAAU,KAAK;AACf,yDAAkB;AAAA,IACpB;AAAA,EAAA;AAKA,SAAAlI,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,kBAAiB,mDAAiB,UAAS,YAAY,mBAAkB,mDAAiB,UAAS,YAAY;AAAA,MAG7G,UAAA,gBAAgB,IAAI,CAAC,SACnBA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC;AAAA,UACA,OAAO,KAAK;AAAA,UACZ;AAAA,UACA,UAAU;AAAA,UACV,UAAU,KAAK;AAAA,QAAA;AAAA,QALV,KAAK;AAAA,MAAA,CAOb;AAAA,IAAA;AAAA,EAAA;AAIT;ACrFa,MAAA,cAAc,KAAK,CAC9B,UAIG;AACG,QAAA,EAAE,iBAAiB,gBAAoB,IAAA;AAC7C,QAAM,UAAU;AAChB,QAAM,QAAQ;AAER,QAAA,kBAAkB,QAAQ,MAAM;;AAC7B,WAAA,EAAE,QAAOR,MAAA,+BAAO,UAAP,gBAAAA,IAAc,OAAO,CAAC,SAAS,KAAK,aAAa,SAAS,YAAY;AAAA,EAAA,GACrF,CAAC,+BAAO,KAAK,CAAC;AAGf,SAAAO,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MAGG,UAAA;AAAA,SAAA,mCAAS,OAAMC,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACd,YAAY;AAAA,YACZ,MAAM;AAAA,YACP,UAAAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACE,WAAW,QAAQ;AAAA,gBACnB;AAAA,gBACA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QACF;AAAA,SAGA,mCAAS,OACTA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,QAAQ;AAAA,YACnB;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAaR,CAAC;AC5CY,MAAA,UAAU,KAAK,MAAM;;AAC1B,QAAA,kBAAkB,eAAe,oBAAoB;AACrD,QAAA,yBAAyB,kBAAkB,uBAAuB;AACxE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAChC,QAAA,sBAAsB,kBAAkB,qBAAqB;AAC7D,QAAA,iBAAiB,kBAAkB,gBAAgB;AAEzD,QAAM,UAAU;AAChB,QAAM,QAAQ;AAER,QAAA,sBAAsB,YAAY,CAAC,YAA8B;;AACrE,YAAQ,KAAK;AACb,qEAAyB;AACzB,SAAI,mCAAS,UAAS,YAAY,SAAQ,mCAAS,UAAS,YAAY,gBAAgB;AACvE,sBAAAR,MAAA,+BAAO,UAAP,gBAAAA,IAAc,KAAK,CAAC,SAAS,KAAK,OAAO,QAAQ,GAAG;AAAA,IAAA,OAC9D;AACL,qBAAe,MAAS;AAAA,IAC1B;AACA,wBAAoB,MAAS;AAAA,EAAA,GAC5B,CAAC,+BAAO,OAAO,qBAAqB,gBAAgB,sBAAsB,CAAC;AAG5E,SAAAO,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MAEX,UAAA;AAAA,QAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,yCACb,UAAA;AAAA,UAAAC,kCAAA;AAAA,YAACkI;AAAAA,YAAA;AAAA,cACC,YAAU;AAAA,cAEV,SAAQ;AAAA,cACR,WAAU;AAAA,cACV,SAAS,MAAM,QAAQ,IAAI;AAAA,cAE3B,UAAAlI,kCAAAA,IAAC,UAAS,EAAA,WAAU,SAAS,CAAA;AAAA,YAAA;AAAA,UAC/B;AAAA,UACAD,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,WAAU;AAAA,cACV,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,SAAS,MAAM,QAAQ,KAAK;AAAA,cAE5B,UAAA;AAAA,gBAACA,kCAAAA,KAAA,aAAA,EAAY,WAAU,aACrB,UAAA;AAAA,kBAAAC,kCAAAA,IAAC,UAAK,UAAI,OAAA,CAAA;AAAA,wDACT,YAAW,EAAA;AAAA,gBAAA,GACd;AAAA,sDACC,SAAQ,EAAA;AAAA,sDACR,WACC,EAAA,UAAAA,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC;AAAA,oBACA,iBAAiB;AAAA,kBAAA;AAAA,gBAAA,GAErB;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA,GACF;AAAA,8CACC,OAAI,EAAA,WAAU,iDACZ,WAAAR,MAAA,EAAC,mCAAS,SAAQ,SAAS,IAAG,mDAAiB,gBAAe,CAAA,CAAE,MAAhE,gBAAAA,IAAmE,KAAK,QAC3E;AAAA,+CACC,OAAI,EAAA,WAAW,GAAG,4CAA4C,eAAe,GAC5E,UAAA;AAAA,UAAAO,kCAAA,KAAC,SAAQ,EAAA,WAAU,UAAS,WAAW,MACrC,UAAA;AAAA,YAAAC,sCAAC,gBACC,EAAA,UAAAA,kCAAA;AAAA,cAACkI;AAAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,YAAalI,kCAAA,IAAA,MAAA,EAAK,MAAK,0BAAyB,WAAU,WAAU;AAAA,gBACrE,UAAA;AAAA,cAAA;AAAA,YAAA,GAGH;AAAA,YACCA,sCAAA,gBAAA,EACC,UAACD,kCAAAA,KAAA,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,cAACC,kCAAA,IAAA,OAAA,EAAI,WAAU,cAAa,UAAG,OAAA;AAAA,cAC9BA,kCAAA,IAAA,OAAA,EAAI,WAAU,cAAa,UAAE,MAAA;AAAA,cAC7BA,kCAAA,IAAA,OAAA,EAAI,WAAU,cAAa,UAAE,MAAA;AAAA,cAC7BA,kCAAA,IAAA,OAAA,EAAI,WAAU,cAAa,UAAI,QAAA;AAAA,YAAA,EAAA,CAElC,EACF,CAAA;AAAA,UAAA,GACF;AAAA,UAGAA,kCAAA;AAAA,YAACkI;AAAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cAET,UAAA;AAAA,YAAA;AAAA,UAED;AAAA,UACAlI,kCAAA;AAAA,YAACkI;AAAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAM;AAAA,cAEP,UAAA;AAAA,YAAA;AAAA,UAED;AAAA,QAAA,GAaF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;ACxHe,SAAA,eAAe,gBAAkC,QAAiC;AAE1F,QAAA,cAAc,QAAQ,MAAM;AACzB,WAAA;AAAA,MACL,cAAc,gBAAgB,MAAM;AAAA,IAAA;AAAA,EACtC,GACC,CAAC,gBAAgB,MAAM,CAAC;AAEpB,SAAA;AACT;ACUO,SAAS,WACd,OAIA;;AACM,QAAA,EAAE,eAAe,WAAe,IAAA;AACtC,QAAM,CAAC,YAAY,aAAa,IAAI,eAAe,eAAe;AAClE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,eAAe,qBAAqB;AACpF,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,eAAe,mBAAmB;AAClF,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AACtD,QAAM,QAAQ;AACR,QAAA,kBAAkB,eAAe,oBAAoB;AAC3D,QAAM,aAAa,CAAC;AAEd,QAAA,gBAAgB,CAAC,mBAAmB,CAAC;AACrC,QAAA,aAAa,CAAC,CAAC;AAErB,QAAM,QAAQ;AAER,QAAA,oBAAoB,+BAAO,KAAK,CAAK,MAAA,EAAE,QAAO,mDAAiB,QAAM,mDAAiB,UAAS,YAAY;AAEjH,YAAU,MAAM;AACV,QAAA,qBAAqB,CAAC,kBAAkB;AAC1C,0BAAoB,iBAAiB;AAAA,IACvC;AAAA,EACC,GAAA,CAAC,mBAAmB,kBAAkB,mBAAmB,CAAC;AAE7D,QAAM,CAAC,KAAK,MAAM,IAAI,SAAoB;AAC1C,QAAM,SAAS;AACf,QAAM,SAAS;AACf,SAAO,UAAU;AAEjB,QAAM,cAAc,eAAe,uDAAmB,aAAY1I,MAAA,uDAAmB,UAAnB,gBAAAA,IAA0B,KAAK;AAE3F,QAAAD,UAAS,UAAU,eAAe;AACxC,QAAM,UAAU;AAEhB,YAAU,MAAM;;AACd,QAAI,UAAUA,SAAQ;AACpB,cAAQ,IAAI,aAAa;AACzB,UAAI,OAAO,SAAS;AAClB,eAAO,QAAQ;AACf,eAAO,UAAU;AAAA,MACnB;AACM,YAAA8J,YAAW,OAAO,eAAe;AAAA,QACrC,QAAA9J;AAAA,QACA,IAAI,SAAS,WAAW;AAAA,MAAA,CACzB;AACD,aAAO,WAAW,EAAE,sBAAsB8J,UAAS,EAAE;AACrD,aAAOA,SAAQ;AAAA,IAAA,OACV;AACL,cAAQ,IAAI,aAAa;AACzB,OAAA7J,MAAA,OAAO,YAAP,gBAAAA,IAAgB;AAChB,aAAO,MAAS;AAAA,IAClB;AAAA,EAAA,GACC,CAAC,QAAQD,OAAM,CAAC;AAEb,QAAA,yBAAyB,YAAY,MAAM;AAC/C,QAAI,CAAC,cAAc;AACjB,oBAAc,MAAS;AAAA,IACzB;AAAA,EAAA,GACC,CAAC,cAAc,aAAa,CAAC;AAEhC,YAAU,MAAM;AACd,UAAM,sBAAsB,iCAAQ,aAAa,4BAA4B;AAC7E,WAAO,MAAM;AACW;AAAA,IAAA;AAAA,EACxB,GACC,CAAC,QAAQ,sBAAsB,CAAC;AAE7B,QAAA,kBAAkB,YAAY,CAAC,OAAuB;;AAC1D,QAAI,QAAQ;AAEV,OAAAC,MAAA,OAAO,SAAS,EAAE,aAAa,MAA/B,gBAAAA,IAAkC;AAClC,YAAM,YAAY,IAAI,cAAc,QAAQ,IAAI,iBAAiB;AAAA,QAC/D;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AACM,OAAAC,MAAA,OAAA,SAAA,MAAA,gBAAAA,IAAY,aAAa;AAAA,IAGlC;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEL,QAAA,0BAA0B,YAAY,MAAM;AAChD,kBAAc,MAAS;AAAA,EAAA,GACtB,CAAC,aAAa,CAAC;AAEZ,QAAA,wBAAwB,YAAY,CAAC,cAA8B;AACvE,wBAAoB,SAAS;AAC7B,wBAAoB,IAAI;AAAA,EAAA,GACvB,CAAC,qBAAqB,mBAAmB,CAAC;AAEvC,QAAA,yBAAyB,YAAY,CAAC,SAA2B;AACrE,QAAI,eAAe,MAAM;AACvB,oBAAc,IAAI;AACd,UAAA,SAAS,iBAAiB,QAAQ;AACpC,wBAAgB,IAAI;AAAA,MAAA,OACf;AACL,wBAAgB,KAAK;AAAA,MACvB;AAAA,IAAA,OACK;AACL,oBAAc,MAAS;AAAA,IACzB;AAAA,EAAA,GACC,CAAC,YAAY,aAAa,CAAC;AAG5B,SAAAM,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW;AAAA,MAEX,UAAA;AAAA,QAAAC,kCAAA,IAAC,SAAQ,EAAA;AAAA,8CACR,cAAa,EAAA,KACZ,UAACD,uCAAA,OAAA,EAAI,WAAU,2DACb,UAAA;AAAA,UAAAC,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,oBAAoB;AAAA,cACpB;AAAA,cACA,oBAAoB;AAAA,YAAA;AAAA,UACtB;AAAA,UACAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,QACED,kCAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO,cAAc,OAAO,UAAU;AAAA,kBACtC,QAAQ,CAAC,CAAC;AAAA,kBACV,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,SAAS;AAAA,kBAET,UAAA;AAAA,oBAAAC,kCAAA,IAAC,aAAY,EAAA,QAAQ,eAAe,iBAAiB,QAAQ;AAAA,oBAC5DA,kCAAA,IAAA,UAAA,EAAS,QAAQ,eAAe,iBAAiB,KAAK;AAAA,oBACtDA,kCAAA,IAAA,UAAA,EAAS,QAAQ,eAAe,iBAAiB,KAAK;AAAA,oBACtDA,kCAAA,IAAA,UAAA,EAAS,QAAQ,eAAe,iBAAiB,KAAK;AAAA,oBACvDA,kCAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,QAAQ,eAAe,iBAAiB;AAAA,wBACxC;AAAA,wBACA,mBAAmB;AAAA,sBAAA;AAAA,oBACrB;AAAA,oBACAA,kCAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,QAAQ,eAAe,iBAAiB;AAAA,wBACxC;AAAA,wBACA,mBAAmB;AAAA,sBAAA;AAAA,oBACrB;AAAA,oBACCA,kCAAA,IAAA,aAAA,EAAY,QAAQ,eAAe,iBAAiB,QAAQ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC/D;AAAA,cAIA,iBAEID,kCAAAA,KAAAG,kBAAA,UAAA,EAAA,UAAA;AAAA,gBAAAF,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC;AAAA,oBACA;AAAA,oBACA;AAAA,kBAAA;AAAA,gBACF;AAAA,sDACC,cAAa,EAAA;AAAA,gBACdA,kCAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA,GACF;AAAA,YAAA;AAAA,UAIN;AAAA,UACC,cAAc,CAAC,WAAWA,sCAAC,YAAW,CAAA,CAAA;AAAA,UACtC,uDAAkB,SAAQ,EAAA;AAAA,UAC1B,oDAAe,YAAW,EAAA;AAAA,QAAA,EAAA,CAC7B,EACF,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIN;AC7LO,MAAM,gBAAgB,MAAM;AACjC,QAAM,UAAU;AAGd,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,mCAAS;AAAA,MAEpB,gDAAC,oBAAmB,EAAA;AAAA,IAAA;AAAA,EAAA;AAG1B;AAEA,SAAS,qBAAqB;AAE5B,SACGA,kCAAA,IAAA,aAAA,EACC,UAACA,kCAAA,IAAA,YAAA,CAAA,CAAW,EACd,CAAA;AAEJ;","x_google_ignoreList":[0,1,2,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97]}