@chamn/engine 0.10.1 → 0.10.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/utils/css.ts","../src/core/assetPackagesListManage.ts","../src/utils/defaultEngineConfig.tsx","../src/utils/logger.ts","../src/utils/index.ts","../src/component/Workbench/index.tsx","../src/i18n/zh_CN/index.ts","../src/i18n/en_US/index.ts","../src/i18n/index.ts","../src/core/pluginManager.ts","../src/plugins/ComponentLibrary/localize/zh_CN/index.ts","../src/plugins/ComponentLibrary/localize/en_US/index.ts","../src/plugins/ComponentLibrary/localize/index.ts","../src/plugins/ComponentLibrary/components/DragItem/index.tsx","../src/plugins/ComponentLibrary/components/ListView/index.tsx","../src/plugins/ComponentLibrary/util.ts","../src/plugins/ComponentLibrary/index.tsx","../src/plugins/Designer/config.ts","../src/plugins/Designer/localize/zh_CN/index.ts","../src/plugins/Designer/localize/en_US/index.ts","../src/plugins/Designer/localize/index.ts","../src/plugins/Designer/components/DefaultSelectToolBar/index.tsx","../src/plugins/Designer/util.ts","../src/plugins/Designer/components/GhostView/index.tsx","../src/plugins/Designer/components/Canvas/advanceCustomHook.ts","../src/plugins/Designer/components/Canvas/index.tsx","../src/plugins/Designer/index.tsx","../src/plugins/OutlineTree/util.tsx","../src/plugins/OutlineTree/components/TreeView/context.ts","../src/plugins/OutlineTree/components/TreeView/treeNode.tsx","../src/plugins/OutlineTree/components/TreeView/index.tsx","../src/plugins/OutlineTree/localize/zh_CN/index.ts","../src/plugins/OutlineTree/localize/en_US/index.ts","../src/plugins/OutlineTree/localize/index.ts","../src/plugins/OutlineTree/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/config.ts","../src/component/CustomSchemaForm/components/Form/context.ts","../src/component/CustomSchemaForm/components/Form/index.tsx","../src/component/CustomSchemaForm/components/Setters/StringSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/NumberSetter/index.tsx","../src/component/CustomSchemaForm/utils.ts","../src/component/CustomSchemaForm/components/Setters/ArraySetter/ArrayItem.tsx","../src/component/CustomSchemaForm/components/Setters/ArraySetter/SortItemOrderModal.tsx","../src/component/CustomSchemaForm/components/Setters/ArraySetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/ShapeSetter/index.tsx","../src/component/MonacoEditor/index.tsx","../src/component/CustomSchemaForm/components/Setters/FunctionSetter/defaultDts.ts?raw","../src/component/CustomSchemaForm/components/Setters/FunctionSetter/helper.ts","../src/component/CustomSchemaForm/components/Setters/ExpressionSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/BooleanSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/SelectSetter/index.tsx","../src/component/MoveableModal/index.tsx","../src/component/CustomSchemaForm/components/Setters/JSONSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/FunctionSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/TextAreaSetter/index.tsx","../src/component/CSSPropertiesEditor/cssProperties.ts","../src/component/CustomSchemaForm/components/Setters/CSSValueSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/ColorSetter/index.tsx","../src/config/colorPickerColorList.ts","../src/component/CustomSchemaForm/components/Setters/AntDColorSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/SliderSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/RadioGroupSetter/index.tsx","../src/component/InputNumberPlus/index.tsx","../src/component/CSSSizeInput/index.tsx","../src/component/CustomSchemaForm/components/Setters/CSSSizeSetter/index.tsx","../src/component/StylePanel/DimensionInput/index.tsx","../src/component/StylePanel/MarginAndPaddingInput/index.tsx","../src/component/CustomColorPicker/index.tsx","../src/component/StylePanel/FontInput/index.tsx","../src/component/StylePanel/BorderInput/index.tsx","../src/component/StylePanel/BackgroundInput/index.tsx","../src/component/StylePanel/ShadowInput/index.tsx","../src/component/CSSCodeEditor/helper.ts","../src/component/CSSCodeEditor/index.tsx","../src/component/StylePanel/index.tsx","../src/component/CustomSchemaForm/components/Setters/FastLayoutSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/EmptyValueSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/index.ts","../src/component/CustomSchemaForm/components/Form/Field/index.tsx","../src/component/CustomSchemaForm/context.ts","../src/component/CustomSchemaForm/components/SetterSwitcher/core.tsx","../src/component/CustomSchemaForm/components/SetterSwitcher/index.tsx","../src/component/CustomSchemaForm/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeByTree/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeByTree/modal.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeByTree/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeState/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/AssignValueNode/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/CreateNewNodePopup/initData.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/CreateNewNodePopup/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/InputHandle/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/OutputHandle/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/NodeCard/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/context.ts","../src/component/CustomSchemaForm/components/CFiledWithSwitchSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/AssignValueNode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/StartNode.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/CallNodeMethodNode/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/CallNodeMethodNode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/JumpLinkNode.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/RequestAPINode/helper.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/RequestAPINode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/RunCodeNode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/index.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/AdvanceSetterList.ts","../src/plugins/PropertyPanel/view.tsx","../src/plugins/PropertyPanel/index.tsx","../src/plugins/ComponentStatePanel/index.tsx","../src/plugins/AdvancePanel/index.tsx","../src/component/CSSPropertiesVariableBindEditor/cssProperties.ts","../src/plugins/RightPanel/context.ts","../src/component/CSSPropertiesVariableBindEditor/SingleProperty.tsx","../src/component/CSSPropertiesVariableBindEditor/index.tsx","../src/component/ClassNameEditor/index.tsx","../src/component/CSSPropertiesEditor/signleProperty.tsx","../src/component/CSSPropertiesEditor/index.tsx","../src/component/CSSEditor/index.tsx","../src/plugins/VisualPanelPlus/index.tsx","../src/plugins/EventPanel/panel.tsx","../src/plugins/EventPanel/index.tsx","../src/plugins/RightPanel/view.tsx","../src/plugins/RightPanel/index.tsx","../src/plugins/GlobalStatePanel/localize/zh_CN/index.ts","../src/plugins/GlobalStatePanel/localize/en_US/index.ts","../src/plugins/GlobalStatePanel/localize/index.ts","../src/plugins/GlobalStatePanel/index.tsx","../src/plugins/DisplaySourceSchema/index.tsx","../src/plugins/History/index.tsx","../src/plugins/Hotkeys/keymap.ts","../src/plugins/Hotkeys/hotKeyManager.ts","../src/plugins/Hotkeys/localize/zh_CN/index.ts","../src/plugins/Hotkeys/localize/en_US/index.ts","../src/plugins/Hotkeys/localize/index.ts","../src/plugins/Hotkeys/action.ts","../src/plugins/Hotkeys/index.ts","../src/plugins/index.tsx","../src/component/DesignerSizer/index.tsx","../src/material/container.meta.ts","../src/material/innerMaterial.tsx","../src/index.tsx"],"sourcesContent":["import { CSSVal } from '@/component/CSSEditor';\nimport { CNodeModelDataType, CSSType, CSSValue, JSExpressionPropType, getRandomStr, isExpression } from '@chamn/model';\nimport Color from 'color';\nimport { isPlainObject } from 'lodash-es';\nimport * as csstree from 'css-tree';\n\nexport type StyleArr = {\n property: string;\n value: any;\n}[];\n\nexport const styleArr2Obj = (val: StyleArr) => {\n const res: Record<string, any> = {};\n val.forEach((item) => {\n res[item.property] = item.value;\n });\n return res;\n};\n\nexport const styleObjToArr = (obj: Record<string, any> = {}) => {\n const res: StyleArr = Object.keys(obj).reduce((tempRes, key) => {\n return [\n ...tempRes,\n {\n property: key,\n value: obj[key],\n },\n ];\n }, [] as StyleArr);\n\n return res;\n};\n\nexport const styleList2Text = (val: StyleArr) => {\n let res = '';\n val.forEach((item) => {\n res += `${item.property}:${item.value};`;\n });\n return res;\n};\n\nexport const formatStyleProperty = (styleList: CNodeModelDataType['style'] = []) => {\n // 遗留数据结构兼容, 正式版本会移除\n if (isPlainObject(styleList)) {\n styleList = Object.keys(styleList).map((key) => {\n return {\n property: key,\n value: (styleList as any)[key],\n };\n });\n }\n const normalProperty: { property: string; value: string }[] = [];\n const expressionProperty: { property: string; value: JSExpressionPropType }[] = [];\n const allProperty: { property: string; value: any }[] = [];\n styleList.forEach((it) => {\n const val = it.value;\n const obj = {\n property: it.property,\n value: val,\n };\n\n allProperty.push(obj);\n if (isExpression(val)) {\n expressionProperty.push({\n ...obj,\n value: val as unknown as JSExpressionPropType,\n });\n } else {\n normalProperty.push({\n ...obj,\n value: val as unknown as string,\n });\n }\n });\n const res = {\n normalProperty,\n expressionProperty,\n allProperty,\n };\n return res;\n};\n\nexport const formatCSSTextProperty = (cssText: string) => {\n // 解析 CSS 代码\n const ast = csstree.parse(`.node {${cssText}}`);\n\n const cssList: { id: string; property: string; value: string }[] = [];\n\n // 遍历 AST 获取属性\n csstree.walk(ast, function (node) {\n if (node.type === 'Declaration') {\n cssList.push({\n id: getRandomStr(),\n property: node.property,\n value: csstree.generate(node.value),\n });\n }\n });\n\n return cssList;\n};\n\nexport const formatCssToNodeVal = (className: string, val: CSSVal): CSSType => {\n type StateType = keyof CSSVal;\n const res: CSSType = {\n class: className,\n value: [],\n };\n const cssList: CSSValue[] = [];\n Object.keys(val).forEach((state) => {\n const currentStateCss = val[state as StateType];\n const tempVal: CSSValue = {\n state: state,\n media: [],\n text: currentStateCss?.['normal'] || '',\n };\n Object.keys(currentStateCss || ({} as any)).forEach((mediaKey) => {\n tempVal.media = tempVal.media || [];\n if (mediaKey !== 'normal') {\n tempVal.media.push({\n type: 'max-width',\n value: mediaKey,\n text: currentStateCss?.[mediaKey] || '',\n });\n }\n });\n cssList.push(tempVal);\n });\n res.value = cssList;\n return res;\n};\n\nexport const formatNodeValToEditor = (val?: CSSType): CSSVal => {\n if (!val) {\n return {};\n }\n const list = val.value;\n const res: CSSVal = {};\n\n list.forEach((el) => {\n const tempStyle = (el as any).style;\n // 遗留数据兼容,正式版本会移除\n if (!el.text && tempStyle) {\n el.text = Object.keys(tempStyle).reduce((cssText, key) => {\n cssText += `${key}: ${tempStyle[key]};`;\n return cssText;\n }, '');\n }\n\n const currentStateCss: Record<string, string> = {\n normal: el.text || '',\n };\n el.media?.forEach((it) => {\n currentStateCss[it.value] = it.text || '';\n });\n res[el.state as keyof CSSVal] = currentStateCss;\n });\n\n return res;\n};\n\nexport const getColorFromStr = (str: string) => {\n // 匹配16进制颜色(包括#号)\n const hexColorPattern = /#(?:[0-9a-fA-F]{3}){1,2}\\b/g;\n\n // 匹配RGBA颜色\n const rgbaColorPattern = /rgba?\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*(?:\\d*\\.\\d+|\\d+\\.\\d*|\\d+)\\s*\\)/g;\n\n // 匹配RGB颜色\n const rgbColorPattern = /rgb?\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)/g;\n\n // 匹配HSB颜色\n const hsbColorPattern = /hsb?\\(\\s*\\d+\\s*,\\s*\\d+%\\s*,\\s*\\d+%\\s*\\)/g;\n const hexColors = str.match(hexColorPattern) || [];\n const rgbaColors = str.match(rgbaColorPattern) || [];\n const rgbColors = str.match(rgbColorPattern) || [];\n const hsbColors = str.match(hsbColorPattern) || [];\n\n return [...hexColors, ...rgbaColors, ...rgbColors, ...hsbColors];\n};\n\nexport type BoxShadowObjType = {\n offsetX: string | undefined;\n offsetY: string | undefined;\n blur: string | undefined;\n spread: string | undefined;\n color: string | undefined;\n type?: 'inset' | '';\n};\n\nexport const parseBoxShadowString = (str: string) => {\n // 先匹配所有的 rgb(a), 转换为对应的 16 进制,\n const colorsList = getColorFromStr(str);\n const color16Map = colorsList.reduce((res, c) => {\n res[c] = Color(c).hexa();\n return res;\n }, {} as any);\n // 替换字符串中所有的颜色为 16 进制,避免逗号影响分隔\n let tempStr = str;\n colorsList.forEach((c) => {\n tempStr = tempStr.replaceAll(c, color16Map[c]);\n });\n\n // 分割逗号\n const res = tempStr.split(',').map((el) => {\n const shadowItem: BoxShadowObjType = {\n offsetX: undefined,\n offsetY: undefined,\n blur: undefined,\n spread: undefined,\n color: undefined,\n type: undefined,\n };\n let newStr = el;\n if (newStr.includes('inset')) {\n shadowItem.type = 'inset';\n newStr = newStr.replace('inset', '').trim();\n }\n\n const color = getColorFromStr(newStr);\n if (color.length) {\n shadowItem.color = color[0];\n newStr = newStr.replace(shadowItem.color, '').trim();\n }\n\n const newStrArr = newStr.split(' ');\n const sizeArr = [];\n for (let i = 0; i < newStrArr.length; i++) {\n if (!isNaN(parseInt(newStrArr[i]))) {\n sizeArr.push(newStrArr[i]);\n } else {\n break;\n }\n }\n shadowItem.offsetX = sizeArr[0];\n shadowItem.offsetY = sizeArr[1];\n shadowItem.blur = sizeArr[2] || '';\n shadowItem.spread = sizeArr[3] || '';\n // 获取单词颜色\n if (!shadowItem.color) {\n shadowItem.color = newStrArr[sizeArr.length];\n }\n return shadowItem;\n });\n\n return res;\n};\n","import { AssetPackage } from '@chamn/model';\n\nexport class AssetsPackageListManager {\n private _assets: AssetPackage[];\n constructor(assets: AssetPackage[]) {\n this._assets = assets;\n }\n\n getList() {\n return this._assets;\n }\n\n setList(newAssets: AssetPackage[]) {\n const tempList = [...newAssets, ...this._assets];\n const newList = getUniqueAssetsList(tempList);\n // 去重复\n this._assets = newList;\n }\n}\n\nexport const getUniqueAssetsList = (tempList: AssetPackage[]) => {\n const newList: AssetPackage[] = [];\n const idMap: Record<string, any> = {};\n tempList.forEach((el) => {\n if (!idMap[el.package]) {\n idMap[el.package] = el;\n newList.push(el);\n }\n });\n\n return newList;\n};\n","import { getUniqueAssetsList } from '@/core/assetPackagesListManage';\nimport { LayoutPropsType } from '@chamn/layout';\nimport { collectVariable, flatObject, getThirdLibs, RenderPropsType } from '@chamn/render';\n\n/** 默认使用 react 18 模式渲染 */\nexport const beforeInitRender: LayoutPropsType['beforeInitRender'] = async ({ iframe }) => {\n const subWin = iframe.getWindow();\n if (!subWin) {\n return;\n }\n (subWin as any).React = window.React;\n (subWin as any).ReactDOM = window.ReactDOM;\n (subWin as any).ReactDOMClient = (window as any).ReactDOMClient;\n};\n\n/** 默认使用 react 18 模式渲染 */\nexport const getDefaultRender = (options: {\n components: Record<string, any>;\n renderProps: Partial<RenderPropsType>;\n}) => {\n const defaultRender: LayoutPropsType['customRender'] = async ({\n iframe: iframeContainer,\n assets,\n page,\n pageModel,\n ready,\n renderJSUrl,\n }) => {\n await iframeContainer.injectJS(renderJSUrl || '');\n const iframeWindow = iframeContainer.getWindow()!;\n const iframeDoc = iframeContainer.getDocument()!;\n const IframeReact = iframeWindow.React!;\n const IframeReactDOM = iframeWindow.ReactDOMClient!;\n const CRender = iframeWindow.CRender!;\n\n // 从子窗口获取物料对象\n const pageInfo = page || pageModel?.export();\n if (!pageInfo) {\n console.log('page schema is empty');\n return;\n }\n const allAssets = getUniqueAssetsList([...assets, ...(pageInfo.assets || [])]);\n // 注入组件物料资源\n const assetLoader = new CRender.AssetLoader(allAssets, {\n window: iframeContainer.getWindow()!,\n });\n assetLoader\n .onSuccess(() => {\n const allLibs = collectVariable(allAssets, iframeWindow);\n const componentsLibs = flatObject(allLibs);\n const thirdLibs = getThirdLibs(allLibs, pageInfo.thirdLibs || []);\n const App = IframeReact?.createElement(CRender.DesignRender, {\n adapter: CRender?.ReactAdapter,\n page: page,\n pageModel: pageModel,\n components: { ...componentsLibs, ...(options.components || {}) },\n $$context: {\n thirdLibs,\n },\n onMount: (designRenderInstance) => {\n ready(designRenderInstance);\n },\n ...((options?.renderProps as any) || {}),\n });\n IframeReactDOM.createRoot(iframeDoc.getElementById('app')!).render(App);\n })\n .onError(() => {\n console.log('资源加载出错');\n })\n .load();\n };\n\n return defaultRender;\n};\n","import { consola } from 'consola';\nexport const LOGGER = consola.create({\n level: 1,\n});\n","/**\n *\n * @param time 毫秒\n * @returns\n */\nexport const waitReactUpdate = ({ time = 1000 / 60, cb }: { time?: number; cb?: (...args: any[]) => void } = {}) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve('ok');\n cb?.();\n }, time);\n });\n};\n/** 确保 key 一定存在 */\nexport const ensureKeyExist = (obj: any, key: string, defaultValue: any) => {\n if (obj[key] !== undefined) {\n return;\n }\n obj[key] = defaultValue;\n};\n\nexport const sageJSONParse = function (jsonStr: string, errorValue: any) {\n try {\n const res = JSON.parse(jsonStr);\n return res;\n } catch (_e) {\n return errorValue ?? null;\n }\n};\n\nexport * from './css';\nexport * from './defaultEngineConfig';\nexport * from './logger';\n","import React from 'react';\nimport { Resizable, ResizeCallback } from 're-resizable';\nimport styles from './style.module.scss';\nimport { Button } from 'antd';\nimport { CloseOutlined, DoubleRightOutlined, PushpinOutlined } from '@ant-design/icons';\nimport clsx from 'clsx';\nimport mitt, { Emitter } from 'mitt';\nimport { waitReactUpdate } from '../../utils';\nimport { createPortal } from 'react-dom';\n\nexport interface PluginContext {\n openPanel: () => void;\n closePanel: () => void;\n getPlugin: (pluginName: string) => any;\n emitter: Emitter<any>;\n}\n\ntype PanelItem = {\n name: string;\n title: string | React.ReactNode;\n icon: React.ReactNode;\n render: React.ReactNode;\n};\n\nexport type WorkbenchCustomView = {\n key: string;\n view: React.ReactNode;\n};\n\nexport type TWidgetVisible = {\n hiddenTopBar?: boolean;\n hiddenLeftPanel?: boolean;\n hiddenRightPanel?: boolean;\n /** canvas 区域不添加任何 padding margining */\n canvasFull?: boolean;\n};\n\ntype WorkbenchStateType = {\n leftBoxVisible: boolean;\n leftBoxSize: {\n width: number;\n height: number | string;\n };\n leftBoxFixed: boolean;\n rightBoxSize: {\n width: number;\n height: number | string;\n };\n rightBoxVisible: boolean;\n currentActiveLeftPanel: string;\n leftPanels: PanelItem[];\n bodyView: React.ReactNode | null;\n rightView: React.ReactNode | null;\n topToolBarView: React.ReactNode | null;\n subTopToolBarView: React.ReactNode | null;\n customViewList: WorkbenchCustomView[];\n} & TWidgetVisible;\n\nexport type WorkbenchPropsType = {\n emitter: Emitter<any>;\n} & TWidgetVisible;\n\nexport class Workbench extends React.Component<WorkbenchPropsType, WorkbenchStateType> {\n emitter: Emitter<any>;\n leftPanelContentRef: React.RefObject<HTMLDivElement>;\n constructor(props: WorkbenchPropsType) {\n super(props);\n this.emitter = props.emitter || mitt();\n this.leftPanelContentRef = React.createRef<HTMLDivElement>();\n this.state = {\n leftBoxVisible: true,\n leftBoxSize: {\n width: 300,\n height: '100%',\n },\n leftBoxFixed: true,\n rightBoxVisible: true,\n rightBoxSize: {\n width: 350,\n height: '100%',\n },\n currentActiveLeftPanel: 'ComponentLib',\n leftPanels: [],\n bodyView: null,\n rightView: null,\n topToolBarView: null,\n subTopToolBarView: null,\n customViewList: [],\n hiddenTopBar: props.hiddenTopBar ?? false,\n hiddenLeftPanel: props.hiddenLeftPanel ?? false,\n hiddenRightPanel: props.hiddenRightPanel ?? false,\n canvasFull: props.canvasFull ?? false,\n };\n }\n\n getHiddenWidgetConfig() {\n return {\n hiddenTopBar: this.state.hiddenTopBar,\n hiddenLeftPanel: this.state.hiddenLeftPanel,\n hiddenRightPanel: this.state.hiddenRightPanel,\n };\n }\n\n /** 隐藏编辑器的小部件 */\n hiddenWidget(config: Partial<TWidgetVisible>) {\n this.setState({\n ...(config || {}),\n });\n }\n\n addLeftPanel = (panel: PanelItem) => {\n this.state.leftPanels.push(panel);\n this.setState({\n leftPanels: [...this.state.leftPanels],\n });\n };\n\n /** 替换对应的 panel */\n replaceLeftPanel = (panelName: string, newPanel: PanelItem) => {\n const targetIndex = this.state.leftPanels.findIndex((el) => el.name === panelName);\n if (targetIndex > -1) {\n const newPanels = [...this.state.leftPanels];\n newPanels[targetIndex] = newPanel;\n this.setState({\n leftPanels: newPanels,\n });\n }\n };\n\n /**\n * 添加属于插件的自定义视图\n * @param view\n * @returns dispose: 调用后移除 view\n */\n addCustomView(view: WorkbenchCustomView) {\n const newViewList = this.state.customViewList;\n newViewList.push(view);\n\n this.setState({\n customViewList: [...newViewList],\n });\n\n return () => {\n const newViewList = this.state.customViewList.filter((el) => el !== view);\n this.setState({\n customViewList: [...newViewList],\n });\n };\n }\n\n openLeftPanel = async (currentActiveLeftPanel?: string) => {\n const newActive = currentActiveLeftPanel || this.state.currentActiveLeftPanel;\n this.setState({\n leftBoxVisible: true,\n leftBoxSize: {\n width: 350,\n height: '100%',\n },\n currentActiveLeftPanel: newActive,\n });\n\n await waitReactUpdate();\n this.emitter.emit('leftPanelVisible', {\n visible: true,\n panelName: newActive,\n });\n };\n\n closeLeftPanel = async () => {\n this.setState({\n leftBoxVisible: false,\n leftBoxSize: {\n width: 0,\n height: '100%',\n },\n });\n await waitReactUpdate();\n this.emitter.emit('leftPanelVisible', {\n visible: false,\n panelName: this.state.currentActiveLeftPanel,\n });\n };\n\n toggleLeftPanel = () => {\n const { leftBoxVisible } = this.state;\n const newVisible = !leftBoxVisible;\n if (newVisible) {\n this.openLeftPanel();\n } else {\n this.closeLeftPanel();\n }\n };\n\n onPluginIconClick = (panel: PanelItem) => {\n const { currentActiveLeftPanel } = this.state;\n if (currentActiveLeftPanel === panel.name && this.state.leftBoxVisible) {\n this.closeLeftPanel();\n } else {\n this.openLeftPanel(panel.name);\n }\n };\n\n openRightPanel = () => {\n const { rightBoxSize } = this.state;\n this.setState({\n rightBoxVisible: true,\n rightBoxSize: {\n width: 400,\n height: rightBoxSize.height,\n },\n });\n };\n\n closeRightPanel = () => {\n const { rightBoxSize } = this.state;\n this.setState({\n rightBoxVisible: false,\n rightBoxSize: {\n width: 0,\n height: rightBoxSize.height,\n },\n });\n };\n\n replaceBodyView = (newView: React.ReactNode) => {\n this.setState({\n bodyView: newView,\n });\n };\n\n replaceRightView = (newView: React.ReactNode) => {\n this.setState({\n rightView: newView,\n });\n };\n\n replaceTopBarView = (newView: React.ReactNode) => {\n this.setState({\n topToolBarView: newView,\n });\n };\n\n replaceSubTopBarView = (newView: React.ReactNode) => {\n this.setState({\n subTopToolBarView: newView,\n });\n };\n\n toggleRightPanel = () => {\n const { rightBoxVisible, rightBoxSize } = this.state;\n const newVisible = !rightBoxVisible;\n this.setState({\n rightBoxVisible: newVisible,\n rightBoxSize: {\n width: newVisible ? 400 : 0,\n height: rightBoxSize.height,\n },\n });\n };\n\n onLeftBoxResizeStop: ResizeCallback = (_e, _direction, _ref, d) => {\n const newW = this.state.leftBoxSize.width + d.width;\n this.setState({\n leftBoxSize: {\n width: newW,\n height: this.state.leftBoxSize.height,\n },\n });\n };\n\n onGlobalClick = (e: MouseEvent) => {\n if (e.target && this.leftPanelContentRef.current?.contains(e.target as any)) {\n return;\n }\n\n if (!this.state.leftBoxFixed && this.state.leftBoxVisible) {\n this.closeLeftPanel();\n }\n };\n\n componentDidMount() {\n document.addEventListener('click', this.onGlobalClick);\n }\n\n render() {\n const {\n leftBoxVisible,\n leftBoxSize,\n leftBoxFixed,\n rightBoxSize,\n rightBoxVisible,\n leftPanels,\n currentActiveLeftPanel,\n bodyView,\n rightView,\n topToolBarView,\n subTopToolBarView,\n customViewList,\n hiddenTopBar,\n hiddenLeftPanel,\n hiddenRightPanel,\n } = this.state;\n const leftBoContentStyle: React.CSSProperties = {};\n if (!leftBoxFixed) {\n leftBoContentStyle.position = 'absolute';\n leftBoContentStyle.left = '50px';\n leftBoContentStyle.top = 0;\n }\n\n const currentActivePluginObj = leftPanels.find((el) => el.name === currentActiveLeftPanel);\n\n const CurrentPluginRenderView = currentActivePluginObj?.render || null;\n const { onPluginIconClick, toggleRightPanel, toggleLeftPanel, onLeftBoxResizeStop } = this;\n return (\n <div className={styles.workbenchContainer}>\n {!hiddenTopBar && (\n <div className={styles.topToolBarBox}>\n <div className={styles.topToolBarView}>{topToolBarView}</div>\n </div>\n )}\n\n <div className={styles.bodyContent}>\n {!hiddenLeftPanel && (\n <div\n className={clsx([styles.leftBox, hiddenLeftPanel ?? styles.hiddenLeftPanel])}\n ref={this.leftPanelContentRef}\n >\n <div className={styles.pluginIconBar}>\n {leftPanels.map((pl) => {\n return (\n <div\n key={pl.name}\n onClick={() => onPluginIconClick(pl)}\n className={clsx([\n styles.pluginIconItem,\n currentActivePluginObj?.name === pl.name && styles.active,\n ])}\n >\n {pl.icon}\n </div>\n );\n })}\n </div>\n {leftBoxVisible && (\n <Resizable\n className={styles.pluginPanelBoxResizeBox}\n size={leftBoxSize}\n style={leftBoContentStyle}\n minWidth={300}\n maxWidth={600}\n enable={{\n right: leftBoxVisible,\n }}\n onResizeStop={onLeftBoxResizeStop}\n >\n <div className={styles.pluginHeader}>\n <span className={styles.pluginNameText}>\n {currentActivePluginObj?.title || currentActivePluginObj?.name}\n </span>\n <Button\n className={clsx([styles.fixedBtn])}\n type=\"text\"\n size=\"small\"\n onClick={() => {\n this.setState({\n leftBoxFixed: !this.state.leftBoxFixed,\n });\n }}\n >\n <PushpinOutlined className={clsx([leftBoxFixed && styles.active])} />\n </Button>\n <Button className={styles.closeBtn} type=\"text\" size=\"small\" onClick={toggleLeftPanel}>\n <CloseOutlined />\n </Button>\n </div>\n <div className={styles.pluginPanelBox}>{CurrentPluginRenderView}</div>\n </Resizable>\n )}\n </div>\n )}\n\n <div className={styles.centerBox}>\n {subTopToolBarView && <div className={styles.subTopToolbarBox}>{subTopToolBarView}</div>}\n <div className={clsx([styles.canvasBox, this.state.canvasFull !== true && styles.canvasBoxPadding])}>\n <div className={styles.scrollBox}>{bodyView}</div>\n </div>\n </div>\n\n <div className={clsx([styles.rightResizeBox, hiddenRightPanel && styles.hiddenRightPanel])}>\n <div className={styles.arrowCursor} onClick={toggleRightPanel}>\n <DoubleRightOutlined className={clsx([!rightBoxVisible && styles.active])} />\n </div>\n <div\n style={{\n display: rightBoxVisible ? 'block' : 'none',\n height: '100%',\n }}\n >\n <Resizable\n minWidth={400}\n maxWidth={600}\n enable={{\n left: rightBoxVisible,\n }}\n size={rightBoxSize}\n onResizeStop={(_e, _direction, _ref, d) => {\n this.setState({\n rightBoxSize: {\n width: this.state.rightBoxSize.width + d.width,\n height: this.state.rightBoxSize.height,\n },\n });\n }}\n >\n <div className={styles.rightBox}>{rightView}</div>\n </Resizable>\n </div>\n </div>\n </div>\n {createPortal(\n <div className={styles.customViewBox}>\n {customViewList.map((el) => {\n return (\n <div\n key={el.key}\n style={{\n pointerEvents: 'auto',\n display: 'inline-block',\n }}\n >\n {el.view}\n </div>\n );\n })}\n </div>,\n document.body\n )}\n </div>\n );\n }\n}\n","export const zh_CN = {\n translation: {\n 'Welcome to React': '欢迎使用 React',\n },\n};\n","export const en_US = {\n translation: {\n 'Welcome to React': 'Welcome to React and react-i18next',\n },\n};\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\n\n// the translations\n// (tip move them in a JSON file and import them,\n// or even better, manage them separated from your code: https://react.i18next.com/guides/multiple-translation-files)\nconst resources = {\n zh_CN,\n en_US,\n};\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources,\n lng: 'zh_CN', // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources\n // you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage\n // if you're using a language detector, do not define the lng option\n react: {\n bindI18n: 'added languageChanged',\n bindI18nStore: 'added',\n },\n });\n\nexport type CustomI18n = typeof i18n & {\n update: () => void;\n};\n\nconst customI18n: CustomI18n = i18n as any;\n\ncustomI18n.update = () => {\n setTimeout(() => {\n i18n.emit('added');\n }, 0);\n};\n\ncustomI18n.changeLanguage('en_US');\n\nexport default customI18n;\n","import { Engine } from '@/index';\nimport { CPage } from '@chamn/model';\nimport mitt, { Emitter } from 'mitt';\nimport { Workbench } from '../component/Workbench';\nimport { CustomI18n } from '../i18n';\nimport { AssetsPackageListManager } from './assetPackagesListManage';\n\nexport type PluginObj<C, E = any> = {\n name: string;\n PLUGIN_NAME?: string;\n init: (ctx: CPluginCtx<C>) => Promise<void>;\n destroy: (ctx: CPluginCtx<C>) => Promise<void>;\n /** 用于暴露给外部重载插件 */\n reload?: (ctx: CPluginCtx<C>) => Promise<void>;\n /** 插件暴露给外部可以调用的方法 */\n export: (ctx: CPluginCtx<C>) => E;\n meta: {\n engine: {\n version: string;\n };\n };\n};\n\ninterface PluginFunction<C, E> {\n (ctx: CPluginCtx<C>): PluginObj<C, E>;\n ['PLUGIN_NAME']?: string;\n}\n\nexport type CPlugin<C = Record<string, any>, E = any> = PluginObj<C, E> | PluginFunction<C, E>;\n\ntype PluginManagerOptions = {\n getWorkbench: () => Workbench;\n emitter: Emitter<any>;\n pageModel: CPage;\n i18n: CustomI18n;\n assetsPackageListManager: AssetsPackageListManager;\n engine: Engine;\n};\n\nexport type CPluginCtx<C = any> = {\n name?: string;\n globalEmitter: Emitter<any>;\n /** 当前插件外部传入的配置 **/\n config: C;\n pluginManager: PluginManager;\n pluginReadyOk: () => void;\n} & PluginManagerOptions;\n\nexport type PluginInstance<C = any, E = any> = {\n ctx: CPluginCtx<C>;\n export: E;\n source: PluginObj<C, E>;\n ready: boolean;\n};\n\nexport type CustomPluginHook<P extends PluginInstance<any, any> = any> = (pluginInstance: P) => P;\n\nexport class PluginManager {\n plugins: Map<string, PluginInstance> = new Map();\n emitter: Emitter<any> = mitt();\n getWorkbench!: () => Workbench;\n pageModel!: CPage;\n i18n: CustomI18n;\n assetsPackageListManager: AssetsPackageListManager;\n engine: Engine;\n customPluginHooks: Record<string, CustomPluginHook[]> = {};\n\n constructor({ getWorkbench, emitter, pageModel, i18n, assetsPackageListManager, engine }: PluginManagerOptions) {\n this.getWorkbench = getWorkbench;\n this.emitter = emitter;\n this.pageModel = pageModel;\n this.i18n = i18n;\n this.assetsPackageListManager = assetsPackageListManager;\n this.engine = engine;\n }\n\n /** 自定义插件, 可以修改插件的配置 */\n customPlugin = <P extends PluginInstance<any, any>>(pluginName: string, customPluginHook: CustomPluginHook<P>) => {\n const customPluginHooks = this.customPluginHooks;\n const hookList = customPluginHooks[pluginName] || [];\n hookList.push(customPluginHook);\n customPluginHooks[pluginName] = hookList;\n this.customPluginHooks = customPluginHooks;\n };\n\n createPluginCtx = () => {\n const ctx: CPluginCtx = {\n globalEmitter: this.emitter,\n emitter: mitt(),\n config: {},\n getWorkbench: this.getWorkbench,\n pluginManager: this,\n pageModel: this.pageModel,\n i18n: this.i18n,\n assetsPackageListManager: this.assetsPackageListManager,\n engine: this.engine,\n pluginReadyOk: () => {},\n };\n return ctx;\n };\n\n async add(plugin: CPlugin) {\n const ctx = this.createPluginCtx();\n\n let innerPlugin: PluginObj<any, any>;\n if (typeof plugin === 'function') {\n innerPlugin = plugin(ctx);\n } else {\n innerPlugin = plugin;\n }\n let pluginCtx: PluginInstance = {\n source: innerPlugin,\n ctx: ctx,\n export: innerPlugin.export?.(ctx) || {},\n ready: false,\n };\n const customHookList = this.customPluginHooks[innerPlugin.name] || [];\n customHookList.forEach((cb) => {\n pluginCtx = cb(pluginCtx);\n });\n ctx.pluginReadyOk = () => {\n this.emitter.emit(`${innerPlugin.name}:ready`);\n pluginCtx.ready = true;\n };\n this.plugins.set(innerPlugin.name, pluginCtx);\n await innerPlugin.init(ctx);\n }\n\n async get<P extends PluginInstance<any, any>>(pluginName: string): Promise<P | undefined> {\n const pluginInstance = this.plugins.get(pluginName);\n if (pluginInstance?.ready) {\n return pluginInstance as any;\n } else {\n await this.onPluginReadyOk(pluginName);\n return pluginInstance as any;\n }\n }\n\n async remove(name: string) {\n const p = this.plugins.get(name);\n await p?.source.destroy(p.ctx);\n this.plugins.delete(name);\n }\n\n onPluginReadyOk(pluginName: string, cb?: (pluginHandle: PluginInstance) => void) {\n return new Promise<PluginInstance>((resolve) => {\n const pluginObj = this.plugins.get(pluginName);\n if (pluginObj?.ready) {\n resolve(pluginObj);\n } else if (pluginObj === undefined) {\n console.warn(`plugin: ${pluginName} not found.`);\n }\n this.emitter.on(`${pluginName}:ready`, () => {\n const newPluginObj = this.plugins.get(pluginName);\n if (newPluginObj) {\n newPluginObj.ready = true;\n cb?.(newPluginObj);\n resolve(newPluginObj);\n }\n });\n });\n }\n}\n","export const zh_CN: Record<string, any> = {\n pluginName: '组件库',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Components',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","import { Popover } from 'antd';\nimport clsx from 'clsx';\nimport React, { useMemo } from 'react';\nimport styles from './style.module.scss';\n\nexport type DragComponentItemProps = {\n id: string;\n name: string;\n description?: any;\n icon: React.ReactNode | string;\n iconText?: string;\n style?: React.CSSProperties;\n containerClassName?: string;\n};\n\nexport const DragComponentItem = (props: DragComponentItemProps) => {\n const dragInfo = {\n [DRAG_ITEM_KEY]: props.id,\n };\n\n const icon = useMemo(() => {\n if (props.iconText) {\n return <div className={styles.iconText}>{String(props.iconText).toUpperCase()}</div>;\n }\n if (typeof props.icon === 'string') {\n return <img className={styles.iconImg} src={props.icon} draggable={false} />;\n } else {\n return props.icon;\n }\n }, [props.icon, props.iconText]);\n\n const contentView = (\n <div className={clsx([styles.square, props.containerClassName])}>\n <div {...dragInfo} className={styles.componentItem} style={props.style}>\n <div className={styles.iconBox}>{icon}</div>\n <span>{props.name}</span>\n </div>\n </div>\n );\n\n if (props.description) {\n return (\n <Popover\n overlayInnerStyle={{\n maxWidth: '300px',\n maxHeight: '200px',\n overflow: 'auto',\n }}\n content={props.description || ''}\n zIndex={1000}\n placement=\"right\"\n >\n {contentView}\n </Popover>\n );\n } else {\n return contentView;\n }\n};\n\nexport const DRAG_ITEM_KEY = 'data-drag-key';\n","import { useMemo } from 'react';\nimport { SnippetsType } from '@chamn/model';\nimport { Collapse } from 'antd';\nimport { DragComponentItem } from '../DragItem';\nimport styles from './style.module.scss';\n\nexport type ListViewProps = {\n dataSource: {\n name: string;\n list: SnippetsType[];\n }[];\n};\nexport const ListView = (props: ListViewProps) => {\n const { dataSource } = props;\n const defaultActiveKey = dataSource.map((el) => el.name || '');\n\n const items = useMemo(() => {\n return dataSource.map((el) => {\n const category = el.name || '';\n const contentView = (\n <div className={styles.collapsePanel}>\n {el.list.map((it) => {\n return (\n <DragComponentItem\n id={it.id!}\n key={it.id!}\n name={it.title}\n icon={it.snapshot || it.snapshotText}\n iconText={it.snapshotText}\n description={it.description || ''}\n />\n );\n })}\n </div>\n );\n\n return {\n key: category,\n label: category,\n children: contentView,\n };\n });\n }, [dataSource]);\n\n if (!dataSource.length) {\n return null;\n }\n\n return (\n <div className={styles.ListBox}>\n <Collapse style={{ width: '100%' }} defaultActiveKey={defaultActiveKey} items={items}></Collapse>\n </div>\n );\n};\n","import { SnippetsCollection, SnippetsType } from '@chamn/model';\n\nexport const getTargetMNodeKeyVal = (dom: HTMLElement | null, key: string): null | string => {\n if (!dom) {\n return null;\n }\n const val = dom.getAttribute(key);\n if (!val) {\n return getTargetMNodeKeyVal(dom.parentElement, key);\n } else {\n return val;\n }\n};\n\nexport const searchComponentSnippets = (componentList: SnippetsCollection, searchKeyWords: string) => {\n const newResList: {\n name: string;\n list: SnippetsType[];\n }[] = [];\n const searchString = searchKeyWords?.toLowerCase();\n componentList.forEach((el) => {\n // category\n const tempList = [...el.list];\n tempList.forEach((it) => {\n const snippets = it.list.filter((i) => {\n let hit: boolean | undefined = false;\n if (typeof i.description === 'string') {\n hit = i.description?.includes(searchString);\n }\n hit = hit || i.title?.toLowerCase().includes(searchString);\n hit = hit || i.snapshotText?.toLowerCase().includes(searchString);\n hit = hit || i.category?.toLowerCase().includes(searchString);\n return hit;\n });\n if (snippets.length) {\n newResList.push({\n name: it.name,\n list: snippets,\n });\n }\n });\n });\n\n return newResList;\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { DOMAttributes } from 'react';\nimport { AppstoreAddOutlined, SearchOutlined } from '@ant-design/icons';\nimport { LayoutDragAndDropExtraDataType, Sensor } from '@chamn/layout';\nimport { Input, Tabs } from 'antd';\nimport { CPlugin, CPluginCtx } from '../../core/pluginManager';\nimport localize from './localize';\nimport styles from './style.module.scss';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { ListView } from './components/ListView';\nimport { getTargetMNodeKeyVal, searchComponentSnippets } from './util';\nimport { DRAG_ITEM_KEY } from './components/DragItem';\nimport {\n CNode,\n CRootNode,\n CSlot,\n DragAndDropEventExtraData,\n findContainerNode,\n isPageModel,\n SnippetsCollection,\n SnippetsType,\n} from '@chamn/model';\nimport { capitalize } from 'lodash-es';\nimport { InsertNodePosType } from '@chamn/model/src';\nimport { DesignerPluginInstance } from '../Designer/type';\n\ninterface ComponentLibViewProps extends WithTranslation {\n pluginCtx: CPluginCtx<ComponentLibPluginConfig>;\n}\n\nexport const PLUGIN_NAME = 'ComponentLib';\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\nconst TabTitle = ({ children }: { children: any }) => {\n return <div className={styles.tabTitle}>{children}</div>;\n};\n\ntype ComponentLibViewState = {\n componentsList: SnippetsCollection;\n searchString: string;\n searchMode: boolean;\n searchResultList: {\n name: string;\n list: SnippetsType[];\n }[];\n};\n\nexport type ComponentLibPluginConfig = {\n customSearchBar?: (props: {\n defaultInputView: React.ReactNode;\n updateState: (newState: Partial<ComponentLibViewState>) => string;\n }) => React.ReactNode;\n};\n\nclass ComponentLibView extends React.Component<ComponentLibViewProps, ComponentLibViewState> {\n containerRef: React.RefObject<HTMLDivElement>;\n disposeList: (() => void)[] = [];\n boxSensor!: Sensor<DragAndDropEventExtraData>;\n\n constructor(props: ComponentLibViewProps) {\n super(props);\n this.containerRef = React.createRef<HTMLDivElement>();\n this.state = {\n componentsList: [],\n searchString: '',\n searchMode: false,\n searchResultList: [],\n };\n }\n\n leftPanelVisibleCb = async ({ visible, panelName }: { visible: boolean; panelName: string }) => {\n await this.props.pluginCtx.pluginManager.onPluginReadyOk('Designer');\n if (panelName === PLUGIN_NAME && visible) {\n this.registerDragEvent();\n }\n };\n\n updateComponentsList() {\n const { pluginCtx } = this.props;\n const { pageModel } = pluginCtx;\n const { materialsModel } = pageModel;\n const allSnippets = materialsModel.getAllSnippets();\n\n if (allSnippets.length && allSnippets[0].name === 'default') {\n const df = allSnippets.shift();\n if (df) {\n allSnippets.push(df);\n }\n }\n\n this.setState({\n componentsList: allSnippets,\n });\n }\n\n async componentDidMount() {\n await this.props.pluginCtx.pluginManager.onPluginReadyOk('Designer');\n this.registerDragEvent();\n const { pluginCtx } = this.props;\n const { i18n } = pluginCtx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n i18n.update();\n this.updateComponentsList();\n pluginCtx.globalEmitter.on('updateMaterials', () => {\n this.updateComponentsList();\n });\n }\n\n componentWillUnmount(): void {\n this.disposeList.map((el) => el());\n }\n\n getNewNode = (targetDom: HTMLElement | null) => {\n const { pluginCtx } = this.props;\n const pageModel = pluginCtx.pageModel;\n\n if (!targetDom) {\n return;\n }\n const targetNodeId = getTargetMNodeKeyVal(targetDom as HTMLElement, DRAG_ITEM_KEY);\n\n if (!targetNodeId) {\n return;\n }\n\n const meta = pageModel.materialsModel.findSnippetById(targetNodeId);\n if (!meta) {\n return;\n }\n return pageModel?.createNode(meta.schema);\n };\n\n registerDragEvent = async () => {\n const { containerRef } = this;\n const { pluginCtx } = this.props;\n const designerHandle = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n\n if (!designerHandle) {\n return;\n }\n if (!containerRef.current) {\n return;\n }\n const designerExport = designerHandle.export;\n const dnd = designerExport.getDnd()!;\n const boxSensor = new Sensor<LayoutDragAndDropExtraDataType>({\n name: 'ComponentListBox',\n container: containerRef.current,\n mainDocument: document,\n });\n\n this.boxSensor = boxSensor;\n\n boxSensor.setCanDrag(async (eventObj) => {\n const newNode = this.getNewNode(eventObj.event.target as any);\n\n this.props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer').then((designerHandle) => {\n const designerExport = designerHandle?.export;\n designerExport?.selectNode('');\n });\n\n return {\n ...eventObj,\n extraData: {\n dropType: 'NEW_ADD',\n dragNode: newNode,\n },\n };\n });\n dnd.registerSensor(boxSensor);\n\n const dragStart = () => {\n const { getWorkbench } = this.props.pluginCtx;\n const workbench = getWorkbench();\n if (!workbench.state.leftBoxFixed) {\n workbench.closeLeftPanel();\n }\n };\n\n this.disposeList.push(() => {\n dnd.emitter.off('dragStart', dragStart);\n });\n dnd.emitter.on('dragStart', dragStart);\n };\n\n toAddNewNode: DOMAttributes<HTMLDivElement>['onClick'] = async (event) => {\n const newNode = this.getNewNode(event.nativeEvent.target as HTMLElement);\n if (!newNode) {\n return;\n }\n\n const { pageModel } = this.props.pluginCtx;\n\n return this.props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer').then(async (designerHandle) => {\n const designerExport = designerHandle?.export;\n // 获取当前选中,如果存在,就插入到当前选中的下面,否则就插入到根节点下面\n const selectedNodeId = designerExport?.getSelectedNodeId();\n const selectedNode = pageModel.getNode(selectedNodeId);\n const containerNode = findContainerNode(selectedNode);\n let pos: InsertNodePosType = 'CHILD_END';\n let dropNode: CNode | CRootNode | CSlot | null = selectedNode ?? null;\n if (selectedNode) {\n // 当前节点的父级节点是容器时\n if (containerNode === selectedNode.parent) {\n if (selectedNode.isContainer()) {\n pos = 'CHILD_END';\n dropNode = selectedNode;\n } else {\n pos = 'AFTER';\n dropNode = selectedNode;\n }\n } else if (containerNode && !isPageModel(containerNode)) {\n pos = 'CHILD_END';\n dropNode = containerNode;\n }\n } else {\n const rootNode = pageModel.getRootNode();\n if (rootNode) {\n pos = 'CHILD_END';\n dropNode = rootNode;\n }\n }\n const designerInstance = designerExport?.getInstance();\n\n const addFlag = await designerInstance?.customAdvanceHook.onNewAdd({\n dragNode: newNode,\n dropNode: dropNode as any,\n eventObj: {\n from: event.nativeEvent,\n fromSensor: this.boxSensor,\n pointer: null as any,\n fromPointer: null as any,\n extraData: {},\n },\n });\n if (addFlag === false) {\n return;\n }\n let addNodeInfo = {\n dragNode: newNode,\n dropNode: dropNode,\n pos: pos,\n };\n if (typeof addFlag === 'object') {\n addNodeInfo = {\n ...addNodeInfo,\n dragNode: (addFlag.addNode as any) ?? addNodeInfo.dragNode,\n dropNode: (addFlag.dropNode as any) ?? addNodeInfo.dropNode,\n pos: (addFlag.dropPosInfo?.pos as any) ?? addNodeInfo.pos,\n };\n }\n pageModel.addNode(addNodeInfo.dragNode, addNodeInfo.dropNode as CNode, addNodeInfo.pos);\n setTimeout(() => {\n designerExport?.selectNode(addNodeInfo.dragNode.id);\n }, 16);\n });\n };\n\n onSearch = () => {\n if (!this.state.searchString.length) {\n this.setState({\n searchResultList: [],\n searchMode: false,\n });\n return;\n }\n const newList = searchComponentSnippets(this.state.componentsList, this.state.searchString);\n this.setState({\n searchResultList: newList,\n searchMode: true,\n });\n };\n\n render(): React.ReactNode {\n const { componentsList, searchString, searchResultList, searchMode } = this.state;\n const { toAddNewNode } = this;\n const CustomSearchBar = this.props.pluginCtx.config.customSearchBar;\n const items = componentsList.map((el) => {\n return {\n label: <TabTitle>{capitalize(el.name)}</TabTitle>,\n key: el.name,\n children: <ListView dataSource={el.list} />,\n };\n });\n\n const defaultSearchValue = (\n <Input\n value={searchString}\n placeholder=\"input search text\"\n suffix={<SearchOutlined style={{ color: 'rgba(0,0,0,.25)' }} />}\n onPressEnter={this.onSearch}\n allowClear\n onClear={() => {\n this.setState({\n searchMode: false,\n searchResultList: [],\n });\n }}\n onChange={(e) => {\n this.setState({\n searchString: e.target.value,\n });\n }}\n />\n );\n return (\n <div ref={this.containerRef} className={styles.container} onClick={toAddNewNode}>\n <div className={styles.header}>\n {CustomSearchBar ? (\n <CustomSearchBar defaultInputView={defaultSearchValue} updateState={this.setState.bind(this) as any} />\n ) : (\n defaultSearchValue\n )}\n </div>\n {searchMode && (\n <div>\n {!searchResultList.length && <div className={styles.notFoundComponent}>暂无相关组件</div>}\n <ListView dataSource={searchResultList} />\n </div>\n )}\n {!searchResultList.length && !searchMode && (\n <Tabs\n defaultActiveKey=\"BaseComponent\"\n items={items}\n style={{\n width: '100%',\n }}\n />\n )}\n </div>\n );\n }\n}\n\nexport const ComponentLibPlugin: CPlugin<ComponentLibPluginConfig> = {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const ComponentLibViewWithLocalize = withTranslation(i18nNamespace)(ComponentLibView);\n const Title = withTranslation(i18nNamespace)(({ t }) => {\n return <>{t('pluginName')}</>;\n });\n const workbench = ctx.getWorkbench();\n workbench.addLeftPanel({\n title: <Title />,\n name: 'ComponentLib',\n icon: <AppstoreAddOutlined />,\n render: <ComponentLibViewWithLocalize pluginCtx={ctx} />,\n });\n ctx.pluginReadyOk();\n },\n reload: async () => {\n console.log(PLUGIN_NAME, 'not suooprt reload');\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return {};\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\nComponentLibPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const PLUGIN_NAME = 'Designer';\n","export const zh_CN: Record<string, any> = {\n pluginName: '组件库',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Designer Canvas',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { useMemo, useState } from 'react';\nimport { CopyOutlined, DeleteOutlined, EyeInvisibleOutlined } from '@ant-design/icons';\nimport styles from './style.module.scss';\nimport { CNode } from '@chamn/model';\nimport clsx from 'clsx';\n\nexport type DefaultSelectToolBarProps = {\n nodeList: CNode[];\n toSelectNode: (id: string) => void;\n toDelete: (id: string) => void;\n toCopy: (idd: string) => void;\n toHidden: (idd: string) => void;\n};\n\nconst LayoutSelect = ({\n dataSource,\n children,\n onSelect,\n}: {\n dataSource: { key: string; label: string }[];\n children: React.ReactNode;\n onSelect: (key: string) => void;\n}) => {\n const [hover, setHover] = useState(false);\n return (\n <div className={styles.layoutSelectBox}>\n <div className={clsx([styles.hoverBox, hover && styles.hoverBoxActive])}>\n {dataSource.map((el) => {\n return (\n <div className={styles.hoverItem} key={el.key} onClick={() => onSelect(el.key)}>\n {el.label}\n </div>\n );\n })}\n </div>\n <div className={styles.placeholder} onMouseOver={() => setHover(true)} onMouseOut={() => setHover(false)}>\n {children}\n </div>\n </div>\n );\n};\n\nexport const getDefaultToolbarItem = (props: DefaultSelectToolBarProps) => {\n const { nodeList, toSelectNode, toDelete, toCopy, toHidden } = props;\n const tempList = [...nodeList];\n const currentNode = tempList.shift();\n const parentNodeItems = tempList.map((el) => {\n const node = el;\n const nodeMeta = node.materialsModel.findByComponentName(node.value.componentName)?.value.title;\n const label = node.value.title || nodeMeta || node.value.componentName || '';\n return {\n key: el.id,\n label: label || 'Empty',\n };\n });\n\n const copyItem = (\n <div className={styles.item} onClick={() => toCopy(currentNode?.id || '')} key={'CopyOutlined'}>\n <CopyOutlined />\n </div>\n );\n\n const deleteItem = (\n <div className={styles.item} onClick={() => toDelete(currentNode?.id || '')} key={'DeleteOutlined'}>\n <DeleteOutlined />\n </div>\n );\n\n const visibleItem = (\n <div className={styles.item} onClick={() => toHidden(currentNode?.id || '')} key={'EyeInvisibleOutlined'}>\n <EyeInvisibleOutlined />\n </div>\n );\n\n const nodeLayout = (\n <LayoutSelect dataSource={parentNodeItems.reverse()} onSelect={toSelectNode} key={'LayoutSelect'}>\n <div>{currentNode?.value.title || currentNode?.material?.value.title || 'Empty'}</div>\n </LayoutSelect>\n );\n\n return {\n map: { copyItem, deleteItem, visibleItem, nodeLayout },\n list: [nodeLayout, visibleItem, copyItem, deleteItem],\n };\n};\n\nexport const DefaultSelectToolBar = (props: DefaultSelectToolBarProps) => {\n const { copyItem, deleteItem, visibleItem, nodeLayout } = useMemo(() => {\n return getDefaultToolbarItem(props).map;\n }, [props]);\n\n return (\n <div className={styles.toolBarBox}>\n {nodeLayout}\n {visibleItem}\n {copyItem}\n {deleteItem}\n </div>\n );\n};\n","import { CNode, CPage, CProp, CRootNode, CSlot, isNodeModel } from '@chamn/model';\n\nexport const getClosestNodeList = (node: CNode | CRootNode, level = 5) => {\n const res = [];\n let count = 0;\n let currentNode: CNode | CRootNode | CSlot | CProp | CPage | null = node;\n\n while (count < level && currentNode) {\n if (isNodeModel(currentNode)) {\n res.push(currentNode);\n count++;\n }\n\n currentNode = currentNode.parent || null;\n }\n\n return res;\n};\n","import React from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\n\nexport const GhostView = ({ node }: { node: CNode | CRootNode }) => {\n return (\n <div\n style={{\n backgroundColor: 'rgba(100,100,100)',\n padding: '3px 10px 3px 15px',\n borderRadius: '2px',\n opacity: 0.9,\n color: 'rgba(220,220,220)',\n }}\n >\n {node.value.componentName}\n </div>\n );\n};\n","import { CPluginCtx } from '@/core/pluginManager';\nimport { Layout, LayoutDragAndDropExtraDataType, LayoutDragEvent } from '@/index';\nimport { waitReactUpdate } from '@/utils';\nimport { AdvanceCustom, CNode, CRootNode } from '@chamn/model';\n\nexport interface AdvanceCustomHookOptions {\n getPortalViewCtx: () => {\n setView: (view: React.ReactNode) => void;\n clearView: () => void;\n };\n ctx: CPluginCtx;\n layoutRef: React.RefObject<Layout>;\n}\n\nexport type HookParameter = {\n dragNode?: CNode | CRootNode;\n dropNode?: CNode | CRootNode;\n eventObj: LayoutDragEvent<LayoutDragAndDropExtraDataType>;\n};\n\nexport class AdvanceCustomHook {\n getPortalViewCtx!: AdvanceCustomHookOptions['getPortalViewCtx'];\n ctx: CPluginCtx;\n layoutRef: AdvanceCustomHookOptions['layoutRef'];\n constructor(options: AdvanceCustomHookOptions) {\n this.getPortalViewCtx = options.getPortalViewCtx;\n this.ctx = options.ctx;\n this.layoutRef = options.layoutRef;\n }\n\n async canDrag({ dragNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['canDragNode']> {\n const nodeAdvanceCustom = dragNode?.material?.value.advanceCustom;\n if (nodeAdvanceCustom?.canDragNode) {\n const res = nodeAdvanceCustom?.canDragNode(dragNode!, {\n context: this.ctx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: eventObj.extraData,\n });\n return res;\n }\n\n return true;\n }\n\n async canDrop({ dragNode, dropNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['canDropNode']> {\n const nodeAdvanceCustom = dragNode?.material?.value.advanceCustom;\n const dropNodeAdvanceCustom = dropNode!.material?.value.advanceCustom;\n let res: Awaited<ReturnType<Required<AdvanceCustom>['canDropNode']>> = {} as any;\n const commonParams = {\n dropNode,\n context: this.ctx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: eventObj.extraData!,\n };\n if (nodeAdvanceCustom?.canDropNode) {\n res = await nodeAdvanceCustom.canDropNode(dragNode!, commonParams)!;\n\n // 判断 dropNode 是否可以接受 dragNode\n if (dropNodeAdvanceCustom?.canAcceptNode) {\n let canAcceptFlag: Awaited<ReturnType<Required<AdvanceCustom>['canAcceptNode']>>;\n if (typeof res === 'object') {\n canAcceptFlag = await dropNodeAdvanceCustom?.canAcceptNode(res.dragNode!, {\n ...commonParams,\n ...res,\n });\n } else {\n canAcceptFlag = await dropNodeAdvanceCustom?.canAcceptNode(dragNode!, {\n ...commonParams,\n });\n }\n return canAcceptFlag;\n } else {\n return res;\n }\n } else if (dropNodeAdvanceCustom?.canAcceptNode) {\n const canAcceptFlag = await dropNodeAdvanceCustom?.canAcceptNode(dragNode!, {\n ...commonParams,\n });\n return canAcceptFlag;\n }\n return true;\n }\n\n async onNewAdd({ dragNode, dropNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['onNewAdd']> {\n const res = await dragNode!.material?.value.advanceCustom?.onNewAdd?.(dragNode!, {\n dropNode: dropNode,\n context: this.ctx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: eventObj.extraData!,\n });\n if (res === false) {\n return false;\n }\n return res;\n }\n\n getSelectRectViewRender(node: CNode | CRootNode) {\n const material = node.material;\n return material?.value.advanceCustom?.selectRectViewRender;\n }\n\n getHoverRectViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.hoverRectViewRender;\n }\n\n getDropViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.dropViewRender;\n }\n\n getGhostViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.ghostViewRender;\n }\n getToolbarViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.toolbarViewRender;\n }\n\n async onCopy(node: CNode | CRootNode) {\n let resNode = node;\n const ctx = this.ctx;\n const material = node.material;\n const onCopy = material?.value.advanceCustom?.onCopy;\n if (onCopy) {\n const newRes = await onCopy(node, {\n viewPortal: this.getPortalViewCtx(),\n context: ctx,\n extra: {},\n });\n if (newRes === false) {\n return false;\n }\n if (typeof newRes === 'object') {\n resNode = newRes.copyNode ?? resNode;\n }\n }\n\n if (resNode) {\n const newNode = ctx.pageModel.copyNode(resNode as CNode);\n if (newNode) {\n await waitReactUpdate();\n }\n }\n\n return resNode;\n }\n\n async onDelete(node: CNode | CRootNode) {\n let resNode = node;\n const ctx = this.ctx;\n const material = node.material;\n const onDelete = material?.value.advanceCustom?.onDelete;\n\n if (onDelete) {\n const newRes = await onDelete(node, {\n viewPortal: this.getPortalViewCtx(),\n context: ctx,\n extra: {},\n });\n if (newRes === false) {\n return false;\n }\n if (typeof newRes === 'object') {\n resNode = newRes.deleteNode ?? resNode;\n }\n }\n\n if (resNode) {\n const newNode = ctx.pageModel.deleteNode(resNode as CNode);\n if (newNode) {\n await waitReactUpdate();\n }\n }\n\n return resNode;\n }\n}\n","import React from 'react';\nimport { Layout, LayoutPropsType } from '@chamn/layout';\nimport { AdvanceCustom, CNode, CPage, CRootNode, InsertNodePosType } from '@chamn/model';\nimport localize from '../../localize';\nimport { PLUGIN_NAME } from '../../config';\nimport { DefaultSelectToolBar, DefaultSelectToolBarProps, getDefaultToolbarItem } from '../DefaultSelectToolBar';\nimport { getClosestNodeList } from '../../util';\nimport { GhostView } from '../GhostView';\n\nimport styles from './style.module.scss';\nimport '@chamn/layout/dist/style.css';\nimport { AssetPackage } from '@chamn/model';\nimport { createPortal } from 'react-dom';\nimport { CPluginCtx } from '@/core/pluginManager';\nimport { AdvanceCustomHook } from './advanceCustomHook';\nimport { DesignerPluginConfig } from '../../type';\nimport { AdvanceCustomFuncParam } from '@chamn/model';\n\nexport type DesignerCtx = CPluginCtx<DesignerPluginConfig>;\nexport type DesignerPropsType = {\n pluginCtx: DesignerCtx;\n};\n\nexport type WrapComponentOptionsType = {\n ctx: DesignerCtx;\n node: CNode | CRootNode;\n};\n\ntype DesignerStateType = {\n pageModel: CPage;\n hoverToolbarView: React.ReactNode;\n selectToolbarView: React.ReactNode;\n selectRectViewRender: AdvanceCustom['selectRectViewRender'] | null;\n hoverRectViewRender: AdvanceCustom['hoverRectViewRender'] | null;\n dropViewRender: AdvanceCustom['dropViewRender'] | null;\n ghostView: React.ReactNode;\n portalView: React.ReactNode;\n};\n\nexport class Designer extends React.Component<DesignerPropsType, DesignerStateType> {\n layoutRef: React.RefObject<Layout>;\n customAdvanceHook: AdvanceCustomHook;\n constructor(props: DesignerPropsType) {\n super(props);\n\n this.state = {\n pageModel: props.pluginCtx.pageModel,\n hoverToolbarView: null,\n selectToolbarView: null,\n ghostView: null,\n portalView: null,\n selectRectViewRender: null,\n hoverRectViewRender: null,\n dropViewRender: null,\n };\n this.layoutRef = React.createRef<Layout>();\n this.customAdvanceHook = new AdvanceCustomHook({\n getPortalViewCtx: this.getPortalViewCtx,\n ctx: this.props.pluginCtx,\n layoutRef: this.layoutRef,\n });\n }\n\n getPortalViewCtx = () => {\n return {\n setView: (view: React.ReactNode) => {\n this.setState({\n portalView: view,\n });\n },\n clearView: () => {\n this.setState({\n portalView: null,\n });\n },\n };\n };\n\n /**\n * 更新 render 中的 components ;\n */\n async updateRenderComponents(newComponentMap: Record<string, any> = {}) {\n const oldComponents = this.props.pluginCtx.config.components || {};\n const newComponents = {\n ...oldComponents,\n ...newComponentMap,\n };\n this.props.pluginCtx.config.components = newComponents;\n const { layoutRef } = this;\n if (!layoutRef.current) {\n console.warn('layout not ready ok');\n return;\n }\n\n await layoutRef.current.ready();\n\n const layoutInstance = layoutRef.current;\n // 直接修改到 render 中去\n layoutInstance?.designRenderRef?.current?.updateComponents(newComponents);\n }\n\n componentDidMount(): void {\n const { i18n } = this.props.pluginCtx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, `plugin:${PLUGIN_NAME}`, localize[lng], true, true);\n });\n this.init();\n }\n\n getIframeDom() {\n return this.layoutRef.current?.iframeContainer;\n }\n\n reloadRender() {\n this.layoutRef.current?.reload();\n this.props.pluginCtx.pageModel.reloadPage();\n }\n\n async init() {\n const { layoutRef } = this;\n const { pluginCtx } = this.props;\n if (!layoutRef.current) {\n console.warn('layout not ready ok');\n return;\n }\n\n await layoutRef.current.ready();\n const layoutInstance = layoutRef.current;\n\n pluginCtx.emitter.emit('ready', {\n UIInstance: this,\n });\n\n layoutInstance.dnd.emitter.on('click', ({ event }: { event: MouseEvent }) => {\n const workbench = pluginCtx.getWorkbench();\n workbench.onGlobalClick(event);\n });\n\n this.props.pluginCtx.pageModel.emitter.on('onPageChange', ({ node }) => {\n layoutRef.current?.designRenderRef?.current?.rerender(node);\n });\n\n this.props.pluginCtx.pageModel.emitter.on('onReloadPage', ({ node }) => {\n layoutRef.current?.designRenderRef?.current?.rerender(node);\n });\n\n pluginCtx.pluginReadyOk();\n }\n\n onNodeDragging: LayoutPropsType['onNodeDragging'] = async (eventObj) => {\n const extraData = eventObj.extraData;\n const dragNode = extraData?.dragNode;\n if (dragNode) {\n const res = dragNode.material?.value.advanceCustom?.onDragging?.(dragNode, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: extraData,\n });\n return res;\n }\n };\n\n onNodeDragEnd: LayoutPropsType['onNodeDraEnd'] = async () => {\n this.setState({\n ...this.state,\n dropViewRender: this.props.pluginCtx.config.dropViewRender,\n });\n };\n\n onNodeDrop: LayoutPropsType['onNodeDrop'] = async (eventObj) => {\n const { layoutRef } = this;\n const pageModel = this.props.pluginCtx.pageModel;\n const extraData = eventObj.extraData;\n const dropPosInfo = extraData?.dropPosInfo;\n const posFlag = {\n before: 'BEFORE',\n after: 'AFTER',\n current: 'CHILD_START',\n }[dropPosInfo?.pos || 'after'] as InsertNodePosType;\n const dragNode = extraData?.dragNode;\n if (dragNode) {\n const res = await dragNode.material?.value.advanceCustom?.onDrop?.(dragNode, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: extraData,\n });\n if (res === false) {\n return false;\n }\n }\n if (!extraData?.dropNode) {\n console.warn('cancel drop, because drop node is null');\n return false;\n }\n if (extraData.dropType === 'NEW_ADD') {\n if (dragNode) {\n const res = await dragNode.material?.value.advanceCustom?.onNewAdd?.(dragNode, {\n dropNode: extraData.dropNode,\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: extraData,\n });\n if (res === false) {\n return false;\n }\n }\n // 说明是根节点,直接插入到 第一个 child\n if (extraData.dropNode?.nodeType !== 'NODE') {\n pageModel?.addNode(extraData.dragNode as CNode, extraData.dropNode!, 'CHILD_START');\n } else {\n pageModel?.addNode(extraData.dragNode as CNode, extraData.dropNode!, posFlag);\n }\n } else {\n if (extraData.dropNode?.id === extraData.dragNode?.id) {\n console.warn('dragNode and dropNode id is the same');\n return false;\n }\n const res = pageModel.moveNodeById(extraData.dragNode?.id || '', extraData?.dropNode?.id || '', posFlag);\n if (!res) {\n console.warn('drop failed');\n return false;\n }\n }\n\n this.props.pluginCtx.emitter.emit('onDrop', eventObj);\n return new Promise((resolve) => {\n // 延迟去选中,因为节点放置下去,可能还没有渲染\n setTimeout(async () => {\n if (dragNode) {\n const flag = await this.onSelectNode(dragNode, null);\n if (flag === false) {\n layoutRef.current?.selectNode('');\n return resolve(false);\n }\n }\n layoutRef.current?.selectNode(extraData.dragNode?.id || '');\n resolve(true);\n }, 16);\n });\n };\n\n onSelectNode: Required<LayoutPropsType>['onSelectNode'] = async (node: CNode | CRootNode | null, event) => {\n const { pluginCtx } = this.props;\n const { layoutRef } = this;\n\n if (!node) {\n pluginCtx.engine.updateCurrentSelectNode(null);\n layoutRef.current?.selectNode('');\n this.setState({\n selectToolbarView: null,\n });\n return false;\n }\n const flag = await node.material?.value.advanceCustom?.onSelect?.(node, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: event,\n extra: {},\n });\n if (flag === false) {\n return flag;\n }\n\n const toolbarView = this.getToolbarView(node);\n this.setState({\n selectToolbarView: toolbarView,\n selectRectViewRender:\n this.customAdvanceHook.getSelectRectViewRender(node) || this.props.pluginCtx.config.selectRectViewRender,\n });\n\n // 延迟发送选中事件\n setTimeout(() => {\n pluginCtx.engine.updateCurrentSelectNode(node);\n }, 16.66);\n\n return true;\n };\n\n onDragStart: LayoutPropsType['onNodeDragStart'] = async (e) => {\n const extraData = e.extraData;\n const dragNode = extraData?.dragNode;\n if (!dragNode) {\n return false;\n }\n\n const commonParam = {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: e,\n extra: extraData,\n };\n\n const canDragFlag = await dragNode.material?.value.advanceCustom?.canDragNode?.(dragNode, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: e,\n extra: {},\n });\n\n if (canDragFlag === false) {\n return canDragFlag;\n }\n\n const dragFlag = await dragNode.material?.value.advanceCustom?.onDragStart?.(dragNode, { ...commonParam });\n if (dragFlag === false) {\n return dragFlag;\n }\n\n const ghostView = this.getGhostView(dragNode, commonParam);\n this.setState({\n ...this.state,\n ghostView: ghostView,\n dropViewRender: this.customAdvanceHook.getDropViewRender(dragNode) || this.props.pluginCtx.config.dropViewRender,\n });\n return true;\n };\n\n getGhostView = (dragNode: CNode | CRootNode, commonParam: AdvanceCustomFuncParam) => {\n let ghostView: React.ReactElement = <GhostView node={dragNode} />;\n const nodeGhostView = this.customAdvanceHook.getGhostViewRender(dragNode);\n const CustomGhostView = nodeGhostView || this.props.pluginCtx.config.ghostViewRender;\n\n if (CustomGhostView) {\n ghostView = <CustomGhostView node={dragNode} params={commonParam} />;\n }\n return ghostView;\n };\n\n toSelectNode = async (nodeId: string) => {\n const ctx = this.props.pluginCtx;\n const node = ctx.pageModel.getNode(nodeId);\n const flag = await this.onSelectNode(node || null, null);\n if (flag === false) {\n return false;\n } else {\n this.layoutRef.current?.selectNode(nodeId);\n return true;\n }\n };\n\n toCopyNode = async (id: string) => {\n const ctx = this.props.pluginCtx;\n const cpNode = ctx.pageModel.getNode(id);\n const newNode = await this.customAdvanceHook.onCopy(cpNode as CNode);\n if (newNode) {\n this.toSelectNode(newNode.id);\n return true;\n }\n };\n\n toDeleteNode = async (nodeId: string) => {\n const ctx = this.props.pluginCtx;\n const node = ctx.pageModel.getNode(nodeId);\n if (!node) {\n return;\n }\n const delRes = await this.customAdvanceHook.onDelete(node);\n if (delRes === false) {\n return false;\n }\n this.toSelectNode('');\n return true;\n };\n\n toHidden = (id: string) => {\n const targetNodeModel = this.props.pluginCtx.pageModel.getNode(id) as CNode;\n if (!targetNodeModel) {\n return;\n }\n const devState = targetNodeModel.value.configure.devState ?? {};\n devState.condition = false;\n targetNodeModel.value.configure.devState = devState;\n targetNodeModel.updateValue();\n return true;\n };\n\n getToolbarView = (node: CNode | CRootNode) => {\n const list = getClosestNodeList(node, 5);\n const toolbarProps: DefaultSelectToolBarProps = {\n nodeList: list,\n toSelectNode: this.toSelectNode,\n toCopy: this.toCopyNode,\n toDelete: this.toDeleteNode,\n toHidden: this.toHidden,\n };\n const defaultToolbarItem = getDefaultToolbarItem(toolbarProps);\n let toolbarView = <DefaultSelectToolBar {...toolbarProps} />;\n const ToolbarView =\n this.customAdvanceHook.getToolbarViewRender(node) || this.props.pluginCtx.config.toolbarViewRender;\n if (ToolbarView) {\n toolbarView = (\n <ToolbarView\n node={node}\n context={this.props.pluginCtx}\n toolBarItems={defaultToolbarItem.map}\n toolBarItemList={defaultToolbarItem.list}\n />\n );\n }\n return toolbarView;\n };\n\n onHoverNode: LayoutPropsType['onHoverNode'] = (node, dragNode, e) => {\n this.props.pluginCtx.emitter.emit('onHover', node);\n const material = node?.material;\n if (!material) {\n console.warn('material not found', node);\n }\n const commonParam = {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: e,\n extra: {},\n };\n const ghostView = this.getGhostView(dragNode, commonParam);\n\n const newState = {\n hoverToolbarView: <div className={styles.hoverTips}>{material?.value.title || material?.componentName}</div>,\n ghostView: ghostView,\n hoverRectViewRender:\n this.customAdvanceHook.getHoverRectViewRender(node) || this.props.pluginCtx.config.hoverRectViewRender,\n };\n if (!dragNode) {\n newState.ghostView = null as any;\n }\n this.setState({\n ...newState,\n });\n };\n\n nodeCanDrag: LayoutPropsType['nodeCanDrag'] = async (e) => {\n const extraData = e.extraData;\n const dragNode = extraData?.dragNode;\n const res = await this.customAdvanceHook.canDrag({\n dragNode,\n eventObj: e,\n });\n return res;\n };\n\n nodeCanDrop: LayoutPropsType['nodeCanDrop'] = async (e) => {\n const extraData = e.extraData;\n const dragNode = extraData?.dragNode;\n const res = await this.customAdvanceHook.canDrop({\n dragNode,\n eventObj: e,\n ...extraData,\n });\n return res;\n };\n\n innerSelectRectViewRender: LayoutPropsType['selectRectViewRender'] = (selectViewProps) => {\n const { selectRectViewRender } = this.state;\n const { pluginCtx } = this.props;\n\n const Comp = selectRectViewRender;\n const selectNode = pluginCtx.engine.getActiveNode();\n\n if (!Comp || !selectNode) {\n return <></>;\n }\n return (\n <Comp\n node={selectNode}\n componentInstance={selectViewProps.instance}\n componentInstanceIndex={selectViewProps.index}\n params={{\n viewPortal: this.getPortalViewCtx(),\n context: this.props.pluginCtx,\n extra: {},\n }}\n />\n );\n };\n\n innerHoverRectViewRender: LayoutPropsType['hoverRectViewRender'] = (hoverViewProps) => {\n const { hoverRectViewRender } = this.state;\n\n const Comp = hoverRectViewRender;\n\n if (!Comp) {\n return <></>;\n }\n return (\n <Comp\n node={hoverViewProps.instance._NODE_MODEL}\n componentInstance={hoverViewProps.instance}\n componentInstanceIndex={hoverViewProps.index}\n params={{\n viewPortal: this.getPortalViewCtx(),\n context: this.props.pluginCtx,\n extra: {},\n }}\n />\n );\n };\n\n innerDropViewRender: LayoutPropsType['dropViewRender'] = (dropViewProps) => {\n const { dropViewRender } = this.state;\n\n const Comp = dropViewRender;\n\n if (!Comp) {\n return <></>;\n }\n return (\n <Comp\n {...(dropViewProps as any)}\n node={dropViewProps.instance._NODE_MODEL}\n componentInstance={dropViewProps.instance}\n componentInstanceIndex={dropViewProps.index}\n params={{\n viewPortal: this.getPortalViewCtx(),\n context: this.props.pluginCtx,\n extra: {},\n }}\n />\n );\n };\n\n render() {\n const { layoutRef, props, onSelectNode, onDragStart, onHoverNode, onNodeDrop, onNodeDragging, onNodeDragEnd } =\n this;\n const {\n pageModel,\n hoverToolbarView,\n selectToolbarView,\n ghostView,\n portalView,\n selectRectViewRender,\n hoverRectViewRender,\n dropViewRender,\n } = this.state;\n\n const { pluginCtx } = props;\n const assets = pluginCtx.assetsPackageListManager.getList() || ([] as AssetPackage[]);\n\n const renderJSUrl = pluginCtx.engine.props.renderJSUrl || './render.umd.js';\n const advanceCustomProps: LayoutPropsType = {};\n\n if (selectRectViewRender) {\n advanceCustomProps.selectRectViewRender = this.innerSelectRectViewRender;\n }\n\n if (hoverRectViewRender) {\n advanceCustomProps.hoverRectViewRender = this.innerHoverRectViewRender;\n }\n\n if (dropViewRender) {\n advanceCustomProps.dropViewRender = this.innerDropViewRender;\n }\n if (selectToolbarView) {\n advanceCustomProps.selectToolbarView = this.state.selectToolbarView;\n }\n\n return (\n <>\n <Layout\n beforeInitRender={props.pluginCtx.config.beforeInitRender}\n customRender={props.pluginCtx.config.customRender}\n ref={layoutRef}\n pageModel={pageModel}\n renderJSUrl={renderJSUrl}\n {...props}\n hoverToolBarView={hoverToolbarView}\n selectBoxStyle={{}}\n hoverBoxStyle={{}}\n nodeCanDrag={this.nodeCanDrag}\n nodeCanDrop={this.nodeCanDrop}\n onSelectNode={onSelectNode}\n onNodeDragStart={onDragStart}\n onHoverNode={onHoverNode}\n onNodeDrop={onNodeDrop}\n onNodeDragging={onNodeDragging}\n onNodeDraEnd={onNodeDragEnd}\n {...advanceCustomProps}\n ghostView={ghostView}\n assets={assets}\n pluginCtx={this.props.pluginCtx}\n />\n {portalView && createPortal(portalView, document.body)}\n </>\n );\n }\n}\n","import React from 'react';\nimport { CPage, CPageDataType } from '@chamn/model';\n\nimport { PLUGIN_NAME } from './config';\nimport { Designer } from './components/Canvas';\nimport { DesignerPluginType } from './type';\nimport { LayoutMode } from '@chamn/layout';\n\nexport const DesignerPlugin: DesignerPluginType = () => {\n const designerRef = React.createRef<Designer>();\n return {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n ctx.name = PLUGIN_NAME;\n const workbench = ctx.getWorkbench();\n workbench.replaceBodyView(<Designer ref={designerRef} pluginCtx={ctx} />);\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return {\n /** 设置 canvas 的渲染模式 */\n setMode(newMode) {\n return designerRef.current?.layoutRef.current?.setMode(newMode);\n },\n setPreviewMode() {\n return designerRef.current?.layoutRef.current?.setMode(LayoutMode.PREVIEW);\n },\n setEditMode() {\n return designerRef.current?.layoutRef.current?.setMode(LayoutMode.EDIT);\n },\n setCanvasWidth(width: number | string) {\n const iframeContainer = designerRef.current?.getIframeDom();\n\n if (iframeContainer?.containerDom) {\n let newW = width;\n if (typeof width === 'number') {\n newW = `${width}px`;\n }\n iframeContainer.containerDom.style.width = String(newW);\n iframeContainer.containerDom.style.margin = '0 auto';\n }\n },\n getIframeDom() {\n return designerRef.current?.getIframeDom();\n },\n getInstance: () => {\n return designerRef.current;\n },\n getDnd: () => {\n return designerRef.current?.layoutRef.current?.dnd;\n },\n selectNode: async (nodeId) => {\n return await designerRef.current?.toSelectNode(nodeId);\n },\n copyNode: async (nodeId) => {\n return await designerRef.current?.toCopyNode(nodeId);\n },\n deleteNode: async (nodeId) => {\n return await designerRef.current?.toDeleteNode(nodeId);\n },\n getSelectedNodeId: () => {\n return designerRef.current?.layoutRef.current?.state.currentSelectId;\n },\n updatePage: (page: CPageDataType | CPage) => {\n designerRef.current?.layoutRef.current?.designRenderRef?.current?.rerender(page);\n },\n reload: () => {\n designerRef.current?.reloadRender();\n },\n getComponentInstances: (id: string) => {\n return designerRef.current?.layoutRef.current?.designRenderRef.current?.getInstancesById(id) || [];\n },\n getDynamicComponentInstances: (id: string) => {\n const map =\n designerRef.current?.layoutRef.current?.designRenderRef.current?.renderRef.current\n ?.dynamicComponentInstanceMap;\n return map?.get(id) || ([] as any);\n },\n getLayoutRef: () => {\n return designerRef.current?.layoutRef as any;\n },\n getDesignerWindow: () => {\n return designerRef.current?.layoutRef.current?.iframeContainer.getWindow() as any;\n },\n updateRenderComponents: (newComponents: Record<string, string>) => {\n return designerRef.current?.updateRenderComponents(newComponents);\n },\n };\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n };\n};\n\nDesignerPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","import {\n ArraySetterObjType,\n CNode,\n CNodeDataType,\n CPage,\n CPageDataType,\n DropPosType,\n getMTitle,\n isJSSlotPropNode,\n isSpecialMaterialPropType,\n MaterialPropType,\n MTitle,\n RenderPropType,\n SetterObjType,\n SetterType,\n ShapeSetterObjType,\n} from '@chamn/model';\nimport { isPlainObject } from 'lodash-es';\nimport { TreeNodeData } from './components/TreeView/dataStruct';\n\nexport const getTargetMNodeKeyVal = (dom: HTMLElement | null, key: string): null | string => {\n if (!dom) {\n return null;\n }\n const val = dom.getAttribute(key);\n if (!val) {\n return getTargetMNodeKeyVal(dom.parentElement, key);\n } else {\n return val;\n }\n};\n\nexport const transformNodeSchemaToTreeData = (\n nodeSchema: CNodeDataType | CNodeDataType[],\n parent: TreeNodeData,\n pageModel: CPage\n): TreeNodeData | TreeNodeData[] => {\n const tb = (node: CNodeDataType, parent?: TreeNodeData | null): TreeNodeData => {\n let nodeChild: any[] = node.children || [];\n if (!Array.isArray(nodeChild)) {\n // TODO: 暂时不处理字符串的情况\n nodeChild = [];\n }\n // 过滤掉字符串的情况\n nodeChild = nodeChild.filter((el) => typeof el !== 'string');\n const nodeMeta = pageModel.materialsModel.findByComponentName(node.componentName)?.value.title;\n const newCurrentNode: TreeNodeData = {\n title: node.title || nodeMeta || node.componentName,\n key: node.id,\n children: [],\n parent: parent,\n canDropPos: pageModel.getNode(node.id || '')?.isContainer() ? undefined : ['after', 'before'],\n };\n // 还需要处理 props 中的节点\n const propsNodeList: TreeNodeData[] = [];\n const slotNode: TreeNodeData = {\n title: 'SLOT',\n key: `${node.id}-SLOT`,\n children: propsNodeList,\n canBeSelected: false,\n canDropPos: false,\n parent: null,\n containerRender: ({ treeNodeView }) => {\n return (\n <div\n style={{\n border: '1px solid #a97cf8',\n borderTopWidth: '6px',\n marginRight: '2px',\n marginTop: '5px',\n }}\n >\n {treeNodeView}\n </div>\n );\n },\n };\n const props = node.props || {};\n\n const processProps = (val: unknown, key: string, keys: string[]) => {\n const flag = isJSSlotPropNode(val);\n\n if (flag) {\n const tempVal = val as RenderPropType;\n const pageModeNode = pageModel.getNode(node.id!);\n let propsTitle = '';\n if (pageModeNode) {\n const tempTitle = getPropsLabel(pageModeNode as CNode, [...keys, key]);\n propsTitle = getMTitle(tempTitle);\n }\n let plainTitle = key;\n if (propsTitle) {\n plainTitle = getMTitle(propsTitle) || key;\n }\n const tempNode: TreeNodeData = {\n title: plainTitle,\n key: `${node.id}-${keys.join('_')}`,\n children: [],\n canBeSelected: false,\n canDrag: false,\n canDropPos: ['current'],\n parent: slotNode,\n };\n\n let propValue: CNodeDataType[] = [];\n if (tempVal.value && !Array.isArray(tempVal.value)) {\n propValue = [tempVal.value];\n } else {\n propValue = tempVal.value;\n }\n\n tempNode.children = transformNodeSchemaToTreeData(propValue, tempNode, pageModel) as TreeNodeData[];\n propsNodeList.push(tempNode);\n return;\n }\n if (isPlainObject(val)) {\n const tempVal = val as any;\n Object.keys(tempVal).forEach((newKey) => {\n processProps(tempVal[newKey], newKey, [...keys, key]);\n });\n }\n if (Array.isArray(val)) {\n const tempVal = val as any[];\n tempVal.forEach((item, index) => {\n processProps(item, String(index), [...keys, key]);\n });\n }\n };\n\n const getPropsLabel = (nodeModel: CNode, keyPath: string[]) => {\n const propsLabelMap = getNodePropsLabelMap(nodeModel);\n const newKeyPath = keyPath.map((el) => {\n if (String(parseInt(el, 10)) === el) {\n return '$NUM';\n } else {\n return el;\n }\n });\n return propsLabelMap[newKeyPath.join('.')] || '';\n };\n\n Object.keys(props).forEach((key) => {\n processProps(props[key], key, []);\n });\n\n if (propsNodeList.length > 0) {\n newCurrentNode.children?.push(slotNode);\n slotNode.parent = newCurrentNode;\n }\n const childNodeList = nodeChild.map((el) => tb(el, newCurrentNode)) || [];\n newCurrentNode.children = [...newCurrentNode.children!, ...childNodeList];\n return newCurrentNode;\n };\n\n if (Array.isArray(nodeSchema)) {\n return nodeSchema.map((el) => {\n return tb(el, parent);\n });\n } else {\n return tb(nodeSchema, parent);\n }\n};\n\nexport const transformPageSchemaToTreeData = (pageSchema: CPageDataType, pageModel: CPage): TreeNodeData[] => {\n const tree = pageSchema.componentsTree;\n let child = (tree.children || []) as CNodeDataType[];\n if (!Array.isArray(child)) {\n child = [];\n }\n\n const rootNode: TreeNodeData = {\n title: 'Page',\n key: tree.id || 'globalState',\n rootNode: true,\n children: [],\n };\n rootNode.children = transformNodeSchemaToTreeData(child, rootNode, pageModel) as TreeNodeData[];\n return [rootNode];\n};\n\nexport const traverseTree = (\n tree: TreeNodeData | TreeNodeData[],\n handler: (node: TreeNodeData) => boolean | undefined\n) => {\n let tempTree: TreeNodeData[] = [];\n if (Array.isArray(tree)) {\n tempTree = tree;\n } else {\n tempTree = [tree];\n }\n\n let stop = false;\n\n const traverseCb = (node: TreeNodeData, conditionCb: (node: TreeNodeData) => boolean | undefined) => {\n if (stop) {\n return;\n }\n const res = conditionCb(node);\n if (res) {\n stop = true;\n } else {\n node.children?.forEach((el) => {\n traverseCb(el, conditionCb);\n });\n }\n };\n tempTree.forEach((el) => {\n traverseCb(el, handler);\n });\n};\n\nexport function calculateDropPosInfo(params: { point: { x: number; y: number }; dom: HTMLElement }): DropPosType {\n const { point, dom } = params;\n let pos: DropPosType['pos'];\n\n const mousePos = point;\n const targetRect = dom.getBoundingClientRect();\n const targetDomH = targetRect.height;\n const xCenter = targetRect.x + 50;\n const yCenter = targetRect.y + Math.round(targetDomH / 2);\n\n if (mousePos.y > yCenter) {\n pos = 'after';\n } else {\n pos = 'before';\n }\n\n if (mousePos.x > xCenter && pos === 'after') {\n pos = 'current';\n }\n\n return {\n pos,\n direction: 'vertical',\n };\n}\n\n//TODO: 移动到 model 包中去\nexport const getNodePropsLabelMap = (node: CNode) => {\n const resMap: Record<string, MTitle> = {};\n const props = node.material?.value.props;\n if (!props) {\n return resMap;\n }\n const singleProcessUnit = (val: SetterType, paths: string[]) => {\n if (isPlainObject(val)) {\n const newPaths = [...paths];\n const objSetter = val as SetterObjType;\n const componentName = objSetter.componentName;\n if (componentName === 'ArraySetter') {\n const setter = objSetter as ArraySetterObjType;\n const arrItemSetter = setter.props?.item.setters || [];\n const parentTitle = resMap[paths.join('.')];\n let currentTitle = '';\n if (typeof parentTitle === 'string') {\n currentTitle = parentTitle;\n } else {\n currentTitle = parentTitle.label;\n }\n newPaths.push('$NUM');\n arrItemSetter.forEach((el) => {\n currentTitle = `${currentTitle}`;\n resMap[newPaths.join('.')] = currentTitle;\n singleProcessUnit(el, newPaths);\n });\n } else if (componentName === 'ShapeSetter') {\n const setter = objSetter as ShapeSetterObjType;\n const elements = setter.props?.elements || [];\n elements.forEach((it) => {\n const newObjPaths = [...newPaths];\n newObjPaths.push(it.name);\n resMap[newObjPaths.join('.')] = it.title;\n const subSetter = it.setters || [];\n subSetter.forEach((it2) => {\n singleProcessUnit(it2, [...newObjPaths]);\n });\n });\n }\n }\n };\n\n props.forEach((item) => {\n let targetItem: MaterialPropType | MaterialPropType[] | null = null;\n if (isSpecialMaterialPropType(item)) {\n targetItem = item.content;\n } else {\n targetItem = item;\n }\n let itemArr: MaterialPropType[] = [];\n if (Array.isArray(targetItem)) {\n itemArr = targetItem;\n } else {\n itemArr = [targetItem];\n }\n\n itemArr.forEach((it) => {\n const newPaths: string[] = [it.name];\n resMap[newPaths.join('.')] = it.title;\n it.setters?.forEach((it2) => {\n singleProcessUnit(it2, newPaths);\n });\n });\n });\n\n return resMap;\n};\n","import { Sensor } from '@chamn/layout';\nimport { CPage } from '@chamn/model';\nimport React from 'react';\nimport { TreeNodeData } from './dataStruct';\nimport { DesignerExport } from '@/plugins/Designer/type';\nexport enum DragState {\n DRAGGING = 'DRAGGING',\n NORMAL = 'NORMAL',\n}\nexport type ContextState = {\n treeData: TreeNodeData[];\n currentSelectNodeKeys: string[];\n expandKeys: string[];\n multiSelect: boolean;\n dragState: DragState;\n pageModel: CPage | null;\n};\n\nexport type CTreeContextData = {\n sensor?: Sensor;\n state: ContextState;\n updateState: (state: Partial<ContextState>) => void;\n onSelectNode: (params: { keys: string[]; node: TreeNodeData }) => Promise<boolean | undefined>;\n onDeleteNode: (id: string) => Promise<boolean | undefined>;\n onCopyNode: (id: string) => Promise<boolean | undefined>;\n getDesignerHandler?: () => Promise<DesignerExport>;\n};\n\nexport const CTreeContext = React.createContext<CTreeContextData>({\n state: {\n treeData: [],\n currentSelectNodeKeys: [],\n expandKeys: [],\n multiSelect: false,\n dragState: DragState.NORMAL,\n pageModel: null,\n },\n updateState: () => {},\n onSelectNode: async () => {\n return true;\n },\n onDeleteNode: async () => {\n return true;\n },\n onCopyNode: async () => {\n return true;\n },\n});\n","import { useContext, useEffect, useRef, useState } from 'react';\nimport { CopyOutlined, DeleteOutlined, EyeInvisibleOutlined, EyeOutlined, RightOutlined } from '@ant-design/icons';\nimport clsx from 'clsx';\nimport { CTreeContext, DragState } from './context';\nimport { TreeNodeData } from './dataStruct';\nimport styles from './style.module.scss';\nimport { CNode } from '@chamn/model';\nimport { Input, InputRef } from 'antd';\nimport { CPluginCtx } from '@/core/pluginManager';\nimport { DesignerPluginInstance } from '@/plugins/Designer/type';\n\nexport const DRAG_ITEM_KEY = 'data-drag-key';\n\nexport type TreeNodeProps = {\n item: TreeNodeData;\n level?: number;\n paths?: (string | number)[];\n pluginCtx: CPluginCtx;\n};\nexport const TreeNode = (props: TreeNodeProps) => {\n const allStateRef = useRef<{ titleEditable: boolean }>({\n titleEditable: false,\n });\n const { level = 0, item, paths = ['0'] } = props;\n const [nodeVisible, setNodeVisible] = useState(true);\n const {\n state: ctxState,\n updateState,\n onSelectNode,\n onDeleteNode,\n getDesignerHandler,\n onCopyNode,\n } = useContext(CTreeContext);\n\n const [titleEditable, setTitleEditable] = useState(allStateRef.current?.titleEditable);\n const [editInputValue, setEditInputValue] = useState('');\n allStateRef.current.titleEditable = titleEditable;\n const expanded = ctxState.expandKeys.find((el) => el === item.key);\n const toggleExpandNode = (open?: boolean) => {\n let newExpandKeys = ctxState.expandKeys;\n if (open !== undefined) {\n if (open === true) {\n if (!expanded) {\n newExpandKeys.push(item.key || '');\n }\n } else {\n if (expanded) {\n newExpandKeys = newExpandKeys.filter((el) => el !== item.key);\n }\n }\n } else {\n if (expanded) {\n newExpandKeys = newExpandKeys.filter((el) => el !== item.key);\n } else {\n newExpandKeys.push(item.key || '');\n }\n }\n\n updateState({\n expandKeys: newExpandKeys,\n });\n };\n const selected = ctxState.currentSelectNodeKeys.find((el) => el === item.key);\n const titleEditInputRef = useRef<InputRef>(null);\n const toggleSelectNode = async () => {\n toggleExpandNode(true);\n if (titleEditable) {\n titleEditInputRef?.current?.focus();\n return;\n }\n if (item.canBeSelected !== undefined && item.canBeSelected === false) {\n return;\n }\n let newKeys = ctxState.currentSelectNodeKeys;\n if (!ctxState.multiSelect) {\n if (item.key) {\n const flag = await onSelectNode?.({ keys: [item.key], node: item });\n if (flag) {\n updateState({\n currentSelectNodeKeys: [String(item.key)],\n });\n }\n } else {\n onSelectNode?.({ keys: [], node: item });\n }\n\n return;\n }\n if (selected) {\n newKeys = newKeys.filter((el) => el !== item.key);\n } else {\n newKeys.push(String(item.key));\n }\n onSelectNode?.({ keys: newKeys, node: item });\n updateState({\n currentSelectNodeKeys: newKeys,\n });\n };\n const singPadding = 20;\n const indent = singPadding * level;\n const canBeSelected = item.canBeSelected ?? true;\n\n const dragKeyProps = {\n [DRAG_ITEM_KEY]: item.key,\n };\n const updateExpandKeyRef = useRef<(key: string) => void>();\n const ctxStateRef = useRef<typeof ctxState>();\n ctxStateRef.current = ctxState;\n updateExpandKeyRef.current = (key) => {\n const oldExpandKeys = ctxState.expandKeys;\n const newExpandKeys = Array.from(new Set([...oldExpandKeys, key]));\n updateState({\n expandKeys: newExpandKeys,\n });\n };\n const domRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n // auto expand on dragging\n let timerHandler = 0;\n domRef.current?.addEventListener('mouseenter', () => {\n timerHandler = window.setTimeout(() => {\n if (ctxStateRef.current?.dragState === DragState.DRAGGING) {\n updateExpandKeyRef.current?.(item.key || '');\n }\n }, 0.8 * 1000);\n });\n domRef.current?.addEventListener('mouseleave', () => {\n clearTimeout(timerHandler);\n });\n\n const clickHandle = (e: MouseEvent) => {\n if (allStateRef.current.titleEditable) {\n if (e.target === titleEditInputRef.current?.input) {\n return;\n }\n setTitleEditable(false);\n targetNodeModel.updateValue();\n }\n };\n let sunWin: Window | null;\n const registerDesignerClick = async () => {\n const designerPluginInstance = await props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerHandler = designerPluginInstance?.export;\n const win = designerHandler?.getDesignerWindow();\n win?.addEventListener('click', clickHandle);\n sunWin = win || null;\n };\n\n registerDesignerClick();\n document.addEventListener('click', clickHandle);\n\n return () => {\n if (timerHandler) {\n clearTimeout(timerHandler);\n }\n document.removeEventListener('click', clickHandle);\n sunWin?.removeEventListener('click', clickHandle);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const targetNodeModel = ctxState.pageModel?.getNode(item.key || '') as CNode;\n\n const toggleNodeVisible = () => {\n const newVisible = !nodeVisible;\n\n if (!targetNodeModel) {\n return;\n }\n const devState = targetNodeModel.value.configure.devState ?? {};\n devState.condition = newVisible;\n targetNodeModel.value.configure.devState = devState;\n targetNodeModel.updateValue();\n setNodeVisible(newVisible);\n };\n\n let titleView = item.title;\n if (item.titleViewRender) {\n titleView = item.titleViewRender({\n item,\n titleView: item.title,\n });\n }\n\n const bodyView = (\n <div className={styles.nodeBox}>\n <div\n className={clsx([styles.nodeContent, selected && canBeSelected && styles.selected])}\n style={{ marginLeft: `${-indent}px`, paddingLeft: `${indent + 8}px` }}\n onMouseMove={async () => {\n if (!item.key) {\n return;\n }\n const designerHandler = await getDesignerHandler?.();\n const compInstances = designerHandler?.getDynamicComponentInstances(item.key);\n if (typeof compInstances?._CONDITION !== 'undefined') {\n setNodeVisible(compInstances?._CONDITION);\n }\n }}\n >\n {item.children?.length ? (\n <span style={{ paddingRight: '5px' }} className={styles.arrowSpan} onClickCapture={() => toggleExpandNode()}>\n <RightOutlined className={clsx([styles.nodeArrow, expanded && styles.expanded])} />\n </span>\n ) : null}\n <div\n className={styles.nodeRenderView}\n {...dragKeyProps}\n ref={domRef}\n onClick={toggleSelectNode}\n onDoubleClick={() => {\n // slot 节点,属性节点不能编辑 title\n if (!targetNodeModel) {\n return;\n }\n const node = targetNodeModel;\n const nodeMeta = node.materialsModel.findByComponentName(node.value.componentName)?.value.title;\n const inputValue = node.value.title || nodeMeta || node.value.componentName || '';\n setEditInputValue(inputValue);\n setTitleEditable(true);\n setTimeout(() => {\n titleEditInputRef.current?.focus();\n }, 16.66);\n }}\n >\n {!titleEditable && titleView}\n {titleEditable && (\n <div\n style={{\n paddingRight: '10px',\n }}\n >\n <Input\n size=\"small\"\n maxLength={20}\n style={{}}\n ref={titleEditInputRef}\n value={editInputValue}\n onPressEnter={() => {\n setTitleEditable(false);\n targetNodeModel.updateValue();\n }}\n onChange={(e) => {\n targetNodeModel.value.title = e.target.value;\n setEditInputValue(e.target.value);\n }}\n />\n </div>\n )}\n </div>\n\n {!titleEditable && !item.rootNode && (\n <div className={styles.toolbarBox}>\n <div className={styles.iconItem}>\n {!nodeVisible && <EyeOutlined onClick={toggleNodeVisible} />}\n {nodeVisible && <EyeInvisibleOutlined onClick={toggleNodeVisible} />}\n </div>\n <div\n className={styles.iconItem}\n onClick={() => {\n onCopyNode(item.key || '');\n }}\n >\n <CopyOutlined />\n </div>\n <div\n className={styles.iconItem}\n onClick={() => {\n onDeleteNode(item.key || '');\n }}\n >\n <DeleteOutlined />\n </div>\n </div>\n )}\n </div>\n <div\n className={clsx([styles.nodeChildren, selected && styles.selected])}\n style={{\n paddingLeft: `${singPadding}px`,\n height: expanded ? 'auto' : '0',\n }}\n >\n {expanded &&\n item.children?.map((el, index) => {\n const key = `${el.key}-${index}`;\n return (\n <TreeNode key={key} item={el} paths={[...paths, index]} level={level + 1} pluginCtx={props.pluginCtx} />\n );\n })}\n </div>\n </div>\n );\n if (item.containerRender) {\n const containerView = item.containerRender({\n item: item,\n treeNodeView: bodyView,\n });\n return containerView;\n }\n return bodyView;\n};\n","import { LayoutDragAndDropExtraDataType, Sensor } from '@chamn/layout';\nimport { CNode, CRootNode, DropPosType } from '@chamn/model';\nimport React from 'react';\nimport { WithTranslation } from 'react-i18next';\nimport { CPluginCtx } from '../../../../core/pluginManager';\nimport { LOGGER } from '../../../../utils/logger';\nimport { calculateDropPosInfo, getTargetMNodeKeyVal, transformPageSchemaToTreeData, traverseTree } from '../../util';\nimport { ContextState, CTreeContext, DragState } from './context';\nimport { TreeNodeData } from './dataStruct';\nimport styles from './style.module.scss';\nimport { DRAG_ITEM_KEY, TreeNode } from './treeNode';\nimport { DesignerPluginInstance } from '@/plugins/Designer/type';\nimport { message } from 'antd';\n\ninterface TreeViewProps extends WithTranslation {\n pluginCtx: CPluginCtx;\n multiSelect?: boolean;\n}\n\nexport class TreeView extends React.Component<\n TreeViewProps,\n ContextState & {\n dropPosInfo: { x: number; y: number } | null;\n }\n> {\n domRef: React.RefObject<HTMLDivElement>;\n disposeCbList: (() => void)[] = [];\n sensor?: Sensor;\n constructor(props: TreeViewProps) {\n super(props);\n this.domRef = React.createRef<HTMLDivElement>();\n\n this.state = {\n treeData: [],\n currentSelectNodeKeys: [],\n expandKeys: [],\n multiSelect: props.multiSelect || false,\n dropPosInfo: {\n x: 0,\n y: 0,\n },\n pageModel: props.pluginCtx.pageModel,\n dragState: DragState.NORMAL,\n };\n }\n\n getDesignerHandler = async () => {\n const designerPluginInstance = await this.props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerHandler = designerPluginInstance?.export;\n return designerHandler!;\n };\n\n updateTreeDataFromNode = () => {\n const { pluginCtx } = this.props;\n const { pageModel } = pluginCtx;\n const plainTreeData = pageModel.export();\n const tempTreeData = transformPageSchemaToTreeData(plainTreeData, pageModel);\n this.setState({\n treeData: tempTreeData,\n });\n };\n\n getParentKeyPaths = (targetKey: string) => {\n const { treeData } = this.state;\n let target: TreeNodeData = null as any;\n traverseTree(treeData, (node) => {\n if (node.key === targetKey) {\n target = node;\n return true;\n }\n return false;\n });\n if (target) {\n let tempNode = target?.parent as TreeNodeData | undefined | null;\n const res = [];\n while (tempNode) {\n if (tempNode.key) {\n res.push(tempNode.key);\n }\n tempNode = tempNode.parent;\n }\n return res;\n } else {\n return [];\n }\n };\n\n scrollNodeToView = (key: string) => {\n const dom = document.querySelector(`[${DRAG_ITEM_KEY}=\"${key}\"]`);\n dom?.scrollIntoView?.({\n behavior: 'smooth',\n block: 'center',\n });\n };\n\n async componentDidMount() {\n this.updateTreeDataFromNode();\n const { pluginCtx } = this.props;\n const { pageModel } = pluginCtx;\n\n pageModel.emitter.on('*', () => {\n this.updateTreeDataFromNode();\n });\n\n pluginCtx.globalEmitter.on('onSelectNodeChange', ({ node }) => {\n this.toSelectTreeNode(node);\n });\n\n const workbench = pluginCtx.getWorkbench();\n\n workbench.emitter.on('leftPanelVisible', ({ visible, panelName }) => {\n if (visible && panelName === 'OutlineTree') {\n console.log('visible, panelName', visible, panelName);\n const currentSelectNode = pluginCtx.engine.getActiveNode();\n if (currentSelectNode) {\n this.toSelectTreeNode(currentSelectNode);\n }\n }\n });\n\n const currentSelectNode = pluginCtx.engine.getActiveNode();\n if (currentSelectNode) {\n this.toSelectTreeNode(currentSelectNode);\n }\n\n await this.props.pluginCtx.pluginManager.onPluginReadyOk('Designer');\n this.registerDragEvent();\n // 页面重载时重新注册拖拽事件\n this.props.pluginCtx.engine.pageModel.emitter.on('onReloadPage', () => {\n this.registerDragEvent();\n });\n }\n\n toSelectTreeNode = (node: CNode | CRootNode | null) => {\n if (!node) {\n this.setState({\n currentSelectNodeKeys: [],\n });\n return;\n }\n const parentPaths = this.getParentKeyPaths(node.id);\n LOGGER.debug('onSelectNodeChange parent path', parentPaths, node);\n const newExpandKeys = Array.from(new Set([...this.state.expandKeys, ...parentPaths]));\n\n LOGGER.debug('onSelectNodeChange newExpandKeys', newExpandKeys, node);\n\n this.setState({\n currentSelectNodeKeys: [node.id],\n expandKeys: newExpandKeys,\n });\n\n setTimeout(() => {\n this.scrollNodeToView(node.id);\n }, 16);\n };\n\n containNode = (parentNode: TreeNodeData, targetNode: TreeNodeData) => {\n let res = null;\n traverseTree(parentNode, (node) => {\n if (node.key === targetNode.key) {\n res = node;\n return true;\n }\n return false;\n });\n return res;\n };\n\n getTreeNodeByKey = (key: string): TreeNodeData | null => {\n const { treeData } = this.state;\n let target: TreeNodeData | null = null;\n traverseTree(treeData, (node) => {\n if (node.key === key) {\n target = node;\n return true;\n }\n return false;\n });\n return target;\n };\n\n registerDragEvent = async () => {\n if (!this.domRef.current) {\n return;\n }\n const sensor = new Sensor<LayoutDragAndDropExtraDataType>({\n container: this.domRef.current,\n name: 'OutlineTree',\n eventPriority: 999,\n mainDocument: document,\n });\n const { pluginCtx } = this.props;\n\n const pageModel = pluginCtx.pageModel;\n const designerExport = await this.getDesignerHandler();\n const dnd = designerExport!.getDnd()!;\n\n sensor.setCanDrag(async (eventObj) => {\n const targetDom = eventObj.event.target as HTMLDivElement;\n if (!targetDom) {\n return;\n }\n const targetNodeId = getTargetMNodeKeyVal(targetDom, DRAG_ITEM_KEY);\n\n if (!targetNodeId) {\n return;\n }\n\n const targetNode = pageModel.getNode(targetNodeId);\n const targetTreeNode = this.getTreeNodeByKey(targetNodeId);\n // 判断当前节点是否可以在节点树上拖动,比如 jsslot 容器节点不能被拖动,大纲树特有\n if (targetTreeNode?.canDrag !== undefined && targetTreeNode?.canDrag === false) {\n return;\n }\n\n // 判断节点本身是否可以拖动\n const designerInstance = designerExport!.getInstance();\n const nodeCanDragRes = await designerInstance?.customAdvanceHook.canDrag({\n dragNode: targetNode,\n eventObj: {\n extraData: {},\n ...eventObj,\n from: eventObj.event,\n fromSensor: sensor,\n fromPointer: eventObj.pointer,\n },\n });\n // 节点不能拖动\n if (nodeCanDragRes === false) {\n return false;\n }\n\n if (!targetNode) {\n console.log('targetNode not found');\n return;\n }\n\n const canDragResInfo = {\n ...eventObj,\n extraData: {\n dragNode: targetNode,\n dragNodeUID: targetNode.id,\n },\n };\n\n if (typeof nodeCanDragRes === 'object') {\n canDragResInfo.extraData.dragNode = nodeCanDragRes.dragNode!;\n canDragResInfo.extraData.dragNodeUID = nodeCanDragRes.dragNode?.id || '';\n }\n\n return canDragResInfo;\n });\n\n sensor.setCanDrop(async (eventObj) => {\n const targetDom = eventObj.event.target as HTMLDivElement;\n\n if (!targetDom) {\n LOGGER.debug('drop dom not found');\n return eventObj;\n }\n const targetNodeId = getTargetMNodeKeyVal(targetDom, DRAG_ITEM_KEY);\n\n if (!targetNodeId) {\n LOGGER.debug('targetNodeId dom not found', eventObj, targetDom, DRAG_ITEM_KEY);\n return eventObj;\n }\n const targetTreeNode = this.getTreeNodeByKey(targetNodeId);\n if (targetTreeNode?.canDropPos !== undefined && targetTreeNode.canDropPos === false) {\n LOGGER.debug('node can not be drop by tree node config');\n return eventObj;\n }\n\n const targetNode = pageModel.getNode(targetNodeId);\n\n if (!targetNode) {\n LOGGER.debug('targetNode not found');\n return eventObj;\n }\n const startNode = eventObj.extraData?.dragNode as CNode;\n if (!startNode) {\n LOGGER.debug('startNode not found');\n return eventObj;\n }\n\n if (startNode?.id === targetNode.id) {\n LOGGER.debug('startNode and dropNode is the same');\n return eventObj;\n }\n const hasContain = startNode.contains(targetNode.id);\n\n if (hasContain) {\n LOGGER.debug('startNode contain dropNode');\n return eventObj;\n }\n\n const dropInfo = calculateDropPosInfo({\n point: eventObj.pointer,\n dom: targetDom,\n });\n\n if (Array.isArray(targetTreeNode?.canDropPos) && !targetTreeNode?.canDropPos.includes(dropInfo.pos)) {\n return false;\n }\n\n LOGGER.info('can dropNode', targetNode);\n\n const res = {\n ...eventObj,\n extraData: {\n ...eventObj.extraData,\n dropPosInfo: dropInfo,\n dropNode: targetNode,\n dropNodeUID: targetNode.id,\n },\n };\n\n // 判断节点本身是否可以拖动\n const designerInstance = designerExport!.getInstance();\n const nodeCanDropRes = await designerInstance?.customAdvanceHook.canDrop({\n dragNode: res.extraData.dragNode,\n dropNode: targetNode,\n eventObj: {\n ...res,\n from: res.event,\n fromSensor: sensor,\n fromPointer: res.pointer,\n },\n });\n\n if (nodeCanDropRes === false) {\n return false;\n }\n\n if (typeof nodeCanDropRes === 'object') {\n res.extraData = {\n ...res.extraData,\n ...nodeCanDropRes,\n };\n }\n return res;\n });\n\n dnd.registerSensor(sensor);\n\n sensor.emitter.on('dragging', (e) => {\n const dropNode = e.extraData.dropNode as CNode;\n this.setState({\n dragState: DragState.DRAGGING,\n });\n\n if (!dropNode) {\n this.setState({\n dropPosInfo: null,\n });\n return;\n }\n const dropDom = document.querySelectorAll(`[${DRAG_ITEM_KEY}=\"${dropNode.id}\"]`)?.[0];\n if (!dropDom) {\n return;\n }\n const dropPosInfo = e.extraData?.dropPosInfo || ({} as DropPosType);\n const rect = dropDom.getBoundingClientRect();\n const newDropInfo = { x: 0, y: 0 };\n\n newDropInfo.x = rect.x;\n if (dropPosInfo.pos === 'before') {\n newDropInfo.y = rect.y;\n } else if (dropPosInfo.pos === 'after') {\n newDropInfo.y = rect.y + rect.height;\n } else {\n newDropInfo.y = rect.y + rect.height;\n newDropInfo.x = rect.x + 20;\n }\n this.setState({\n dropPosInfo: newDropInfo,\n });\n });\n\n sensor.emitter.on('dragEnd', () => {\n this.setState({\n dragState: DragState.NORMAL,\n });\n });\n this.sensor = sensor;\n };\n\n render() {\n const { treeData, dragState, dropPosInfo } = this.state;\n const { pluginCtx } = this.props;\n\n return (\n <CTreeContext.Provider\n value={{\n sensor: this.sensor,\n state: this.state,\n getDesignerHandler: this.getDesignerHandler,\n onSelectNode: async ({ keys: sk }) => {\n const designer = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n if (!designer) {\n console.warn('Designer is empty');\n return false;\n }\n const nodeId = sk?.[0] || '';\n const nn = pluginCtx.pageModel.getNode(nodeId);\n if (!nn) {\n return false;\n }\n\n const designerExport = designer.export;\n const flag = await designerExport.selectNode(nodeId);\n return flag;\n },\n updateState: (newVal) => {\n this.setState(newVal as any);\n },\n onDeleteNode: async (id) => {\n const designer = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n if (!designer) {\n console.warn('Designer is empty');\n return false;\n }\n const designerExport = designer.export;\n const nodeId = id;\n const nn = pluginCtx.pageModel.getNode(nodeId);\n if (!nn) {\n message.error('该节点不能删除');\n return false;\n }\n const flag = await designerExport.deleteNode(id);\n if (!flag) {\n message.error('该节点不能删除');\n }\n return flag;\n },\n onCopyNode: async (id) => {\n const designer = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n if (!designer) {\n console.warn('Designer is empty');\n return false;\n }\n const designerExport = designer.export;\n return await designerExport.copyNode(id);\n },\n }}\n >\n <div className={styles.contentBox} ref={this.domRef}>\n {treeData.map((item, index) => {\n return <TreeNode item={item} key={item.key + `${index}`} pluginCtx={this.props.pluginCtx}></TreeNode>;\n })}\n {dragState === DragState.DRAGGING && dropPosInfo && (\n <div\n className={styles.dropAnchorLine}\n style={{\n left: `${dropPosInfo.x}px`,\n top: `${dropPosInfo.y}px`,\n }}\n ></div>\n )}\n </div>\n </CTreeContext.Provider>\n );\n }\n}\n","export const zh_CN: Record<string, any> = {\n pluginName: '大纲树',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Layout Tree',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","import { ApartmentOutlined } from '@ant-design/icons';\nimport { CPlugin } from '../../core/pluginManager';\nimport { withTranslation } from 'react-i18next';\nimport { TreeView } from './components/TreeView';\nimport localize from './localize';\n\nconst PLUGIN_NAME = 'OutlineTree';\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\nexport const OutlineTreePlugin: CPlugin = {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const { i18n } = ctx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n const TreeViewWithLocalize = withTranslation(i18nNamespace)(TreeView);\n const Title = withTranslation(i18nNamespace)(({ t }) => <>{t('pluginName')}</>);\n const workbench = ctx.getWorkbench();\n workbench.addLeftPanel({\n title: <Title />,\n name: PLUGIN_NAME,\n icon: <ApartmentOutlined />,\n render: <TreeViewWithLocalize pluginCtx={ctx} />,\n });\n\n ctx.pluginReadyOk();\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return {};\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\nOutlineTreePlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const REACT_FLOW_DRAG_CLASS_NAME = 'chamn-action-drag-handler';\n\nexport const INPUT_HANDLE_ID = 'INPUT_HANDLE_ID';\n\nexport const OUTPUT_HANDLE_ID = 'OUTPUT_HANDLE_ID';\n\nexport const REQUEST_API_FAILED_HANDLE_ID = 'REQUEST_API_FAILED_HANDLE_ID';\n","import React from 'react';\nimport { CSetter } from '../Setters/type';\n\nexport type ContextState = Record<string, any>;\n\nexport type CFormContextData = {\n formName: string;\n formState: ContextState;\n conditionConfig: Record<string, (state: ContextState) => boolean>;\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap?: Record<string, CSetter>;\n updateContext: (newState: ContextState, changeKeys?: string[]) => void;\n updateConditionConfig: (name: string, cb: (state: ContextState) => boolean) => void;\n};\n\nexport const CFormContext = React.createContext<CFormContextData>({\n formName: '',\n formState: {},\n conditionConfig: {},\n updateContext: () => {},\n updateConditionConfig: () => {},\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap: {},\n});\n","import React from 'react';\nimport { ReactNode } from 'react';\nimport { CFormContext, CFormContextData, ContextState } from './context';\n\nexport type CFormProps = {\n name: string;\n children?: ReactNode | ReactNode[];\n initialValue?: Record<string, any>;\n customSetterMap: CFormContextData['customSetterMap'];\n onValueChange?: (formData: Record<string, any>, changeKeys?: string[]) => void;\n} & Partial<ContextState>;\n\nconst CUSTOM_SETTER_MAP = {};\n\nlet updateState = () => {};\n\nexport const registerCustomSetter = (customSetterMap: CFormContextData['customSetterMap']) => {\n Object.assign(CUSTOM_SETTER_MAP, customSetterMap);\n updateState?.();\n};\nexport class CForm extends React.Component<CFormProps, CFormContextData> {\n updateContext: (newState: ContextState) => void;\n isMount = false;\n constructor(props: CFormProps) {\n super(props);\n this.updateContext = (newState: ContextState, changeKeys?: string[]) => {\n this.setState({\n formState: newState,\n customSetterMap: CUSTOM_SETTER_MAP,\n });\n this.props.onValueChange?.(this.formatValue(newState), changeKeys);\n };\n updateState = () => {\n if (!this.isMount) {\n return;\n }\n this.setState({\n customSetterMap: { ...CUSTOM_SETTER_MAP, ...this.props.customSetterMap },\n });\n };\n registerCustomSetter(props.customSetterMap || {});\n this.state = {\n formName: props.name,\n formState: props.initialValue ?? {},\n conditionConfig: {},\n customSetterMap: props.customSetterMap || {},\n\n updateContext: this.updateContext,\n updateConditionConfig: (name: string, cb: (state: Record<string, any>) => boolean) => {\n this.setState({\n conditionConfig: {\n ...this.state.conditionConfig,\n [name]: cb,\n },\n });\n },\n };\n }\n\n componentDidMount(): void {\n this.isMount = true;\n }\n\n componentWillUnmount(): void {\n this.isMount = false;\n }\n\n getFieldsValue = () => {\n return this.formatValue(this.state.formState);\n };\n\n setFields = (state: Record<string, any>) => {\n this.setState({\n formState: state,\n });\n };\n\n formatValue = (data: Record<string, any>) => {\n const res: Record<string, any> = {};\n const conditionConfig = this.state.conditionConfig;\n Object.keys(data).forEach((key) => {\n const isValid = conditionConfig[key]?.(data) ?? true;\n if (isValid) {\n res[key] = data[key];\n }\n });\n return res;\n };\n\n render(): ReactNode {\n const { state } = this;\n const { children } = this.props;\n\n return <CFormContext.Provider value={state}>{children}</CFormContext.Provider>;\n }\n}\n","import { ConfigProvider, Input, InputProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\nexport const StringSetter: CSetter<InputProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<InputProps & { initialValue?: string }>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Input\n {...props}\n value={props.value ?? initialValue}\n onChange={(e) => {\n props.onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n />\n </ConfigProvider>\n );\n};\n\nStringSetter.setterName = '字符设置器';\n","import React from 'react';\nimport { ConfigProvider, InputNumber, InputNumberProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\nexport const NumberSetter: CSetter<InputNumberProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<InputNumberProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <InputNumber\n style={{\n width: '100%',\n }}\n {...props}\n value={props.value ?? initialValue}\n onChange={(value) => {\n props.onChange?.(value);\n onValueChange?.(value);\n }}\n />\n </ConfigProvider>\n );\n};\n\nNumberSetter.setterName = '数字设置器';\n","import { SetterBasicType, SetterObjType, SetterType } from '@chamn/model';\n\nexport const getSetterList = <T extends SetterBasicType = ''>(setters: SetterType<T>[] = []): SetterObjType<T>[] => {\n return setters.map((setter) => {\n if (typeof setter === 'string') {\n return {\n componentName: setter as any,\n };\n } else {\n return setter;\n }\n });\n};\n\nconst setterTypeMap = {\n string: 'StringSetter',\n number: 'NumberSetter',\n boolean: 'BooleanSetter',\n array: 'ArraySetter',\n expression: 'ExpressionSetter',\n function: 'FunctionSetter',\n json: 'JSONSetter',\n} as const;\n\nconst getValueType = (value: any): keyof typeof setterTypeMap => {\n if (value === undefined || value === null) {\n return 'string';\n }\n\n if (Array.isArray(value)) {\n return 'array';\n }\n\n if (typeof value === 'object') {\n if (value.type === 'EXPRESSION') return 'expression';\n if (value.type === 'FUNCTION') return 'function';\n return 'json';\n }\n\n return typeof value as keyof typeof setterTypeMap;\n};\n\n/** 根据值获取默认的 setter */\nexport const getDefaultSetterByValue = (value: any, setterList: SetterObjType[]) => {\n const valueType = getValueType(value);\n const setterName = setterTypeMap[valueType];\n return setterList.find((setter) => setter.componentName === setterName);\n};\n","import React, { useEffect, useRef } from 'react';\nimport { CForm } from '../../Form';\nimport { SetterSwitcher } from '../../SetterSwitcher';\nimport { DeleteOutlined } from '@ant-design/icons';\nimport { SetterObjType } from '@chamn/model';\n\nexport function ArrayItem(props: {\n index: number;\n labelPrefix?: string;\n keyPaths: string[];\n value: Record<string, any>;\n setters: SetterObjType[];\n style: React.CSSProperties;\n onValueChange: (val: Record<string, any>) => void;\n onDelete: () => void;\n}) {\n const { index, keyPaths, setters } = props;\n\n const style = {\n ...props.style,\n };\n const objectValue = {\n [index]: props.value,\n };\n const formRef = useRef<CForm>(null);\n useEffect(() => {\n formRef.current?.setFields({\n [index]: props.value,\n });\n }, [index, props.value]);\n\n return (\n <div style={style}>\n <CForm\n ref={formRef}\n name={String(index)}\n initialValue={objectValue || {}}\n onValueChange={props.onValueChange}\n customSetterMap={{}}\n >\n <SetterSwitcher\n suffix={\n <div\n style={{\n marginLeft: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n <DeleteOutlined onClick={props.onDelete} />\n </div>\n }\n name={String(index)}\n label={`${props.labelPrefix ?? `元素-${index}`}`}\n keyPaths={[...keyPaths, String(index)]}\n setters={setters}\n ></SetterSwitcher>\n </CForm>\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport { CSS, Transform } from '@dnd-kit/utilities';\nimport { Modal, ModalProps } from 'antd';\nimport {\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useDraggable,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { arrayMove, SortableContext, sortableKeyboardCoordinates, useSortable } from '@dnd-kit/sortable';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { getRandomStr } from '@chamn/model';\nimport styles from './style.module.scss';\n\nexport type SortItemOrderProps = {\n list: any[];\n keyPaths: string[];\n label: string;\n sortLabelKey?: string;\n onValueChange?: (newList: any[]) => void;\n} & ModalProps;\n\nexport const SortItemOrderModal = ({\n list,\n onValueChange,\n keyPaths,\n label,\n sortLabelKey,\n ...modalProps\n}: SortItemOrderProps) => {\n const [listValue, setListValue] = useState<{ val: any; id: string }[]>([]);\n useEffect(() => {\n const innerList = list.map((el, index) => ({\n val: el,\n oldIndex: index,\n id: getRandomStr(),\n }));\n setListValue(innerList);\n }, [list, modalProps.open]);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 15,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (active.id !== over?.id) {\n const oldIndex = listValue.findIndex((el) => el.id === active?.id);\n const newIndex = listValue.findIndex((el) => el.id === over?.id);\n const newInnerListVal = arrayMove(listValue, oldIndex, newIndex);\n const newVal = newInnerListVal.map((el) => {\n return el.val;\n });\n setListValue(newInnerListVal);\n onValueChange?.(newVal);\n }\n }\n\n const [modalTransform, setModalTransform] = useState<Transform>({\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n });\n\n return (\n <Modal\n {...modalProps}\n title={`Sort: ${label} [${keyPaths.join('.')}]`}\n styles={{\n mask: {\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n },\n }}\n modalRender={(modal) => {\n return (\n <DndContext\n sensors={sensors}\n onDragEnd={({ delta }) => {\n const res = {\n ...modalTransform,\n ...delta,\n x: modalTransform.x + (delta?.x || 0),\n y: modalTransform.y + (delta?.y || 0),\n };\n setModalTransform(res);\n }}\n >\n <ModalDragView modal={modal} transform={modalTransform} />\n </DndContext>\n );\n }}\n >\n <div className={styles.sortModalBox}>\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} modifiers={[restrictToVerticalAxis]}>\n <SortableContext items={listValue}>\n {listValue.map(({ id, val }, index) => {\n return <SortableItem key={id} id={id} index={index} label={val[sortLabelKey || '']} />;\n })}\n </SortableContext>\n </DndContext>\n </div>\n </Modal>\n );\n};\n\nconst ModalDragView = ({ modal, transform }: { modal: React.ReactNode; transform: Transform }) => {\n const id = useRef(getRandomStr());\n const {\n setNodeRef,\n attributes,\n listeners,\n transform: tempTransform,\n } = useDraggable({\n id: id.current,\n });\n\n const finalTransform = {\n ...transform,\n ...tempTransform,\n x: transform.x + (tempTransform?.x || 0),\n y: transform.y + (tempTransform?.y || 0),\n };\n\n return (\n <div\n ref={setNodeRef}\n style={{\n pointerEvents: 'auto',\n transform: CSS.Transform.toString(finalTransform),\n }}\n {...attributes}\n {...listeners}\n >\n {modal}\n </div>\n );\n};\n\nconst SortableItem = (props: { id: string; index: string | number; label?: string }) => {\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: props.id });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n const labelText = props.label || `Ele ${props.index}`;\n return (\n <div className={styles.dragItem} ref={setNodeRef} style={style} {...attributes} {...listeners}>\n {labelText}\n </div>\n );\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { Button, ConfigProvider } from 'antd';\nimport { CSetterProps } from '../type';\nimport { getSetterList } from '../../../utils';\nimport { SetterType } from '@chamn/model';\n\nimport { ArrayItem } from './ArrayItem';\nimport { SortItemOrderModal } from './SortItemOrderModal';\nimport styles from './style.module.scss';\n\nexport type CArraySetterProps = {\n item: {\n setters: SetterType[];\n initialValue?: any;\n };\n itemLabelPrefix?: string;\n sortLabelKey?: string;\n itemLabelPrefixKey?: string;\n};\n\nfunction formatValue(value: unknown) {\n if (Array.isArray(value)) {\n return value;\n } else {\n return [];\n }\n}\n\nexport const ArraySetter = ({\n onValueChange,\n setterContext,\n item: { setters, initialValue: itemInitialValue },\n sortLabelKey,\n initialValue,\n itemLabelPrefix,\n itemLabelPrefixKey,\n ...props\n}: CSetterProps<CArraySetterProps>) => {\n const { keyPaths, label } = setterContext;\n const listValue: any[] = useMemo(() => {\n return formatValue(props.value ?? initialValue);\n }, [initialValue, props.value]);\n\n const [sortVisible, setSortVisible] = useState(false);\n const innerSetters = getSetterList(\n setters || [\n {\n component: 'StringSetter',\n },\n ]\n );\n\n useEffect(() => {\n if (setterContext.setCollapseHeaderExt) {\n setterContext.setCollapseHeaderExt?.(\n <Button\n type=\"text\"\n size=\"small\"\n style={{\n color: 'gray',\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSortVisible(true);\n }}\n >\n sort\n </Button>\n );\n }\n }, [setterContext]);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n {listValue.map((val, index) => {\n return (\n <ArrayItem\n labelPrefix={val[itemLabelPrefixKey || sortLabelKey || ''] || itemLabelPrefix}\n key={index}\n style={{ paddingBottom: '10px' }}\n index={index}\n keyPaths={keyPaths}\n value={val}\n onValueChange={(val) => {\n listValue[index] = val[index];\n onValueChange?.([...listValue]);\n }}\n setters={innerSetters}\n onDelete={() => {\n const newVal = [...listValue];\n newVal.splice(index, 1);\n onValueChange?.(newVal);\n }}\n />\n );\n })}\n\n <Button\n className={styles.addOneBtn}\n size=\"small\"\n onClick={() => {\n const newVal = [...listValue];\n onValueChange?.([...newVal, itemInitialValue ?? '']);\n }}\n >\n Add One\n </Button>\n <SortItemOrderModal\n label={label}\n sortLabelKey={sortLabelKey}\n onValueChange={(newVal) => {\n onValueChange?.([...newVal]);\n }}\n open={sortVisible}\n list={listValue}\n keyPaths={keyPaths}\n onCancel={() => {\n setSortVisible(false);\n }}\n onOk={() => {\n setSortVisible(false);\n }}\n />\n </ConfigProvider>\n );\n};\n\nArraySetter.setterName = '数组设置器';\n","import { useEffect, useRef } from 'react';\nimport { ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { CForm } from '../../Form';\nimport { SetterSwitcher } from '../../SetterSwitcher';\nimport { getSetterList } from '../../../utils';\nimport { getMTitle, getMTitleTip, MaterialPropType } from '@chamn/model';\n\nexport type CShapeSetterProps = {\n elements: MaterialPropType[];\n initialValue?: Record<string, any>;\n value: Record<string, any>;\n};\n\nexport const ShapeSetter: CSetter<CShapeSetterProps> = ({\n onValueChange,\n elements,\n value,\n setterContext,\n initialValue,\n}: CSetterProps<CShapeSetterProps>) => {\n const { keyPaths } = setterContext;\n const formRef = useRef<CForm>(null);\n useEffect(() => {\n formRef.current?.setFields(value || {});\n }, [value]);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <CForm\n ref={formRef}\n name={keyPaths.join('.')}\n initialValue={value || initialValue || {}}\n onValueChange={(val) => {\n onValueChange?.(val);\n }}\n customSetterMap={{}}\n >\n {elements.map((el, index) => {\n const setters = getSetterList(el.setters);\n const title = getMTitle(el.title);\n const tip = getMTitleTip(el.title) || el?.description;\n return (\n <div key={index}>\n <SetterSwitcher\n name={el.name}\n label={title}\n tips={tip}\n condition={el.condition}\n keyPaths={[...keyPaths, el.name]}\n setters={setters}\n />\n </div>\n );\n })}\n </CForm>\n </ConfigProvider>\n );\n};\n\nShapeSetter.setterName = '对象设置器';\n","import Editor, { EditorProps, Monaco } from '@monaco-editor/react';\n\nexport type EditorType = EditorProps;\n\nexport type MonacoEditorInstance = Parameters<Required<EditorType>['onMount']>[0];\n\nexport type MonacoEditorProps = {\n beforeMount?: (monaco: Monaco) => void;\n onDidMount?: (editor: MonacoEditorInstance) => void;\n options?: EditorType['options'];\n onChange?: EditorType['onChange'];\n initialValue?: string;\n language?: 'json' | 'javascript' | 'typescript' | 'css';\n theme?: 'vs-dark' | 'light';\n};\n\nexport const MonacoEditor = (props: MonacoEditorProps) => {\n const handleEditorBeforeMount: EditorType['beforeMount'] = (monaco) => {\n props.beforeMount?.(monaco);\n };\n\n const handleEditorDidMount: EditorType['onMount'] = (editor) => {\n props.onDidMount?.(editor);\n };\n\n return (\n <Editor\n height=\"100%\"\n width=\"100%\"\n defaultLanguage={props.language}\n defaultValue={props.initialValue}\n beforeMount={handleEditorBeforeMount}\n onMount={handleEditorDidMount}\n options={props.options}\n theme={props.theme}\n onChange={props.onChange}\n />\n );\n};\n","export default \"type SetStateInternal<T> = {\\n _(\\n partial:\\n | T\\n | Partial<T>\\n | {\\n _(state: T): T | Partial<T>;\\n }['_'],\\n replace?: boolean | undefined\\n ): void;\\n}['_'];\\nexport interface StoreApi<T> {\\n setState: SetStateInternal<T>;\\n getState: () => T;\\n subscribe: (listener: (state: T, prevState: T) => void) => () => void;\\n /**\\n * @deprecated Use `unsubscribe` returned by `subscribe`\\n */\\n destroy: () => void;\\n}\\n\\ntype PageState = any;\\n\\ntype NodeId = keyof PageState;\\n\\ntype MethodsManager = any;\\n\\ntype GlobalState = any;\\n\\ntype CurrentNodeState = any;\\n\\ntype PageStateManager<K extends keyof PageState> = {\\n state: PageState[K];\\n updateState: (newState: Partial<PageState[K]>) => void;\\n};\\n\\ntype PageStateManagerMap = {\\n [K in keyof PageState]: PageStateManager<K>;\\n};\\n\\ntype ContextType = {\\n /** 渲染函数的入口参数 */\\n params?: Record<any, any>;\\n /** 全局状态 */\\n globalState?: GlobalState;\\n /** 更新全局状态 */\\n updateGlobalState?: (newState: Partial<GlobalState>) => void;\\n /** 存储当前节点的数据,不具有响应性, 可能不是最新的值, 可以直接赋值 **/\\n staticVar?: Record<string | number, any>;\\n methods?: Record<string, (...arg: any) => any>;\\n /** 当前节点状态 **/\\n state?: CurrentNodeState;\\n /** 更新当前节点状态 */\\n updateState?: (newState: Partial<CurrentNodeState>) => void;\\n /** 获取当前节点状态最新 */\\n /** 用于访访问和管理页面被注册为全局的局部 state 快照,在闭包中使用会存在值不是最新的情况 */\\n stateManager: PageStateManagerMap;\\n /** 循环数据 */\\n loopData?: {\\n item: any;\\n index: number;\\n };\\n /** 组件节点的 Ref, 可以通过 current 直接调用节点提供的方法,需要判断是否在存在 */\\n nodeRefs?: { get: (/** 节点 id */ nodeId: NodeId) => { current?: any } };\\n /** 运行时全局的 store 管理 */\\n storeManager?: StoreManager<NodeId>;\\n /** 第三方辅助库 */\\n thirdLibs?: Record<string, any>;\\n};\\n\\ndeclare class StoreManager<T extends NodeId> {\\n storeMap: Map<T, StoreApi<PageState[T]>>;\\n getStore(storeName: T): StoreApi<PageState[T]> | undefined;\\n getState(nodeId: T): any;\\n getStateObj(nodeId: T): {\\n state: PageState[T];\\n updateState: (newState: Partial<PageState[T]>) => void;\\n };\\n setState(nodeId: NodeId, newState: Partial<PageState[T]>): void | undefined;\\n connect<T extends NodeId>(name: string, cb: (newState: PageState[T]) => void): () => void;\\n getStateSnapshot(): PageState;\\n destroy(): void;\\n}\\n\\ntype UpdaterMap = {\\n [K in NodeId /** 更新对应 nodeId 的数据 **/]: (newState: Partial<PageState[K]>) => void;\\n};\\n\\ndeclare global {\\n /** 运行时上下文 */\\n const $CTX: ContextType;\\n\\n /** 当前节点的 state */\\n const $STATE: CurrentNodeState;\\n\\n /** global state */\\n const $G_STATE: GlobalState;\\n\\n /** 当前页面所有节点的 state */\\n const $ALL_STATE: PageState;\\n\\n /** 状态更新函数 */\\n const $U_STATE: UpdaterMap;\\n\\n /** 节点方法调用 */\\n const $M: MethodsManager;\\n\\n /** 当前节点 ID */\\n const $N_ID: string;\\n\\n /** 存储所有节点的 id */\\n const $IDS: Record<NodeId, NodeId>;\\n\\n /** 上一个 API 返回的数据,可能不存在 */\\n const $RESPONSE: any;\\n\\n /** 循环数据,如果存在 */\\n const $LOOP_DATA: ContextType['loopData'];\\n\\n /** 函数在配置面板传入的参数 */\\n const $PARAMS: ContextType['params'];\\n\\n /** 事件传入的第一个参数,如果需要获取第二个参数,请使用 $ARGS 数组获取*/\\n const $EVENT_PARAMS: any;\\n\\n /** 事件对象 */\\n const $EVENT: MouseEvent;\\n\\n /** 函数执行时传入的入参 */\\n const $ARGS: any[];\\n\\n /** action flow 中的局部变量 */\\n const $ACTION_VAR_SPACE: any;\\n}\\n\"","import { CNode, CPage, InnerComponentNameEnum, traversePageNode } from '@chamn/model';\nimport DefaultTslibSource from './defaultDts?raw';\n\nimport { quicktype, InputData, jsonInputForTargetLanguage } from 'quicktype-core';\n\nexport async function quicktypeJSON(typeName: string, jsonString: string) {\n const jsonInput = jsonInputForTargetLanguage('typescript');\n\n // We could add multiple samples for the same desired\n // type, or many sources for other types. Here we're\n // just making one type from one piece of sample JSON.\n await jsonInput.addSource({\n name: typeName,\n samples: [jsonString],\n });\n\n const inputData = new InputData();\n inputData.addInput(jsonInput);\n\n return await quicktype({\n inputData,\n lang: 'typescript',\n rendererOptions: {\n 'just-types': 'true',\n 'nice-property-names': 'false',\n 'acronym-style': 'original',\n },\n });\n}\n\nexport const getPageTypeDefined = async (pageModel: CPage, currentNode: CNode) => {\n const stateTypeMap: Record<\n string,\n {\n stateTypeDefined: string;\n methodsTypeDefined: string;\n }\n > = {} as any;\n const pList: any[] = [];\n traversePageNode(pageModel, (node) => {\n stateTypeMap[node.id] = {\n stateTypeDefined: '',\n methodsTypeDefined: '',\n };\n if (node.value.state) {\n const cb = async () => {\n let typeName = `CNode${node.id.toUpperCase()}`;\n let id = node.id;\n if (node.value.componentName === InnerComponentNameEnum.ROOT_CONTAINER) {\n typeName = 'GlobalState';\n id = 'GlobalState';\n }\n const tempRes = await quicktypeJSON(typeName, JSON.stringify(node.value.state));\n stateTypeMap[id] = {\n stateTypeDefined: tempRes.lines.join('\\n'),\n methodsTypeDefined: '',\n };\n };\n\n pList.push(cb());\n }\n });\n\n await Promise.all(pList);\n\n const globalStateDts = stateTypeMap['GlobalState'];\n delete stateTypeMap.GlobalState;\n\n // 拼接 整体的 page state 类型定义\n let pageStateDts = '';\n\n pageStateDts += `type PageState = {\\n`;\n const nodeIdList: string[] = [];\n\n Object.keys(stateTypeMap).forEach((k) => {\n if (stateTypeMap[k].stateTypeDefined) {\n const body = getBodyDefined(`CNode${k.toUpperCase()}`, stateTypeMap[k].stateTypeDefined);\n pageStateDts += ` '${k}': ${body},\\n`;\n nodeIdList.push(`'${k}'`);\n }\n });\n\n pageStateDts += `};\\n\\n`;\n\n let dtsContent = DefaultTslibSource.replace('type PageState = any;', pageStateDts);\n dtsContent = dtsContent.replace('type NodeId = any;', `type NodeId = ${nodeIdList.join(' | ')};`);\n if (globalStateDts?.stateTypeDefined) {\n dtsContent = dtsContent.replace('type GlobalState = any;', globalStateDts.stateTypeDefined);\n dtsContent = dtsContent.replace(\n 'Partial<GlobalState>',\n getBodyDefined('GlobalState', globalStateDts.stateTypeDefined)\n );\n }\n\n // 处理当前 node 的 types\n const currentNodeDts = await quicktypeJSON('CurrentNodeState', JSON.stringify(currentNode.value.state || {}));\n const currentNodeDtsText = currentNodeDts.lines.join('\\n');\n dtsContent = dtsContent.replace('type CurrentNodeState = any;', currentNodeDtsText);\n dtsContent = dtsContent.replace('Partial<CurrentNodeState>', getBodyDefined('CurrentNodeState', currentNodeDtsText));\n\n // 处理 methods 调用\n return dtsContent;\n};\n\nconst getBodyDefined = (\n typeName: string,\n dtsStr: string,\n options?: {\n isPartial: true;\n }\n) => {\n const body = dtsStr.replace(`export interface ${typeName}`, '').trim();\n if (!options?.isPartial) {\n return body;\n }\n return `Partial<${body}>`;\n};\n","import React, { useRef, useState } from 'react';\nimport { Button, ConfigProvider, Modal } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { EditorType, MonacoEditor, MonacoEditorInstance } from '../../../../MonacoEditor';\nimport DefaultTslibSource from '../FunctionSetter//defaultDts?raw';\nimport { CNodePropsTypeEnum } from '@chamn/model';\nimport styles from './style.module.scss';\nimport { getPageTypeDefined } from '../FunctionSetter/helper';\nexport type ExpressionSetterProps = CSetterProps<{\n value: {\n type: string;\n value: string;\n };\n mode: 'modal' | 'inline';\n containerStyle?: React.CSSProperties;\n minimap?: boolean;\n lineNumber?: boolean;\n editorOptions?: EditorType['options'];\n}>;\n\nexport const ExpressionSetter: CSetter<ExpressionSetterProps> = ({\n onValueChange,\n initialValue,\n setterContext,\n editorOptions,\n\n mode = 'modal',\n ...props\n}) => {\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const [open, setOpen] = useState(false);\n const onInnerValueChange = () => {\n const newValStr = editorRef.current?.getValue() || '';\n onValueChange?.({\n type: CNodePropsTypeEnum.EXPRESSION,\n value: newValStr,\n });\n };\n\n let lineNumberOptions = {};\n if (props.lineNumber === false || mode === 'inline') {\n lineNumberOptions = {\n lineNumbers: 'off',\n lineDecorationsWidth: 0,\n lineNumbersMinChars: 0,\n glyphMargin: false,\n };\n }\n\n const editorView = (\n <MonacoEditor\n beforeMount={async (monaco) => {\n monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: true,\n noSyntaxValidation: false,\n });\n\n // compiler options\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES5,\n allowNonTsExtensions: true,\n });\n\n const realtimeDts = await getPageTypeDefined(setterContext.pluginCtx.pageModel, setterContext.nodeModel);\n\n const libUri = 'ts:filename/chameleon.default.variable.d.ts';\n monaco.languages.typescript.javascriptDefaults.addExtraLib(realtimeDts, libUri);\n // When resolving definitions and references, the editor will try to use created models.\n // Creating a model for the library allows \"peek definition/references\" commands to work with the library.\n const model = monaco.editor.getModel(monaco.Uri.parse(libUri));\n if (!model) {\n monaco.editor.createModel(DefaultTslibSource, 'typescript', monaco.Uri.parse(libUri));\n }\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n initialValue={props.value?.value ?? initialValue}\n language={'javascript'}\n options={{\n automaticLayout: true,\n tabSize: 2,\n minimap: { enabled: false },\n folding: false,\n hover: {\n // enabled: false, // ✅ 禁用 hoverWidget\n },\n ...lineNumberOptions,\n ...(editorOptions || {}),\n }}\n onChange={() => {\n if (mode === 'inline') {\n // TODO: 需要节流每 1 秒触发一次\n onInnerValueChange();\n }\n }}\n />\n );\n\n if (mode === 'inline') {\n return (\n <div\n className={styles.expressionCodeEditor}\n style={{\n border: '1px solid rgba(0,0,0, 0.2)',\n ...(props.containerStyle || {}),\n height: '100px',\n }}\n >\n {editorView}\n </div>\n );\n }\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n onClick={() => {\n setOpen(true);\n }}\n >\n {props.value?.value || 'Edit Expression'}\n </Button>\n <Modal\n destroyOnClose\n open={open}\n title=\"Expression Editor\"\n onCancel={() => setOpen(false)}\n width=\"calc(100vw - 100px)\"\n onOk={() => {\n onInnerValueChange();\n setOpen(false);\n }}\n style={{\n maxWidth: '800px',\n }}\n styles={{\n body: {\n height: '300px',\n },\n }}\n >\n <div style={{ height: '100%' }}>{open && editorView}</div>\n </Modal>\n </ConfigProvider>\n );\n};\n\nExpressionSetter.setterName = '表达式';\n","import React from 'react';\nimport { ConfigProvider, Switch, SwitchProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\ntype BooleanSetterProps = SwitchProps;\n\nexport const BooleanSetter: CSetter<BooleanSetterProps & { initialValue?: boolean }> = ({\n onValueChange,\n initialValue,\n setterContext,\n ...props\n}: CSetterProps<BooleanSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Switch\n {...props}\n checked={(props.value ?? initialValue) as boolean}\n onChange={(open, e) => {\n props.onChange?.(open, e);\n onValueChange?.(open);\n }}\n />\n </ConfigProvider>\n );\n};\n\nBooleanSetter.setterName = 'Bool 设置器';\n","import React from 'react';\nimport { ConfigProvider, Select, SelectProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\nexport const SelectSetter: CSetter<SelectProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<SelectProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Select\n showSearch\n style={{\n width: '100%',\n }}\n {...props}\n value={props.value ?? initialValue}\n onChange={(val, option) => {\n props.onChange?.(val, option);\n onValueChange?.(val);\n }}\n />\n </ConfigProvider>\n );\n};\n\nSelectSetter.setterName = '选择设置器';\n","import React, { useRef, useState } from 'react';\nimport { CSS, Transform } from '@dnd-kit/utilities';\nimport { Modal, ModalProps } from 'antd';\nimport { DndContext, PointerSensor, useDraggable, useSensor, useSensors } from '@dnd-kit/core';\nimport { getRandomStr } from '@chamn/model';\n\nexport type SortItemOrderProps = {} & ModalProps;\n\n/** 可拖拽移动的 Modal */\nexport const MoveableModal = (props: ModalProps) => {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 15,\n },\n })\n );\n\n const [modalTransform, setModalTransform] = useState<Transform>({\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n });\n\n return (\n <Modal\n {...props}\n styles={{\n mask: {\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n pointerEvents: 'none',\n },\n }}\n modalRender={(modal) => {\n return (\n <DndContext\n sensors={sensors}\n onDragEnd={({ delta }) => {\n const res = {\n ...modalTransform,\n ...delta,\n x: modalTransform.x + (delta?.x || 0),\n y: modalTransform.y + (delta?.y || 0),\n };\n setModalTransform(res);\n }}\n >\n <ModalDragView modal={modal} transform={modalTransform} setModalTransform={setModalTransform} />\n </DndContext>\n );\n }}\n ></Modal>\n );\n};\n\nconst ModalDragView = ({\n modal,\n transform,\n setModalTransform,\n}: {\n modal: React.ReactNode;\n transform: Transform;\n setModalTransform: any;\n}) => {\n const id = useRef(getRandomStr());\n const {\n setNodeRef,\n attributes,\n listeners,\n transform: tempTransform,\n } = useDraggable({\n id: id.current,\n });\n\n const finalTransform = {\n ...transform,\n ...tempTransform,\n x: transform.x + (tempTransform?.x || 0),\n y: transform.y + (tempTransform?.y || 0),\n };\n\n return (\n <div\n style={{\n pointerEvents: 'auto',\n transform: CSS.Transform.toString(finalTransform),\n }}\n >\n <div\n onDoubleClick={() => {\n setModalTransform((oldValue: any) => {\n return {\n ...oldValue,\n x: 0,\n y: 0,\n };\n });\n }}\n ref={setNodeRef}\n style={{\n cursor: 'move',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: '55px',\n zIndex: 1,\n }}\n {...attributes}\n {...listeners}\n />\n {modal}\n </div>\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Button, ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { EditorType, MonacoEditor, MonacoEditorInstance } from '../../../../MonacoEditor';\nimport { MoveableModal } from '@/component/MoveableModal';\nimport { sageJSONParse } from '@/utils';\n\nconst EditorConfig = {\n options: {\n automaticLayout: true,\n tabSize: 2,\n suggestOnTriggerCharacters: false,\n minimap: { enabled: false },\n },\n style: {\n height: '200px',\n border: '1px solid #d9d9d9',\n borderRadius: '4px',\n },\n};\n\nconst JsonEditor = ({ editor, value, initialValue, onChange, height, editorOptions }: any) => {\n const editorRef = useRef<MonacoEditorInstance>();\n const oldValueRef = useRef();\n oldValueRef.current = value;\n useEffect(() => {\n const oldVal = sageJSONParse(editorRef.current?.getValue() || '', {});\n if (JSON.stringify(value) === JSON.stringify(oldVal)) {\n return;\n }\n editorRef.current?.setValue(JSON.stringify(value, null, 2));\n }, [value]);\n return (\n <div style={{ height: height || EditorConfig.style.height }}>\n <MonacoEditor\n onDidMount={(editorInstance) => {\n editor.current = editorInstance;\n editorRef.current = editorInstance;\n }}\n onChange={onChange}\n initialValue={JSON.stringify(value ?? (initialValue || {}), null, 2)}\n language=\"json\"\n options={{\n ...EditorConfig.options,\n ...editorOptions,\n }}\n />\n </div>\n );\n};\nexport const JSONSetter: CSetter<any> = ({\n onValueChange,\n initialValue,\n mode = 'modal',\n editorOptions,\n setterContext,\n ...props\n}: CSetterProps<{\n mode: 'modal' | 'inline';\n containerStyle?: React.CSSProperties;\n minimap?: boolean;\n lineNumber?: 'on' | 'off';\n editorOptions?: EditorType['options'];\n}>) => {\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const [open, setOpen] = useState(false);\n\n const onInnerValueChange = () => {\n const newValStr = editorRef.current?.getValue() || '';\n try {\n const newVal = JSON.parse(newValStr);\n onValueChange?.(newVal);\n } catch (e) {\n console.warn(e);\n }\n };\n\n return (\n <ConfigProvider theme={{ token: { borderRadius: 4 } }}>\n {mode === 'inline' ? (\n <div style={EditorConfig.style}>\n <JsonEditor\n editor={editorRef}\n value={props.value}\n initialValue={initialValue}\n onChange={onInnerValueChange}\n editorOptions={editorOptions || {}}\n />\n </div>\n ) : (\n <>\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n onClick={() => setOpen(true)}\n >\n Edit\n </Button>\n <MoveableModal\n destroyOnClose\n open={open}\n title=\"JSON Editor\"\n width=\"800px\"\n onCancel={() => setOpen(false)}\n onOk={() => {\n onInnerValueChange();\n setOpen(false);\n }}\n >\n {open && (\n <JsonEditor\n editor={editorRef}\n value={props.value}\n initialValue={initialValue}\n height=\"500px\"\n editorOptions={editorOptions || {}}\n />\n )}\n </MoveableModal>\n </>\n )}\n </ConfigProvider>\n );\n};\n\nJSONSetter.setterName = 'JSON 设置器';\n","import React, { useRef, useState } from 'react';\nimport { Button, ConfigProvider, Modal } from 'antd';\nimport { CSetter } from '../type';\nimport { EditorType, MonacoEditor, MonacoEditorInstance } from '../../../../MonacoEditor';\nimport DefaultTslibSource from './defaultDts?raw';\nimport { CNodePropsTypeEnum } from '@chamn/model';\nimport { getPageTypeDefined } from './helper';\n\nexport const FunctionSetter: CSetter<{\n mode: 'modal' | 'inline';\n containerStyle?: React.CSSProperties;\n minimap?: boolean;\n lineNumber?: boolean;\n editorOptions?: EditorType['options'];\n}> = ({ onValueChange, initialValue, setterContext, editorOptions, ...props }) => {\n getPageTypeDefined(setterContext.pluginCtx.pageModel, setterContext.nodeModel);\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const [open, setOpen] = useState(false);\n const onInnerValueChange = () => {\n const newValStr = editorRef.current?.getValue() || '';\n onValueChange?.({\n type: CNodePropsTypeEnum.FUNCTION,\n value: newValStr,\n });\n };\n\n let lineNumberOptions = {};\n if (props.lineNumber === false) {\n lineNumberOptions = {\n lineNumbers: 'off',\n lineDecorationsWidth: 0,\n lineNumbersMinChars: 0,\n glyphMargin: false,\n };\n }\n\n const editorView = (\n <MonacoEditor\n beforeMount={async (monaco) => {\n monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: true,\n noSyntaxValidation: false,\n });\n\n // compiler options\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES5,\n allowNonTsExtensions: true,\n });\n\n const realtimeDts = await getPageTypeDefined(setterContext.pluginCtx.pageModel, setterContext.nodeModel);\n\n const libUri = 'ts:filename/chameleon.default.variable.d.ts';\n monaco.languages.typescript.javascriptDefaults.addExtraLib(realtimeDts, libUri);\n // When resolving definitions and references, the editor will try to use created models.\n // Creating a model for the library allows \"peek definition/references\" commands to work with the library.\n const model = monaco.editor.getModel(monaco.Uri.parse(libUri));\n if (!model) {\n monaco.editor.createModel(DefaultTslibSource, 'typescript', monaco.Uri.parse(libUri));\n }\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n initialValue={props.value?.value ?? (initialValue || 'function run() {\\n}')}\n language={'javascript'}\n options={{\n automaticLayout: true,\n tabSize: 2,\n\n minimap: {\n enabled: props.minimap ?? true,\n },\n ...lineNumberOptions,\n ...(editorOptions || {}),\n }}\n onChange={() => {\n if (props.mode === 'inline') {\n // TODO: 需要节流每 1 秒触发一次\n onInnerValueChange();\n }\n }}\n />\n );\n\n if (props.mode === 'inline') {\n return (\n <div\n style={{\n border: '1px solid rgba(0,0,0, 0.2)',\n ...(props.containerStyle || {}),\n }}\n >\n {editorView}\n </div>\n );\n }\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n onClick={() => {\n setOpen(true);\n }}\n >\n Edit Function\n </Button>\n <Modal\n centered\n destroyOnClose\n open={open}\n title=\"Function Editor\"\n onCancel={() => setOpen(false)}\n width=\"calc(100vw - 100px)\"\n onOk={() => {\n onInnerValueChange();\n setOpen(false);\n }}\n style={{\n maxWidth: '1300px',\n }}\n styles={{\n body: {\n minHeight: '500px',\n height: 'calc(100vh - 280px)',\n },\n }}\n >\n <div style={{ height: '100%' }}>{open && editorView}</div>\n </Modal>\n </ConfigProvider>\n );\n};\n\nFunctionSetter.setterName = '函数设置器';\n","import { ConfigProvider, Input } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { TextAreaProps } from 'antd/es/input';\nimport { useState } from 'react';\n\nexport type TTextAreaSetterProps = TextAreaProps & {\n valueValidator?: (value: string) => boolean;\n};\n\nexport const TextAreaSetter: CSetter<TTextAreaSetterProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n valueValidator,\n ...props\n}: CSetterProps<TTextAreaSetterProps>) => {\n const [checkValueStatus, setCheckValueStatus] = useState<TextAreaProps['status']>('');\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Input.TextArea\n status={checkValueStatus}\n {...props}\n value={props.value ?? initialValue}\n onChange={(e) => {\n const newValue = e.target.value;\n if (valueValidator !== undefined) {\n const res = valueValidator(newValue);\n if (!res) {\n setCheckValueStatus('error');\n } else {\n setCheckValueStatus('');\n }\n }\n props.onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n />\n </ConfigProvider>\n );\n};\n\nTextAreaSetter.setterName = '长文本设置器';\n","const CSSSourceInfo = {\n cssColors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n },\n cssKeyValue: {\n 'align-content': {\n values: [\n 'center',\n 'flex-end',\n 'flex-start',\n 'space-around',\n 'space-between',\n 'stretch',\n ],\n },\n 'align-items': {\n values: ['baseline', 'center', 'flex-end', 'flex-start', 'stretch'],\n },\n 'align-self': {\n values: [\n 'auto',\n 'normal',\n 'self-start',\n 'self-end',\n 'baseline',\n 'center',\n 'start',\n 'end',\n 'flex-end',\n 'flex-start',\n 'safe',\n 'stretch',\n 'unsafe',\n ],\n },\n all: { values: [] },\n animation: { values: [] },\n 'animation-delay': { values: [] },\n 'animation-direction': {\n values: ['alternate', 'alternate-reverse', 'normal', 'reverse'],\n },\n 'animation-duration': { values: [] },\n 'animation-fill-mode': {\n values: ['backwards', 'both', 'forwards', 'none'],\n },\n 'animation-iteration-count': { values: ['infinite'] },\n 'animation-name': { values: ['none'] },\n 'animation-play-state': { values: ['paused', 'running'] },\n 'animation-timing-function': {\n values: [\n 'cubic-bezier()',\n 'ease',\n 'ease-in',\n 'ease-in-out',\n 'ease-out',\n 'linear',\n 'step-end',\n 'step-start',\n 'steps()',\n ],\n },\n 'backface-visibility': { values: ['hidden', 'visible'] },\n background: { values: [], type: 'color' },\n 'background-attachment': { values: ['fixed', 'local', 'scroll'] },\n 'background-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'background-clip': { values: ['border-box', 'content-box', 'padding-box'] },\n 'background-color': { values: [], type: 'color' },\n 'background-image': {\n values: [\n 'image()',\n 'linear-gradient()',\n 'radial-gradient()',\n 'repeating-linear-gradient()',\n 'repeating-radial-gradient()',\n 'url()',\n ],\n },\n 'background-origin': {\n values: ['border-box', 'content-box', 'padding-box'],\n },\n 'background-position': {\n values: ['left', 'center', 'right', 'bottom', 'top'],\n },\n 'background-repeat': {\n values: ['no-repeat', 'repeat', 'repeat-x', 'repeat-y', 'round', 'space'],\n },\n 'background-size': { values: ['auto', 'contain', 'cover'] },\n border: { values: [] },\n 'border-collapse': { values: ['collapse', 'separate'] },\n 'border-color': { values: [], type: 'color' },\n 'border-spacing': { values: [] },\n 'border-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-bottom': { values: [] },\n 'border-bottom-color': { values: [], type: 'color' },\n 'border-bottom-left-radius': { values: [] },\n 'border-bottom-right-radius': { values: [] },\n 'border-bottom-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-bottom-width': { values: ['medium', 'thin', 'thick'] },\n 'border-image': { values: ['url()'] },\n 'border-image-outset': { values: [] },\n 'border-image-slice': { values: [] },\n 'border-image-source': { values: [] },\n 'border-image-repeat': { values: ['repeat', 'round', 'space', 'stretch'] },\n 'border-image-width': { values: ['auto'] },\n 'border-left': { values: [] },\n 'border-left-color': { values: [], type: 'color' },\n 'border-left-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-left-width': { values: ['medium', 'thin', 'thick'] },\n 'border-radius': { values: [] },\n 'border-right': { values: [] },\n 'border-right-color': { values: [], type: 'color' },\n 'border-right-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-right-width': { values: ['medium', 'thin', 'thick'] },\n 'border-top': { values: [] },\n 'border-top-color': { values: [], type: 'color' },\n 'border-top-left-radius': { values: [] },\n 'border-top-right-radius': { values: [] },\n 'border-top-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-top-width': { values: ['medium', 'thin', 'thick'] },\n 'border-width': { values: ['medium', 'thin', 'thick'] },\n 'box-decoration-break': { values: ['clone', 'slice'] },\n 'box-shadow': { values: ['none'] },\n 'box-sizing': { values: ['border-box', 'content-box'] },\n bottom: { values: ['auto'] },\n 'break-after': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'break-before': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'caption-side': { values: ['bottom', 'top'] },\n 'caret-color': { values: ['auto'], type: 'color' },\n clear: { values: ['both', 'left', 'none', 'right'] },\n clip: { values: ['auto'] },\n color: { values: [], type: 'color' },\n columns: { values: [] },\n 'column-count': { values: [] },\n 'column-fill': { values: ['auto', 'balance'] },\n 'column-gap': { values: ['normal'] },\n 'column-rule': { values: [] },\n 'column-rule-color': { values: [], type: 'color' },\n 'column-rule-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'column-rule-width': { values: ['medium', 'thin', 'thick'] },\n 'column-span': { values: ['all', 'none'] },\n 'column-width': { values: ['auto'] },\n content: {\n values: [\n 'attr()',\n 'close-quote',\n 'no-close-quote',\n 'no-open-quote',\n 'normal',\n 'none',\n 'open-quote',\n ],\n },\n 'counter-increment': { values: ['none'] },\n 'counter-reset': { values: ['none'] },\n cursor: {\n values: [\n 'alias',\n 'all-scroll',\n 'auto',\n 'cell',\n 'col-resize',\n 'context-menu',\n 'copy',\n 'crosshair',\n 'default',\n 'e-resize',\n 'ew-resize',\n 'grab',\n 'grabbing',\n 'help',\n 'move',\n 'n-resize',\n 'ne-resize',\n 'nesw-resize',\n 'no-drop',\n 'none',\n 'not-allowed',\n 'ns-resize',\n 'nw-resize',\n 'nwse-resize',\n 'pointer',\n 'progress',\n 'row-resize',\n 's-resize',\n 'se-resize',\n 'sw-resize',\n 'text',\n 'vertical-text',\n 'w-resize',\n 'wait',\n 'zoom-in',\n 'zoom-out',\n ],\n },\n direction: { values: ['ltr', 'rtl'] },\n display: {\n values: [\n 'block',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inline',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'inline-table',\n 'list-item',\n 'none',\n 'run-in',\n 'subgrid',\n 'table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row',\n 'table-row-group',\n ],\n },\n 'empty-cells': { values: ['hide', 'show'] },\n fill: { values: [] },\n filter: {\n values: [\n 'blur()',\n 'brightness()',\n 'contrast()',\n 'custom()',\n 'drop-shadow()',\n 'grayscale()',\n 'hue-rotate()',\n 'invert()',\n 'none',\n 'opacity()',\n 'sepia()',\n 'saturate()',\n 'url()',\n ],\n },\n flex: { values: ['auto', 'none'] },\n 'flex-basis': { values: ['auto'] },\n 'flex-direction': {\n values: ['column', 'column-reverse', 'row', 'row-reverse'],\n },\n 'flex-flow': {\n values: [\n 'column',\n 'column-reverse',\n 'nowrap',\n 'row',\n 'row-reverse',\n 'wrap',\n 'wrap-reverse',\n ],\n },\n 'flex-grow': { values: [] },\n 'flex-shrink': { values: [] },\n 'flex-wrap': { values: ['nowrap', 'wrap', 'wrap-reverse'] },\n float: { values: ['left', 'right', 'none', 'inline-start', 'inline-end'] },\n 'flow-into': { values: ['none'], type: 'named-flow' },\n 'flow-from': { values: ['none'], type: 'named-flow' },\n font: { values: [] },\n 'font-display': {\n values: ['auto', 'block', 'swap', 'fallback', 'optional'],\n },\n 'font-family': {\n values: [\n 'auto',\n 'cursive',\n 'fantasy',\n 'monospace',\n 'sans-serif',\n 'serif',\n ],\n },\n 'font-feature-settings': { values: ['normal'] },\n 'font-kerning': { values: ['auto', 'none', 'normal'] },\n 'font-language-override': { values: ['normal'] },\n 'font-size': {\n values: [\n 'xx-small',\n 'x-small',\n 'small',\n 'medium',\n 'large',\n 'x-large',\n 'xx-large',\n 'xxx-large',\n 'larger',\n 'smaller',\n ],\n },\n 'font-size-adjust': { values: ['auto', 'none'] },\n 'font-stretch': {\n values: [\n 'condensed',\n 'expanded',\n 'extra-condensed',\n 'extra-expanded',\n 'normal',\n 'semi-condensed',\n 'semi-expanded',\n 'ultra-condensed',\n 'ultra-expanded',\n ],\n },\n 'font-style': { values: ['italic', 'normal', 'oblique'] },\n 'font-synthesis': { values: ['none', 'style', 'weight'] },\n 'font-variant': { values: ['normal', 'small-caps'] },\n 'font-variant-alternates': { values: ['normal'] },\n 'font-variant-caps': {\n values: [\n 'normal',\n 'small-caps',\n 'all-small-caps',\n 'petite-caps',\n 'all-petite-caps',\n 'unicase',\n 'titling-caps',\n ],\n },\n 'font-variant-east-asian': { values: ['normal'] },\n 'font-variant-ligatures': { values: ['normal', 'none'] },\n 'font-variant-numeric': { values: ['normal'] },\n 'font-variant-position': { values: ['normal', 'sub', 'super'] },\n 'font-weight': {\n values: [\n 'bold',\n 'bolder',\n 'lighter',\n 'normal',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n },\n gap: { values: ['revert-layer'] },\n grid: { values: [] },\n 'grid-area': { values: [] },\n 'grid-auto-columns': { values: [] },\n 'grid-auto-flow': { values: ['row', 'column', 'dense'] },\n 'grid-auto-rows': { values: [] },\n 'grid-column': { values: ['auto'] },\n 'grid-column-end': { values: [] },\n 'grid-column-gap': { values: [] },\n 'grid-column-start': { values: [] },\n 'grid-gap': { values: [] },\n 'grid-row': { values: ['auto'] },\n 'grid-row-end': { values: [] },\n 'grid-row-start': { values: [] },\n 'grid-row-gap': { values: [] },\n 'grid-template': { values: ['none'] },\n 'grid-template-areas': { values: [] },\n 'grid-template-columns': { values: ['auto'] },\n 'grid-template-rows': { values: ['auto'] },\n 'hanging-punctuation': {\n values: ['allow-end', 'first', 'force-end', 'last', 'none'],\n },\n height: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n hyphens: { values: ['auto', 'manual', 'none'] },\n 'image-orientation': { values: [] },\n 'image-resolution': { values: ['from-image', 'snap'] },\n isolation: { values: ['auto', 'isolate'] },\n 'justify-content': {\n values: [\n 'center',\n 'flex-end',\n 'flex-start',\n 'space-around',\n 'space-between',\n ],\n },\n 'justify-items': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n 'legacy',\n ],\n },\n 'justify-self': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n ],\n },\n left: { values: ['auto'] },\n 'letter-spacing': { values: ['normal'] },\n 'line-height': { values: ['normal'] },\n 'list-style': {\n values: [\n 'none',\n 'url()',\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'inside',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'outside',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n 'list-style-image': { values: ['none', 'url()'] },\n 'list-style-position': { values: ['inside', 'outside'] },\n 'list-style-type': {\n values: [\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'none',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n margin: { values: ['auto'] },\n 'margin-bottom': { values: ['auto'] },\n 'margin-left': { values: ['auto'] },\n 'margin-right': { values: ['auto'] },\n 'margin-top': { values: ['auto'] },\n 'max-height': { values: ['none'] },\n 'max-width': { values: ['none'] },\n 'min-height': { values: [] },\n 'min-width': { values: [] },\n 'mix-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'object-fit': {\n values: ['contain', 'cover', 'fill', 'none', 'scale-down'],\n },\n 'object-position': { values: ['left', 'center', 'right', 'bottom', 'top'] },\n opacity: { values: [] },\n order: { values: [] },\n orphans: { values: [] },\n outline: { values: [] },\n 'outline-color': { values: ['invert'], type: 'color' },\n 'outline-offset': { values: [] },\n 'outline-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'outline-width': { values: ['medium', 'thin', 'thick'] },\n overflow: { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-x': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-y': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-wrap': { values: ['normal', 'anywhere', 'break-word'] },\n padding: { values: [] },\n 'padding-bottom': { values: [] },\n 'padding-left': { values: [] },\n 'padding-right': { values: [] },\n 'padding-top': { values: [] },\n 'page-break-after': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-before': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-inside': { values: ['auto', 'avoid'] },\n perspective: { values: ['none'] },\n 'perspective-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'pointer-events': {\n values: [\n 'all',\n 'auto',\n 'fill',\n 'none',\n 'painted',\n 'stroke',\n 'visible',\n 'visibleFill',\n 'visiblePainted',\n 'visibleStroke',\n ],\n },\n position: { values: ['absolute', 'fixed', 'relative', 'static', 'sticky'] },\n quotes: { values: ['none'] },\n 'region-break-after': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'region-break-before': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'region-break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'region-fragment': { values: ['auto', 'break'] },\n resize: { values: ['both', 'horizontal', 'none', 'vertical'] },\n right: { values: ['auto'] },\n 'scroll-behavior': { values: ['auto', 'smooth'] },\n 'scroll-snap-type': {\n values: [\n 'none',\n 'x',\n 'y',\n 'block',\n 'inline',\n 'both',\n 'mandatory',\n 'proximity',\n ],\n },\n src: { values: ['url()'] },\n 'shape-image-threshold': { values: [] },\n 'shape-inside': {\n values: [\n 'auto',\n 'circle()',\n 'ellipse()',\n 'outside-shape',\n 'polygon()',\n 'rectangle()',\n ],\n },\n 'shape-margin': { values: [] },\n 'shape-outside': {\n values: [\n 'none',\n 'circle()',\n 'ellipse()',\n 'polygon()',\n 'inset()',\n 'margin-box',\n 'border-box',\n 'padding-box',\n 'content-box',\n 'url()',\n 'image()',\n 'linear-gradient()',\n 'radial-gradient()',\n 'repeating-linear-gradient()',\n 'repeating-radial-gradient()',\n ],\n },\n 'tab-size': { values: [] },\n 'table-layout': { values: ['auto', 'fixed'] },\n 'text-align': {\n values: [\n 'start',\n 'end',\n 'center',\n 'left',\n 'justify',\n 'right',\n 'match-parent',\n 'justify-all',\n ],\n },\n 'text-align-last': { values: ['center', 'left', 'justify', 'right'] },\n 'text-decoration': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-color': { values: [], type: 'color' },\n 'text-decoration-line': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-skip': {\n values: ['edges', 'ink', 'none', 'objects', 'spaces'],\n },\n 'text-decoration-style': {\n values: ['dashed', 'dotted', 'double', 'solid', 'wavy'],\n },\n 'text-emphasis': { values: [] },\n 'text-emphasis-color': { values: [], type: 'color' },\n 'text-emphasis-position': { values: ['above', 'below', 'left', 'right'] },\n 'text-emphasis-style': {\n values: [\n 'circle',\n 'dot',\n 'double-circle',\n 'filled',\n 'none',\n 'open',\n 'sesame',\n 'triangle',\n ],\n },\n 'text-indent': { values: [] },\n 'text-justify': {\n values: ['auto', 'none', 'inter-word', 'inter-character'],\n },\n 'text-overflow': { values: ['clip', 'ellipsis'] },\n 'text-shadow': { values: [] },\n 'text-rendering': {\n values: [\n 'auto',\n 'geometricPrecision',\n 'optimizeLegibility',\n 'optimizeSpeed',\n ],\n },\n 'text-transform': {\n values: ['capitalize', 'full-width', 'lowercase', 'none', 'uppercase'],\n },\n 'text-underline-position': {\n values: ['alphabetic', 'auto', 'below', 'left', 'right'],\n },\n top: { values: ['auto'] },\n transform: {\n values: [\n 'matrix()',\n 'matrix3d()',\n 'none',\n 'perspective()',\n 'rotate()',\n 'rotate3d()',\n 'rotateX()',\n 'rotateY()',\n 'rotateZ()',\n 'scale()',\n 'scale3d()',\n 'scaleX()',\n 'scaleY()',\n 'scaleZ()',\n 'skewX()',\n 'skewY()',\n 'translate()',\n 'translate3d()',\n 'translateX()',\n 'translateY()',\n 'translateZ()',\n ],\n },\n 'transform-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'transform-style': { values: ['flat', 'preserve-3d'] },\n transition: { values: [] },\n 'transition-delay': { values: [] },\n 'transition-duration': { values: [] },\n 'transition-property': { values: ['all', 'none'] },\n 'transition-timing-function': {\n values: [\n 'cubic-bezier()',\n 'ease',\n 'ease-in',\n 'ease-in-out',\n 'ease-out',\n 'linear',\n 'step-end',\n 'step-start',\n 'steps()',\n ],\n },\n 'unicode-bidi': { values: ['bidi-override', 'embed', 'normal'] },\n 'unicode-range': { values: [] },\n 'user-select': { values: ['all', 'auto', 'contain', 'none', 'text'] },\n 'vertical-align': {\n values: [\n 'baseline',\n 'bottom',\n 'middle',\n 'sub',\n 'super',\n 'text-bottom',\n 'text-top',\n 'top',\n ],\n },\n visibility: { values: ['collapse', 'hidden', 'visible'] },\n 'white-space': {\n values: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap'],\n },\n widows: { values: [] },\n width: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n 'will-change': {\n values: ['auto', 'contents', 'opacity', 'scroll-position'],\n },\n 'word-break': { values: ['normal', 'break-all', 'keep-all'] },\n 'word-spacing': { values: ['normal'] },\n 'z-index': { values: ['auto'] },\n },\n};\n\nexport const CSSProperties = CSSSourceInfo.cssKeyValue;\n\nexport const CSSColors = CSSSourceInfo.cssColors;\n\nexport type CSSPropertiesKey = keyof typeof CSSProperties;\n\nexport const CSSPropertyList = Object.keys(CSSSourceInfo.cssKeyValue);\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { AutoComplete, ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { BaseSelectRef } from 'rc-select';\nimport clsx from 'clsx';\nimport styles from './style.module.scss';\nimport { CSSProperties, CSSPropertiesKey } from '../../../../CSSPropertiesEditor/cssProperties';\n\ntype CSSValueSetterProps = {\n propertyKey: string;\n};\n\nexport const CSSValueSetter: CSetter<CSSValueSetterProps> = ({\n onValueChange,\n propertyKey = '',\n value,\n initialValue,\n}: CSetterProps<CSSValueSetterProps>) => {\n // const { keyPaths, onSetterChange } = setterContext;\n const propertyValueRef = useRef<BaseSelectRef | null>(null);\n const [innerValue, setInnerVal] = useState<any>(value ?? (initialValue || ''));\n const [focusState, setFocusState] = useState(false);\n const updateOuterValue = () => {\n onValueChange?.(innerValue);\n };\n useEffect(() => {\n setInnerVal(value);\n }, [value]);\n\n const optionsValue = useMemo(() => {\n const list = CSSProperties[propertyKey as unknown as CSSPropertiesKey]?.values || [];\n return list.map((el) => {\n return {\n value: el,\n };\n });\n }, [propertyKey]);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <AutoComplete\n ref={propertyValueRef}\n popupMatchSelectWidth={200}\n variant={'borderless'}\n value={innerValue}\n onChange={(val) => {\n setInnerVal(val);\n updateOuterValue();\n }}\n style={{\n flex: 1,\n }}\n onFocus={() => {\n setFocusState(true);\n }}\n onBlur={() => {\n setFocusState(false);\n }}\n className={clsx([styles.inputAuto, focusState && styles.active])}\n placeholder=\"value\"\n options={optionsValue}\n ></AutoComplete>\n </ConfigProvider>\n );\n};\n\nCSSValueSetter.setterName = 'CSS值设置器';\n","import { ConfigProvider, Input, Popover } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { SketchPicker } from 'react-color';\n\ntype ColorSetterProps = {\n initialValue: string;\n};\n\nexport const ColorSetter: CSetter = ({ onValueChange, initialValue, value }: CSetterProps<ColorSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Popover\n trigger=\"click\"\n content={\n <SketchPicker\n color={value || initialValue}\n onChange={(newColor) => {\n const newColorStr = `rgba(${newColor.rgb.r},${newColor.rgb.g},${newColor.rgb.b}, ${newColor.rgb.a || 1})`;\n onValueChange?.(newColorStr);\n }}\n />\n }\n placement={'bottomLeft'}\n styles={{\n body: {\n padding: 0,\n },\n }}\n arrow={{\n pointAtCenter: false,\n }}\n >\n <Input\n placeholder=\"color\"\n value={value}\n onChange={(e) => {\n onValueChange?.(e.target.value);\n }}\n prefix={\n <div\n style={{\n backgroundColor: value || 'transparent',\n width: '10px',\n height: '10px',\n borderRadius: '4px',\n overflow: 'hidden',\n }}\n ></div>\n }\n />\n </Popover>\n </ConfigProvider>\n );\n};\n\nColorSetter.setterName = '颜色设置器';\n","export const DEFAULT_PRESET_COLORS = [\n {\n label: 'Recommended',\n colors: [\n '#000000',\n '#000000E0',\n '#000000A6',\n '#00000073',\n '#00000040',\n '#00000026',\n '#0000001A',\n '#00000012',\n '#0000000A',\n '#00000005',\n '#F5222D',\n '#FA8C16',\n '#FADB14',\n '#8BBB11',\n '#52C41A',\n '#13A8A8',\n '#1677FF',\n '#2F54EB',\n '#722ED1',\n '#EB2F96',\n '#F5222D4D',\n '#FA8C164D',\n '#FADB144D',\n '#8BBB114D',\n '#52C41A4D',\n '#13A8A84D',\n '#1677FF4D',\n '#2F54EB4D',\n '#722ED14D',\n '#EB2F964D',\n ],\n },\n];\n","import { ColorPicker, ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\n\ntype ColorSetterProps = {\n initialValue: string;\n};\n\nexport const AntDColorSetter: CSetter = ({\n onValueChange,\n initialValue,\n value,\n setterContext,\n ...restProps\n}: CSetterProps<ColorSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <ColorPicker\n showText={true}\n allowClear\n value={value ?? initialValue}\n onChangeComplete={(color) => {\n onValueChange?.(color.toRgbString());\n }}\n presets={DEFAULT_PRESET_COLORS}\n {...restProps}\n />\n </ConfigProvider>\n );\n};\n\nAntDColorSetter.setterName = '颜色设置器';\n","import { Slider, SliderSingleProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\nexport const SliderSetter: CSetter<SliderSingleProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<SliderSingleProps & { initialValue?: string }>) => {\n return (\n <Slider\n {...props}\n value={props.value ?? initialValue}\n onChange={(newValue) => {\n props.onChange?.(newValue);\n onValueChange?.(newValue);\n }}\n />\n );\n};\n\nSliderSetter.setterName = '滑动条设置器';\n","import { ConfigProvider, Radio } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\ntype ColorSetterProps = {\n initialValue: string;\n};\n\nexport const RadioGroupSetter: CSetter = ({\n onValueChange,\n value,\n initialValue,\n setterContext,\n ...restProps\n}: CSetterProps<ColorSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Radio.Group\n onChange={(e) => {\n onValueChange?.(e.target.value);\n }}\n defaultValue={initialValue}\n value={value}\n {...restProps}\n />\n </ConfigProvider>\n );\n};\n\nRadioGroupSetter.setterName = '单选设置器';\n","import { Input, InputProps } from 'antd';\nimport styles from './style.module.scss';\nimport { useMemo } from 'react';\n\nexport type InputNumberPlusProps = Omit<InputProps, 'onChange'> & {\n min?: number;\n max?: number;\n value?: number;\n onChange?: (newVal: number | undefined) => void;\n};\n\nexport const InputNumberPlus = ({ min, max, value, onChange, addonAfter, ...restProps }: InputNumberPlusProps) => {\n const updateInnerVal = (newVal: number | undefined) => {\n onChange?.(newVal);\n };\n\n const processUpdateVal = (num: number) => {\n let resVal = num;\n if (min !== undefined) {\n resVal = Math.max(min, resVal);\n }\n if (max !== undefined) {\n resVal = Math.min(max, resVal);\n }\n updateInnerVal(resVal);\n };\n // 是否是合法的值\n const isLegal = useMemo(() => {\n if (value === undefined) {\n return true;\n }\n let tempVal = value;\n if (min !== undefined) {\n tempVal = Math.max(min, tempVal);\n }\n if (max !== undefined) {\n tempVal = Math.min(max, tempVal);\n }\n\n if (tempVal !== value) {\n return false;\n }\n return true;\n }, [max, min, value]);\n\n return (\n <div className={styles.inputNumberPlus}>\n <div\n style={{\n display: 'flex',\n position: 'relative',\n }}\n >\n <Input\n allowClear\n {...restProps}\n status={isLegal ? undefined : 'error'}\n value={value}\n onClear={() => {\n updateInnerVal(undefined);\n }}\n onChange={(e) => {\n const newNum = parseInt(e.target.value || '0', 10);\n processUpdateVal(newNum);\n }}\n addonAfter={addonAfter}\n />\n </div>\n </div>\n );\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { ConfigProvider, InputProps, Select } from 'antd';\nimport { MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport styles from './style.module.scss';\nimport { addEventListenerReturnCancel } from '@chamn/layout';\nimport { InputNumberPlus } from '../InputNumberPlus';\nimport clsx from 'clsx';\n\ntype CumulativeInfoType = {\n x: number;\n y: number;\n cumulativeX: number;\n cumulativeY: number;\n};\n\nconst UNIT_LIST = [\n { value: 'px', label: 'px' },\n { value: '%', label: '%' },\n { value: 'vw', label: 'vw' },\n { value: 'vh', label: 'vh' },\n { value: 'rem', label: 'rem' },\n];\n\nexport const useDragSize = function (options?: {\n onStart?: (data: CumulativeInfoType) => void;\n onChange?: (data: CumulativeInfoType) => void;\n onEnd?: (data: CumulativeInfoType) => void;\n limitCumulative?: {\n x?: [number | undefined, number | undefined];\n y?: [number | undefined, number | undefined];\n };\n}) {\n const cumulativeInfo = useRef<{\n status: 'running' | '';\n start: CumulativeInfoType;\n processing: CumulativeInfoType;\n mouseDown: boolean;\n }>({\n status: '',\n start: {\n x: 0,\n y: 0,\n cumulativeX: 0,\n cumulativeY: 0,\n },\n processing: {\n x: 0,\n y: 0,\n cumulativeX: 0,\n cumulativeY: 0,\n },\n mouseDown: false,\n });\n\n const processEnd: MouseEventHandler<any> = useCallback(() => {\n cumulativeInfo.current.mouseDown = false;\n const { processing } = cumulativeInfo.current;\n\n options?.onEnd?.({ ...processing });\n cumulativeInfo.current.status = '';\n cumulativeInfo.current.processing.cumulativeX = 0;\n cumulativeInfo.current.processing.cumulativeY = 0;\n }, [options]);\n\n const onMouseDown: MouseEventHandler<any> = useCallback(() => {\n cumulativeInfo.current.mouseDown = true;\n }, []);\n\n const processMove: MouseEventHandler<any> = useCallback(\n (e) => {\n if (!cumulativeInfo.current.mouseDown) {\n return;\n }\n const { start, processing } = cumulativeInfo.current;\n // 判断是否是拖拽\n const tempCumulativeX = e.clientX - start.x;\n const tempCumulativeY = e.clientY - start.y;\n\n const shakeDIstance = 10;\n if (\n cumulativeInfo.current.status !== 'running' &&\n (Math.abs(tempCumulativeX) > shakeDIstance || Math.abs(tempCumulativeY) > shakeDIstance)\n ) {\n cumulativeInfo.current.status = 'running';\n const startInfo = cumulativeInfo.current.start;\n startInfo.x = e.clientX;\n startInfo.y = e.clientY;\n options?.onStart?.({ ...startInfo });\n }\n\n if (cumulativeInfo.current.status !== 'running') {\n return;\n }\n processing.x = e.clientX;\n processing.y = e.clientY;\n\n processing.cumulativeX = e.clientX - start.x;\n processing.cumulativeY = e.clientY - start.y;\n\n // 超出最大累积便宜,直接结束拖拽\n const [minX, maxX] = options?.limitCumulative?.x || [];\n if (minX !== undefined && processing.cumulativeX < minX) {\n processEnd(e);\n return;\n }\n\n if (maxX !== undefined && processing.cumulativeX > maxX) {\n processEnd(e);\n return;\n }\n\n options?.onChange?.({ ...processing });\n },\n [options, processEnd]\n );\n\n useEffect(() => {\n const globalMoveDispose = addEventListenerReturnCancel(document.body, 'mousemove', (e) => {\n processMove(e as any);\n });\n\n const globalUpDispose = addEventListenerReturnCancel(document.body, 'mouseup', (e) => {\n processEnd(e as any);\n });\n const globalLeaveDispose = addEventListenerReturnCancel(document.body, 'mouseleave', (e) => {\n processEnd(e as any);\n });\n\n return () => {\n globalMoveDispose();\n globalUpDispose();\n globalLeaveDispose();\n };\n }, [processEnd, processMove]);\n\n return {\n onMouseDown,\n };\n};\n\ntype MinMaxType = {\n px?: number;\n vw?: number;\n vh?: number;\n rem?: number;\n};\n\nexport type CSSSizeInputProps = {\n value?: string;\n onValueChange?: (newVal: string | undefined) => void;\n min?: MinMaxType | number;\n max?: MinMaxType | number;\n size?: InputProps['size'];\n style?: React.CSSProperties;\n\n className?: string;\n unit?: boolean;\n /** 累计的偏移量,映射为具体的值,默认 1:1 */\n cumulativeTransform?: (params: CumulativeInfoType) => CumulativeInfoType;\n unitList?: (keyof MinMaxType)[];\n};\n\nexport const CSSSizeInput = (props: CSSSizeInputProps) => {\n const outValue = String(props.value);\n const [dragSizing, setDragSizing] = useState({\n value: 0,\n status: '',\n });\n\n const originalValObj = useMemo(() => {\n const res: {\n value: number | undefined;\n unit: keyof MinMaxType;\n } = {\n value: undefined,\n unit: 'px' as any,\n };\n\n if (props.value === undefined) {\n return res;\n }\n const tempVal = parseFloat(props.value || '');\n if (!isNaN(tempVal)) {\n res.value = tempVal;\n }\n\n let unit: keyof MinMaxType = 'px';\n if (res.value !== undefined) {\n unit = outValue.replace(String(res.value), '').trim() as keyof MinMaxType;\n }\n if (['px', '%', 'rem', 'vw', 'vx'].includes(unit)) {\n res.unit = unit || 'px';\n }\n return res;\n }, [outValue, props.value]);\n\n const currentUnitList = useMemo<typeof UNIT_LIST>(() => {\n if (!props.unitList) {\n return UNIT_LIST;\n }\n return props.unitList\n .map((el) => {\n return UNIT_LIST.find((it) => it.value === el);\n })\n .filter(Boolean) as typeof UNIT_LIST;\n }, [props.unitList]);\n\n const currentMinMix = useMemo(() => {\n return {\n min: typeof props.min === 'number' ? props.min : props.min?.[originalValObj.unit],\n max: typeof props.max === 'number' ? props.max : props.max?.[originalValObj.unit],\n };\n }, [props, originalValObj]);\n\n const valObj = useMemo(() => {\n const res = { ...originalValObj };\n if (dragSizing.status === 'dragging') {\n res.value = dragSizing.value;\n }\n\n return res;\n }, [originalValObj, dragSizing]);\n\n const updateValue = useCallback(\n (val: { value: number | undefined; unit: string }) => {\n let valStr: string | undefined = `${val.value}${val.unit}`;\n if (val.value === undefined) {\n valStr = undefined;\n }\n props.onValueChange?.(valStr);\n },\n [props]\n );\n\n const processNewVal = useCallback(\n (cumulativeData: CumulativeInfoType, value: number | undefined) => {\n let data = { ...cumulativeData };\n if (props.cumulativeTransform) {\n data = props.cumulativeTransform(data);\n }\n\n let num = value ?? 0;\n if (isNaN(num)) {\n num = 0;\n }\n let newVal = num + data.cumulativeX;\n\n if (currentMinMix.min !== undefined) {\n newVal = Math.max(newVal, currentMinMix.min);\n }\n if (currentMinMix.max !== undefined) {\n newVal = Math.min(newVal, currentMinMix.max);\n }\n return newVal;\n },\n [currentMinMix.max, currentMinMix.min, props]\n );\n\n const onDragStart = useCallback(\n (data: CumulativeInfoType) => {\n setDragSizing({\n status: 'dragging',\n value: processNewVal(data, originalValObj.value),\n });\n },\n [originalValObj.value, processNewVal]\n );\n\n const onDragMoveChange = useCallback(\n (data: CumulativeInfoType) => {\n const nV = processNewVal(data, originalValObj.value);\n setDragSizing({\n status: 'dragging',\n value: nV,\n });\n },\n [originalValObj.value, processNewVal]\n );\n\n const onDragEnd = useCallback(\n (data: CumulativeInfoType) => {\n const newVal = processNewVal(data, originalValObj.value);\n if (dragSizing.status !== 'dragging') {\n return;\n }\n\n updateValue({\n value: newVal,\n unit: originalValObj.unit,\n });\n setDragSizing({\n status: '',\n value: 0,\n });\n },\n [dragSizing.status, originalValObj, processNewVal, updateValue]\n );\n const handleRef = useRef({\n onStart: onDragStart,\n onChange: onDragMoveChange,\n onEnd: onDragEnd,\n });\n handleRef.current = {\n onStart: onDragStart,\n onChange: onDragMoveChange,\n onEnd: onDragEnd,\n };\n\n const dragSizeHandle = useDragSize({\n onStart: (data) => handleRef.current.onStart(data),\n onChange: (data) => handleRef.current.onChange(data),\n onEnd: (data) => handleRef.current.onEnd(data),\n limitCumulative: {\n x: [-60, undefined],\n },\n });\n const unitSelect = (\n <span className={styles.unitSelect}>\n <Select\n size={props.size}\n defaultValue=\"\"\n value={valObj.unit}\n onChange={(val) => {\n updateValue({\n value: valObj.value,\n unit: val,\n });\n }}\n style={{\n width: '40px',\n }}\n popupMatchSelectWidth={false}\n options={currentUnitList}\n />\n </span>\n );\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 2,\n },\n }}\n >\n <div className={clsx([styles.cssSizeInput, props?.className])} {...dragSizeHandle} style={props.style}>\n <InputNumberPlus\n size={props.size}\n value={valObj.value}\n addonAfter={props.unit === false ? '' : unitSelect}\n min={currentMinMix.min}\n max={currentMinMix.max}\n onChange={(val) => {\n updateValue({\n value: val,\n unit: valObj.unit,\n });\n }}\n />\n </div>\n </ConfigProvider>\n );\n};\n","import { ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { CSSSizeInput, CSSSizeInputProps } from '@/component/CSSSizeInput';\n\nexport const CSSSizeSetter: CSetter<CSSSizeInputProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<CSSSizeInputProps & { initialValue?: string }>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <CSSSizeInput\n min={0}\n {...props}\n value={props.value ?? initialValue}\n onValueChange={(newVal) => {\n onValueChange?.(newVal);\n }}\n />\n </ConfigProvider>\n );\n};\n\nCSSSizeSetter.setterName = 'CSS size 设置器';\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col, Radio, Button } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react';\nimport { InputCommonRef } from '../type';\nimport { pick } from 'lodash-es';\nimport {\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n AlignHorizontalSpaceAround,\n AlignHorizontalSpaceBetween,\n AlignVerticalJustifyEnd,\n AlignVerticalJustifyStart,\n AlignVerticalSpaceAround,\n AlignVerticalSpaceBetween,\n ArrowDownFromLine,\n ArrowLeftFromLine,\n ArrowRightFromLine,\n ArrowUpFromLine,\n MoveHorizontal,\n MoveVertical,\n SquareX,\n StretchHorizontal,\n StretchVertical,\n} from 'lucide-react';\nconst keyList = [\n 'width',\n 'height',\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height',\n 'flex',\n 'display',\n 'flex-direction',\n 'justify-content',\n 'align-items',\n 'flex-wrap',\n] as const;\n\ntype Value = Record<typeof keyList[number], string>;\n\nexport type DimensionInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nfunction getDefaultValue(list: string[]): any {\n return list.reduce((res, el) => {\n return {\n ...res,\n [el]: '',\n };\n }, {});\n}\n\nconst maxVal = {\n px: 2048,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nexport const DimensionInput = forwardRef<InputCommonRef, DimensionInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getDefaultValue(keyList as any));\n\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...pick(newVal, keyList),\n };\n\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) =>\n updateInnerVal(\n {\n ...getDefaultValue(keyList as any),\n ...newVal,\n },\n true\n ),\n setEmptyValue: () => {\n setInnerVal(getDefaultValue(keyList as any));\n },\n };\n },\n [updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n return props.value ?? innerVal;\n }, [props.value, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col span={24} className=\"flex\">\n <span className={styles.label}>layout:</span>\n <Radio.Group\n value={realValue.display}\n size=\"small\"\n buttonStyle=\"solid\"\n onChange={(e) => {\n updateInnerVal({\n display: e.target.value,\n });\n }}\n >\n <Radio.Button value=\"block\">Block</Radio.Button>\n <Radio.Button value=\"flex\">Flex</Radio.Button>\n <Radio.Button value=\"inline-block\">InlineB</Radio.Button>\n <Radio.Button value=\"inline\">Inline</Radio.Button>\n <Radio.Button value=\"none\">None</Radio.Button>\n </Radio.Group>\n </Col>\n </Row>\n {/* flex 布局属性 */}\n {realValue.display === 'flex' && (\n <>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>AxisD:</span>\n <div\n style={{\n width: '200px',\n marginLeft: '3px',\n }}\n >\n <Radio.Group\n size=\"small\"\n value={realValue['flex-direction']}\n buttonStyle={'outline'}\n options={[\n {\n label: <ArrowRightFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'row',\n },\n {\n label: <ArrowLeftFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'row-reverse',\n },\n {\n label: <ArrowDownFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'column',\n },\n {\n label: <ArrowUpFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'column-reverse',\n },\n {\n label: <SquareX size={14} style={{ top: '3px', position: 'relative' }} />,\n value: '',\n },\n ]}\n onChange={(e) => {\n updateInnerVal({\n 'flex-direction': e.target.value || '',\n });\n }}\n optionType=\"button\"\n />\n </div>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>MAxis:</span>\n <div\n style={{\n width: '200px',\n marginLeft: '3px',\n }}\n >\n <Radio.Group\n size=\"small\"\n value={realValue['justify-content']}\n buttonStyle={'outline'}\n options={[\n {\n label: <AlignHorizontalDistributeStart size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-start',\n },\n {\n label: <AlignHorizontalDistributeEnd size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-end',\n },\n {\n label: <StretchVertical size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'center',\n },\n {\n label: <AlignHorizontalSpaceBetween size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-between',\n },\n {\n label: <AlignHorizontalSpaceAround size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-around',\n },\n {\n label: <SquareX size={14} style={{ top: '3px', position: 'relative' }} />,\n value: '',\n },\n ]}\n onChange={(e) => {\n updateInnerVal({\n 'justify-content': e.target.value || '',\n });\n }}\n optionType=\"button\"\n />\n </div>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>CAxis:</span>\n <div\n style={{\n width: '200px',\n marginLeft: '3px',\n }}\n >\n <Radio.Group\n size=\"small\"\n value={realValue['align-items']}\n buttonStyle={'outline'}\n options={[\n {\n label: <AlignVerticalJustifyStart size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-start',\n },\n {\n label: <AlignVerticalJustifyEnd size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-end',\n },\n {\n label: <StretchHorizontal size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'center',\n },\n {\n label: <AlignVerticalSpaceBetween size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-between',\n },\n {\n label: <AlignVerticalSpaceAround size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-around',\n },\n {\n label: <SquareX size={14} style={{ top: '3px', position: 'relative' }} />,\n value: '',\n },\n ]}\n onChange={(e) => {\n updateInnerVal({\n 'align-items': e.target.value || '',\n });\n }}\n optionType=\"button\"\n />\n </div>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col span={12} className=\"flex\">\n <span className={styles.label}>flex:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n unit={false}\n min={0}\n max={maxVal}\n value={realValue['flex']}\n onValueChange={(newVal) => {\n updateInnerVal({\n flex: newVal || '',\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </>\n )}\n {/* flex 布局属性 end */}\n\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>width:</span>\n <CSSSizeInput\n style={{\n width: '180px',\n }}\n min={0}\n max={maxVal}\n value={realValue.width}\n onValueChange={(val) => {\n updateInnerVal({\n width: val,\n });\n }}\n className={styles.inputWidth}\n size=\"small\"\n />\n <Button\n size=\"small\"\n style={{\n marginLeft: '10px',\n }}\n onClick={() => {\n updateInnerVal({\n width: '100%',\n });\n }}\n >\n <MoveHorizontal size={14} />\n </Button>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>height:</span>\n <CSSSizeInput\n min={0}\n style={{\n width: '180px',\n }}\n max={maxVal}\n value={realValue.height}\n onValueChange={(val) => {\n updateInnerVal({\n height: val,\n });\n }}\n className={styles.inputWidth}\n size=\"small\"\n />\n <Button\n size=\"small\"\n style={{\n marginLeft: '10px',\n }}\n onClick={() => {\n updateInnerVal({\n height: '100%',\n });\n }}\n >\n <MoveVertical size={14} />\n </Button>\n </Col>\n </Row>\n <div>\n <Row className={styles.row}>\n <Col span={12} className=\"flex\">\n <span className={styles.label}>minW:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n min={0}\n max={maxVal}\n value={realValue['min-width']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'min-width': newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n <Col span={12}>\n <span className={styles.label}>minH:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue['min-height']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'min-height': newVal,\n });\n }}\n className={styles.inputWidth}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col span={12} className=\"flex\">\n <span className={styles.label}>maxW:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n min={0}\n max={maxVal}\n value={realValue['max-width']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'max-width': newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n <Col span={12}>\n <span className={styles.label}>maxH:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n min={0}\n max={maxVal}\n value={realValue['max-height']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'max-height': newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react';\nimport { InputCommonRef } from '../type';\nimport clsx from 'clsx';\nimport { pick } from 'lodash-es';\n\ntype Value = Record<string, string>;\n\nexport type MarginAndPaddingInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n prefix: 'margin' | 'padding';\n};\n\nconst maxVal = {\n px: 2048,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nconst inputW = '100px';\n\nconst getEmptyVal = () => ({\n left: '',\n right: '',\n top: '',\n bottom: '',\n});\n\nexport const MarginAndPaddingInput = forwardRef<InputCommonRef, MarginAndPaddingInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const keyList = useMemo(() => {\n return ['left', 'top', 'right', 'bottom'].map((el) => `${props.prefix}-${el}`);\n }, [props.prefix]);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<any>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n const outVal = Object.keys(finalVal).reduce((res, k) => {\n if (k === 'all') {\n res[`${props.prefix}`] = (finalVal as unknown as any)?.[k];\n } else {\n res[`${props.prefix}-${k}`] = (finalVal as unknown as any)?.[k];\n }\n return res;\n }, {} as any);\n if (noTrigger !== true) {\n props.onChange?.(pick(outVal, keyList));\n }\n return finalVal;\n });\n },\n [keyList, props]\n );\n\n const formatValue = useCallback(\n (obj: Record<string, any>, prefix: string) => {\n const targetKeyList = Object.keys(obj || {}).filter((k) => k.includes(prefix));\n const tempVal = targetKeyList.reduce((res, k) => {\n if (k.replace(`${props.prefix}`, '') === '') {\n res['all'] = (obj as unknown as any)?.[k];\n } else {\n res[k.replace(`${props.prefix}-`, '')] = (obj as unknown as any)?.[k];\n }\n return res;\n }, {} as any);\n return tempVal;\n },\n [props.prefix]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n ...formatValue(newVal, props.prefix),\n },\n true\n );\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n },\n true\n );\n },\n };\n },\n [formatValue, props.prefix, updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n const tempVal = formatValue(props.value || {}, props.prefix);\n if (props.value === undefined) {\n return innerVal;\n }\n return tempVal;\n }, [formatValue, props.value, props.prefix, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n span={12}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label, styles['m-p']])}>T:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue.top}\n onValueChange={(val) => {\n updateInnerVal({\n top: val,\n });\n }}\n style={{\n width: inputW,\n }}\n size=\"small\"\n />\n </Col>\n <Col span={12}>\n <span className={clsx([styles.label, styles['m-p']])}>L:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue.left}\n onValueChange={(val) => {\n updateInnerVal({\n left: val,\n });\n }}\n style={{\n width: inputW,\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <div>\n <Row className={styles.row}>\n <Col span={12}>\n <span className={clsx([styles.label, styles['m-p']])}>B:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue.bottom}\n onValueChange={(newVal) => {\n updateInnerVal({\n bottom: newVal,\n });\n }}\n style={{\n width: inputW,\n }}\n size=\"small\"\n />\n </Col>\n <Col\n span={12}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label, styles['m-p']])}>R:</span>\n <CSSSizeInput\n style={{\n width: inputW,\n }}\n min={0}\n max={maxVal}\n value={realValue.right}\n onValueChange={(newVal) => {\n updateInnerVal({\n right: newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n});\n","import { ColorPicker, ColorPickerProps, GetProp } from 'antd';\nimport { forwardRef, useImperativeHandle, useState } from 'react';\n\nexport type CustomColorPickerRef = {\n updateColor: (color: string) => void;\n};\n\ntype Color = GetProp<ColorPickerProps, 'value'>;\n\ntype CustomColorPickerProps = Omit<ColorPickerProps, 'onChange'> & {\n onChange: (color: string) => void;\n};\n\nexport const CustomColorPicker = forwardRef<CustomColorPickerRef, CustomColorPickerProps>(function CustomColorPicker(\n props,\n ref\n) {\n const [color, setColor] = useState<Color>();\n\n useImperativeHandle(ref, () => {\n return {\n updateColor: (color: string) => {\n setColor(color);\n },\n };\n });\n\n return (\n <ColorPicker\n {...props}\n value={color}\n onChange={(val) => {\n setColor(val);\n }}\n onChangeComplete={(val) => {\n props.onChange?.(val.toRgbString());\n }}\n />\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col, Radio } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { InputCommonRef } from '../type';\nimport { pick } from 'lodash-es';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\nconst FONT_CSS_KEY_LIST = ['font-size', 'color', 'text-align', 'font-weight'] as const;\ntype FontKeyType = typeof FONT_CSS_KEY_LIST[number];\ntype Value = Record<FontKeyType, string>;\n\nexport type FontInputProps = {\n initialValue?: Value;\n value?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nconst maxVal = {\n px: 100,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nconst alignOptions = [\n { label: <span className={styles.fontOption}>Left</span>, value: 'left' },\n { label: <span className={styles.fontOption}>Center</span>, value: 'center' },\n { label: <span className={styles.fontOption}>Right</span>, value: 'Right' },\n];\n\nconst fontWeightOptions = [\n { label: <span className={styles.fontOption}>Regular</span>, value: '400' },\n { label: <span className={styles.fontOption}>Medium</span>, value: '500' },\n { label: <span className={styles.fontOption}>Bold</span>, value: '700' },\n];\n\nconst getEmptyVal = () => ({\n 'font-size': '',\n color: '',\n 'text-align': '',\n 'font-weight': '',\n});\n\nexport const FontInput = forwardRef<InputCommonRef, FontInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n colorRef.current?.updateColor(newVal?.color || '');\n updateInnerVal(\n {\n ...getEmptyVal(),\n ...pick(newVal, FONT_CSS_KEY_LIST),\n },\n true\n );\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n },\n true\n );\n },\n };\n },\n [updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n return props.value ?? innerVal;\n }, [props.value, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n onChange={(color) => {\n updateInnerVal({\n color: color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Size:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue['font-size']}\n onValueChange={(val) => {\n updateInnerVal({\n 'font-size': val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <span className={clsx([styles.label])}>Align:</span>\n <Radio.Group\n options={alignOptions}\n onChange={({ target: { value: newVal } }) => {\n updateInnerVal({\n 'text-align': newVal,\n });\n }}\n value={realValue['text-align']}\n />\n </Row>\n <Row className={styles.row}>\n <span className={clsx([styles.label])}>Weight:</span>\n <Radio.Group\n options={fontWeightOptions}\n onChange={({ target: { value: newVal } }) => {\n updateInnerVal({\n 'font-weight': newVal,\n });\n }}\n value={realValue['font-weight']}\n />\n </Row>\n </div>\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col, Radio } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { InputCommonRef } from '../type';\nimport { CloseCircleOutlined } from '@ant-design/icons';\nimport { pick } from 'lodash-es';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\nconst CSS_BORDER_KEY_LIST = ['border', 'border-radius'] as const;\n\ntype CSSBorderKeyType = typeof CSS_BORDER_KEY_LIST[number];\ntype Value = Record<CSSBorderKeyType, string>;\n\nconst maxVal = {\n px: 100,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nconst getEmptyVal = () => ({\n border: '',\n 'border-radius': '',\n});\n\nexport type BorderInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nexport const BorderInput = forwardRef<InputCommonRef, BorderInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n const emptyVal = getEmptyVal();\n if (Object.keys(newVal).length) {\n updateInnerVal(\n {\n ...emptyVal,\n ...pick(newVal, CSS_BORDER_KEY_LIST),\n },\n true\n );\n } else {\n updateInnerVal(emptyVal, true);\n }\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n },\n true\n );\n },\n };\n },\n [updateInnerVal]\n );\n\n const currentEditVal = useMemo(() => {\n const tempVal = innerVal['border'] || '';\n const list = tempVal.split(' ');\n const tmpVal = {\n size: list[0] || '',\n type: list[1] || '',\n color: tempVal.replace(' ', '').replace(list[0], '').replace(list[1], ''),\n };\n colorRef.current?.updateColor(tmpVal.color);\n\n return tmpVal;\n }, [innerVal]);\n\n const updateSingleBorderVal = (newBorderVal: typeof currentEditVal) => {\n updateInnerVal({\n border: `${newBorderVal.size || '0px'} ${newBorderVal.type || 'none'} ${\n newBorderVal.color || 'transparent'\n }`.trim(),\n });\n };\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n style={{\n position: 'relative',\n }}\n span={24}\n >\n <CloseCircleOutlined\n style={{\n position: 'absolute',\n right: 0,\n top: '5px',\n color: '#4e4e4e',\n cursor: 'pointer',\n }}\n onClick={() => {\n updateInnerVal({\n border: undefined,\n });\n }}\n />\n <span className={styles.label}>Size:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={currentEditVal.size}\n style={{\n width: '100px',\n }}\n unitList={['px']}\n onValueChange={(val) => {\n updateSingleBorderVal({\n ...currentEditVal,\n size: val || '',\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n value={currentEditVal.color || ''}\n onChange={(color) => {\n updateSingleBorderVal({\n ...currentEditVal,\n color: color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Type:</span>\n <Radio.Group\n value={currentEditVal.type}\n size=\"small\"\n onChange={(e) => {\n updateSingleBorderVal({\n ...currentEditVal,\n type: e.target.value || '',\n });\n }}\n >\n <Radio.Button value=\"solid\">Solid</Radio.Button>\n <Radio.Button value=\"dashed\">Dashed</Radio.Button>\n <Radio.Button value=\"dotted\">Dotted</Radio.Button>\n <Radio.Button value=\"none\">None</Radio.Button>\n </Radio.Group>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Radius:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={innerVal['border-radius']}\n onValueChange={(val) => {\n updateInnerVal({\n 'border-radius': val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </div>\n );\n});\n","import { Row, Col, Radio, Input } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { InputCommonRef } from '../type';\nimport { pick } from 'lodash-es';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\nconst CSS_BACKGROUND_KEY_LIST = [\n 'background-color',\n 'background-image',\n 'background-repeat',\n 'background-size',\n] as const;\n\ntype CSSBackgroundKeyType = typeof CSS_BACKGROUND_KEY_LIST[number];\n\ntype Value = Record<CSSBackgroundKeyType, string>;\n\nexport type BackgroundInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nconst getEmptyVal = () => {\n return {\n 'background-color': '',\n 'background-image': '',\n 'background-size': '',\n 'background-repeat': '',\n };\n};\n\nexport const BackgroundInput = forwardRef<InputCommonRef, BackgroundInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n colorRef.current?.updateColor(finalVal['background-color']);\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n const emptyVal = getEmptyVal();\n if (Object.keys(newVal).length) {\n updateInnerVal(\n {\n ...emptyVal,\n ...pick(newVal, CSS_BACKGROUND_KEY_LIST),\n },\n true\n );\n } else {\n updateInnerVal(emptyVal, true);\n }\n },\n setEmptyValue: () => {\n const emptyVal = getEmptyVal();\n updateInnerVal(emptyVal, true);\n },\n };\n },\n [updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n return props.value ?? innerVal;\n }, [props.value, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n value={realValue['background-color'] || ''}\n onChange={(color) => {\n updateInnerVal({\n 'background-color': color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n }}\n >\n <span className={styles.label}>Image:</span>\n <Input\n style={{ flex: 1 }}\n size=\"small\"\n value={/url\\(['|\"|*]?(.+?)['|\"|*]?\\)/.exec(realValue['background-image'])?.[1] || ''}\n onChange={(e) => {\n console.log(`url(\"${e.target.value}\")`);\n updateInnerVal({\n 'background-image': `url(\"${e.target.value}\")`,\n });\n }}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <span className={styles.label}>Size:</span>\n <Radio.Group\n size=\"small\"\n defaultValue=\"a\"\n buttonStyle=\"solid\"\n value={realValue['background-size']}\n onChange={(e) => {\n updateInnerVal({ 'background-size': e.target.value });\n }}\n >\n <Radio.Button value=\"contain\">Contain</Radio.Button>\n <Radio.Button value=\"cover\">Cover</Radio.Button>\n <Radio.Button value=\"auto\">Auto</Radio.Button>\n </Radio.Group>\n </Row>\n <Row className={styles.row}>\n <span className={styles.label}>Repeat:</span>\n <Radio.Group\n size=\"small\"\n buttonStyle=\"solid\"\n value={realValue['background-repeat']}\n onChange={(e) => {\n updateInnerVal({ 'background-repeat': e.target.value });\n }}\n >\n <Radio.Button value=\"repeat\">Repeat</Radio.Button>\n <Radio.Button value=\"no-repeat\">NoRepeat</Radio.Button>\n </Radio.Group>\n </Row>\n </div>\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { BoxShadowObjType, parseBoxShadowString } from '@/utils';\nimport { InputCommonRef } from '../type';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\ntype Value = Record<'box-shadow', string>;\n\nconst getEmptyVal = () => ({\n 'box-shadow': '',\n});\n\nexport type ShadowInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nexport const ShadowInput = forwardRef<InputCommonRef, ShadowInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n\n const realValue = useMemo(() => {\n const tempVal = props.value?.['box-shadow'] ?? innerVal['box-shadow'];\n const obj = parseBoxShadowString(tempVal || '')[0] || {};\n colorRef.current?.updateColor(obj.color || '');\n return obj;\n }, [props.value, innerVal]);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<BoxShadowObjType>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n console.log('set val', oldVal, newVal);\n const tempVal = props.value?.['box-shadow'];\n const obj = parseBoxShadowString(tempVal || '')[0] || {};\n const newUpdateVal = {\n ...obj,\n ...newVal,\n };\n const boxShadowStr = `${newUpdateVal.offsetX || '0'} ${newUpdateVal.offsetY || '0'} ${\n newUpdateVal.blur || '0'\n } ${newUpdateVal.spread || '0'} ${newUpdateVal.color || 'transparent'}`;\n const finalVal: Value = {\n ...oldVal,\n 'box-shadow': boxShadowStr,\n };\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n ...parseBoxShadowString(newVal['box-shadow'] || '')[0],\n },\n true\n );\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...(getEmptyVal() as any),\n },\n true\n );\n },\n };\n },\n [updateInnerVal]\n );\n\n return (\n <div>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>OffsetX:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['offsetX']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n offsetX: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>OffsetY:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['offsetY']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n\n offsetY: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Blur:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['blur']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n\n blur: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Spread:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['spread']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n\n spread: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n onChange={(color) => {\n updateInnerVal({\n ...realValue,\n\n color: color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n </div>\n );\n});\n","import * as csstree from 'css-tree';\n\nexport function parseCssToObject(css: string): Record<string, Record<string, string>> {\n const result: Record<string, Record<string, string>> = {};\n\n const ast = csstree.parse(css, {\n context: 'stylesheet',\n });\n\n csstree.walk(ast, {\n visit: 'Rule',\n enter(node) {\n if (node.type === 'Rule' && node.prelude.type === 'SelectorList') {\n const selector = csstree.generate(node.prelude);\n\n const declarations: Record<string, string> = {};\n if (node.block.type === 'Block') {\n for (const declaration of node.block.children.toArray()) {\n if (declaration.type === 'Declaration') {\n const prop = declaration.property;\n const value = csstree.generate(declaration.value);\n declarations[prop] = value;\n }\n }\n }\n\n result[selector] = declarations;\n }\n },\n });\n\n return result;\n}\n","import { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { MonacoEditor, MonacoEditorInstance } from '../MonacoEditor';\nimport styles from './style.module.scss';\nimport { parseCssToObject } from './helper';\nimport { InputCommonRef } from '../StylePanel/type';\nimport { isEqual } from 'lodash-es';\n\nconst getCssCodeFromStyleObj = (styleObj: Record<any, any> = {}) => {\n let res = `.node {\\n`;\n Object.keys(styleObj).forEach((key) => {\n res += ` ${key}: ${styleObj[key]};\\n`;\n });\n res += '}';\n\n return res;\n};\n\ntype CSSCodeEditorProps = {\n onValueChange?: (newVal: Record<any, any>) => void;\n};\n\nexport type CSSCodeEditorRef = InputCommonRef;\n\nexport const CSSCodeEditor = forwardRef<CSSCodeEditorRef, CSSCodeEditorProps>((props, ref) => {\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const valueRef = useRef({});\n useImperativeHandle(\n ref,\n () => {\n return {\n setEmptyValue: () => {\n valueRef.current = {};\n editorRef.current?.setValue(getCssCodeFromStyleObj({}));\n },\n setValue: (val) => {\n if (isEqual(val, valueRef.current)) {\n return;\n }\n valueRef.current = val;\n editorRef.current?.setValue(getCssCodeFromStyleObj(val));\n },\n };\n },\n []\n );\n\n return (\n <div\n className={styles.cssCodeEditor}\n style={{\n paddingTop: '10px',\n width: '100%',\n height: '150px',\n border: '1px solid rgba(0,0,0,0.2)',\n position: 'relative',\n borderRadius: '4px',\n }}\n >\n <MonacoEditor\n language=\"css\"\n onDidMount={(editor) => {\n editorRef.current = editor;\n editorRef.current?.setValue(getCssCodeFromStyleObj(valueRef.current || {}));\n }}\n onChange={(newVal) => {\n const styleObj = parseCssToObject(newVal || '');\n const newValObj = styleObj['.node'] || {};\n valueRef.current = newValObj;\n props.onValueChange?.(newValObj);\n }}\n options={{\n tabSize: 2,\n minimap: { enabled: false },\n folding: false,\n lineNumbers: 'off',\n hover: {\n // enabled: false, // ✅ 禁用 hoverWidget\n },\n }}\n />\n </div>\n );\n});\n","import { Button, Card, Collapse, CollapseProps, ConfigProvider } from 'antd';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport styles from './style.module.scss';\nimport { DimensionInput } from './DimensionInput';\nimport { MarginAndPaddingInput } from './MarginAndPaddingInput';\nimport { FontInput } from './FontInput';\nimport { BorderInput } from './BorderInput';\nimport { BackgroundInput } from './BackgroundInput';\nimport { ShadowInput } from './ShadowInput';\nimport { InputCommonRef } from './type';\nimport { waitReactUpdate } from '@/utils';\nimport { isNil, omitBy } from 'lodash-es';\nimport { CSSCodeEditor, CSSCodeEditorRef } from '../CSSCodeEditor';\nimport { Component, SquareCode } from 'lucide-react';\n\nexport type StyleUIPanelProps = {\n initialVal?: Record<string, string>;\n value?: Record<string, string>;\n onValueChange?: (newVal: Record<string, string>) => void;\n noCard?: boolean;\n};\n\nexport type StyleUIPanelRef = InputCommonRef;\n\nexport const StyleUIPanel = forwardRef<StyleUIPanelRef, StyleUIPanelProps>(\n ({ value, initialVal, onValueChange, noCard }, ref) => {\n const [mode, setMode] = useState<'VISUAL' | 'CODE'>(\n (localStorage.getItem('CHAMN_STYLE_EDITOR_MODE') as any) || 'VISUAL'\n );\n const dimensionRef = useRef<InputCommonRef>(null);\n const marinRef = useRef<InputCommonRef>(null);\n const paddingRef = useRef<InputCommonRef>(null);\n const borderRef = useRef<InputCommonRef>(null);\n const backgroundRef = useRef<InputCommonRef>(null);\n const shadowRef = useRef<InputCommonRef>(null);\n const fontRef = useRef<InputCommonRef>(null);\n const cssCodeEditorRef = useRef<CSSCodeEditorRef>(null);\n\n useEffect(() => {\n localStorage.setItem('CHAMN_STYLE_EDITOR_MODE', mode);\n }, [mode]);\n\n const inputRefs = useMemo(() => {\n return [dimensionRef, marinRef, paddingRef, borderRef, backgroundRef, shadowRef, fontRef];\n }, [dimensionRef, marinRef, paddingRef, borderRef, backgroundRef, shadowRef, fontRef]);\n\n const tempValueRef = useRef<any>(null);\n\n const updateInnerVal = useCallback(\n (newVal: any) => {\n if (!newVal) {\n return;\n }\n // 外部赋值\n tempValueRef.current = newVal;\n if (mode === 'CODE') {\n cssCodeEditorRef.current?.setValue(newVal);\n return;\n }\n\n inputRefs.forEach((ref) => {\n setTimeout(() => {\n ref.current?.setValue(newVal);\n });\n });\n },\n [inputRefs, mode]\n );\n\n const onStyleItemChange = useCallback(\n (val: any) => {\n const newVal = {\n ...(tempValueRef.current || {}),\n ...val,\n };\n tempValueRef.current = newVal;\n\n const finalValue = omitBy(newVal, (value) => isNil(value) || value === '');\n onValueChange?.(finalValue);\n },\n [onValueChange]\n );\n\n useEffect(() => {\n updateInnerVal(tempValueRef.current);\n }, [mode, updateInnerVal]);\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: updateInnerVal,\n setEmptyValue: () => updateInnerVal({}),\n };\n },\n [updateInnerVal]\n );\n\n const items: CollapseProps['items'] = useMemo(() => {\n return [\n {\n key: 'dimension',\n label: 'Dimension',\n children: (\n <DimensionInput\n ref={dimensionRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'margin',\n label: 'Margin',\n children: (\n <MarginAndPaddingInput\n prefix=\"margin\"\n ref={marinRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'padding',\n label: 'Padding',\n children: (\n <MarginAndPaddingInput\n ref={paddingRef}\n initialValue={initialVal as any}\n prefix=\"padding\"\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n\n {\n key: 'background',\n label: 'Background',\n children: (\n <BackgroundInput\n ref={backgroundRef}\n value={value as any}\n initialValue={initialVal as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'font',\n label: 'Font',\n children: (\n <FontInput\n ref={fontRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'border',\n label: 'Border',\n children: <BorderInput ref={borderRef} initialValue={initialVal as any} onChange={onStyleItemChange} />,\n },\n {\n key: 'shadow',\n label: 'Shadow',\n children: (\n <ShadowInput\n ref={shadowRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n ];\n }, [initialVal, onStyleItemChange, value]);\n\n const coreEditView = (\n <>\n {mode === 'CODE' && (\n <CSSCodeEditor\n onValueChange={(newVal) => {\n tempValueRef.current = newVal;\n onValueChange?.(newVal);\n }}\n ref={cssCodeEditorRef}\n />\n )}\n\n {mode !== 'CODE' && (\n <Collapse\n className={styles.styleUIPanel}\n items={items}\n bordered={false}\n defaultActiveKey={['dimension', 'background', 'padding', 'margin']}\n onChange={async () => {\n await waitReactUpdate();\n // 每次展开需要重新同步值\n updateInnerVal(tempValueRef.current);\n }}\n />\n )}\n </>\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 2,\n },\n }}\n >\n {noCard && coreEditView}\n {!noCard && (\n <Card\n size=\"small\"\n type=\"inner\"\n title={<span style={{ fontSize: '12px' }}>Style</span>}\n extra={\n <Button\n type=\"text\"\n size=\"small\"\n onClick={() => {\n setMode((oldVal) => {\n if (oldVal === 'CODE') {\n return 'VISUAL';\n } else {\n return 'CODE';\n }\n });\n }}\n >\n {mode === 'VISUAL' && <SquareCode size={16} />}\n {mode !== 'VISUAL' && <Component size={16} />}\n </Button>\n }\n style={{\n marginBottom: '10px',\n borderRadius: '8px',\n }}\n >\n {coreEditView}\n </Card>\n )}\n </ConfigProvider>\n );\n }\n);\n","import { CSSSizeInputProps } from '@/component/CSSSizeInput';\nimport { CSetter, CSetterProps } from '../type';\nimport { StyleUIPanel, StyleUIPanelRef } from '@/component/StylePanel';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { formatStyleProperty, styleArr2Obj, styleObjToArr } from '@/utils';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { isEqual } from 'lodash-es';\n\nexport const FastLayoutSetter: CSetter<CSSSizeInputProps> = ({\n value,\n setterContext,\n initialValue,\n ...resetProps\n}: CSetterProps<CSSSizeInputProps & { initialValue?: string }>) => {\n const cssUIRef = useRef<StyleUIPanelRef>(null);\n const node = setterContext.nodeModel;\n const lastNode = useRef<CNode | CRootNode>();\n\n const initialValueInner = useMemo(() => {\n const newStyle = node.value.style || [];\n const { normalProperty } = formatStyleProperty(newStyle);\n return styleArr2Obj(normalProperty);\n }, [node.value.style]);\n\n const updatePanelValue = useCallback(() => {\n lastNode.current = node;\n const newStyle = node.value.style || [];\n const { normalProperty } = formatStyleProperty(newStyle);\n cssUIRef.current?.setValue(styleArr2Obj(normalProperty) || {});\n }, [node]);\n\n useEffect(() => {\n updatePanelValue();\n node.emitter.on('onNodeChange', updatePanelValue);\n node.emitter.on('onReloadPage', updatePanelValue);\n return () => {\n node.emitter.off('onNodeChange', updatePanelValue);\n node.emitter.off('onReloadPage', updatePanelValue);\n };\n }, [node.emitter, node.id, updatePanelValue]);\n\n return (\n <StyleUIPanel\n {...resetProps}\n initialVal={initialValueInner}\n ref={cssUIRef}\n onValueChange={(newNormaCss) => {\n const newStyle = styleObjToArr(newNormaCss);\n const { expressionProperty } = formatStyleProperty(node.value.style || []);\n const newStyleList = [...newStyle, ...expressionProperty];\n if (isEqual(node.value.style, newStyleList)) {\n return;\n }\n node.value.style = newStyleList;\n node.updateValue();\n }}\n />\n );\n};\n","import { ConfigProvider, Radio } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { CheckboxGroupProps } from 'antd/es/checkbox';\nimport { useEffect, useMemo } from 'react';\n\nconst emptyValMap = {\n _null_: null,\n _undefined_: undefined,\n};\n\nexport const EmptyValueSetter: CSetter<{ emptyValue?: any }> = ({\n onValueChange,\n setterContext,\n initialValue,\n emptyValue,\n hiddenDefaultOption,\n ...props\n}: CSetterProps<{ emptyValue?: string; hiddenDefaultOption?: boolean }>) => {\n const options = useMemo<CheckboxGroupProps<string>['options']>(() => {\n const tempValue = [\n { label: 'Undefined', value: '_undefined_' },\n { label: 'Null', value: '_null_' },\n ];\n if (emptyValue) {\n if (hiddenDefaultOption) {\n return [{ label: emptyValue, value: emptyValue }];\n } else {\n tempValue.push({ label: emptyValue, value: emptyValue });\n }\n }\n\n return tempValue;\n }, [emptyValue, hiddenDefaultOption]);\n\n const innerValue = useMemo(() => {\n const tempValue = initialValue || props.value;\n if (tempValue === undefined) {\n return '_undefined_';\n }\n\n if (tempValue === null) {\n return '_null_';\n }\n\n return tempValue || '_undefined_';\n }, [initialValue, props.value]);\n\n // 切换初始化时,直接强制重置为 undefined\n useEffect(() => {\n onValueChange?.(emptyValue ?? undefined);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 6,\n },\n }}\n >\n <Radio.Group\n block\n options={options}\n defaultValue={initialValue}\n optionType=\"button\"\n size=\"small\"\n {...props}\n value={innerValue}\n onChange={(e) => {\n let newVal = e.target.value;\n if (['_null_', '_undefined_'].includes(newVal)) {\n newVal = emptyValMap[newVal as keyof typeof emptyValMap];\n }\n onValueChange?.(newVal);\n }}\n />\n </ConfigProvider>\n );\n};\n\nEmptyValueSetter.setterName = '空值设置器';\n","import { CSetter } from './type';\nimport { StringSetter } from './StringSetter';\nimport { NumberSetter } from './NumberSetter';\nimport { ArraySetter } from './ArraySetter';\nimport { ShapeSetter } from './ShapeSetter';\nimport { ExpressionSetter } from './ExpressionSetter';\nimport { BooleanSetter } from './BooleanSetter';\nimport { SelectSetter } from './SelectSetter';\nimport { JSONSetter } from './JSONSetter';\nimport { FunctionSetter } from './FunctionSetter';\nimport { TextAreaSetter } from './TextAreaSetter';\nimport { CSSValueSetter } from './CSSValueSetter';\nimport { ColorSetter } from './ColorSetter';\nimport { AntDColorSetter } from './AntDColorSetter';\nimport { SliderSetter } from './SliderSetter';\nimport { RadioGroupSetter } from './RadioGroupSetter';\nimport { CSSSizeSetter } from './CSSSizeSetter';\nimport { FastLayoutSetter } from './FastLayoutSetter';\nimport { EmptyValueSetter } from './EmptyValueSetter';\n\nexport const BUILD_IN_SETTER_MAP = {\n FastLayoutSetter,\n StringSetter,\n ArraySetter,\n ShapeSetter,\n NumberSetter,\n ExpressionSetter,\n BooleanSetter,\n SelectSetter,\n JSONSetter,\n FunctionSetter,\n TextAreaSetter,\n CSSValueSetter,\n ColorSetter,\n SliderSetter,\n AntDColorSetter,\n RadioGroupSetter,\n CSSSizeSetter,\n EmptyValueSetter,\n} as Record<string, CSetter>;\n\nexport default BUILD_IN_SETTER_MAP;\n\nexport * from './type';\n","import React, { isValidElement, ReactNode, useEffect, useState } from 'react';\nimport styles from './style.module.scss';\nimport { Alert, Popover, Tooltip } from 'antd';\nimport { CFormContext } from '../context';\nimport clsx from 'clsx';\nimport { QuestionCircleOutlined } from '@ant-design/icons';\n\nexport type CFiledChildProps = {\n onValueChange?: (val: any) => void;\n initialValue?: any;\n value?: any;\n};\n\nexport type CFieldProps = {\n children: React.ReactNode;\n label?: string;\n labelWidth?: string;\n labelAlign?: 'start' | 'center' | 'end';\n tips?: ReactNode | (() => ReactNode);\n name: string;\n condition?: (formState: Record<string, any>) => boolean;\n onConditionValueChange?: (val: boolean) => void;\n /** 不做任何包裹, 不会渲染 switchSetter */\n noStyle?: boolean;\n /** 隐藏 label, 会渲染 switchSetter */\n hiddenLabel?: boolean;\n valueChangeEventName?: string;\n formatEventValue?: (val: any) => any;\n rules?: { validator?: (value: any) => Promise<boolean | undefined>; required?: boolean; msg?: string }[];\n};\n\nexport const CField = (props: CFieldProps) => {\n const { children, label, tips, name, hiddenLabel } = props;\n const [errorInfo, setErrorInfo] = useState({\n isPass: true,\n errorMsg: '',\n });\n let labelView: ReactNode = label;\n const { formState, updateContext, updateConditionConfig } = React.useContext(CFormContext);\n useEffect(() => {\n if (props.condition) {\n updateConditionConfig(name, props.condition);\n }\n }, [name, props.condition, updateConditionConfig]);\n\n useEffect(() => {\n const condition = props.condition ?? (() => true);\n const canRender = condition(formState);\n props.onConditionValueChange?.(canRender);\n }, [formState, props]);\n\n if (tips) {\n let newTip: any = tips;\n if (typeof tips === 'function') {\n newTip = tips();\n }\n labelView = (\n <Tooltip\n title={<span style={{ color: 'rgba(255,255,255,0.9', fontSize: '12px' }}>{newTip}</span>}\n color=\"rgba(50,50,50,0.8)\"\n >\n <span className={styles.tipsLabel}>{label}</span>\n </Tooltip>\n );\n }\n let newChildren = children;\n\n if (isValidElement(children)) {\n const eventName = props.valueChangeEventName ?? 'onValueChange';\n const extraProps: any = {\n [eventName]: async (val: any) => {\n let tempVal = val;\n if (props.formatEventValue) {\n tempVal = props.formatEventValue(val);\n }\n\n // 先检查数据是否合法\n const rules = props.rules || [];\n const checkResult = await checkValue(props.name, tempVal, rules);\n if (!checkResult.isPass) {\n setErrorInfo(checkResult);\n } else {\n setErrorInfo({\n isPass: true,\n errorMsg: '',\n });\n }\n updateContext(\n {\n ...formState,\n [name]: tempVal,\n },\n [name]\n );\n },\n };\n\n extraProps.value = (formState as any)[name];\n newChildren = React.cloneElement(children, extraProps);\n }\n const condition = props.condition ?? (() => true);\n const canRender = condition(formState);\n if (!canRender) {\n return null;\n }\n if (props.noStyle) {\n return <>{newChildren}</>;\n }\n\n return (\n <div\n className={clsx([styles.fieldBox, !errorInfo.isPass && styles.error])}\n style={{\n alignItems: props.labelAlign ?? 'center',\n }}\n >\n {hiddenLabel !== true && (\n <div\n className={styles.label}\n style={{\n width: props.labelWidth ?? '60px',\n }}\n >\n {labelView}\n </div>\n )}\n <div className={styles.content}>{newChildren}</div>\n {!errorInfo.isPass && (\n <Popover content={<Alert message={errorInfo.errorMsg} type=\"error\" />}>\n <QuestionCircleOutlined className={styles.errorTipIcon} />\n </Popover>\n )}\n </div>\n );\n};\n\nconst checkValue = async (key: string, value: any, rules: CFieldProps['rules'] = []) => {\n let pass = true;\n let errorMsg = '';\n\n for (let i = 0; i < rules.length; i++) {\n if (rules[i].required && !value) {\n pass = false;\n errorMsg = `${key} is required.`;\n break;\n }\n if (rules[i].validator) {\n try {\n const isPass = await rules[i].validator?.(value);\n if (!isPass) {\n pass = false;\n errorMsg = rules[i]?.msg || `${key} is illegal `;\n break;\n }\n } catch (e) {\n pass = false;\n errorMsg = `${String(e)}`;\n break;\n }\n }\n }\n\n return {\n isPass: pass,\n errorMsg,\n };\n};\n","import React, { Ref } from 'react';\nimport { CustomSchemaFormInstance } from './index';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CForm } from './components/Form';\nimport { CFormContextData } from './components/Form/context';\n\nexport type ContextState = Record<string, any>;\n\nexport type CCustomSchemaFormContextData = {\n onSetterChange: (keyPaths: string[], setterName: string) => void;\n /** 存储 field 默认的 setter 类型*/\n defaultSetterConfig: Record<string, { name: string; setter: string }>;\n /** schema 中的全局 setter map 配置*/\n customSetterMap: CFormContextData['customSetterMap'];\n formRef?: Ref<CustomSchemaFormInstance | CForm>;\n pluginCtx?: CPluginCtx;\n /** 当前编辑节点的 id */\n nodeId?: string;\n};\n\nexport const CCustomSchemaFormContext = React.createContext<CCustomSchemaFormContextData>({\n defaultSetterConfig: {},\n onSetterChange: () => {},\n customSetterMap: {},\n});\n","import React, { useContext, useEffect } from 'react';\nimport { SetterObjType } from '@chamn/model';\nimport InnerSetters from '../Setters/index';\nimport { CFieldProps } from '../Form/Field';\nimport { CCustomSchemaFormContext } from '../../context';\nimport { CFormContext } from '../Form/context';\nimport { CSetter, CSetterProps } from '../Setters/type';\nimport { getDefaultSetterByValue } from '../../utils';\n\nexport type SetterSwitcherProps = {\n // 支持的 setter 列表\n setters: SetterObjType[];\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap?: Record<string, CSetter>;\n keyPaths: string[];\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n style?: React.CSSProperties;\n /** 是否实用 CFile 包裹 */\n useField?: boolean;\n} & Omit<CFieldProps, 'children'>;\n\n/** 用于渲染切换设置器 */\nexport const SetterSwitcherCore = ({\n setters,\n keyPaths,\n currentSetter,\n setCurrentSetter,\n customSetterMap: customSetterMapProp,\n ...props\n}: Pick<SetterSwitcherProps, 'setters' | 'keyPaths'> & {\n value?: any;\n setterContext?: Partial<CSetterProps['setterContext']>;\n currentSetter: SetterObjType;\n customSetterMap?: any;\n setCurrentSetter: (setter: SetterObjType) => void;\n}) => {\n const { customSetterMap } = useContext(CFormContext);\n const { defaultSetterConfig } = useContext(CCustomSchemaFormContext);\n const allSetterMap = {\n ...InnerSetters,\n ...(customSetterMapProp || {}),\n ...customSetterMap,\n };\n\n useEffect(() => {\n const currentSetterName = defaultSetterConfig[keyPaths.join('.')]?.setter || '';\n const devConfigSetter = setters.find((el) => el.componentName === currentSetterName);\n const st = devConfigSetter || getDefaultSetterByValue(props.value, setters) || setters[0];\n setCurrentSetter(st);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let CurrentSetterComp = null;\n if (currentSetter?.componentName) {\n CurrentSetterComp = allSetterMap[currentSetter?.componentName] || currentSetter.component;\n }\n if (!CurrentSetterComp) {\n CurrentSetterComp = function EmptySetter() {\n return (\n <div\n style={{\n backgroundColor: 'whitesmoke',\n margin: '5px 0',\n padding: '5px',\n borderRadius: '2px',\n color: 'gray',\n }}\n >{`${currentSetter?.componentName} is not found.`}</div>\n );\n };\n }\n\n return <CurrentSetterComp {...props} />;\n};\n","import React, { useContext, useMemo, useState } from 'react';\nimport { SetterObjType, SetterTypeEnum } from '@chamn/model';\nimport InnerSetters from '../Setters/index';\nimport { CField, CFieldProps } from '../Form/Field';\nimport { Collapse, Dropdown, MenuProps } from 'antd';\nimport { SwapOutlined } from '@ant-design/icons';\nimport styles from './style.module.scss';\nimport { CCustomSchemaFormContext } from '../../context';\nimport { CFormContext } from '../Form/context';\nimport { CSetter } from '../Setters/type';\nimport { SetterSwitcherCore } from './core';\n\nexport type SetterSwitcherProps = {\n // 支持的 setter 列表\n setters: SetterObjType[];\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap?: Record<string, CSetter>;\n keyPaths: string[];\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n style?: React.CSSProperties;\n /** 是否实用 CFile 包裹 */\n useField?: boolean;\n} & Omit<CFieldProps, 'children'>;\n\nexport const SetterSwitcher = ({\n setters: outerSetter,\n keyPaths,\n condition,\n useField = true,\n ...props\n}: SetterSwitcherProps) => {\n const [visible, setVisible] = useState(true);\n const { customSetterMap } = useContext(CFormContext);\n const { onSetterChange, defaultSetterConfig, formRef, pluginCtx, nodeId } = useContext(CCustomSchemaFormContext);\n const allSetterMap = {\n ...InnerSetters,\n ...customSetterMap,\n };\n // 统一添加一些内置的 setter\n const setters = useMemo(() => {\n return [\n ...outerSetter,\n {\n componentName: SetterTypeEnum.EMPTY_VALUE_SETTER,\n },\n ];\n }, [outerSetter]);\n const [currentSetter, setCurrentSetter] = useState<SetterObjType>(() => {\n const currentSetterName = defaultSetterConfig[keyPaths.join('.')]?.setter || '';\n const devConfigSetter = setters.find((el) => el.componentName === currentSetterName);\n return devConfigSetter || setters[0];\n });\n\n const menuItems = setters.map((setter) => {\n const setterName = setter?.componentName || '';\n const setterRuntime = allSetterMap[setterName];\n return {\n key: setter.componentName,\n label: setterRuntime?.setterName || setter.componentName,\n };\n });\n\n const switcher = useMemo(() => {\n const onChooseSetter: MenuProps['onClick'] = ({ key }) => {\n const targetSetter = setters.find((setter) => setter.componentName === key);\n if (targetSetter) {\n setCurrentSetter(targetSetter);\n onSetterChange?.(keyPaths, targetSetter.componentName);\n }\n };\n if (menuItems.length === 1) {\n return null;\n }\n\n return (\n <div\n className={styles.switchBtn}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Dropdown\n trigger={['click']}\n menu={{\n selectable: true,\n items: menuItems,\n onClick: onChooseSetter,\n defaultSelectedKeys: [currentSetter?.componentName || ''],\n }}\n >\n <SwapOutlined />\n </Dropdown>\n </div>\n );\n }, [menuItems, currentSetter?.componentName, setters, onSetterChange, keyPaths]);\n\n const setterProps = useMemo(() => {\n let newProps = {\n ...(currentSetter?.props || {}),\n initialValue: currentSetter?.initialValue,\n };\n const target = setters.find((el) => el.componentName === currentSetter?.componentName);\n if (target) {\n newProps = {\n ...newProps,\n ...target.props,\n };\n }\n return newProps;\n }, [setters, currentSetter]);\n\n const [collapseHeaderExt, setCollapseHeaderExt] = useState<any>([]);\n\n let bodyView: any = null;\n const hiddenLabel = currentSetter?.hiddenLabel === true;\n\n const labelWidth = currentSetter?.labelWidth;\n const labelAlign = currentSetter?.labelAlign || 'center';\n const collapse = (currentSetter?.props as any)?.collapse;\n const specialSetter = ['ArraySetter', 'ShapeSetter'].includes(currentSetter?.componentName);\n const setterContext = useMemo(\n () => ({\n formRef,\n pluginCtx,\n keyPaths: [...keyPaths],\n label: props.label,\n setCollapseHeaderExt: specialSetter ? setCollapseHeaderExt : undefined,\n nodeModel: pluginCtx?.pageModel.getNode(nodeId) as any,\n }),\n [formRef, keyPaths, nodeId, pluginCtx, props.label, specialSetter]\n );\n const filedView = useMemo(() => {\n const customSetterMap = {\n ...(props.customSetterMap || {}),\n };\n\n const cFiledProps = {\n labelWidth,\n labelAlign,\n hiddenLabel,\n condition,\n noStyle: specialSetter ? true : false,\n onConditionValueChange: (val: boolean) => {\n setVisible(val);\n },\n };\n\n if (useField === false) {\n return (\n <SetterSwitcherCore\n setters={setters}\n keyPaths={keyPaths}\n currentSetter={currentSetter}\n setCurrentSetter={setCurrentSetter}\n {...props}\n {...setterProps}\n customSetterMap={customSetterMap}\n setterContext={setterContext}\n />\n );\n }\n return (\n <CField {...cFiledProps} {...props}>\n <SetterSwitcherCore\n setters={setters}\n keyPaths={keyPaths}\n currentSetter={currentSetter}\n setCurrentSetter={setCurrentSetter}\n {...setterProps}\n customSetterMap={customSetterMap}\n setterContext={setterContext}\n />\n </CField>\n );\n }, [\n condition,\n currentSetter,\n hiddenLabel,\n keyPaths,\n labelAlign,\n labelWidth,\n props,\n setterContext,\n setterProps,\n setters,\n specialSetter,\n useField,\n ]);\n\n const renderCollapse = useMemo(\n function renderCollapse() {\n const collapseObj = typeof collapse === 'object' ? collapse : {};\n\n const CollapseComponent = (extraHeaderContent?: React.ReactNode) => (\n <Collapse\n bordered={false}\n {...collapseObj}\n style={{\n marginBottom: '10px',\n flex: 1,\n }}\n defaultActiveKey={[collapseObj.open ? props.name : '']}\n items={[\n {\n key: props.name,\n label: (\n <div className={styles.collapseHeader}>\n <span style={{ flex: 1 }}>{props.label}</span>\n {extraHeaderContent}\n {switcher}\n </div>\n ),\n children: filedView,\n },\n ]}\n />\n );\n\n return CollapseComponent;\n },\n [collapse, props.name, props.label, switcher, filedView]\n );\n\n if (['ArraySetter'].includes(currentSetter?.componentName || '')) {\n bodyView = renderCollapse(collapseHeaderExt);\n } else if (['ShapeSetter'].includes(currentSetter?.componentName || '')) {\n bodyView = (\n <div className={styles.shapeFieldBox}>\n {props.prefix ?? null}\n {(currentSetter?.props as any)?.collapse === false && <div style={{ width: '100%' }}>{filedView}</div>}\n {collapse !== false && renderCollapse()}\n {props.suffix ?? null}\n </div>\n );\n } else {\n bodyView = (\n <div style={{ display: 'flex', alignItems: labelAlign, paddingBottom: '8px' }}>\n {props.prefix ?? null}\n {filedView}\n {switcher}\n {props.suffix ?? null}\n </div>\n );\n }\n\n return <div style={{ display: visible ? 'block' : 'none' }}>{bodyView}</div>;\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { Ref } from 'react';\nimport { CMaterialPropsType, getMTitleTip, getMTitle, isSpecialMaterialPropType } from '@chamn/model';\nimport { CForm } from './components/Form';\nimport { SetterSwitcher } from './components/SetterSwitcher';\nimport { getSetterList } from './utils';\nimport styles from './style.module.scss';\nimport { ConfigProvider } from 'antd';\nimport { CCustomSchemaFormContext } from './context';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CFormContextData } from './components/Form/context';\n\nexport type CustomSchemaFormInstance = CForm;\n\nexport type CustomSchemaFormProps = {\n nodeId?: string;\n pluginCtx?: CPluginCtx;\n initialValue: Record<string, any>;\n properties: CMaterialPropsType<any>;\n onValueChange?: (val: any) => void;\n onSetterChange: (keyPaths: string[], setterName: string) => void;\n /** 存储每个字段上次使用的 setter */\n defaultSetterConfig: Record<string, { name: string; setter: string }>;\n customSetterMap?: CFormContextData['customSetterMap'];\n};\n\nconst CustomSchemaFormCore = (props: CustomSchemaFormProps, ref: Ref<CustomSchemaFormInstance | CForm>) => {\n const {\n properties: originProperties,\n initialValue,\n onValueChange,\n onSetterChange,\n defaultSetterConfig,\n pluginCtx,\n customSetterMap,\n } = props;\n const properties: CMaterialPropsType = originProperties;\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig,\n // 设置全局 setter map\n customSetterMap,\n onSetterChange,\n formRef: ref,\n pluginCtx: pluginCtx,\n nodeId: props.nodeId,\n }}\n >\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div className={styles.CFromRenderBox}>\n <CForm\n ref={ref as any}\n name=\"root-form\"\n initialValue={initialValue}\n customSetterMap={customSetterMap}\n onValueChange={(val) => {\n onValueChange?.(val);\n }}\n >\n {properties.map((property) => {\n if (isSpecialMaterialPropType(property)) {\n console.log('Current not Support type config for props, wait future....');\n } else {\n const title = getMTitle(property.title);\n const tip = getMTitleTip(property.title) || property?.description;\n const setterList = getSetterList(property.setters);\n const keyPaths = [property.name];\n return (\n <SetterSwitcher\n key={property.name}\n condition={property.condition}\n keyPaths={keyPaths}\n setters={setterList}\n label={title}\n name={property.name || ''}\n tips={tip}\n />\n );\n }\n })}\n </CForm>\n </div>\n </ConfigProvider>\n </CCustomSchemaFormContext.Provider>\n );\n};\n\nexport const CustomSchemaForm = React.forwardRef(CustomSchemaFormCore);\n\nexport * from './components/SetterSwitcher';\nexport * from './components/Setters';\n","import { TreeDataNode } from 'antd';\n\nexport const getParentKey = (key: React.Key, tree: TreeDataNode[]): React.Key => {\n let parentKey: React.Key;\n for (let i = 0; i < tree.length; i++) {\n const node = tree[i];\n if (node.children) {\n if (node.children.some((item) => item.key === key)) {\n parentKey = node.key;\n } else if (getParentKey(key, node.children)) {\n parentKey = getParentKey(key, node.children);\n }\n }\n }\n return parentKey!;\n};\n\nexport const getNodeInfo = (key: string, tree: TreeDataNode[]): TreeDataNode | null => {\n const traverse = (nodes: TreeDataNode[]): TreeDataNode | null => {\n for (const node of nodes) {\n if (node.key === key) {\n return node;\n }\n if (node.children?.length) {\n const result = traverse(node.children);\n if (result) {\n return result;\n }\n }\n }\n return null;\n };\n\n return traverse(tree);\n};\n","import { Modal, TreeSelect } from 'antd';\nimport { CPage } from '@chamn/model';\nimport { useRef, useMemo } from 'react';\nimport { transformPageSchemaToTreeData, traverseTree } from '@/plugins/OutlineTree/util';\nimport { getNodeInfo } from '../SelectNodeByTree/util';\n\ninterface SelectNodeModalProps {\n open: boolean;\n onCancel: () => void;\n onOk: (data: { nodeId: string; title: string }) => void;\n pageModel: CPage;\n value?: string;\n}\n\nexport const SelectNodeModal = (props: SelectNodeModalProps) => {\n const { open, onCancel, onOk, pageModel, value } = props;\n const boxDomRef = useRef<HTMLDivElement>(null);\n\n const treeData = useMemo(() => {\n if (!pageModel) return;\n const treeData = transformPageSchemaToTreeData(pageModel?.export(), pageModel);\n traverseTree(treeData, (el: any) => {\n el.sourceData = {\n title: el.title,\n value: el.value,\n };\n el.value = el.key;\n el.title = <div style={{ flexWrap: 'nowrap', display: 'flex', width: '150px' }}>{el.title}</div>;\n\n return false;\n });\n return treeData;\n }, [pageModel]);\n\n return (\n <Modal open={open} onCancel={onCancel} title=\"选择节点\" onOk={() => onOk({ nodeId: value || '', title: '' })}>\n <div ref={boxDomRef} style={{ width: '100%' }}>\n <TreeSelect\n virtual={false}\n showSearch\n style={{ width: '100%' }}\n value={value}\n allowClear\n onClear={() => {\n onOk({\n nodeId: '',\n title: '',\n });\n }}\n filterTreeNode={(inputValue, treeNode: any) => {\n return treeNode.sourceData?.title.toLowerCase().indexOf(inputValue.toLowerCase()) > -1;\n }}\n getPopupContainer={() => boxDomRef.current!}\n treeDefaultExpandAll\n onChange={(newVal) => {\n const nodeInfo = getNodeInfo(newVal, (treeData as any) ?? []);\n onOk({\n nodeId: newVal,\n title: (nodeInfo as any)?.sourceData?.title,\n });\n }}\n treeData={treeData}\n />\n </div>\n </Modal>\n );\n};\n","import { Button } from 'antd';\nimport { useMemo, useState } from 'react';\nimport { CPage } from '@chamn/model';\nimport { SelectNodeModal } from './modal';\n\nexport const SelectNodeByTree = (props: {\n pageModel: CPage;\n onChange?: (data: { nodeId: string; title: string }) => void;\n value?: any;\n}) => {\n const [modalOpen, setModalOpen] = useState(false);\n const [innerValue, setInnerValue] = useState<{ nodeId: string; title: string }>(props.value);\n\n const nodeTitle = useMemo(() => {\n const nodeInfo = props.pageModel.getNode(innerValue?.nodeId || props.value);\n\n if (nodeInfo) {\n return nodeInfo.value.title || nodeInfo.material?.value.title || innerValue?.title || '';\n }\n return '';\n }, [props.pageModel, props?.value, innerValue?.nodeId, innerValue?.title]);\n\n return (\n <>\n <Button\n style={{\n width: '200px',\n }}\n onClick={() => setModalOpen(true)}\n >\n {nodeTitle ?? '选择节点'}\n </Button>\n <SelectNodeModal\n open={modalOpen}\n onCancel={() => setModalOpen(false)}\n onOk={(data) => {\n props.onChange?.(data);\n setInnerValue(data);\n setModalOpen(false);\n }}\n pageModel={props.pageModel}\n value={innerValue?.nodeId || props.value}\n />\n </>\n );\n};\n","import { CPage } from '@chamn/model';\nimport { SelectNodeByTree } from '../SelectNodeByTree';\nimport { Input, Space } from 'antd';\n\nexport const SelectNodeState = (props: {\n value?: {\n nodeId: string;\n keyPath: string;\n };\n pageModel: CPage;\n onChange?: (data: { nodeId: string; keyPath: string }) => void;\n}) => {\n return (\n <div>\n <Space>\n <SelectNodeByTree\n pageModel={props.pageModel}\n value={props.value}\n onChange={(data) => {\n props.onChange?.({\n nodeId: data.nodeId,\n keyPath: props.value?.keyPath || '',\n });\n }}\n />\n <Input\n style={{\n width: 250,\n }}\n value={props.value?.keyPath}\n onChange={(e) => {\n const { value: inputValue } = e.target;\n props.onChange?.({\n nodeId: props.value?.nodeId || '',\n keyPath: String(inputValue),\n });\n }}\n placeholder=\"variable name. support '.'\"\n />\n </Space>\n </div>\n );\n};\n","export function isValidJSVariableName(name: string) {\n // 1. 使用正则表达式验证变量名规则\n const identifierRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n if (!identifierRegex.test(name)) {\n return false;\n }\n\n // 2. 检测是否为保留关键字\n try {\n new Function(`let ${name};`);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n AssignValueType,\n getRandomStr,\n LogicType,\n TLogicAssignValueItem,\n TLogicCallNodeMethodItem,\n TLogicJumpLinkItem,\n TLogicRequestAPIItem,\n TLogicRunCodeItem,\n} from '@chamn/model';\n\nexport const DEFAULT_NODE_LIST = [\n {\n key: LogicType.ASSIGN_VALUE,\n name: '赋值/创建变量',\n getInitData: () => {\n const id = getRandomStr();\n const assignValueItem: TLogicAssignValueItem = {\n id: id,\n type: LogicType.ASSIGN_VALUE,\n valueType: AssignValueType.STATE,\n currentValue: '',\n targetValueName: '',\n };\n\n return assignValueItem;\n },\n },\n {\n key: LogicType.JUMP_LINK,\n name: '页面跳转',\n getInitData: () => {\n const id = getRandomStr();\n const assignValueItem: TLogicJumpLinkItem = {\n id: id,\n type: LogicType.JUMP_LINK,\n link: '',\n };\n\n return assignValueItem;\n },\n },\n {\n key: LogicType.REQUEST_API,\n name: '请求数据',\n getInitData: () => {\n const id = getRandomStr();\n const requestAPIItem: TLogicRequestAPIItem = {\n id: id,\n type: LogicType.REQUEST_API,\n apiPath: '',\n method: 'GET',\n header: {},\n query: {},\n responseVarName: `responseData_${id}`,\n afterSuccessResponse: [],\n afterFailedResponse: [\n {\n id: getRandomStr(),\n type: LogicType.RUN_CODE,\n value: 'console.error(\"API request failed:\", $$response)',\n },\n ],\n };\n\n return requestAPIItem;\n },\n },\n {\n key: LogicType.CALL_NODE_METHOD,\n name: '调用组件方法',\n getInitData: () => {\n const id = getRandomStr();\n\n const callNodeMethodItem: TLogicCallNodeMethodItem = {\n id: id,\n type: LogicType.CALL_NODE_METHOD,\n nodeId: '',\n methodName: '',\n args: [],\n returnVarName: '',\n };\n\n return callNodeMethodItem;\n },\n },\n {\n key: LogicType.RUN_CODE,\n name: '运行代码',\n getInitData: () => {\n const id = getRandomStr();\n\n const runCodeItem: TLogicRunCodeItem = {\n id: id,\n type: LogicType.RUN_CODE,\n name: `run_code_${id}`,\n value: `console.log('hello world');`,\n };\n\n return runCodeItem;\n },\n },\n];\n","import { Popover } from 'antd';\nimport { useState } from 'react';\nimport { DEFAULT_NODE_LIST } from './initData';\nimport { TLogicItemHandlerFlow } from '@chamn/model';\n\nexport const CreateNewNodePopup = (props: {\n title?: string;\n children: React.ReactNode;\n disabled?: boolean;\n style?: React.CSSProperties;\n onNewNodeAdd: (data: TLogicItemHandlerFlow[number]) => void;\n}) => {\n const { title = 'Next Step' } = props;\n\n const [open, setOpen] = useState(false);\n\n const handleOpenChange = (newOpen: boolean) => {\n setOpen(newOpen);\n };\n\n const nodeList = DEFAULT_NODE_LIST.map((el) => {\n return (\n <div\n onClick={() => {\n setOpen(false);\n props.onNewNodeAdd?.(el.getInitData());\n }}\n key={el.key}\n style={{\n padding: '10px 20px',\n border: '1px solid #c3c3c3b8',\n borderRadius: '4px',\n textAlign: 'center',\n fontSize: '12px',\n cursor: 'pointer',\n }}\n >\n {el.name}\n </div>\n );\n });\n\n // 禁用弹窗\n if (props.disabled) {\n return props.children;\n }\n\n return (\n <Popover\n onOpenChange={handleOpenChange}\n open={open}\n trigger={'hover'}\n content={\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n width: '300px',\n gap: '8px',\n justifyContent: 'space-between',\n }}\n >\n {nodeList.map((el) => (\n <div\n key={el.key}\n style={{\n flex: '0 0 calc(50% - 4px)',\n }}\n >\n {el}\n </div>\n ))}\n </div>\n }\n title={title}\n >\n {props.children}\n </Popover>\n );\n};\n","import { Handle, HandleProps, Position } from '@xyflow/react';\nimport { INPUT_HANDLE_ID } from '../../config';\n\nexport const InputHandle = (props: Partial<HandleProps>) => {\n return <Handle type=\"target\" id={INPUT_HANDLE_ID} position={Position.Top} {...props} />;\n};\n","import { Handle, HandleProps, Position } from '@xyflow/react';\nimport { OUTPUT_HANDLE_ID } from '../../config';\n\nexport const OutputHandle = (props: Partial<HandleProps>) => {\n return <Handle type=\"source\" position={Position.Bottom} id={OUTPUT_HANDLE_ID} {...props} />;\n};\n","import { Card, CardProps } from 'antd';\nimport { OUTPUT_HANDLE_ID, REACT_FLOW_DRAG_CLASS_NAME } from '../../config';\nimport { HolderOutlined } from '@ant-design/icons';\nimport styles from './style.module.scss';\nimport { CreateNewNodePopup } from '../CreateNewNodePopup';\nimport { InputHandle } from '../InputHandle';\nimport { OutputHandle } from '../OutputHandle';\nimport { NodeProps, useReactFlow } from '@xyflow/react';\nimport { getNewNodePosInfo, UseNodeHasConnected } from '../../util';\nimport clsx from 'clsx';\n\nexport const NodeCard = ({\n nodeProps,\n customHandle,\n handleNewNodeAdd: outHandleNewNodeAdd,\n useCardStyle,\n outputHandle,\n inputHandle,\n ...props\n}: CardProps & {\n inputHandle?: boolean;\n outputHandle?: boolean;\n useCardStyle?: boolean;\n nodeProps: NodeProps;\n customHandle?: React.ReactNode;\n handleNewNodeAdd?: (newNodeData: any) => void;\n}) => {\n const { data, isConnectable, selected } = nodeProps;\n const reactFlowInstance = useReactFlow();\n const outputNodeHasConnected = UseNodeHasConnected(data, OUTPUT_HANDLE_ID);\n\n const handleNewNodeAdd = (newNodeData: any) => {\n const currentNode = reactFlowInstance.getNode(String(data.id));\n if (!currentNode) {\n console.error(`Not found node by id ${data.id}`);\n return;\n }\n const { newEdge, newNode } = getNewNodePosInfo(currentNode, newNodeData);\n // 更新流程图\n reactFlowInstance.addNodes(newNode);\n reactFlowInstance.addEdges(newEdge);\n };\n\n let customHandleView: any = (\n <>\n {inputHandle !== false && <InputHandle isConnectable={isConnectable} />}\n {outputHandle !== false && (\n <CreateNewNodePopup\n style={{\n position: 'absolute',\n left: '50%',\n bottom: '0',\n }}\n onNewNodeAdd={(data) => {\n /** 外部有自定义 handle 时,取消事件触发 */\n if (customHandle) {\n return;\n }\n if (outHandleNewNodeAdd) {\n outHandleNewNodeAdd(data);\n } else {\n handleNewNodeAdd(data);\n }\n }}\n disabled={outputNodeHasConnected}\n >\n <OutputHandle\n isConnectable={isConnectable}\n style={{\n width: '10px',\n height: '10px',\n }}\n />\n </CreateNewNodePopup>\n )}\n </>\n );\n\n if (customHandle) {\n customHandleView = customHandle;\n }\n\n if (useCardStyle === false) {\n return (\n <div className={clsx([selected ? styles.selectStatus : ''])}>\n <div className={REACT_FLOW_DRAG_CLASS_NAME}>{props.children}</div>\n {customHandleView}\n </div>\n );\n }\n\n return (\n <Card\n {...props}\n classNames={{\n header: REACT_FLOW_DRAG_CLASS_NAME,\n }}\n className={clsx([selected ? styles.selectStatus : ''])}\n styles={{\n body: {\n cursor: 'default',\n },\n }}\n extra={\n <div\n style={{\n display: 'flex',\n }}\n >\n {props.extra}\n <div className={styles.dragBox}>\n <HolderOutlined />\n </div>\n </div>\n }\n >\n {props.children}\n <div className={clsx([REACT_FLOW_DRAG_CLASS_NAME, styles.l])}></div>\n <div className={clsx([REACT_FLOW_DRAG_CLASS_NAME, styles.r])}></div>\n <div className={clsx([REACT_FLOW_DRAG_CLASS_NAME, styles.b])}></div>\n {customHandleView}\n </Card>\n );\n};\n","import { createContext, useContext } from 'react';\nimport { CNode, CPage } from '@chamn/model';\nimport { CPluginCtx } from '@/core/pluginManager';\n\ninterface ActionFlowContextType {\n pluginCtx: CPluginCtx;\n pageModel: CPage;\n /** 数据有改变时,包含节点内部的数据 */\n onDataChange: () => void;\n /** 当前节点 */\n nodeModel: CNode | null;\n}\n\nexport const ActionFlowContext = createContext<ActionFlowContextType>({\n pluginCtx: null as any,\n pageModel: null as any,\n onDataChange: () => {},\n nodeModel: null,\n});\n\nexport const useActionFlow = () => {\n const context = useContext(ActionFlowContext);\n if (!context) {\n throw new Error('useActionFlow must be used within ActionFlowProvider');\n }\n return context;\n};\n","import { useContext, useMemo, useState } from 'react';\nimport { SetterObjType, SetterType } from '@chamn/model';\nimport { Dropdown, MenuProps } from 'antd';\nimport { SwapOutlined } from '@ant-design/icons';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { getSetterList } from '@/component/CustomSchemaForm/utils';\nimport styles from './style.module.scss';\nimport { CField, CFieldProps } from '../Form/Field';\nimport { SetterSwitcherCore } from '../SetterSwitcher/core';\n\nexport const CFiledWithSwitchSetter = (\n props: Omit<CFieldProps, 'children'> & {\n setterList: SetterType[];\n onSetterChange?: (setterName: string) => void;\n defaultSetterName?: string;\n }\n) => {\n const { setterList: setters, defaultSetterName, ...restProps } = props;\n\n const setterList = useMemo(() => {\n return getSetterList(setters);\n }, [setters]);\n\n const { onSetterChange, defaultSetterConfig, pluginCtx, nodeId, customSetterMap } =\n useContext(CCustomSchemaFormContext);\n const keyPaths = [props.name];\n\n const [currentSetter, setCurrentSetter] = useState<SetterObjType>(() => {\n const currentSetterName = defaultSetterConfig[keyPaths.join('.')]?.setter || defaultSetterName || '';\n return [...setterList].find((el) => el.componentName === currentSetterName) || setterList[0];\n });\n\n const menuItems = setterList.map((setter) => {\n const setterName = setter?.componentName || '';\n const setterRuntime = ({} as any)[setterName];\n return {\n key: setter.componentName,\n label: setterRuntime?.setterName || setter.componentName,\n };\n });\n\n const onChooseSetter: MenuProps['onClick'] = ({ key }) => {\n const targetSetter = setterList.find((setter) => setter.componentName === key);\n if (targetSetter) {\n setCurrentSetter(targetSetter);\n onSetterChange?.(keyPaths, targetSetter.componentName);\n props.onSetterChange?.(targetSetter.componentName);\n }\n };\n\n let switcher: any = (\n <div\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n className={styles.switchBtn}\n >\n <Dropdown\n trigger={['click']}\n menu={{\n selectable: true,\n items: menuItems,\n onClick: onChooseSetter,\n defaultSelectedKeys: [currentSetter?.componentName || ''],\n }}\n >\n <SwapOutlined />\n </Dropdown>\n </div>\n );\n\n if (menuItems.length === 1) {\n switcher = null;\n }\n\n const setterProps = useMemo(() => {\n let newProps = {\n ...(currentSetter?.props || {}),\n initialValue: currentSetter?.initialValue,\n };\n const target = setterList.find((el) => el.componentName === currentSetter?.componentName);\n if (target) {\n newProps = {\n ...newProps,\n ...target.props,\n };\n }\n return newProps;\n }, [setterList, currentSetter]);\n\n return (\n <div\n className={styles.fieldBox}\n style={{\n alignItems: props.labelAlign ?? 'center',\n }}\n >\n <CField {...restProps}>\n <SetterSwitcherCore\n {...setterProps}\n setters={setterList}\n keyPaths={keyPaths}\n currentSetter={currentSetter}\n customSetterMap={customSetterMap}\n setCurrentSetter={setCurrentSetter}\n setterContext={{\n pluginCtx,\n keyPaths: [props.name],\n label: props.label,\n nodeModel: pluginCtx?.pageModel.getNode(nodeId) as any,\n }}\n />\n </CField>\n {switcher}\n </div>\n );\n};\n","import { BUILD_IN_SETTER_MAP, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\nimport { AssignValueType, DEV_CONFIG_KEY, TLogicAssignValueItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\nimport { Radio } from 'antd';\nimport { useEffect, useRef, useState } from 'react';\nimport { CForm } from '../../../../Form';\nimport { CField } from '../../../../Form/Field';\nimport { SelectNodeState } from '../../component/SelectNodeState/index';\nimport styles from './style.module.scss';\nimport { TTextAreaSetterProps } from '../../../TextAreaSetter';\nimport { isValidJSVariableName } from './util';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { ensureKeyExist } from '@/utils';\nimport { NodeCard } from '../../component/NodeCard';\nimport { CommonDynamicValueSetter } from '../../util';\nimport { useActionFlow } from '../../context';\nimport { CFiledWithSwitchSetter } from '@/component/CustomSchemaForm/components/CFiledWithSwitchSetter';\n\nexport type TAssignValueNode = Node<TLogicAssignValueItem, 'AssignValueNode'>;\n\nexport const AssignValueNode = (props: NodeProps<TAssignValueNode>) => {\n const { data } = props;\n const { onDataChange, pageModel, pluginCtx, nodeModel } = useActionFlow();\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n const devConfigObj = data[DEV_CONFIG_KEY]!;\n const [isReady, setIsReady] = useState(false);\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [formValue, setFormValue] = useState<TLogicAssignValueItem>();\n useEffect(() => {\n const newVal = {\n id: data.id,\n type: data.type,\n valueType: data.valueType,\n currentValue: data.currentValue,\n targetValueName: data.targetValueName || '',\n };\n formRef.current?.setFields(newVal);\n setFormValue(newVal);\n setIsReady(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig: devConfigObj.defaultSetterMap || {},\n formRef: formRef,\n onSetterChange: (keyPaths, setterName) => {\n if (!devConfigObj.defaultSetterMap) {\n devConfigObj.defaultSetterMap = {};\n }\n devConfigObj.defaultSetterMap[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n },\n pluginCtx: pluginCtx,\n nodeId: nodeModel?.id,\n customSetterMap: {},\n }}\n >\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Assign Value\" nodeProps={props}>\n <CForm\n ref={formRef}\n name=\"jump Link\"\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newVal) => {\n Object.assign(data, newVal);\n setFormValue(newVal as any);\n onDataChange();\n }}\n >\n {isReady && (\n <>\n <div className={styles.line}>\n <CField\n name={'valueType'}\n label=\"Var Type\"\n valueChangeEventName=\"onChange\"\n formatEventValue={({ target: { value } }: any) => {\n return value;\n }}\n >\n <Radio.Group\n optionType=\"button\"\n buttonStyle=\"solid\"\n options={[\n { label: 'Memory', value: AssignValueType.MEMORY },\n { label: 'Node', value: AssignValueType.STATE },\n ]}\n />\n </CField>\n </div>\n <div className={styles.line}>\n {formValue?.valueType === 'STATE' && (\n <CField name={'targetValueName'} label=\"Var Name\" valueChangeEventName=\"onChange\">\n <SelectNodeState pageModel={pageModel} />\n </CField>\n )}\n\n {formValue?.valueType === 'MEMORY' && (\n <CFiledWithSwitchSetter\n name={'targetValueName'}\n label=\"Var Name\"\n labelWidth=\"auto\"\n labelAlign={'start'}\n tips={\n '变量名必须以字母(a-z、A-Z)、下划线(_)或美元符号($)开头。后续字符可以是字母、数字(0-9)、下划线或美元符号。变量名不能是保留关键字(例如 if、while 等)'\n }\n setterList={[\n {\n componentName: 'TextAreaSetter',\n props: {\n valueValidator: isValidJSVariableName,\n } as TTextAreaSetterProps,\n },\n ]}\n ></CFiledWithSwitchSetter>\n )}\n </div>\n <div\n className={styles.line}\n style={{\n minWidth: '450px',\n }}\n >\n <CFiledWithSwitchSetter\n name={'currentValue'}\n label=\"Value\"\n labelWidth=\"60px\"\n labelAlign={'start'}\n setterList={CommonDynamicValueSetter}\n ></CFiledWithSwitchSetter>\n </div>\n </>\n )}\n </CForm>\n </NodeCard>\n </div>\n </CCustomSchemaFormContext.Provider>\n );\n};\n","import { NodeProps, Node } from '@xyflow/react';\nimport { NodeCard } from '../component/NodeCard';\n\nexport type CounterNode = Node<any, 'StartNode'>;\n\nexport const StartNode = (props: NodeProps<CounterNode>) => {\n return (\n <NodeCard nodeProps={props} useCardStyle={false} inputHandle={false}>\n <div\n style={{\n minWidth: '100px',\n padding: '10px 20px',\n border: '1px solid #1a192b',\n borderRadius: '4px',\n textAlign: 'center',\n }}\n >\n Start\n </div>\n </NodeCard>\n );\n};\n","import { CMaterialPropsType, CPageNode, isNodeModel } from '@chamn/model';\nimport { CommonDynamicValueSetter } from '../../util';\n\nexport function isValidJSVariableName(name: string) {\n // 1. 使用正则表达式验证变量名规则\n const identifierRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n if (!identifierRegex.test(name)) {\n return false;\n }\n\n // 2. 检测是否为保留关键字\n try {\n new Function(`let ${name};`);\n return true;\n } catch {\n return false;\n }\n}\n\nconst ARGS_PREFIX = 'args.';\n/**\n *\n * @param node 结合 method 描述,合并为一个 FormSchema, 加 key 前缀是为了避免 key 冲突\n * @param args\n * @returns\n */\nexport const getArgsObjFormSchema = (node: CPageNode, methodName: string) => {\n if (isNodeModel(node)) {\n const methodList = node?.material?.value.methods || [];\n\n const formSchema = methodList\n .find((el) => el.name === methodName)\n ?.params?.map((el, index) => {\n return {\n name: `${ARGS_PREFIX}${index}`,\n title: {\n label: el.name || `arg[${index}]`,\n tip: el.description,\n },\n valueType: 'string',\n setters: CommonDynamicValueSetter,\n } as CMaterialPropsType[number];\n });\n\n return formSchema || [];\n }\n return [];\n};\n\nexport const formatArgsObjToArray = (val: Record<string, any>) => {\n const res = Object.keys(val)\n .map((key) => parseInt(key.replace(ARGS_PREFIX, '')))\n .sort()\n .map((index) => val[`${ARGS_PREFIX}${index}`]);\n return res;\n};\n\nexport const formatArgsToObject = (valArr: any[]) => {\n const res: any = {};\n valArr.forEach((item, index) => {\n res[`${ARGS_PREFIX}${index}`] = item;\n });\n return res;\n};\n","import { BUILD_IN_SETTER_MAP, CustomSchemaForm, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\nimport { DEV_CONFIG_KEY, TLogicCallNodeMethodItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\nimport { Input, Select } from 'antd';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { CForm } from '../../../../Form';\nimport styles from './style.module.scss';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { SelectNodeByTree } from '../../component/SelectNodeByTree';\nimport { CField } from '@/component/CustomSchemaForm/components/Form/Field';\nimport { formatArgsObjToArray, formatArgsToObject, getArgsObjFormSchema, isValidJSVariableName } from './util';\nimport { ensureKeyExist } from '@/utils';\nimport { NodeCard } from '../../component/NodeCard';\nimport { useActionFlow } from '../../context';\n\nexport type TCallNodeMethodNode = Node<TLogicCallNodeMethodItem, 'CallNodeMethodNode'>;\n\nexport const CallNodeMethodNode = (props: NodeProps<TCallNodeMethodNode>) => {\n const { data } = props;\n const { pageModel, onDataChange, pluginCtx, nodeModel } = useActionFlow();\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n const devConfigObj = data[DEV_CONFIG_KEY]!;\n\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [formValue, setFormValue] = useState<TLogicCallNodeMethodItem>();\n useEffect(() => {\n const newVal = {\n id: data.id || '',\n type: data.type,\n nodeId: data.nodeId,\n methodName: data.methodName,\n args: data.args,\n returnVarName: data.returnVarName,\n };\n formRef.current?.setFields(newVal);\n\n setFormValue(newVal);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const methodList = useMemo(() => {\n const targetNode = pageModel.getNode(data.nodeId);\n const list = targetNode?.material?.value.methods || [];\n return list;\n }, [data.nodeId, pageModel]);\n\n const methodListOptions = useMemo(() => {\n return methodList?.map((el) => {\n return {\n value: el.name,\n label: el.title,\n };\n });\n }, [methodList]);\n\n const argsFormSchema = useMemo(() => {\n return getArgsObjFormSchema(pageModel.getNode(formValue?.nodeId)!, formValue?.methodName || '');\n }, [pageModel, formValue?.nodeId, formValue?.methodName]);\n\n const updateKeySetterConfig = (keyPaths: string[], setterName: string) => {\n if (!devConfigObj.defaultSetterMap) {\n devConfigObj.defaultSetterMap = {};\n }\n devConfigObj.defaultSetterMap[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig: devConfigObj.defaultSetterMap || {},\n formRef: formRef,\n onSetterChange: updateKeySetterConfig,\n customSetterMap: { ...BUILD_IN_SETTER_MAP },\n }}\n >\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Call Node Method\" nodeProps={props}>\n <CForm\n ref={formRef}\n name=\"Call Node Method\"\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newVal, changeKeys) => {\n if (changeKeys?.includes('nodeId')) {\n newVal = {\n ...newVal,\n methodName: '',\n args: [],\n };\n setTimeout(() => {\n formRef.current?.setFields({\n ...formValue,\n ...newVal,\n });\n });\n }\n Object.assign(data, newVal);\n setFormValue(newVal as any);\n onDataChange();\n }}\n >\n <div className={styles.line}>\n <CField\n label={'组件'}\n name=\"nodeId\"\n valueChangeEventName=\"onChange\"\n formatEventValue={(el) => {\n return el.nodeId;\n }}\n >\n <SelectNodeByTree pageModel={pageModel} />\n </CField>\n </div>\n\n <div className={styles.line}>\n <CField name=\"methodName\" label=\"方法\" valueChangeEventName=\"onChange\">\n <Select style={{ width: 250 }} allowClear options={methodListOptions}></Select>\n </CField>\n </div>\n <div className={styles.line}>\n <CField\n name={'args'}\n label=\"参数\"\n labelWidth=\"60px\"\n labelAlign={'start'}\n condition={() => Boolean(argsFormSchema.length)}\n noStyle\n formatEventValue={(val) => {\n const newVal = formatArgsObjToArray(val);\n return newVal;\n }}\n >\n <CustomSchemaForm\n initialValue={formatArgsToObject(data.args || [])}\n pluginCtx={pluginCtx}\n nodeId={nodeModel?.id}\n properties={argsFormSchema}\n onSetterChange={updateKeySetterConfig}\n defaultSetterConfig={devConfigObj.defaultSetterMap || {}}\n ></CustomSchemaForm>\n </CField>\n </div>\n\n <div className={styles.line}>\n <CField\n name={'returnVarName'}\n label=\"返回值变量名\"\n labelWidth=\"80px\"\n tips={\n '变量名必须以字母(a-z、A-Z)、下划线(_)或美元符号($)开头。后续字符可以是字母、数字(0-9)、下划线或美元符号。变量名不能是保留关键字(例如 if、while 等)'\n }\n rules={[\n {\n validator: async (val) => {\n if (val === '') {\n return true;\n }\n return isValidJSVariableName(val);\n },\n },\n ]}\n valueChangeEventName=\"onChange\"\n formatEventValue={(e) => e.target.value}\n >\n <Input allowClear />\n </CField>\n </div>\n </CForm>\n </NodeCard>\n </div>\n </CCustomSchemaFormContext.Provider>\n );\n};\n","import { BUILD_IN_SETTER_MAP, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\nimport { isExpression, isFunction, TLogicJumpLinkItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { CForm } from '../../../Form';\nimport { NodeCard } from '../component/NodeCard';\nimport { CommonDynamicValueSetter } from '../util';\nimport { useActionFlow } from '../context';\nimport { CFiledWithSwitchSetter } from '../../../CFiledWithSwitchSetter';\n\nexport type TJumpLinkNode = Node<TLogicJumpLinkItem, 'JumpLinkNode'>;\n\nexport const JumpLinkNode = (props: NodeProps<TJumpLinkNode>) => {\n const { data } = props;\n const { onDataChange } = useActionFlow();\n\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n formRef.current?.setFields({\n link: data.link,\n });\n setIsReady(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const defaultLinkSetter = useMemo(() => {\n if (isFunction(data.link)) {\n return 'FunctionSetter';\n } else if (isExpression(data.link)) {\n return 'ExpressionSetter';\n } else {\n return 'TextAreaSetter';\n }\n }, [data.link]);\n\n return (\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Jump Link\" nodeProps={props}>\n <CForm\n ref={formRef}\n name=\"jump Link\"\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newVal) => {\n Object.assign(data, newVal);\n onDataChange();\n }}\n >\n {isReady && (\n <>\n <CFiledWithSwitchSetter\n name={'link'}\n label=\"link\"\n labelWidth=\"auto\"\n labelAlign={'start'}\n defaultSetterName={defaultLinkSetter}\n setterList={CommonDynamicValueSetter}\n ></CFiledWithSwitchSetter>\n </>\n )}\n </CForm>\n </NodeCard>\n </div>\n );\n};\n","import { SetterType } from '@chamn/model';\n\nexport const requestParamsSchemaSetterList: SetterType[] = [\n {\n componentName: 'JSONSetter',\n labelAlign: 'start',\n props: {\n mode: 'inline',\n lineNumbers: 'off',\n editorOptions: {\n lineNumbers: 'off',\n lineDecorationsWidth: 0,\n lineNumbersMinChars: 0,\n glyphMargin: false,\n },\n },\n },\n {\n componentName: 'FunctionSetter',\n labelAlign: 'start',\n props: {\n mode: 'inline',\n minimap: false,\n containerStyle: {\n paddingTop: '10px',\n width: '470px',\n height: '150px',\n },\n lineNumber: false,\n },\n },\n];\n\nexport const methodOptions = [\n { value: 'GET', label: 'GET' },\n { value: 'POST', label: 'POST' },\n { value: 'PUT', label: 'PUT' },\n { value: 'PATCH', label: 'PATCH' },\n { value: 'DELETE', label: 'DELETE' },\n];\n","import { DEV_CONFIG_KEY, TLogicRequestAPIItem } from '@chamn/model';\nimport { useReactFlow, NodeProps, Node } from '@xyflow/react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { Input, Select, Tabs, TabsProps } from 'antd';\nimport { BUILD_IN_SETTER_MAP, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\n\nimport { ensureKeyExist } from '@/utils';\nimport { NodeCard } from '../../component/NodeCard';\nimport { CForm } from '@/component/CustomSchemaForm/components/Form';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { CField } from '@/component/CustomSchemaForm/components/Form/Field';\nimport { methodOptions, requestParamsSchemaSetterList } from './helper';\nimport { CreateNewNodePopup } from '../../component/CreateNewNodePopup';\nimport { InputHandle } from '../../component/InputHandle';\nimport { OutputHandle } from '../../component/OutputHandle';\nimport {\n INPUT_HANDLE_ID,\n OUTPUT_HANDLE_ID,\n REACT_FLOW_DRAG_CLASS_NAME,\n REQUEST_API_FAILED_HANDLE_ID,\n} from '../../config';\nimport styles from './style.module.scss';\nimport { useActionFlow } from '../../context';\nimport { CFiledWithSwitchSetter } from '@/component/CustomSchemaForm/components/CFiledWithSwitchSetter';\nimport { RightPanelConfig } from '@/plugins/RightPanel/type';\n\nexport type TRequestAPINode = Node<TLogicRequestAPIItem, 'RequestAPINode'>;\n\nexport const RequestAPINode = (props: NodeProps<TRequestAPINode>) => {\n const { data, isConnectable } = props;\n const { onDataChange, pluginCtx } = useActionFlow();\n const pluginConfig: RightPanelConfig = pluginCtx.config || {};\n\n const CustomAPISelectInput: any = useMemo(() => {\n if (pluginConfig.requestAPINode?.customAPIInput) {\n return pluginConfig.requestAPINode?.customAPIInput;\n }\n return Input;\n }, [pluginConfig.requestAPINode?.customAPIInput]);\n\n const reactFlowInstance = useReactFlow();\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n const devConfigObj = data[DEV_CONFIG_KEY]!;\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [formValue, setFormValue] = useState<TLogicRequestAPIItem>();\n const checkHandleConnection = (handleId: string) => {\n const edges = reactFlowInstance.getEdges();\n return edges.some(\n (edge) => edge.source === String(data.id) && (edge.sourceHandle || OUTPUT_HANDLE_ID) === handleId\n );\n };\n\n const isOutputHandleConnected = checkHandleConnection(OUTPUT_HANDLE_ID);\n\n const isAfterFailedResponseHandleConnected = checkHandleConnection(REQUEST_API_FAILED_HANDLE_ID);\n\n useEffect(() => {\n const newVal = {\n id: data.id,\n type: data.type,\n apiPath: data.apiPath,\n body: data.body,\n query: data.query,\n header: data.header,\n method: data.method || 'GET',\n responseVarName: data.responseVarName || '',\n afterSuccessResponse: data.afterSuccessResponse || [],\n afterFailedResponse: data.afterFailedResponse || [],\n } as TLogicRequestAPIItem;\n formRef.current?.setFields(newVal);\n setFormValue(newVal);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const formHandler = useMemo(() => {\n return {\n updateFields: (newValue: any) => {\n const newValueObj = {\n ...formValue,\n ...newValue,\n };\n formRef.current?.setFields({\n ...newValueObj,\n });\n setFormValue(newValueObj);\n },\n getFields: () => {\n return formRef.current?.getFieldsValue();\n },\n };\n }, [formValue]);\n\n const updateKeySetterConfig = (keyPaths: string[], setterName: string) => {\n if (!devConfigObj.defaultSetterMap) {\n devConfigObj.defaultSetterMap = {};\n }\n devConfigObj.defaultSetterMap[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n const tabItems = useMemo(() => {\n const tabTagList = [\n { key: 'header', label: 'Header' },\n { key: 'query', label: 'Query' },\n { key: 'body', label: 'Body' },\n ];\n const items: TabsProps['items'] = tabTagList.map((el) => {\n return {\n ...el,\n disabled: el.key === 'body' && formValue?.method === 'GET',\n children: (\n <div className={styles.line}>\n <CFiledWithSwitchSetter\n name={el.key}\n hiddenLabel={true}\n labelAlign={'start'}\n setterList={requestParamsSchemaSetterList}\n ></CFiledWithSwitchSetter>\n </div>\n ),\n };\n });\n\n return items;\n }, [formValue]);\n\n const handleNewNodeAdd = (newNodeData: any, handleType: string) => {\n const currentNode = reactFlowInstance.getNode(String(data.id));\n if (!currentNode) return;\n\n let offsetX = 0;\n if (handleType !== OUTPUT_HANDLE_ID) {\n offsetX = (currentNode.measured?.width ?? 0) + 150;\n }\n // 计算新节点位置\n const newNodePosition = {\n x: currentNode.position.x + offsetX,\n y: currentNode.position.y + (currentNode.measured?.height ?? 0) + 150,\n };\n\n // 创建新节点\n const newNode = {\n id: newNodeData.id,\n type: newNodeData.type,\n position: newNodePosition,\n /** 必须 */\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n data: {\n ...newNodeData,\n },\n };\n\n // 创建连线\n const newEdge = {\n id: `${data.id}_${newNode.id}`,\n source: String(data.id),\n sourceHandle: handleType,\n target: newNode.id,\n targetHandle: INPUT_HANDLE_ID,\n };\n\n // 更新流程图\n reactFlowInstance.addNodes(newNode);\n reactFlowInstance.addEdges(newEdge);\n if (handleType === OUTPUT_HANDLE_ID) {\n // 更新当前节点的 afterSuccessResponse\n if (!data.afterSuccessResponse) {\n data.afterSuccessResponse = [];\n }\n data.afterSuccessResponse.push(newNodeData);\n } else {\n // 更新当前节点的 afterFailedResponse\n if (!data.afterFailedResponse) {\n data.afterFailedResponse = [];\n }\n data.afterFailedResponse.push(newNodeData);\n }\n };\n\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig: devConfigObj.defaultSetterMap || {},\n formRef: formRef,\n onSetterChange: updateKeySetterConfig,\n customSetterMap: { ...BUILD_IN_SETTER_MAP },\n }}\n >\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard\n title=\"Request Data\"\n customHandle={\n <>\n <InputHandle type=\"target\" isConnectable={isConnectable} />\n <CreateNewNodePopup\n style={{\n position: 'absolute',\n left: '50%',\n bottom: '0',\n }}\n title=\"请求成功时\"\n onNewNodeAdd={(data) => handleNewNodeAdd(data, OUTPUT_HANDLE_ID)}\n disabled={isOutputHandleConnected}\n >\n <OutputHandle\n isConnectable={isConnectable}\n style={{\n width: '10px',\n height: '10px',\n background: '#8BC34A',\n }}\n />\n </CreateNewNodePopup>\n <CreateNewNodePopup\n title=\"请求异常时\"\n onNewNodeAdd={(data) => handleNewNodeAdd(data, REQUEST_API_FAILED_HANDLE_ID)}\n disabled={isAfterFailedResponseHandleConnected}\n >\n <OutputHandle\n style={{\n left: '75%',\n bottom: '0',\n width: '10px',\n height: '10px',\n background: '#ff4d4f',\n }}\n id={REQUEST_API_FAILED_HANDLE_ID}\n isConnectable={isConnectable}\n />\n </CreateNewNodePopup>\n </>\n }\n nodeProps={props}\n handleNewNodeAdd={() => {}}\n >\n <div\n style={{\n width: '500px',\n }}\n >\n <CForm\n name={'requestAPI'}\n ref={formRef}\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newFormData) => {\n setFormValue(newFormData as any);\n Object.assign(data, newFormData);\n onDataChange();\n }}\n >\n <div className={styles.line}>\n <CField\n label={'API'}\n name=\"apiPath\"\n valueChangeEventName=\"onChange\"\n formatEventValue={(el) => el.target.value}\n >\n <CustomAPISelectInput form={formHandler} />\n </CField>\n </div>\n <div className={styles.line}>\n <CField label={'请求方法'} name=\"method\" valueChangeEventName=\"onChange\">\n <Select defaultValue=\"GET\" style={{ width: 230 }} options={methodOptions} />\n </CField>\n </div>\n <div className={styles.line}>\n <CField\n label={'返回值变量'}\n name=\"responseVarName\"\n tips={\n '变量名必须以字母(a-z、A-Z)、下划线(_)或美元符号($)开头。后续字符可以是字母、数字(0-9)、下划线或美元符号。变量名不能是保留关键字(例如 if、while 等)'\n }\n valueChangeEventName=\"onChange\"\n formatEventValue={(el) => el.target.value}\n >\n <Input />\n </CField>\n </div>\n <Tabs defaultActiveKey={formValue?.method === 'POST' ? 'body' : 'query'} items={tabItems} />\n </CForm>\n </div>\n </NodeCard>\n </div>\n </CCustomSchemaFormContext.Provider>\n );\n};\n","import { DEV_CONFIG_KEY, TLogicRunCodeItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\n\nimport { ensureKeyExist } from '@/utils';\nimport { FunctionSetter } from '../../../FunctionSetter';\nimport { NodeCard } from '../../component/NodeCard';\nimport { useActionFlow } from '../../context';\n\nexport type TRunCodeNode = Node<TLogicRunCodeItem, 'RunCodeNode'>;\n\nexport const RunCodeNode = (props: NodeProps<TRunCodeNode>) => {\n const { data } = props;\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n\n const { onDataChange, pluginCtx, nodeModel } = useActionFlow();\n\n return (\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Run Code\" nodeProps={props}>\n <FunctionSetter\n mode=\"inline\"\n initialValue={data.value}\n containerStyle={{\n paddingTop: '10px',\n width: '600px',\n height: '300px',\n }}\n onValueChange={(newVal: any) => {\n data.value = newVal.value;\n onDataChange();\n }}\n setterContext={{\n pluginCtx: pluginCtx,\n setCollapseHeaderExt: undefined,\n onSetterChange: function () {},\n keyPaths: [],\n label: '',\n nodeModel: nodeModel as any,\n }}\n />\n </NodeCard>\n </div>\n );\n};\n","import { LogicType } from '@chamn/model';\nimport { AssignValueNode } from './AssignValueNode';\nimport { StartNode } from './StartNode';\nimport { CallNodeMethodNode } from './CallNodeMethodNode';\nimport { JumpLinkNode } from './JumpLinkNode';\nimport { RequestAPINode } from './RequestAPINode';\nimport { RunCodeNode } from './RunCodeNode';\n\nexport enum NODE_TYPE {\n START_NODE = 'START_NODE',\n JUMP_LINK = LogicType.JUMP_LINK,\n ASSIGN_VALUE = LogicType.ASSIGN_VALUE,\n CALL_NODE_METHOD = LogicType.CALL_NODE_METHOD,\n RUN_CODE = LogicType.RUN_CODE,\n REQUEST_API = LogicType.REQUEST_API,\n}\n\nexport const NODE_MAP = {\n [NODE_TYPE.START_NODE]: StartNode,\n [NODE_TYPE.JUMP_LINK]: JumpLinkNode,\n [NODE_TYPE.ASSIGN_VALUE]: AssignValueNode,\n [NODE_TYPE.CALL_NODE_METHOD]: CallNodeMethodNode,\n [NODE_TYPE.RUN_CODE]: RunCodeNode,\n [NODE_TYPE.REQUEST_API]: RequestAPINode,\n};\n","import { Edge, Node, useReactFlow } from '@xyflow/react';\nimport Dagre from '@dagrejs/dagre';\nimport { getRandomStr, SetterType, TActionLogicItem, TLogicItemHandlerFlow } from '@chamn/model';\nimport { INPUT_HANDLE_ID, OUTPUT_HANDLE_ID, REACT_FLOW_DRAG_CLASS_NAME, REQUEST_API_FAILED_HANDLE_ID } from './config';\nimport { NODE_TYPE } from './node';\nimport { message } from 'antd';\n\n/** 自动布局 flow node */\nexport const calculateElementLayout = (\n nodes: Node[],\n edges: Edge[],\n options: {\n direction: 'TB' | 'LR';\n }\n): { nodes: Node[]; edges: Edge[] } => {\n const g = new Dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));\n g.setGraph({ rankdir: options.direction });\n\n edges.forEach((edge) => g.setEdge(edge.source, edge.target));\n nodes.forEach((node) =>\n g.setNode(node.id, {\n ...node,\n width: node.measured?.width ?? 0,\n height: node.measured?.height ?? 0,\n })\n );\n\n Dagre.layout(g);\n\n return {\n nodes: nodes.map((node) => {\n const position = g.node(node.id);\n // We are shifting the dagre node position (anchor=center center) to the top left\n // so it matches the React Flow node anchor point (top left).\n const x = position.x - (node.measured?.width ?? 0) / 2;\n const y = position.y - (node.measured?.height ?? 0) / 2;\n\n return { ...node, position: { x, y } };\n }),\n edges,\n };\n};\n\nconst createFlowNode = (nodeData: Partial<Node>): Node => {\n const nodeId = nodeData.id || getRandomStr();\n return {\n id: nodeId,\n type: nodeData.type,\n position: { x: 0, y: 0 },\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n selectable: nodeData.type === NODE_TYPE.START_NODE ? false : true,\n data: {\n ...nodeData,\n id: nodeId,\n },\n };\n};\n\n/** 创建边 */\nconst createFlowEdge = (source: string, target: string, sourceHandle = OUTPUT_HANDLE_ID) => {\n return {\n id: `${source}_${target}`,\n source,\n sourceHandle,\n target,\n targetHandle: INPUT_HANDLE_ID,\n };\n};\n\n/** 将 json schema 转换为 react-flow 节点和边信息 */\nexport const parseActionLogicToNodeList = (value: TActionLogicItem) => {\n const nodes: Node[] = [\n createFlowNode({\n id: NODE_TYPE.START_NODE,\n type: NODE_TYPE.START_NODE,\n }),\n ];\n const edges: Edge[] = [];\n\n if (!value?.handler?.length) {\n return { nodes: nodes, edges: edges };\n }\n\n const processNodes = (\n items: TLogicItemHandlerFlow,\n options?: {\n /**\n * 用于标记是从那种类型的 output flag id 导出的 flow\n */\n sourceHandler: string;\n }\n ) => {\n items.forEach((item) => {\n const currentNode = createFlowNode(item);\n nodes.push(currentNode);\n if (item.next) {\n edges.push(createFlowEdge(item.id, String(item.next), options?.sourceHandler));\n }\n\n if (item.type === 'REQUEST_API') {\n // 处理成功分支节点\n if (item.afterSuccessResponse?.length) {\n edges.push(createFlowEdge(item.id, String(item.afterSuccessResponse[0].id)));\n processNodes(item.afterSuccessResponse);\n }\n\n // 处理失败分支节点\n if (item.afterFailedResponse?.length) {\n edges.push(createFlowEdge(item.id, String(item.afterFailedResponse[0].id), REQUEST_API_FAILED_HANDLE_ID));\n\n processNodes(item.afterFailedResponse, {\n sourceHandler: REQUEST_API_FAILED_HANDLE_ID,\n });\n }\n }\n });\n };\n\n const nextItem = value.handler[0];\n edges.push(createFlowEdge(NODE_TYPE.START_NODE, nextItem.id));\n\n processNodes(value.handler);\n return { nodes, edges };\n};\n\n/** 将节点格式化json schema */\nexport const revertNodeToActionLogic = (params: { nodes: Node[]; edges: Edge[] }): TActionLogicItem => {\n const { nodes, edges } = params;\n const result: TActionLogicItem = {\n type: 'ACTION',\n handler: [],\n };\n\n // 找到起始节点\n const startNode = nodes.find((node) => node.type === NODE_TYPE.START_NODE);\n if (!startNode) return result;\n const nodeMap = new Map(nodes.map((node) => [node.id, node]));\n const visited = new Set<string>();\n\n const traverseNodes = (currentNodeId: string) => {\n if (visited.has(currentNodeId)) return [];\n visited.add(currentNodeId);\n\n const currentNode = nodeMap.get(currentNodeId);\n if (!currentNode) return [];\n\n const handlers = [];\n const nodeData: any = { ...currentNode.data, id: currentNodeId };\n\n if (currentNode.type === 'REQUEST_API') {\n // 获取成功分支节点\n const successTargets = edges\n .filter((e) => e.source === currentNodeId && e.sourceHandle === OUTPUT_HANDLE_ID)\n .map((e) => traverseNodes(e.target))\n .flat();\n\n // 获取失败分支节点\n const failedTargets = edges\n .filter((e) => e.source === currentNodeId && e.sourceHandle === REQUEST_API_FAILED_HANDLE_ID)\n .map((e) => traverseNodes(e.target))\n .flat();\n\n nodeData.afterSuccessResponse = successTargets;\n nodeData.afterFailedResponse = failedTargets;\n handlers.push(nodeData);\n\n return handlers;\n }\n\n handlers.push(nodeData);\n\n // 获取下一个主流程节点, 理论上只有能一个, 分叉逻辑需要使用特殊节点处理\n const nextEdges = edges.filter((e) => e.source === currentNodeId && e.sourceHandle === OUTPUT_HANDLE_ID);\n if (nextEdges.length > 1) {\n message.error('不允许存在一个节点连接多个节点');\n throw new Error('不允许存在一个节点连接多个节点');\n }\n if (nextEdges.length !== 0) {\n /** 理论上只会有一个元素 */\n nextEdges.forEach((edge) => {\n const nextHandlers = traverseNodes(edge.target);\n handlers.push(...nextHandlers);\n nodeData.next = nextHandlers[0]?.id ?? null;\n });\n }\n\n return handlers;\n };\n const handler = traverseNodes(startNode.id);\n // 移除 start node\n handler.shift();\n result.handler = handler;\n return result;\n};\n\n/** 通用的 flow action 画布中的 setter 配置 */\nexport const CommonDynamicValueSetter: SetterType[] = [\n 'StringSetter',\n 'NumberSetter',\n 'ExpressionSetter',\n 'JSONSetter',\n {\n componentName: 'FunctionSetter',\n props: {\n mode: 'inline',\n minimap: false,\n lineNumber: false,\n containerStyle: {\n width: '500px',\n height: '250px',\n },\n },\n },\n];\n\nexport const UseNodeHasConnected = function (data: any, handleId: string) {\n const reactFlowInstance = useReactFlow();\n const edges = reactFlowInstance.getEdges();\n return edges.some((edge) => edge.source === String(data.id) && (edge.sourceHandle || OUTPUT_HANDLE_ID) === handleId);\n};\n\nexport const getNewNodePosInfo = function (currentNode: Node, newNodeData: any, sourceHandle?: string) {\n // 计算新节点位置\n const newNodePosition = {\n x: currentNode.position.x,\n y: currentNode.position.y + (currentNode.measured?.height ?? 0) + 150,\n };\n\n // 创建新节点\n const newNode = {\n id: newNodeData.id,\n type: newNodeData.type,\n position: newNodePosition,\n /** 必须 */\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n data: {\n ...newNodeData,\n },\n };\n\n // 创建连线\n const newEdge = {\n id: `${currentNode.data.id}_${newNode.id}`,\n source: String(currentNode.data.id),\n sourceHandle: sourceHandle ?? OUTPUT_HANDLE_ID,\n target: newNode.id,\n targetHandle: INPUT_HANDLE_ID,\n };\n\n return {\n newEdge,\n newNode,\n };\n};\n","import {\n addEdge,\n Background,\n Controls,\n MiniMap,\n OnConnect,\n ReactFlow,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useReactFlow,\n Node,\n} from '@xyflow/react';\nimport '@xyflow/react/dist/style.css';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { TActionLogicItem } from '@chamn/model';\nimport { calculateElementLayout, parseActionLogicToNodeList, revertNodeToActionLogic } from './util';\nimport { NODE_MAP, NODE_TYPE } from './node';\nimport { CSetterProps } from '../type';\nimport { REACT_FLOW_DRAG_CLASS_NAME } from './config';\nimport { ActionFlowContext } from './context';\nimport { Button } from 'antd';\nimport { MoveableModal } from '@/component/MoveableModal';\nimport { HotKeysPluginInstance } from '@/plugins/Hotkeys/type';\n\nexport type TActionFlowSetterCore = CSetterProps<{\n value?: TActionLogicItem;\n children?: React.ReactNode;\n}>;\n\nexport const ActionFlowSetterCore = (props: TActionFlowSetterCore) => {\n const { fitView } = useReactFlow();\n const [flowMount, setFlowMount] = useState(false);\n const [nodes, setNodes, onNodesChange] = useNodesState<any>([\n {\n id: NODE_TYPE.START_NODE,\n data: { id: NODE_TYPE.START_NODE },\n position: { x: 0, y: 0 },\n type: NODE_TYPE.START_NODE,\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n selectable: false,\n },\n ]);\n const [edges, setEdges, onEdgesChange] = useEdgesState<any>([]);\n\n const latesEdgesRef = useRef<any[]>([]);\n latesEdgesRef.current = edges;\n\n const onConnect = useCallback<OnConnect>((params) => setEdges((eds) => addEdge({ ...params }, eds)), [setEdges]);\n\n const latestNodeRef = useRef<Node[]>([]);\n latestNodeRef.current = nodes;\n\n const [dataReady, setDataReady] = useState(false);\n\n /** 重新布局 */\n const layoutGraph = useCallback(\n (options?: { fitView: boolean }) => {\n const layoutInfo = calculateElementLayout(latestNodeRef.current, edges, { direction: 'TB' });\n setNodes([...layoutInfo.nodes]);\n setEdges([...layoutInfo.edges]);\n setTimeout(() => {\n setFlowMount(true);\n if (options?.fitView !== false) {\n fitView({});\n }\n });\n },\n [edges, fitView, setEdges, setNodes]\n );\n\n useEffect(() => {\n // 将 value 转换为 nodes 以及 edges\n const { nodes, edges } = parseActionLogicToNodeList(props.value);\n setNodes(nodes);\n setEdges(edges);\n setTimeout(() => {\n setDataReady(true);\n }, 300);\n }, [props.value, setEdges, setNodes]);\n\n const saveData = useCallback(() => {\n setTimeout(() => {\n const newSchemaValue = revertNodeToActionLogic({ nodes: latestNodeRef.current, edges: latesEdgesRef.current });\n props.onValueChange?.(newSchemaValue);\n });\n }, [props]);\n\n return (\n <ActionFlowContext.Provider\n value={{\n pluginCtx: props.setterContext?.pluginCtx,\n pageModel: props.setterContext?.pluginCtx?.pageModel,\n onDataChange: saveData,\n nodeModel: props.setterContext.nodeModel,\n }}\n >\n <div\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n position: 'relative',\n }}\n >\n <div\n style={{\n flex: 1,\n position: 'relative',\n }}\n >\n <Button\n style={{\n position: 'absolute',\n top: '10px',\n right: '20px',\n zIndex: 99,\n }}\n onClick={() => layoutGraph({ fitView: false })}\n >\n Reset Layout\n </Button>\n\n {!flowMount && (\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'white',\n zIndex: 999,\n }}\n ></div>\n )}\n {dataReady && (\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={(changes) => {\n onNodesChange(changes);\n saveData();\n }}\n onEdgesChange={(changes) => {\n onEdgesChange(changes);\n saveData();\n }}\n onConnect={(connection) => {\n onConnect(connection);\n saveData();\n }}\n defaultEdgeOptions={{\n type: 'smoothstep',\n }}\n minZoom={0.2}\n maxZoom={1}\n onInit={() => {\n layoutGraph();\n }}\n fitView\n nodeTypes={NODE_MAP}\n >\n <Background />\n <Controls />\n <MiniMap />\n </ReactFlow>\n )}\n </div>\n </div>\n </ActionFlowContext.Provider>\n );\n};\n\nexport const ActionFlowSetter = (props: TActionFlowSetterCore) => {\n const [open, setOpen] = useState(false);\n\n const newValueRef = useRef(props.value);\n\n const disableLowcodeHotKey = async (status: boolean) => {\n // 启用 lowcode 编辑器热键\n const hotkey = await props.setterContext?.pluginCtx?.pluginManager?.get<HotKeysPluginInstance>('Hotkeys');\n hotkey?.export.disable(status);\n };\n\n const triggerView = props.children || (\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n >\n Edit Flow\n </Button>\n );\n\n return (\n <>\n <div\n onClick={async () => {\n // 禁用 lowcode 编辑器热键\n await disableLowcodeHotKey(true);\n setOpen(true);\n }}\n >\n {triggerView}\n </div>\n\n <MoveableModal\n destroyOnClose\n open={open}\n centered\n title=\"Edit Flow\"\n width=\"calc(100vw - 200px)\"\n onCancel={() => {\n setOpen(false);\n disableLowcodeHotKey(false);\n }}\n onOk={async () => {\n props.onValueChange?.(newValueRef.current);\n await disableLowcodeHotKey(false);\n setOpen(false);\n }}\n >\n <div\n style={{\n width: '100%',\n height: 'calc(100vh - 200px)',\n }}\n >\n <ReactFlowProvider>\n <ActionFlowSetterCore\n {...props}\n onValueChange={(newVal) => {\n newValueRef.current = newVal;\n }}\n ></ActionFlowSetterCore>\n </ReactFlowProvider>\n </div>\n </MoveableModal>\n </>\n );\n};\n\nActionFlowSetter.setterName = '逻辑流设置器';\n","import { ActionFlowSetter } from './ActionFlowSetter';\nimport { CSetter } from './type';\n\n/** 需要单独导出避免循环以来,因为 ActionFlowSetter 使用了大量内置 setter */\nexport const BUILD_IN_ADVANCE_SETTER_MAP = {\n ActionFlowSetter,\n} as Record<string, CSetter>;\n","import { useEffect, useRef } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { BUILD_IN_ADVANCE_SETTER_MAP } from '@/component/CustomSchemaForm/components/Setters/AdvanceSetterList';\n\nimport styles from './style.module.scss';\nimport { CustomSchemaForm, CustomSchemaFormInstance, CustomSchemaFormProps } from '../../component/CustomSchemaForm';\n\nexport const PropertyPanel = (props: { node: CNode | CRootNode | null; pluginCtx: CPluginCtx }) => {\n const { node } = props;\n const properties = node?.material?.value.props || [];\n const formRef = useRef<CustomSchemaFormInstance>(null);\n\n useEffect(() => {\n const handel = () => {\n const newVal = node?.getPlainProps?.() || {};\n formRef.current?.setFields(newVal);\n };\n handel();\n node?.emitter.on('onNodeChange', handel);\n return () => {\n node?.emitter.off('onNodeChange', handel);\n };\n }, [node]);\n\n const value = node?.getPlainProps?.() || {};\n\n const onValueChange: CustomSchemaFormProps['onValueChange'] = (val) => {\n node?.updateValue({\n props: val,\n });\n };\n\n const onSetterChange: CustomSchemaFormProps['onSetterChange'] = (keyPaths, setterName) => {\n if (!node) {\n return;\n }\n node.value.configure = node.value.configure || {};\n node.value.configure.propsSetter = node.value.configure.propsSetter || {};\n node.value.configure.propsSetter[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n const customSetterMap = props.pluginCtx.config?.customPropertySetterMap;\n\n return (\n <div className={styles.CFromRenderBox}>\n <CustomSchemaForm\n pluginCtx={props.pluginCtx}\n key={node?.id}\n nodeId={node?.id}\n defaultSetterConfig={node?.value.configure.propsSetter || {}}\n onSetterChange={onSetterChange}\n properties={properties}\n initialValue={value}\n ref={formRef}\n customSetterMap={{\n ...BUILD_IN_ADVANCE_SETTER_MAP,\n ...customSetterMap,\n }}\n onValueChange={onValueChange}\n />\n </div>\n );\n};\n","import { CRightPanelItem } from '../RightPanel/view';\nimport { PropertyPanel } from './view';\n\nexport const PropertyPanelConfig: CRightPanelItem = {\n key: 'Property',\n name: 'Property',\n view: ({ node, pluginCtx }) => <PropertyPanel node={node} pluginCtx={pluginCtx} />,\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.property !== false;\n },\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { useEffect, useRef } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CRightPanelItem } from '../RightPanel/view';\nimport { MonacoEditor, MonacoEditorInstance } from '../../component/MonacoEditor';\n\nexport type ComponentStatePanelProps = {\n node: CNode | CRootNode | null;\n pluginCtx: CPluginCtx;\n};\n\nexport const ComponentStatePanel = (props: ComponentStatePanelProps) => {\n const node = props.node!;\n\n const nodeState = node.value.state || {};\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n useEffect(() => {\n const currentState = node.value.state || {};\n editorRef?.current?.setValue(JSON.stringify(currentState, null, 2));\n }, [node]);\n\n const onValueChange = (newValStr?: string) => {\n try {\n const newVal = JSON.parse(newValStr || '{}');\n node.value.state = newVal;\n node.updateValue();\n } catch (e) {\n console.warn(e);\n }\n };\n\n return (\n <>\n <MonacoEditor\n initialValue={JSON.stringify(nodeState, null, 2)}\n language={'json'}\n options={{\n automaticLayout: true,\n // lineDecorationsWidth: 0,\n tabSize: 2,\n minimap: { enabled: false },\n quickSuggestions: false,\n // lineNumbers: 'off',\n suggestOnTriggerCharacters: false,\n folding: false,\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n onChange={onValueChange}\n />\n </>\n );\n};\n\nexport const ComponentStatePanelConfig: CRightPanelItem = {\n key: 'State',\n name: 'State',\n view: ({ node, pluginCtx }) => {\n if (!node) {\n return <></>;\n }\n return <ComponentStatePanel node={node} pluginCtx={pluginCtx} />;\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.state !== false;\n },\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { useEffect, useMemo, useRef } from 'react';\nimport { CMaterialPropsType, CNode, CRootNode } from '@chamn/model';\nimport { CustomSchemaForm, CustomSchemaFormInstance, CustomSchemaFormProps } from '../../component/CustomSchemaForm';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CRightPanelItem } from '../RightPanel/view';\nimport styles from './style.module.scss';\n\nexport type AdvancePanelProps = {\n node: CNode | CRootNode | null;\n pluginCtx: CPluginCtx;\n};\n\nconst properties: CMaterialPropsType = [\n {\n name: 'id',\n title: {\n label: 'id',\n tip: 'node unique id',\n },\n valueType: 'string',\n setters: [\n {\n componentName: 'StringSetter',\n props: {\n disabled: true,\n variant: 'borderless',\n },\n },\n ],\n },\n {\n name: 'condition',\n title: {\n label: 'Render',\n tip: 'controller component render',\n },\n valueType: 'boolean',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'loop',\n title: 'loop render',\n valueType: 'object',\n setters: [\n {\n componentName: 'ShapeSetter',\n props: {\n collapse: {\n open: true,\n },\n elements: [\n {\n name: 'open',\n title: 'open',\n valueType: 'boolean',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'data',\n title: 'data',\n valueType: 'array',\n setters: [\n {\n componentName: 'ArraySetter',\n initialValue: [],\n props: {\n item: {\n setters: ['JSONSetter', 'ExpressionSetter'],\n initialValue: {},\n },\n },\n },\n 'JSONSetter',\n 'ExpressionSetter',\n ],\n },\n {\n name: 'forName',\n title: {\n label: 'name',\n tip: 'loop element name',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'forIndex',\n title: {\n label: 'index',\n tip: 'loop element index',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'key',\n title: {\n label: 'key',\n tip: 'loop element key',\n },\n valueType: 'expression',\n setters: ['ExpressionSetter'],\n },\n {\n name: 'name',\n title: {\n label: 'variable \\n name',\n tip: 'loop variable name',\n },\n valueType: 'string',\n setters: [\n {\n componentName: 'StringSetter',\n props: {\n prefix: 'loopData',\n },\n },\n ],\n },\n ],\n },\n initialValue: {\n open: false,\n data: [],\n },\n },\n ],\n },\n {\n name: 'refId',\n title: {\n label: 'refId',\n tip: 'unique node flag',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'nodeName',\n title: {\n label: (\n <>\n node <br></br> name\n </>\n ) as any,\n tip: 'alias for node',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n];\n\nexport const AdvancePanel = (props: AdvancePanelProps) => {\n const { node } = props;\n\n const innerProperties = useMemo(() => {\n let newList = properties;\n\n // 如果元素是容器不允许 loop, 或者主动指定不然 loop\n const canLoop =\n !node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.loop === false ||\n !node?.material?.value.isContainer;\n if (!canLoop) {\n newList = newList.filter((el) => (el as any)?.name !== 'loop');\n }\n\n // 如果元素是容器不允许 canRender, 或者主动指定不然 canRender\n const canRender = !node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.render === false;\n\n if (!canRender) {\n newList = newList.filter((el) => (el as any)?.name !== 'condition');\n }\n\n return newList;\n }, [\n node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.loop,\n node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.render,\n node?.material?.value.isContainer,\n ]);\n\n const onSetterChange: CustomSchemaFormProps['onSetterChange'] = (keyPaths, setterName) => {\n if (!node) {\n return;\n }\n node.value.configure = node.value.configure || {};\n node.value.configure.advanceSetter = node.value.configure.advanceSetter || {};\n node.value.configure.advanceSetter[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n const formRef = useRef<CustomSchemaFormInstance>(null);\n\n useEffect(() => {\n const loopObj = node?.value.loop;\n const newValue = {\n id: node?.id,\n condition: node?.value.condition ?? true,\n loop: {\n open: loopObj?.open || false,\n data: loopObj?.data || [],\n forName: loopObj?.forName || 'item',\n forIndex: loopObj?.forIndex || 'index',\n key: loopObj?.key || '',\n name: loopObj?.name || '',\n },\n refId: node?.value.refId,\n nodeName: node?.value.nodeName,\n };\n formRef.current?.setFields(newValue);\n }, [node]);\n\n const onValueChange = (newVal: { refId: string; loop: any; condition: any; nodeName: any }) => {\n if (!node) {\n return;\n }\n node.value.loop = newVal.loop;\n node.value.condition = newVal.condition;\n node.value.refId = newVal.refId;\n node.value.nodeName = newVal.nodeName;\n node.updateValue();\n };\n if (!node) {\n return <></>;\n }\n\n return (\n <div className={styles.advanceBox}>\n <CustomSchemaForm\n nodeId={props.node?.id}\n key={node.id}\n pluginCtx={props.pluginCtx}\n defaultSetterConfig={node.value.configure?.advanceSetter || {}}\n onSetterChange={onSetterChange}\n properties={innerProperties}\n initialValue={{}}\n ref={formRef}\n onValueChange={onValueChange}\n />\n </div>\n );\n};\n\nexport const AdvancePanelConfig: CRightPanelItem = {\n key: 'Advance',\n name: 'Advance',\n view: ({ node, pluginCtx }) => {\n if (!node) {\n return <></>;\n }\n return <AdvancePanel node={node} pluginCtx={pluginCtx} />;\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.advance !== false;\n },\n};\n","const CSSSourceInfo = {\n cssColors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n },\n cssKeyValue: {\n 'align-content': {\n values: ['center', 'flex-end', 'flex-start', 'space-around', 'space-between', 'stretch'],\n },\n 'align-items': {\n values: ['baseline', 'center', 'flex-end', 'flex-start', 'stretch'],\n },\n 'align-self': {\n values: [\n 'auto',\n 'normal',\n 'self-start',\n 'self-end',\n 'baseline',\n 'center',\n 'start',\n 'end',\n 'flex-end',\n 'flex-start',\n 'safe',\n 'stretch',\n 'unsafe',\n ],\n },\n all: { values: [] },\n animation: { values: [] },\n 'animation-delay': { values: [] },\n 'animation-direction': {\n values: ['alternate', 'alternate-reverse', 'normal', 'reverse'],\n },\n 'animation-duration': { values: [] },\n 'animation-fill-mode': {\n values: ['backwards', 'both', 'forwards', 'none'],\n },\n 'animation-iteration-count': { values: ['infinite'] },\n 'animation-name': { values: ['none'] },\n 'animation-play-state': { values: ['paused', 'running'] },\n 'animation-timing-function': {\n values: ['cubic-bezier()', 'ease', 'ease-in', 'ease-in-out', 'ease-out', 'linear', 'step-end', 'step-start', 'steps()'],\n },\n 'backface-visibility': { values: ['hidden', 'visible'] },\n background: { values: [], type: 'color' },\n 'background-attachment': { values: ['fixed', 'local', 'scroll'] },\n 'background-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'background-clip': { values: ['border-box', 'content-box', 'padding-box'] },\n 'background-color': { values: [], type: 'color' },\n 'background-image': {\n values: ['image()', 'linear-gradient()', 'radial-gradient()', 'repeating-linear-gradient()', 'repeating-radial-gradient()', 'url()'],\n },\n 'background-origin': {\n values: ['border-box', 'content-box', 'padding-box'],\n },\n 'background-position': {\n values: ['left', 'center', 'right', 'bottom', 'top'],\n },\n 'background-repeat': {\n values: ['no-repeat', 'repeat', 'repeat-x', 'repeat-y', 'round', 'space'],\n },\n 'background-size': { values: ['auto', 'contain', 'cover'] },\n border: { values: [] },\n 'border-collapse': { values: ['collapse', 'separate'] },\n 'border-color': { values: [], type: 'color' },\n 'border-spacing': { values: [] },\n 'border-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-bottom': { values: [] },\n 'border-bottom-color': { values: [], type: 'color' },\n 'border-bottom-left-radius': { values: [] },\n 'border-bottom-right-radius': { values: [] },\n 'border-bottom-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-bottom-width': { values: ['medium', 'thin', 'thick'] },\n 'border-image': { values: ['url()'] },\n 'border-image-outset': { values: [] },\n 'border-image-slice': { values: [] },\n 'border-image-source': { values: [] },\n 'border-image-repeat': { values: ['repeat', 'round', 'space', 'stretch'] },\n 'border-image-width': { values: ['auto'] },\n 'border-left': { values: [] },\n 'border-left-color': { values: [], type: 'color' },\n 'border-left-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-left-width': { values: ['medium', 'thin', 'thick'] },\n 'border-radius': { values: [] },\n 'border-right': { values: [] },\n 'border-right-color': { values: [], type: 'color' },\n 'border-right-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-right-width': { values: ['medium', 'thin', 'thick'] },\n 'border-top': { values: [] },\n 'border-top-color': { values: [], type: 'color' },\n 'border-top-left-radius': { values: [] },\n 'border-top-right-radius': { values: [] },\n 'border-top-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-top-width': { values: ['medium', 'thin', 'thick'] },\n 'border-width': { values: ['medium', 'thin', 'thick'] },\n 'box-decoration-break': { values: ['clone', 'slice'] },\n 'box-shadow': { values: ['none'] },\n 'box-sizing': { values: ['border-box', 'content-box'] },\n bottom: { values: ['auto'] },\n 'break-after': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'break-before': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'caption-side': { values: ['bottom', 'top'] },\n 'caret-color': { values: ['auto'], type: 'color' },\n clear: { values: ['both', 'left', 'none', 'right'] },\n clip: { values: ['auto'] },\n color: { values: [], type: 'color' },\n columns: { values: [] },\n 'column-count': { values: [] },\n 'column-fill': { values: ['auto', 'balance'] },\n 'column-gap': { values: ['normal'] },\n 'column-rule': { values: [] },\n 'column-rule-color': { values: [], type: 'color' },\n 'column-rule-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'column-rule-width': { values: ['medium', 'thin', 'thick'] },\n 'column-span': { values: ['all', 'none'] },\n 'column-width': { values: ['auto'] },\n content: {\n values: ['attr()', 'close-quote', 'no-close-quote', 'no-open-quote', 'normal', 'none', 'open-quote'],\n },\n 'counter-increment': { values: ['none'] },\n 'counter-reset': { values: ['none'] },\n cursor: {\n values: [\n 'alias',\n 'all-scroll',\n 'auto',\n 'cell',\n 'col-resize',\n 'context-menu',\n 'copy',\n 'crosshair',\n 'default',\n 'e-resize',\n 'ew-resize',\n 'grab',\n 'grabbing',\n 'help',\n 'move',\n 'n-resize',\n 'ne-resize',\n 'nesw-resize',\n 'no-drop',\n 'none',\n 'not-allowed',\n 'ns-resize',\n 'nw-resize',\n 'nwse-resize',\n 'pointer',\n 'progress',\n 'row-resize',\n 's-resize',\n 'se-resize',\n 'sw-resize',\n 'text',\n 'vertical-text',\n 'w-resize',\n 'wait',\n 'zoom-in',\n 'zoom-out',\n ],\n },\n direction: { values: ['ltr', 'rtl'] },\n display: {\n values: [\n 'block',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inline',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'inline-table',\n 'list-item',\n 'none',\n 'run-in',\n 'subgrid',\n 'table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row',\n 'table-row-group',\n ],\n },\n 'empty-cells': { values: ['hide', 'show'] },\n fill: { values: [] },\n filter: {\n values: [\n 'blur()',\n 'brightness()',\n 'contrast()',\n 'custom()',\n 'drop-shadow()',\n 'grayscale()',\n 'hue-rotate()',\n 'invert()',\n 'none',\n 'opacity()',\n 'sepia()',\n 'saturate()',\n 'url()',\n ],\n },\n flex: { values: ['auto', 'none'] },\n 'flex-basis': { values: ['auto'] },\n 'flex-direction': {\n values: ['column', 'column-reverse', 'row', 'row-reverse'],\n },\n 'flex-flow': {\n values: ['column', 'column-reverse', 'nowrap', 'row', 'row-reverse', 'wrap', 'wrap-reverse'],\n },\n 'flex-grow': { values: [] },\n 'flex-shrink': { values: [] },\n 'flex-wrap': { values: ['nowrap', 'wrap', 'wrap-reverse'] },\n float: { values: ['left', 'right', 'none', 'inline-start', 'inline-end'] },\n 'flow-into': { values: ['none'], type: 'named-flow' },\n 'flow-from': { values: ['none'], type: 'named-flow' },\n font: { values: [] },\n 'font-display': {\n values: ['auto', 'block', 'swap', 'fallback', 'optional'],\n },\n 'font-family': {\n values: ['auto', 'cursive', 'fantasy', 'monospace', 'sans-serif', 'serif'],\n },\n 'font-feature-settings': { values: ['normal'] },\n 'font-kerning': { values: ['auto', 'none', 'normal'] },\n 'font-language-override': { values: ['normal'] },\n 'font-size': {\n values: ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', 'xxx-large', 'larger', 'smaller'],\n },\n 'font-size-adjust': { values: ['auto', 'none'] },\n 'font-stretch': {\n values: [\n 'condensed',\n 'expanded',\n 'extra-condensed',\n 'extra-expanded',\n 'normal',\n 'semi-condensed',\n 'semi-expanded',\n 'ultra-condensed',\n 'ultra-expanded',\n ],\n },\n 'font-style': { values: ['italic', 'normal', 'oblique'] },\n 'font-synthesis': { values: ['none', 'style', 'weight'] },\n 'font-variant': { values: ['normal', 'small-caps'] },\n 'font-variant-alternates': { values: ['normal'] },\n 'font-variant-caps': {\n values: ['normal', 'small-caps', 'all-small-caps', 'petite-caps', 'all-petite-caps', 'unicase', 'titling-caps'],\n },\n 'font-variant-east-asian': { values: ['normal'] },\n 'font-variant-ligatures': { values: ['normal', 'none'] },\n 'font-variant-numeric': { values: ['normal'] },\n 'font-variant-position': { values: ['normal', 'sub', 'super'] },\n 'font-weight': {\n values: ['bold', 'bolder', 'lighter', 'normal', '100', '200', '300', '400', '500', '600', '700', '800', '900'],\n },\n gap: { values: ['revert-layer'] },\n grid: { values: [] },\n 'grid-area': { values: [] },\n 'grid-auto-columns': { values: [] },\n 'grid-auto-flow': { values: ['row', 'column', 'dense'] },\n 'grid-auto-rows': { values: [] },\n 'grid-column': { values: ['auto'] },\n 'grid-column-end': { values: [] },\n 'grid-column-gap': { values: [] },\n 'grid-column-start': { values: [] },\n 'grid-gap': { values: [] },\n 'grid-row': { values: ['auto'] },\n 'grid-row-end': { values: [] },\n 'grid-row-start': { values: [] },\n 'grid-row-gap': { values: [] },\n 'grid-template': { values: ['none'] },\n 'grid-template-areas': { values: [] },\n 'grid-template-columns': { values: ['auto'] },\n 'grid-template-rows': { values: ['auto'] },\n 'hanging-punctuation': {\n values: ['allow-end', 'first', 'force-end', 'last', 'none'],\n },\n height: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n hyphens: { values: ['auto', 'manual', 'none'] },\n 'image-orientation': { values: [] },\n 'image-resolution': { values: ['from-image', 'snap'] },\n isolation: { values: ['auto', 'isolate'] },\n 'justify-content': {\n values: ['center', 'flex-end', 'flex-start', 'space-around', 'space-between'],\n },\n 'justify-items': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n 'legacy',\n ],\n },\n 'justify-self': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n ],\n },\n left: { values: ['auto'] },\n 'letter-spacing': { values: ['normal'] },\n 'line-height': { values: ['normal'] },\n 'list-style': {\n values: [\n 'none',\n 'url()',\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'inside',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'outside',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n 'list-style-image': { values: ['none', 'url()'] },\n 'list-style-position': { values: ['inside', 'outside'] },\n 'list-style-type': {\n values: [\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'none',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n margin: { values: ['auto'] },\n 'margin-bottom': { values: ['auto'] },\n 'margin-left': { values: ['auto'] },\n 'margin-right': { values: ['auto'] },\n 'margin-top': { values: ['auto'] },\n 'max-height': { values: ['none'] },\n 'max-width': { values: ['none'] },\n 'min-height': { values: [] },\n 'min-width': { values: [] },\n 'mix-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'object-fit': {\n values: ['contain', 'cover', 'fill', 'none', 'scale-down'],\n },\n 'object-position': { values: ['left', 'center', 'right', 'bottom', 'top'] },\n opacity: { values: [] },\n order: { values: [] },\n orphans: { values: [] },\n outline: { values: [] },\n 'outline-color': { values: ['invert'], type: 'color' },\n 'outline-offset': { values: [] },\n 'outline-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'outline-width': { values: ['medium', 'thin', 'thick'] },\n overflow: { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-x': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-y': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-wrap': { values: ['normal', 'anywhere', 'break-word'] },\n padding: { values: [] },\n 'padding-bottom': { values: [] },\n 'padding-left': { values: [] },\n 'padding-right': { values: [] },\n 'padding-top': { values: [] },\n 'page-break-after': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-before': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-inside': { values: ['auto', 'avoid'] },\n perspective: { values: ['none'] },\n 'perspective-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'pointer-events': {\n values: ['all', 'auto', 'fill', 'none', 'painted', 'stroke', 'visible', 'visibleFill', 'visiblePainted', 'visibleStroke'],\n },\n position: { values: ['absolute', 'fixed', 'relative', 'static', 'sticky'] },\n quotes: { values: ['none'] },\n 'region-break-after': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'region-break-before': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'region-break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'region-fragment': { values: ['auto', 'break'] },\n resize: { values: ['both', 'horizontal', 'none', 'vertical'] },\n right: { values: ['auto'] },\n 'scroll-behavior': { values: ['auto', 'smooth'] },\n 'scroll-snap-type': {\n values: ['none', 'x', 'y', 'block', 'inline', 'both', 'mandatory', 'proximity'],\n },\n src: { values: ['url()'] },\n 'shape-image-threshold': { values: [] },\n 'shape-inside': {\n values: ['auto', 'circle()', 'ellipse()', 'outside-shape', 'polygon()', 'rectangle()'],\n },\n 'shape-margin': { values: [] },\n 'shape-outside': {\n values: [\n 'none',\n 'circle()',\n 'ellipse()',\n 'polygon()',\n 'inset()',\n 'margin-box',\n 'border-box',\n 'padding-box',\n 'content-box',\n 'url()',\n 'image()',\n 'linear-gradient()',\n 'radial-gradient()',\n 'repeating-linear-gradient()',\n 'repeating-radial-gradient()',\n ],\n },\n 'tab-size': { values: [] },\n 'table-layout': { values: ['auto', 'fixed'] },\n 'text-align': {\n values: ['start', 'end', 'center', 'left', 'justify', 'right', 'match-parent', 'justify-all'],\n },\n 'text-align-last': { values: ['center', 'left', 'justify', 'right'] },\n 'text-decoration': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-color': { values: [], type: 'color' },\n 'text-decoration-line': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-skip': {\n values: ['edges', 'ink', 'none', 'objects', 'spaces'],\n },\n 'text-decoration-style': {\n values: ['dashed', 'dotted', 'double', 'solid', 'wavy'],\n },\n 'text-emphasis': { values: [] },\n 'text-emphasis-color': { values: [], type: 'color' },\n 'text-emphasis-position': { values: ['above', 'below', 'left', 'right'] },\n 'text-emphasis-style': {\n values: ['circle', 'dot', 'double-circle', 'filled', 'none', 'open', 'sesame', 'triangle'],\n },\n 'text-indent': { values: [] },\n 'text-justify': {\n values: ['auto', 'none', 'inter-word', 'inter-character'],\n },\n 'text-overflow': { values: ['clip', 'ellipsis'] },\n 'text-shadow': { values: [] },\n 'text-rendering': {\n values: ['auto', 'geometricPrecision', 'optimizeLegibility', 'optimizeSpeed'],\n },\n 'text-transform': {\n values: ['capitalize', 'full-width', 'lowercase', 'none', 'uppercase'],\n },\n 'text-underline-position': {\n values: ['alphabetic', 'auto', 'below', 'left', 'right'],\n },\n top: { values: ['auto'] },\n transform: {\n values: [\n 'matrix()',\n 'matrix3d()',\n 'none',\n 'perspective()',\n 'rotate()',\n 'rotate3d()',\n 'rotateX()',\n 'rotateY()',\n 'rotateZ()',\n 'scale()',\n 'scale3d()',\n 'scaleX()',\n 'scaleY()',\n 'scaleZ()',\n 'skewX()',\n 'skewY()',\n 'translate()',\n 'translate3d()',\n 'translateX()',\n 'translateY()',\n 'translateZ()',\n ],\n },\n 'transform-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'transform-style': { values: ['flat', 'preserve-3d'] },\n transition: { values: [] },\n 'transition-delay': { values: [] },\n 'transition-duration': { values: [] },\n 'transition-property': { values: ['all', 'none'] },\n 'transition-timing-function': {\n values: ['cubic-bezier()', 'ease', 'ease-in', 'ease-in-out', 'ease-out', 'linear', 'step-end', 'step-start', 'steps()'],\n },\n 'unicode-bidi': { values: ['bidi-override', 'embed', 'normal'] },\n 'unicode-range': { values: [] },\n 'user-select': { values: ['all', 'auto', 'contain', 'none', 'text'] },\n 'vertical-align': {\n values: ['baseline', 'bottom', 'middle', 'sub', 'super', 'text-bottom', 'text-top', 'top'],\n },\n visibility: { values: ['collapse', 'hidden', 'visible'] },\n 'white-space': {\n values: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap'],\n },\n widows: { values: [] },\n width: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n 'will-change': {\n values: ['auto', 'contents', 'opacity', 'scroll-position'],\n },\n 'word-break': { values: ['normal', 'break-all', 'keep-all'] },\n 'word-spacing': { values: ['normal'] },\n 'z-index': { values: ['auto'] },\n },\n};\n\nexport const CSSProperties = CSSSourceInfo.cssKeyValue;\n\nexport const CSSColors = CSSSourceInfo.cssColors;\n\nexport type CSSPropertiesKey = keyof typeof CSSProperties;\n\nexport const CSSPropertyList = Object.keys(CSSSourceInfo.cssKeyValue);\n","import React, { useContext } from 'react';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CSetter } from '@/component';\nimport { CNode, CRootNode } from '@chamn/model';\n\nexport type ContextState = Record<string, any>;\n\nexport type CRightPanelData = {\n /** 存储 field 默认的 setter 类型*/\n defaultSetterConfig: Record<string, { name: string; setter: string }>;\n /** schema 中的全局 setter map 配置*/\n customSetterMap: Record<string, CSetter>;\n pluginCtx?: CPluginCtx;\n /** 当前编辑节点的 id */\n nodeId?: string;\n nodeModel?: CNode | CRootNode;\n};\n\nexport const CRightPanelContext = React.createContext<CRightPanelData>({\n defaultSetterConfig: {},\n customSetterMap: {},\n});\n\nexport const UseCRightPanelContext = () => {\n return useContext(CRightPanelContext);\n};\n","import { AutoComplete, Button, ConfigProvider } from 'antd';\nimport { MinusOutlined, PlusOutlined } from '@ant-design/icons';\nimport { BaseSelectRef } from 'rc-select';\nimport clsx from 'clsx';\nimport { CNodePropsTypeEnum, JSExpressionPropType } from '@chamn/model';\nimport { InputStatus } from 'antd/es/_util/statusUtils';\nimport { CSSPropertyList } from './cssProperties';\nimport { forwardRef, useState, useEffect, useRef, useImperativeHandle } from 'react';\nimport { ExpressionSetter } from '../CustomSchemaForm/components/Setters/ExpressionSetter';\nimport { UseCRightPanelContext } from '@/plugins/RightPanel/context';\nimport styles from './style.module.scss';\n\nconst defaultPropertyOptions = CSSPropertyList.map((el) => {\n return {\n value: el,\n };\n});\n\nexport type InnerSinglePropertyEditorProps = {\n value?: {\n property: string;\n value: JSExpressionPropType | string;\n };\n onValueChange: (value: { property: string; value: JSExpressionPropType | string }) => void;\n onDelete?: () => void;\n onCreate?: (value: { property: string; value: JSExpressionPropType | string }) => {\n errorKey?: string[];\n } | void;\n mod?: 'create' | 'edit';\n};\n\nexport type InnerSinglePropertyEditorRef = {\n reset: () => void;\n};\n\nexport const SinglePropertyEditor = forwardRef<InnerSinglePropertyEditorRef, InnerSinglePropertyEditorProps>(\n function SinglePropertyEditorCore(props, ref) {\n const [keyFormatStatus, setKeyFormatStatus] = useState<InputStatus>('');\n const rightPanelContext = UseCRightPanelContext();\n const { mod = 'create' } = props;\n\n const [innerValue, setInnerVal] = useState<{\n property: string;\n value: JSExpressionPropType | string;\n }>({\n property: props.value?.property || '',\n value: props.value?.value || '',\n });\n\n useEffect(() => {\n if (props.value) {\n setInnerVal(props.value);\n }\n }, [props.value]);\n\n const [propertyOptions, setPropertyOptions] = useState(defaultPropertyOptions);\n\n const onSearch = (searchText: string) => {\n const newOptions = defaultPropertyOptions.filter((el) => el.value.includes(searchText));\n if (!searchText) {\n setPropertyOptions(defaultPropertyOptions);\n } else {\n setPropertyOptions(newOptions);\n }\n };\n\n const updateOuterValue = (newValue: typeof innerValue) => {\n props.onValueChange({\n ...newValue,\n });\n };\n\n const propertyKeyRef = useRef<BaseSelectRef | null>(null);\n\n useImperativeHandle(\n ref,\n () => {\n return {\n reset: () => {\n setInnerVal({\n property: '',\n value: {\n type: CNodePropsTypeEnum.EXPRESSION,\n value: '',\n },\n });\n propertyKeyRef.current?.focus();\n },\n };\n },\n []\n );\n\n /// 创建时\n const innerOnCreate = () => {\n if (innerValue.property === '') {\n setKeyFormatStatus('error');\n return;\n }\n\n setKeyFormatStatus('');\n const res = props.onCreate?.(innerValue);\n if (res?.errorKey?.includes('key')) {\n setKeyFormatStatus('error');\n }\n };\n\n return (\n <>\n <div className={styles.cssFieldBox}>\n <div className={styles.leftBox}>\n <div className={styles.row}>\n <span className={styles.fieldLabel}>Name</span>\n <AutoComplete\n status={keyFormatStatus}\n disabled={mod === 'edit'}\n ref={propertyKeyRef}\n onSearch={onSearch}\n popupMatchSelectWidth={200}\n value={innerValue.property}\n onChange={(val) => {\n setKeyFormatStatus('');\n const newVal = {\n ...innerValue,\n property: val,\n };\n setInnerVal(newVal);\n updateOuterValue(newVal);\n }}\n className={clsx([styles.inputBox])}\n onBlur={() => {\n updateOuterValue(innerValue);\n }}\n placeholder=\"property\"\n options={propertyOptions}\n />\n </div>\n {mod === 'create' && (\n <div>\n <Button\n size=\"small\"\n block\n icon={\n <PlusOutlined\n style={{\n fontSize: '12px',\n display: 'inline-flex',\n }}\n />\n }\n onClick={innerOnCreate}\n ></Button>\n </div>\n )}\n {mod !== 'create' && (\n <div className={styles.row}>\n <span className={styles.fieldLabel}>Value</span>\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div\n style={{\n width: '100%',\n }}\n >\n <ExpressionSetter\n value={innerValue.value as any}\n setterContext={{\n pluginCtx: rightPanelContext.pluginCtx!,\n setCollapseHeaderExt: undefined,\n onSetterChange: function () {},\n keyPaths: [],\n label: '',\n nodeModel: rightPanelContext.nodeModel as any,\n }}\n onValueChange={function (val) {\n const newVal = {\n ...innerValue,\n value: val,\n };\n console.log('newVal', newVal);\n setInnerVal(newVal);\n updateOuterValue(newVal);\n }}\n mode={'modal'}\n />\n </div>\n </ConfigProvider>\n </div>\n )}\n </div>\n <div className={styles.rightBox}>\n <div\n style={{\n height: '30px',\n }}\n >\n {props.onDelete && mod === 'edit' && (\n <Button\n size=\"small\"\n type=\"text\"\n onClick={() => {\n props.onDelete?.();\n }}\n >\n <MinusOutlined\n style={{\n display: 'inline-flex',\n fontSize: '12px',\n }}\n />\n </Button>\n )}\n </div>\n </div>\n </div>\n </>\n );\n }\n);\n","import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { ConfigProvider, message } from 'antd';\nimport { JSExpressionPropType } from '@chamn/model';\n\nimport styles from './style.module.scss';\nimport { InnerSinglePropertyEditorRef, SinglePropertyEditor } from './SingleProperty';\n\nexport type CSSPropertiesVariableBindEditorProps = {\n initialValue?: { property: string; value: string | JSExpressionPropType }[];\n onValueChange?: (val: { property: string; value: string }[]) => void;\n};\nexport type CSSPropertiesVariableBindEditorRef = {\n setValue: (val: { property: string; value: string | JSExpressionPropType }[]) => void;\n};\n\nexport const CSSPropertiesVariableBindEditor = forwardRef<\n CSSPropertiesVariableBindEditorRef,\n CSSPropertiesVariableBindEditorProps\n>(function CSSPropertiesVariableBindEditorCore(props, ref) {\n const [propertyList, setPropertyList] = useState<{ property: string; value: any }[]>([]);\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (val) => {\n setPropertyList(val);\n },\n };\n },\n []\n );\n\n useEffect(() => {\n if (props.initialValue) {\n setPropertyList(props.initialValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [newProperty, setNewProperty] = useState<{\n property: string;\n value: JSExpressionPropType | string;\n }>({\n property: '',\n value: {\n type: 'EXPRESSION',\n value: '',\n },\n });\n\n const innerOnValueChange = (val: typeof propertyList) => {\n props.onValueChange?.(val);\n };\n\n const createPropertyRef = useRef<InnerSinglePropertyEditorRef>(null);\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div className={styles.cssBox}>\n {propertyList.map((el, index) => {\n return (\n <div key={index}>\n <SinglePropertyEditor\n value={el}\n mod={'edit'}\n onValueChange={(newVal) => {\n if (newVal.property === '') {\n propertyList.splice(index, 1);\n setPropertyList([...propertyList]);\n return;\n }\n propertyList[index] = newVal;\n setPropertyList([...propertyList]);\n innerOnValueChange(propertyList);\n }}\n onDelete={() => {\n propertyList.splice(index, 1);\n setPropertyList([...propertyList]);\n innerOnValueChange(propertyList);\n }}\n />\n </div>\n );\n })}\n\n <SinglePropertyEditor\n value={newProperty}\n ref={createPropertyRef}\n mod=\"create\"\n onValueChange={(newVal) => {\n setNewProperty(newVal);\n }}\n onCreate={(val) => {\n const hasExits = propertyList.find((el) => el.property === val.property);\n if (hasExits) {\n message.error('The attribute name already exists, please replace');\n return {\n errorKey: [val.property],\n };\n }\n propertyList.push(val);\n setPropertyList([...propertyList]);\n innerOnValueChange(propertyList);\n setNewProperty({\n property: '',\n value: {\n type: 'EXPRESSION',\n value: '',\n },\n });\n }}\n />\n </div>\n </ConfigProvider>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { ConfigProvider } from 'antd';\nimport { CustomSchemaForm, CustomSchemaFormInstance } from '../CustomSchemaForm';\nimport { ClassNameType, CMaterialPropsType, CNode } from '@chamn/model';\nimport { CPluginCtx } from '@/core/pluginManager';\n\nexport type ClassNameEditorProps = {\n initialValue?: ClassNameType[];\n onValueChange?: (val: ClassNameType[]) => void;\n pluginContext: CPluginCtx;\n nodeModel: CNode;\n};\nexport type ClassNameEditorRef = {\n setValue: (val: ClassNameType[]) => void;\n};\n\nconst properties: CMaterialPropsType = [\n {\n title: 'Class Names',\n name: 'className',\n valueType: 'array',\n\n setters: [\n {\n componentName: 'ArraySetter',\n props: {\n sortLabelKey: 'name',\n collapse: {\n open: true,\n },\n item: {\n setters: [\n {\n componentName: 'ShapeSetter',\n props: {\n elements: [\n {\n name: 'name',\n title: '类名',\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'status',\n title: '启用',\n valueType: 'boolean',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n ],\n },\n initialValue: {},\n },\n ],\n initialValue: {\n name: '',\n status: true,\n },\n },\n },\n initialValue: [],\n },\n ],\n },\n];\n\nexport const ClassNameEditor = forwardRef<ClassNameEditorRef, ClassNameEditorProps>(function CSSPropertiesEditorCore(\n props,\n ref\n) {\n const formRef = useRef<CustomSchemaFormInstance>(null);\n useImperativeHandle(ref, () => {\n return {\n setValue(newValue) {\n formRef?.current?.setFields({\n className: newValue || [],\n });\n },\n };\n });\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div>\n <CustomSchemaForm\n ref={formRef}\n initialValue={[]}\n nodeId={props.nodeModel.id}\n pluginCtx={props.pluginContext}\n properties={properties}\n onSetterChange={function () {}}\n onValueChange={(newVal) => {\n props.onValueChange?.(newVal.className || []);\n }}\n defaultSetterConfig={{}}\n ></CustomSchemaForm>\n </div>\n </ConfigProvider>\n );\n});\n","import { MinusOutlined, PlusOutlined } from '@ant-design/icons';\nimport { AutoComplete, Button } from 'antd';\nimport { InputStatus } from 'antd/es/_util/statusUtils';\nimport clsx from 'clsx';\nimport { BaseSelectRef } from 'rc-select';\nimport { forwardRef, useState, useMemo, useRef, useImperativeHandle } from 'react';\nimport { defaultPropertyOptions } from '.';\nimport { CSSProperties, CSSPropertiesKey } from './cssProperties';\nimport styles from './style.module.scss';\n\nexport type SinglePropertyEditorProps = {\n mode: 'create' | 'edit';\n value?: {\n property: string;\n value: string;\n };\n allValues: {\n property: string;\n value: string;\n }[];\n onValueChange?: (value: { property: string; value: string }) => void;\n onCreate?: (value: { property: string; value: string }) => void;\n onDelete?: () => void;\n};\n\nexport type SinglePropertyEditorRef = {\n reset: () => void;\n};\n\nexport const SinglePropertyEditor = forwardRef<SinglePropertyEditorRef, SinglePropertyEditorProps>(\n function SinglePropertyEditorCore(props, ref) {\n const [keyFormatStatus] = useState<InputStatus>('');\n const [valueFormatStatus] = useState<InputStatus>('');\n const { mode = 'edit' } = props;\n const isCreate = useMemo(() => {\n return mode === 'create';\n }, [mode]);\n const innerValue = props.value;\n const [propertyOptions, setPropertyOptions] = useState(defaultPropertyOptions);\n\n const [valueOptions, setValueOptions] = useState<{ value: string }[]>([]);\n const [allValueOptions, setAllValueOptions] = useState<{ value: string }[]>([]);\n\n const onSearch = (searchText: string) => {\n const newOptions = defaultPropertyOptions.filter((el) => el.value.includes(searchText));\n if (!searchText) {\n setPropertyOptions(defaultPropertyOptions);\n } else {\n setPropertyOptions(newOptions);\n }\n };\n\n const updateValueOptions = () => {\n let res: any[] = [];\n const tempProperty = CSSProperties[innerValue?.property as unknown as CSSPropertiesKey];\n\n if (tempProperty) {\n res =\n tempProperty.values?.map((val) => {\n return {\n value: val,\n };\n }) || [];\n }\n\n setValueOptions(res);\n setAllValueOptions(res);\n };\n\n const onValueSearch = (searchText: string) => {\n const newOptions = allValueOptions.filter((el) => el.value.includes(searchText));\n if (!searchText) {\n setValueOptions(allValueOptions);\n } else {\n setValueOptions(newOptions);\n }\n };\n\n const updateKeyValue = (keyVal: string) => {\n props.onValueChange?.({\n property: keyVal,\n value: innerValue?.value || '',\n });\n return true;\n };\n\n const propertyValueRef = useRef<BaseSelectRef | null>(null);\n const propertyKeyRef = useRef<BaseSelectRef | null>(null);\n const [focusState, setFocusState] = useState({\n key: false,\n value: false,\n });\n useImperativeHandle(\n ref,\n () => {\n return {\n reset: () => {\n propertyKeyRef.current?.focus();\n },\n };\n },\n []\n );\n\n return (\n <div className={styles.cssFieldBox}>\n <div\n className={clsx([\n styles.keyField,\n isCreate && styles.inputAuto,\n isCreate && focusState.key && styles.active,\n keyFormatStatus === 'error' && styles.error,\n !isCreate && styles.notEdit,\n ])}\n >\n <AutoComplete\n ref={propertyKeyRef}\n variant={'borderless'}\n disabled={!isCreate}\n onSearch={onSearch}\n status={keyFormatStatus}\n popupMatchSelectWidth={200}\n value={innerValue?.property}\n onChange={(val) => {\n updateKeyValue(val);\n }}\n style={{\n width: '100%',\n position: 'absolute',\n left: 0,\n top: 0,\n }}\n onFocus={() => {\n setFocusState({\n key: true,\n value: false,\n });\n }}\n onBlur={() => {\n setFocusState({\n key: false,\n value: false,\n });\n }}\n onKeyDown={(e) => {\n if (e.code === 'Enter') {\n if (!keyFormatStatus) {\n propertyValueRef.current?.focus();\n }\n }\n }}\n placeholder=\"property\"\n options={propertyOptions}\n />\n <span\n style={{\n display: 'inline-block',\n visibility: 'hidden',\n minWidth: '60px',\n padding: '0 2px',\n }}\n >\n {innerValue?.property}\n </span>\n </div>\n <span\n style={{\n padding: '0 2px',\n }}\n >\n :\n </span>\n <AutoComplete\n variant={'borderless'}\n ref={propertyValueRef}\n status={valueFormatStatus}\n popupMatchSelectWidth={200}\n value={innerValue?.value}\n onChange={(val) => {\n updateValueOptions();\n props.onValueChange?.({\n property: innerValue?.property || '',\n value: val || '',\n });\n }}\n style={{\n flex: 1,\n }}\n onFocus={() => {\n setFocusState({\n key: false,\n value: true,\n });\n }}\n onBlur={() => {\n setFocusState({\n key: false,\n value: false,\n });\n }}\n className={clsx([styles.inputAuto, focusState.value && styles.active])}\n placeholder=\"value\"\n onSearch={onValueSearch}\n options={valueOptions}\n onKeyDown={(e) => {\n if (e.code === 'Enter') {\n if (isCreate) {\n props.onCreate?.({\n property: innerValue?.property || '',\n value: innerValue?.value || '',\n });\n }\n }\n }}\n ></AutoComplete>\n\n {props.onDelete && mode === 'edit' && (\n <Button\n size=\"small\"\n type=\"text\"\n onClick={() => {\n props.onDelete?.();\n }}\n >\n <MinusOutlined\n style={{\n display: 'inline-flex',\n fontSize: '12px',\n }}\n />\n </Button>\n )}\n {props.onCreate && mode === 'create' && (\n <div>\n <Button\n size=\"small\"\n type=\"text\"\n icon={\n <PlusOutlined\n style={{\n fontSize: '12px',\n display: 'inline-flex',\n }}\n />\n }\n onClick={() => {\n props.onCreate?.({\n property: innerValue?.property || '',\n value: innerValue?.value || '',\n });\n }}\n ></Button>\n </div>\n )}\n </div>\n );\n }\n);\n","import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { CSSPropertyList } from './cssProperties';\nimport styles from './style.module.scss';\n\nimport { ConfigProvider } from 'antd';\nimport { SinglePropertyEditorRef, SinglePropertyEditor } from './signleProperty';\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const defaultPropertyOptions = CSSPropertyList.map((el) => {\n return {\n value: el,\n };\n});\n\nexport type CSSPropertiesEditorProps = {\n initialValue?: { property: string; value: string }[];\n onValueChange?: (val: { property: string; value: string }[]) => void;\n};\n\nexport type CSSPropertiesEditorRef = {\n setValue: (val: { property: string; value: string }[]) => void;\n};\n\nexport const CSSPropertiesEditor = forwardRef<CSSPropertiesEditorRef, CSSPropertiesEditorProps>(\n function CSSPropertiesEditorCore(props, ref) {\n const [propertyList, setPropertyList] = useState<{ id?: string; property: string; value: any }[]>([]);\n const [newAddVal, setNewAddVal] = useState({\n property: '',\n value: '',\n });\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (val) => {\n setPropertyList(val);\n },\n };\n },\n []\n );\n\n useEffect(() => {\n if (props.initialValue) {\n setPropertyList([...props.initialValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const innerOnValueChange = (val: typeof propertyList) => {\n props.onValueChange?.(val);\n };\n\n const createPropertyRef = useRef<SinglePropertyEditorRef>(null);\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div className={styles.cssBox}>\n {propertyList.map((el, index) => {\n return (\n <div key={index}>\n <SinglePropertyEditor\n mode=\"edit\"\n allValues={propertyList}\n value={el}\n onValueChange={(newVal) => {\n propertyList[index] = newVal;\n const newList = JSON.parse(JSON.stringify(propertyList));\n setPropertyList(newList);\n innerOnValueChange(newList);\n }}\n onDelete={() => {\n propertyList.splice(index, 1);\n const newList = JSON.parse(JSON.stringify(propertyList));\n setPropertyList(newList);\n innerOnValueChange(newList);\n }}\n />\n </div>\n );\n })}\n <SinglePropertyEditor\n key=\"newInput\"\n allValues={propertyList}\n mode=\"create\"\n value={newAddVal}\n ref={createPropertyRef}\n onValueChange={(newCssVal) => {\n setNewAddVal({\n ...newCssVal,\n });\n }}\n onCreate={(newVal) => {\n if (newVal.property && newVal.value) {\n const newList = [...propertyList];\n newList.push(newVal);\n setPropertyList(newList);\n setNewAddVal({\n property: '',\n value: '',\n });\n innerOnValueChange(newList);\n createPropertyRef.current?.reset();\n }\n }}\n />\n </div>\n </ConfigProvider>\n );\n }\n);\n","import { waitReactUpdate } from '@/utils';\nimport { formatCSSTextProperty, StyleArr, styleList2Text } from '@/utils/css';\nimport { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';\nimport { Card, Collapse, Dropdown, Space } from 'antd';\nimport CheckableTag from 'antd/es/tag/CheckableTag';\nimport { MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { CSSPropertiesEditor, CSSPropertiesEditorRef } from '../CSSPropertiesEditor';\nimport styles from './style.module.scss';\nimport { isEmpty } from 'lodash-es';\n// state: 'normal' | 'hover' | 'active' | 'focus' | 'first' | 'last' | 'even' | 'odd';\n\nconst DOM_CSS_STATUS = [\n 'normal' as const,\n 'hover' as const,\n 'focus' as const,\n 'focus-within' as const,\n 'focus-visible' as const,\n 'checked' as const,\n 'disable' as const,\n 'active' as const,\n];\n\ntype DomCSSStatusType = typeof DOM_CSS_STATUS[number];\n\nconst DOM_CSS_STATUS_LIST = DOM_CSS_STATUS.map((el) => {\n return {\n key: el,\n label: el,\n };\n});\n\ntype MediaQueryItem = {\n key: string;\n maxWidth: string;\n label: string;\n};\n\nexport type CSSVal = Partial<\n Record<\n DomCSSStatusType,\n Record<\n /** media query key */\n string,\n string\n >\n >\n>;\n\nexport type CSSEditorRef = {\n setValue: (val: CSSVal) => void;\n};\n\nexport type CSSEditorProps = {\n onValueChange?: (val: CSSVal) => void;\n initialValue?: CSSVal;\n handler?: MutableRefObject<CSSEditorRef | null>;\n};\n\nexport const CSSEditor = (props: CSSEditorProps) => {\n const [selectedStateTag, setSelectedStateTag] = useState<DomCSSStatusType>('normal');\n const [mediaQueryList] = useState<MediaQueryItem[]>([\n {\n key: '991',\n maxWidth: '991',\n label: 'Medial Query ( <= 991 px )',\n },\n {\n key: '767',\n maxWidth: '767',\n label: 'Medial Query ( <= 767 px )',\n },\n {\n key: '479',\n maxWidth: '479',\n label: 'Medial Query ( <= 479 px )',\n },\n ]);\n const cssPropertyRefMap = useRef<Record<string, CSSPropertiesEditorRef | null>>({});\n const handleChange = (tag: DomCSSStatusType) => {\n setSelectedStateTag(tag);\n };\n const [domStatusList, setDomStatusList] = useState<string[]>([]);\n const cssStatusList = useMemo(() => {\n return DOM_CSS_STATUS_LIST.filter((el) => {\n return !domStatusList.includes(el.key);\n });\n }, [domStatusList]);\n\n const selectCssStatusList = useMemo(() => {\n return DOM_CSS_STATUS_LIST.filter((el) => {\n return domStatusList.includes(el.key);\n });\n }, [domStatusList]);\n\n const [cssVal, setCssVal] = useState<CSSVal>(props.initialValue ?? {});\n\n useEffect(() => {\n const list = Object.keys(cssVal);\n setDomStatusList(list);\n }, [cssVal]);\n\n const currentCssStateVal = useMemo(() => {\n const res = cssVal?.[selectedStateTag];\n if (!res) {\n return {};\n }\n const newVal: Record<string, ReturnType<typeof formatCSSTextProperty>> = {};\n Object.keys(res).forEach((key) => {\n newVal[key] = formatCSSTextProperty(res[key] || '');\n });\n\n return newVal;\n }, [selectedStateTag, cssVal]);\n\n const initVal = useCallback(() => {\n Object.keys(cssPropertyRefMap.current).forEach((key) => {\n const ref = cssPropertyRefMap.current?.[key];\n const cssVal = currentCssStateVal[key] || [];\n if (ref) {\n ref.setValue(cssVal);\n }\n });\n }, [currentCssStateVal]);\n const initRef = useRef<() => void>();\n initRef.current = initVal;\n\n if (props.handler) {\n props.handler.current = {\n setValue: async (newVal) => {\n if (isEmpty(newVal)) {\n setCssVal({\n normal: {\n normal: '',\n },\n });\n } else {\n setCssVal(newVal);\n }\n await waitReactUpdate();\n initRef.current?.();\n },\n };\n }\n\n // 初始化赋值\n useEffect(() => {\n initRef.current?.();\n }, [selectedStateTag]);\n\n const updateCss = useCallback(\n (mediaKey: string, val: StyleArr) => {\n const newVal = {\n ...cssVal,\n [selectedStateTag]: {\n ...(cssVal[selectedStateTag] || {}),\n [mediaKey]: styleList2Text(val),\n },\n };\n props.onValueChange?.(newVal);\n },\n [cssVal, props, selectedStateTag]\n );\n\n return (\n <>\n <Card\n size=\"small\"\n type=\"inner\"\n title={<span style={{ fontSize: '12px' }}>CSS</span>}\n extra={\n <Dropdown\n menu={{\n items: cssStatusList,\n onClick: (el) => {\n setDomStatusList((oldVal) => {\n return [...oldVal, el.key];\n });\n },\n }}\n >\n <PlusOutlined />\n </Dropdown>\n }\n >\n <Space\n size={[0, 8]}\n wrap\n style={{\n paddingBottom: '10px',\n }}\n >\n {selectCssStatusList.map((tag) => {\n const checked = selectedStateTag.includes(tag.key);\n return (\n <CheckableTag\n key={tag.key}\n style={{\n border: !checked ? '1px solid rgb(216 216 216 / 82%)' : '1px solid rgba(0,0,0,0))',\n }}\n checked={checked}\n onChange={() => handleChange(tag.key)}\n className={styles.stateTag}\n >\n {tag.label}\n {tag.key !== 'normal' && (\n <MinusCircleOutlined\n className={styles.stateTagClose}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setDomStatusList((oldVal) => {\n return oldVal.filter((el) => {\n return el !== tag.key;\n });\n });\n setSelectedStateTag('normal');\n }}\n />\n )}\n </CheckableTag>\n );\n })}\n </Space>\n\n <Collapse\n defaultActiveKey={['normal']}\n bordered={false}\n style={{\n marginBottom: '10px',\n }}\n onChange={async () => {\n await waitReactUpdate();\n initRef.current?.();\n }}\n items={[\n {\n key: 'normal',\n label: <span>Default</span>,\n children: (\n <CSSPropertiesEditor\n ref={(ref) => {\n cssPropertyRefMap.current['normal'] = ref;\n }}\n onValueChange={(val) => updateCss('normal', val)}\n initialValue={currentCssStateVal['normal']}\n />\n ),\n },\n ...mediaQueryList.map((el) => {\n return {\n key: el.key,\n label: <span>{el.label}</span>,\n children: (\n <CSSPropertiesEditor\n ref={(ref) => {\n cssPropertyRefMap.current[el.key] = ref;\n }}\n onValueChange={(val) => updateCss(el.key, val)}\n />\n ),\n };\n }),\n ]}\n ></Collapse>\n </Card>\n </>\n );\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CRightPanelItem, RightPanelOptions } from '../RightPanel/view';\n\nimport styles from './style.module.scss';\nimport {\n CSSPropertiesVariableBindEditor,\n CSSPropertiesVariableBindEditorRef,\n} from '../../component/CSSPropertiesVariableBindEditor';\nimport { Collapse } from 'antd';\nimport { ClassNameEditor, ClassNameEditorRef } from '@/component/ClassNameEditor';\nimport { CSSEditor, CSSEditorRef, CSSVal } from '@/component/CSSEditor';\nimport {\n formatStyleProperty,\n formatCssToNodeVal,\n formatNodeValToEditor,\n StyleArr,\n styleArr2Obj,\n styleObjToArr,\n} from '@/utils/css';\nimport { StyleUIPanel, StyleUIPanelRef } from '@/component/StylePanel';\n\nexport const VisualPanelPlus = (props: RightPanelOptions) => {\n const styleVariableRef = useRef<CSSPropertiesVariableBindEditorRef>(null);\n\n const node = props.node!;\n const classNameList = useMemo(() => {\n const tempList = node.value.classNames || [];\n return tempList;\n }, [node]);\n const cssEditorRef = useRef<CSSEditorRef>(null);\n const cssUIRef = useRef<StyleUIPanelRef>(null);\n const classNameEditorRef = useRef<ClassNameEditorRef>(null);\n const formatStyle = useMemo(() => {\n return formatStyleProperty(node.value.style || []);\n }, [node.value.style]);\n\n const lastNode = useRef<CNode | CRootNode>();\n\n const updatePanelValue = useCallback(() => {\n lastNode.current = node;\n const newStyle = node.value.style || [];\n const { expressionProperty, normalProperty } = formatStyleProperty(newStyle);\n const fCss = formatNodeValToEditor(node.value.css);\n styleVariableRef.current?.setValue([...expressionProperty]);\n cssEditorRef.current?.setValue(fCss);\n classNameEditorRef.current?.setValue(node.value.classNames || []);\n cssUIRef.current?.setValue(styleArr2Obj(normalProperty) || {});\n }, [node]);\n\n useEffect(() => {\n updatePanelValue();\n node.emitter.on('onNodeChange', updatePanelValue);\n node.emitter.on('onReloadPage', updatePanelValue);\n return () => {\n node.emitter.off('onNodeChange', updatePanelValue);\n node.emitter.off('onReloadPage', updatePanelValue);\n };\n }, [node.emitter, node.id, props.activeTab, updatePanelValue]);\n\n const onUpdateStyleVariable = (styleArr: StyleArr) => {\n // merge style\n const newStyleList = [...formatStyle.normalProperty, ...styleArr];\n node.value.style = newStyleList;\n node.updateValue();\n };\n\n const onUpdateStyle = (styleArr: StyleArr) => {\n // merge style\n const newStyleList = [...styleArr, ...formatStyle.expressionProperty];\n node.value.style = newStyleList;\n node.updateValue();\n };\n\n const onUpdateCss = (val: CSSVal) => {\n // class name 不能以数字开头,这里使用c_前缀\n node.value.css = formatCssToNodeVal(`c_${node.id}`, val);\n node.updateValue();\n };\n\n return (\n <div className={styles.visualPanelBox}>\n <div\n style={{\n marginBottom: '10px',\n }}\n >\n <StyleUIPanel\n ref={cssUIRef}\n onValueChange={(newNormaCss) => {\n onUpdateStyle(styleObjToArr(newNormaCss));\n }}\n />\n <Collapse\n bordered={false}\n style={{\n marginBottom: '10px',\n }}\n defaultActiveKey={['origin-css-edit']}\n onChange={(val) => {\n if (val.length) {\n updatePanelValue();\n }\n }}\n items={[\n {\n key: 'origin-css-edit',\n label: <span className={styles.header}>Style Variable</span>,\n children: (\n <CSSPropertiesVariableBindEditor\n ref={styleVariableRef}\n initialValue={formatStyle.expressionProperty}\n onValueChange={(val) => {\n onUpdateStyleVariable(val);\n }}\n />\n ),\n },\n ]}\n ></Collapse>\n <div\n style={{\n paddingTop: '10px',\n }}\n >\n <ClassNameEditor\n nodeModel={props.node as any}\n initialValue={classNameList}\n ref={classNameEditorRef}\n pluginContext={props.pluginCtx}\n onValueChange={(newVal) => {\n node.value.classNames = newVal;\n node.updateValue();\n }}\n />\n </div>\n <CSSEditor handler={cssEditorRef} onValueChange={onUpdateCss} />\n </div>\n </div>\n );\n};\n\nexport const VisualPanelPlusConfig: CRightPanelItem = {\n key: 'VisualPanelPlus',\n name: 'Visual',\n view: ({ node, pluginCtx, activeTab }) => {\n if (node) {\n return <VisualPanelPlus node={node} pluginCtx={pluginCtx} activeTab={activeTab} />;\n } else {\n return <></>;\n }\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.visual !== false;\n },\n};\n","import { useEffect, useState } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport styles from './style.module.scss';\nimport { Button, Select } from 'antd';\nimport { ActionFlowSetter } from '@/component/CustomSchemaForm/components/Setters/ActionFlowSetter';\nimport { DeleteOutlined } from '@ant-design/icons';\nimport { ON_DID_RENDER, ON_WILL_DESTROY } from '@chamn/render';\n\nexport type EventPanelProps = {\n node: CNode | CRootNode | null;\n pluginCtx: CPluginCtx;\n};\n\nconst INNER_EVENT_LIST_MAP = [\n {\n label: '初始化完成后',\n value: ON_DID_RENDER,\n },\n {\n label: '组件销毁之前',\n value: ON_WILL_DESTROY,\n },\n];\n\nexport const EventPanel = (props: EventPanelProps) => {\n const { node } = props;\n const [eventList, updateEventList] = useState<\n {\n label: string;\n value: string;\n }[]\n >([]);\n\n const nodeEventList = node?.value.eventListener;\n\n useEffect(() => {\n const list =\n node?.material?.value.events?.map((evt) => {\n if (typeof evt === 'string') {\n return {\n label: evt,\n value: evt,\n };\n }\n return {\n label: evt.name || evt.event,\n value: evt.event,\n };\n }) || [];\n updateEventList([...INNER_EVENT_LIST_MAP, ...list]);\n }, [node?.id, node?.material?.value.events]);\n const [currentEvent, updateCurrentEvent] = useState<string>();\n\n const onChange = (value: string) => {\n updateCurrentEvent(value);\n };\n\n if (!node) {\n return <></>;\n }\n\n return (\n <div className={styles.eventBox}>\n <div style={{ display: 'flex' }}>\n <Select\n value={currentEvent}\n showSearch\n placeholder=\"Select a person\"\n optionFilterProp=\"label\"\n onChange={onChange}\n allowClear\n style={{ width: '100%' }}\n options={eventList}\n />\n <Button\n type=\"primary\"\n style={{ marginLeft: '10px' }}\n onClick={() => {\n const newEvent = currentEvent;\n if (!newEvent) {\n return;\n }\n node.value.eventListener = [\n ...(node.value.eventListener || []),\n {\n name: newEvent,\n func: {\n type: 'ACTION',\n handler: [],\n // TODO: 待实现\n params: [],\n },\n },\n ];\n node.updateValue();\n updateCurrentEvent(undefined);\n }}\n >\n Add\n </Button>\n </div>\n <div style={{ marginTop: '16px' }}>\n {nodeEventList?.map((event: any, index: number) => {\n const eventLabel = eventList.find((el) => el.value === event.name);\n return (\n <div\n key={index}\n style={{\n padding: '8px 12px',\n borderRadius: '4px',\n backgroundColor: '#f5f5f5',\n marginBottom: '8px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n width: '100%',\n }}\n >\n <ActionFlowSetter\n value={event.func}\n onValueChange={(val: { handler: any }) => {\n event.func.handler = val.handler;\n node?.updateValue();\n }}\n setterContext={{\n pluginCtx: props.pluginCtx,\n onSetterChange: () => {},\n keyPaths: [''],\n label: '',\n nodeModel: node as any,\n }}\n >\n <span>{eventLabel?.label || event.name}</span>\n </ActionFlowSetter>\n </div>\n <Button\n type=\"text\"\n size=\"small\"\n danger\n icon={<DeleteOutlined />}\n onClick={(e) => {\n e.stopPropagation();\n const newEventList = [...(node?.value.eventListener || [])];\n newEventList.splice(index, 1);\n node!.value.eventListener = newEventList;\n node?.updateValue();\n }}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import { CRightPanelItem } from '../RightPanel/view';\nimport { EventPanel } from './panel';\n\nexport const EventPanelConfig: CRightPanelItem = {\n key: 'Event',\n name: 'Event',\n view: ({ node, pluginCtx }) => {\n if (!node) {\n return <></>;\n }\n return <EventPanel node={node} pluginCtx={pluginCtx} />;\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.advance !== false;\n },\n};\n","import { CNode, CRootNode } from '@chamn/model';\nimport { Empty, Tabs } from 'antd';\nimport React from 'react';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { PropertyPanelConfig } from '../PropertyPanel';\nimport { ComponentStatePanelConfig } from '../ComponentStatePanel';\nimport { AdvancePanelConfig } from '../AdvancePanel';\nimport styles from './style.module.scss';\nimport { VisualPanelPlusConfig } from '../VisualPanelPlus';\nimport { EventPanelConfig } from '../EventPanel';\nimport { CRightPanelContext } from './context';\n\nexport type RightPanelOptions = { node: CNode | CRootNode | null; pluginCtx: CPluginCtx; activeTab: string };\n\nexport type CRightPanelItem = {\n key: string;\n name: string | ((props: RightPanelOptions) => React.ReactNode);\n view: (props: RightPanelOptions) => React.ReactNode;\n show?: (options: RightPanelOptions) => boolean;\n};\n\ninterface RightPanelProps {\n pluginCtx: CPluginCtx;\n}\n\ninterface RightPanelState {\n node: CNode | CRootNode | null;\n activeKey: string;\n panels: CRightPanelItem[];\n displayPanels: CRightPanelItem[];\n}\n\nexport class RightPanel extends React.Component<RightPanelProps, RightPanelState> {\n constructor(props: RightPanelProps) {\n super(props);\n this.state = {\n node: props.pluginCtx.engine.getActiveNode(),\n activeKey: 'Visual',\n panels: [\n // AdvancePanelConfig,\n PropertyPanelConfig,\n VisualPanelPlusConfig,\n EventPanelConfig,\n ComponentStatePanelConfig,\n AdvancePanelConfig,\n ],\n displayPanels: [],\n };\n }\n\n addPanel = (panel: CRightPanelItem) => {\n const newPanels = [...this.state.panels, panel];\n this.setState({\n panels: newPanels,\n });\n this.updatePanels();\n };\n\n removePanel = (panelName: string) => {\n const newPanels = this.state.panels.filter((el) => el.name !== panelName);\n this.setState({\n panels: newPanels,\n });\n this.updatePanels();\n };\n\n replacePanel = (panelName: string, newPanel: CRightPanelItem) => {\n const targetIndex = this.state.panels.findIndex((el) => el.name === panelName);\n const newPanels = [...this.state.panels];\n if (targetIndex > -1) {\n newPanels[targetIndex] = newPanel;\n }\n this.setState({\n panels: newPanels,\n });\n this.updatePanels();\n };\n\n choosePanel = (panelName: string) => {\n this.setState({\n activeKey: panelName,\n });\n this.updatePanels();\n };\n\n /** 更新被展示的 panel, 根据 panel 的 show 方法 */\n updatePanels = () => {\n const { pluginCtx } = this.props;\n const { node, panels } = this.state;\n const newPanels = panels;\n let val: {\n panels: CRightPanelItem[];\n displayPanels: CRightPanelItem[];\n } = { panels: [], displayPanels: [] };\n if (node) {\n const panelParams: RightPanelOptions = { node: node, pluginCtx, activeTab: this.state.activeKey };\n const displayPanels = newPanels.filter((panel) => {\n if (panel.show === undefined) {\n return true;\n } else {\n return panel.show(panelParams);\n }\n });\n // 获取物料中的自定义 panel\n const customTabs = node.material?.value.advanceCustom?.rightPanel?.customTabs || [];\n displayPanels.concat(customTabs);\n val = {\n panels: newPanels,\n displayPanels,\n };\n } else {\n val = {\n panels: newPanels,\n displayPanels: [],\n };\n }\n this.setState(val);\n return val;\n };\n\n onNodeChange = ({ node }: any) => {\n const { pluginCtx } = this.props;\n const { panels, activeKey } = this.state;\n const panelParams: RightPanelOptions = { node: node, pluginCtx, activeTab: this.state.activeKey };\n const displayPanels = panels.filter((panel) => {\n if (panel.show === undefined) {\n return true;\n } else {\n return panel.show(panelParams);\n }\n });\n const firstPanelKey = displayPanels.find((_, index) => index === 0)?.key || '';\n const isExitsCurrent = displayPanels.find((el) => el.key === activeKey);\n if (!isExitsCurrent) {\n this.setState({\n activeKey: firstPanelKey,\n node,\n displayPanels,\n });\n } else {\n this.setState({\n node,\n displayPanels,\n });\n }\n };\n\n componentDidMount(): void {\n const { pluginCtx } = this.props;\n pluginCtx.globalEmitter.on('onSelectNodeChange', (args) => {\n setTimeout(() => {\n this.onNodeChange(args);\n }, 10);\n });\n pluginCtx.pageModel.emitter.on('*', () => {\n const currentSelectNode = pluginCtx.engine.getActiveNode();\n this.onNodeChange({ node: currentSelectNode });\n });\n const { displayPanels } = this.updatePanels();\n const firstPanelKey = displayPanels.find((_, index) => index === 0)?.key || '';\n const isExitsCurrent = displayPanels.find((el) => el.key === this.state.activeKey);\n\n if (!isExitsCurrent) {\n this.setState({\n activeKey: firstPanelKey,\n });\n }\n\n pluginCtx.pluginReadyOk();\n }\n\n render() {\n const { displayPanels, node, activeKey } = this.state;\n const { pluginCtx } = this.props;\n if (!node) {\n return (\n <div style={{ overflow: 'hidden' }}>\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={'Please select a node from left view'} />\n </div>\n );\n }\n const panelParams = { node: node, pluginCtx, activeTab: this.state.activeKey };\n const customSetterMap = pluginCtx.config?.customPropertySetterMap;\n\n return (\n <CRightPanelContext.Provider\n value={{\n customSetterMap: { ...customSetterMap },\n defaultSetterConfig: {},\n nodeId: this.state.node?.id,\n nodeModel: this.state.node as any,\n pluginCtx: this.props.pluginCtx,\n }}\n >\n <div className={styles.rightPanelContainer}>\n <Tabs\n activeKey={activeKey}\n tabPosition=\"top\"\n style={{\n flex: 1,\n height: '100%',\n }}\n onChange={(activeKey) => {\n this.setState({\n activeKey,\n });\n }}\n items={displayPanels.map((p) => {\n return {\n label: (\n <div style={{ padding: '0 10px' }}>{typeof p.name === 'string' ? p.name : p.name?.(panelParams)}</div>\n ),\n key: p.key,\n children: p.view(panelParams),\n };\n })}\n />\n </div>\n </CRightPanelContext.Provider>\n );\n }\n}\n","import React from 'react';\nimport { CPlugin } from '../../core/pluginManager';\nimport { RightPanel } from './view';\nimport { RightPanelConfig } from './type';\n\nconst PLUGIN_NAME = 'RightPanel';\nexport const RightPanelPlugin: CPlugin<RightPanelConfig> = () => {\n const uiHandle = React.createRef<RightPanel>();\n return {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const workbench = ctx.getWorkbench();\n workbench.replaceRightView(<RightPanel ref={uiHandle} pluginCtx={ctx} />);\n },\n async destroy() {},\n export: () => {\n return uiHandle?.current;\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n };\n};\n\nRightPanelPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const zh_CN: Record<string, any> = {\n pluginName: '全局状态',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Global State',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","/* eslint-disable react-refresh/only-export-components */\nimport { useEffect, useRef } from 'react';\nimport { DatabaseOutlined } from '@ant-design/icons';\nimport { CPlugin, CPluginCtx } from '../../core/pluginManager';\nimport { withTranslation } from 'react-i18next';\nimport localize from './localize';\nimport { MonacoEditor, MonacoEditorInstance } from '../../component/MonacoEditor';\nimport styles from './style.module.scss';\n\nconst PLUGIN_NAME = 'GlobalState';\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\ntype GlobalStatePanelProps = {\n pluginCtx: CPluginCtx;\n};\n\nlet triggerChangeBySelf = false;\n\nconst GlobalStatePanel = (props: GlobalStatePanelProps) => {\n const { pluginCtx } = props;\n const rootState = pluginCtx.pageModel.value.componentsTree.value.state || {};\n // 表示是不是自己触发的值更新\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n useEffect(() => {\n editorRef?.current?.setValue(JSON.stringify(rootState, null, 2));\n // 正常情况下, 只有 reloadPage 才需要同步数据\n pluginCtx.pageModel.emitter.on('onReloadPage', () => {\n if (triggerChangeBySelf) {\n triggerChangeBySelf = false;\n return;\n }\n editorRef.current?.setValue(JSON.stringify(pluginCtx.pageModel.value.componentsTree.value.state, null, 2));\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onValueChange = (newValStr?: string) => {\n try {\n const newVal = JSON.parse(newValStr || '{}');\n pluginCtx.pageModel.value.componentsTree.value.state = newVal;\n triggerChangeBySelf = true;\n pluginCtx.pageModel.value.componentsTree.updateValue();\n } catch (e) {\n console.warn(e);\n }\n };\n\n return (\n <div className={styles.box}>\n <MonacoEditor\n initialValue={JSON.stringify(pluginCtx.pageModel.value.componentsTree.value.state, null, 2)}\n language={'json'}\n options={{\n automaticLayout: true,\n tabSize: 2,\n minimap: { enabled: false },\n quickSuggestions: false,\n suggestOnTriggerCharacters: false,\n folding: false,\n comments: {},\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n beforeMount={() => {\n // monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n // validate: true,\n // allowComments: true, // 启用注释\n // });\n }}\n onChange={onValueChange}\n />\n </div>\n );\n};\n\nexport const GlobalStatePanelPlugin: CPlugin = {\n name: PLUGIN_NAME,\n async init(ctx) {\n const { i18n } = ctx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n const GlobalStatePanelWithLocalize = withTranslation(i18nNamespace)(GlobalStatePanel);\n const Title = withTranslation(i18nNamespace)(({ t }) => <>{t('pluginName')}</>);\n const workbench = ctx.getWorkbench();\n workbench.addLeftPanel({\n title: <Title />,\n name: PLUGIN_NAME,\n icon: <DatabaseOutlined />,\n render: <GlobalStatePanelWithLocalize pluginCtx={ctx} />,\n });\n },\n async destroy() {},\n export: () => {\n return {};\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\nGlobalStatePanelPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","import React, { useRef, useState } from 'react';\nimport { Modal } from 'antd';\nimport { MonacoEditor, MonacoEditorInstance } from '../../component/MonacoEditor';\nimport { CPage } from '@chamn/model';\nimport { waitReactUpdate } from '../../utils';\nimport { DesignerPluginInstance } from '../Designer/type';\nimport { EnginContext } from '@/type';\n\nexport type DisplaySourceSchemaProps = {\n pageModel: CPage;\n engineCtx: EnginContext;\n children: React.ReactNode;\n};\n\nexport const DisplaySourceSchema = (props: DisplaySourceSchemaProps) => {\n const initialValue = props.pageModel.export();\n const { engineCtx } = props;\n const [open, setOpen] = useState(false);\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n return (\n <>\n <div\n onClick={() => {\n setOpen(true);\n }}\n >\n {props.children}\n </div>\n <Modal\n open={open}\n title=\"Source Schema\"\n width={'100%'}\n onCancel={() => setOpen(false)}\n onOk={async () => {\n setOpen(false);\n const newPage = editorRef.current?.getValue();\n if (!newPage) {\n return;\n }\n const newPageJSON = JSON.parse(newPage);\n props.pageModel.updatePage(newPageJSON);\n await waitReactUpdate();\n const currentSelectNode = engineCtx.engine.getActiveNode();\n const designerPluginInstance = await engineCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n const nodeId = currentSelectNode?.id || '';\n designerPluginInstance?.ctx.emitter.on('ready', () => {\n const designerExport = designerPluginInstance.export;\n designerExport.selectNode(nodeId);\n });\n if (designerPluginInstance) {\n const designerExport = designerPluginInstance.export;\n designerExport.selectNode(nodeId);\n }\n }}\n style={{\n height: 'calc(100vh - 50px)',\n top: '25px',\n }}\n destroyOnClose\n >\n <div style={{ width: '100%', height: 'calc(100vh - 200px)' }}>\n <MonacoEditor\n initialValue={JSON.stringify(initialValue, null, 2)}\n language={'json'}\n options={{\n automaticLayout: true,\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n />\n </div>\n </Modal>\n </>\n );\n};\n","import { waitReactUpdate } from '@/utils';\nimport { CPageDataType } from '@chamn/model';\nimport { cloneDeep, debounce } from 'lodash-es';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { HistoryPluginType } from './type';\n\nconst PLUGIN_NAME = 'History' as const;\n\nexport const HistoryPlugin: HistoryPluginType = (ctx) => {\n const CTX: CPluginCtx | null = ctx;\n const dataStore = {\n historyRecords: [] as CPageDataType[],\n currentStepIndex: 0,\n };\n\n let originalPageRecord: CPageDataType | null = null;\n const pageSchema = ctx.pageModel.export();\n originalPageRecord = pageSchema;\n dataStore.historyRecords.push(pageSchema);\n\n const loadPage = async (page: CPageDataType) => {\n if (!CTX) {\n return;\n }\n CTX.pageModel.reloadPage(page);\n await waitReactUpdate();\n };\n\n const resObj = {\n addStep: () => {\n const { currentStepIndex, historyRecords } = dataStore;\n const newPage = ctx.pageModel.export();\n if (currentStepIndex !== historyRecords.length - 1) {\n dataStore.historyRecords = historyRecords.slice(0, currentStepIndex + 1);\n }\n dataStore.historyRecords.push(newPage);\n dataStore.currentStepIndex = historyRecords.length - 1;\n },\n reset: async () => {\n const ctx = CTX;\n if (!ctx) {\n console.warn('plugin ctx is null, pls check it');\n return;\n }\n if (!originalPageRecord) {\n return;\n }\n dataStore.historyRecords = [];\n loadPage(originalPageRecord);\n },\n preStep: () => {\n const { currentStepIndex, historyRecords } = dataStore;\n if (!resObj.canGoPreStep()) {\n return;\n }\n const newIndex = currentStepIndex - 1;\n dataStore.currentStepIndex = newIndex;\n const page = cloneDeep(historyRecords[newIndex]);\n loadPage(page);\n },\n nextStep: () => {\n if (!resObj.canGoNextStep()) {\n return;\n }\n const { currentStepIndex, historyRecords } = dataStore;\n const newIndex = currentStepIndex + 1;\n dataStore.currentStepIndex = newIndex;\n const page = cloneDeep(historyRecords[newIndex]);\n return loadPage(page);\n },\n canGoPreStep: () => {\n const { currentStepIndex } = dataStore;\n if (currentStepIndex <= 0) {\n return false;\n }\n return true;\n },\n canGoNextStep: () => {\n const { currentStepIndex, historyRecords } = dataStore;\n if (currentStepIndex >= historyRecords.length - 1) {\n return false;\n }\n return true;\n },\n };\n\n const debounceAddStep = debounce(() => {\n resObj.addStep();\n }, 500);\n\n return {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n ctx.pageModel.emitter.on('onNodeChange', () => {\n debounceAddStep();\n });\n ctx.pageModel.emitter.on('onPageChange', () => {\n resObj.addStep();\n });\n ctx.pluginReadyOk();\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return resObj;\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n };\n};\n\nHistoryPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false;\n\n// Special Keys\nexport const _keyMap: Record<string, number> = {\n backspace: 8,\n '⌫': 8,\n tab: 9,\n clear: 12,\n enter: 13,\n '↩': 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n ins: 45,\n insert: 45,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n capslock: 20,\n num_0: 96,\n num_1: 97,\n num_2: 98,\n num_3: 99,\n num_4: 100,\n num_5: 101,\n num_6: 102,\n num_7: 103,\n num_8: 104,\n num_9: 105,\n num_multiply: 106,\n num_add: 107,\n num_enter: 108,\n num_subtract: 109,\n num_decimal: 110,\n num_divide: 111,\n '⇪': 20,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': isff ? 173 : 189,\n '=': isff ? 61 : 187,\n ';': isff ? 59 : 186,\n \"'\": 222,\n '[': 219,\n ']': 221,\n '\\\\': 220,\n};\n\n// Modifier Keys\nexport const _modifier: any = {\n // shiftKey\n '⇧': 16,\n shift: 16,\n // altKey\n '⌥': 18,\n alt: 18,\n option: 18,\n // ctrlKey\n '⌃': 17,\n ctrl: 17,\n control: 17,\n // metaKey\n '⌘': 91,\n cmd: 91,\n command: 91,\n};\n\nexport const modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n\n shiftKey: 16,\n ctrlKey: 17,\n altKey: 18,\n metaKey: 91,\n};\n\nexport const _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false,\n};\n\n// F1~F12 special key\nfor (let k = 1; k < 20; k++) {\n _keyMap[`f${k}`] = 111 + k;\n}\n\n// 返回键码\nexport const defaultGetCode = (x: string) =>\n _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n\nconst getKey = (x: number) => Object.keys(_keyMap).find((k) => _keyMap[k] === x);\nconst getModifier = (x: number) => Object.keys(_modifier).find((k) => _modifier[k] === x);\n\nexport const getKeyString = (c: number) => {\n return getKey(c) || getModifier(c) || String.fromCharCode(c);\n};\n","import { defaultGetCode, getKeyString } from './keymap';\n\nexport class HotKeysManager {\n private splitStr = '_';\n // 按下的键盘按键列表\n private downKeyCodeList: number[] = [];\n private elements: HTMLElement[];\n private disposeEventCbList: (() => void)[] = [];\n\n /** 是否禁用热键 */\n private disable: boolean = false;\n\n /** 快捷操作按键记录 */\n private hotActionMap: Record<string, () => void> = {};\n\n constructor(options: { elements: HTMLElement[]; customGetKeyCodeByEvent?: (event: KeyboardEvent) => number }) {\n this.elements = options.elements;\n this.init();\n }\n\n setDisable(status: boolean) {\n this.disable = status;\n }\n\n init() {\n // 处理 keyup , 移除按键记录\n const disposeListCb = this.elements.map((el) => this.registerKeyEvent(el));\n this.disposeEventCbList = [...disposeListCb];\n }\n\n addElement(el: HTMLElement) {\n const disposeCb = this.registerKeyEvent(el);\n this.disposeEventCbList.push(disposeCb);\n }\n\n registerKeyEvent(el: HTMLElement) {\n const triggerAction = this.getTriggerHotkeyDebounce();\n // 收集所有的 keys\n const keydownCb = (event: KeyboardEvent) => {\n // 表单控件过滤 默认表单控件不触发快捷键\n if (this.filterInputElement(event)) return;\n\n const key = event.keyCode || event.which || event.charCode;\n if (!this.downKeyCodeList.includes(key)) {\n this.downKeyCodeList.push(key);\n }\n triggerAction();\n };\n el?.addEventListener('keydown', keydownCb);\n\n const keyupCb = (event: KeyboardEvent) => {\n setTimeout(() => {\n // 表单控件过滤 默认表单控件不触发快捷键\n if (this.filterInputElement(event)) return;\n\n const key = event.keyCode || event.which || event.charCode;\n\n const findKeyIndex = this.downKeyCodeList.findIndex((el) => el === key);\n if (findKeyIndex >= 0) {\n this.downKeyCodeList.splice(findKeyIndex, 1);\n }\n\n // 用户释放了所有的按键\n }, 0);\n };\n el?.addEventListener('keyup', keyupCb);\n\n const clearKeyDownList = () => {\n this.downKeyCodeList = [];\n };\n // 修正某些意外情况下,文档失焦,导致快捷键失效等情况\n window?.addEventListener('blur', clearKeyDownList);\n\n return () => {\n el.removeEventListener('keydown', keydownCb);\n el.removeEventListener('keyup', keyupCb);\n window?.removeEventListener('blur', clearKeyDownList);\n };\n }\n\n /** 添加快捷操作 */\n addHotAction(keys: (number | string)[], cb: () => void) {\n const newKeysCode = keys.map((el) => {\n if (typeof el !== 'number') {\n return this.getKeyCodeByLabel(el);\n } else {\n return el;\n }\n });\n this.hotActionMap[newKeysCode.join(this.splitStr)] = () => {\n // 可以自做一些拦截操作\n if (this.disable) {\n return;\n }\n cb();\n };\n }\n\n triggerHotKey() {\n const hotActionId = this.downKeyCodeList.join(this.splitStr);\n // 本次快捷操作回合已经触发过,跳过触发\n const cb = this.hotActionMap[hotActionId];\n\n cb?.();\n }\n\n /**\n * @param time ms\n * @returns\n */\n getTriggerHotkeyDebounce() {\n return this.triggerHotKey.bind(this);\n }\n\n /** 根据可识别的字符串获取对应的键码 */\n getKeyCodeByLabel(label: string) {\n return defaultGetCode(label);\n }\n\n getKeyString(code: number) {\n return getKeyString(code);\n }\n\n /**\n * 表单控件控件判断\n * 如果是编辑控件返回 true\n * hotkey is effective only when filter return true\n * @param event\n * @returns\n */\n filterInputElement(event: KeyboardEvent) {\n const target: any = event.target || event.srcElement;\n if (!target) {\n return false;\n }\n const { tagName } = target as HTMLInputElement;\n let flag = false;\n const isInput =\n tagName === 'INPUT' &&\n !['checkbox', 'radio', 'range', 'button', 'file', 'reset', 'submit', 'color'].includes(target.type);\n // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n if (\n (target as HTMLDivElement).isContentEditable ||\n ((isInput || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly)\n ) {\n flag = true;\n }\n return flag;\n }\n\n destroy() {\n this.disposeEventCbList.forEach((el) => el());\n }\n}\n","export const zh_CN: Record<string, any> = {\n pluginName: '快捷键',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Hot Keys',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","import { CPluginCtx } from '@/core/pluginManager';\nimport { DesignerPluginInstance } from '../Designer/type';\nimport { CNode } from '@chamn/model';\nimport { HistoryPluginInstance } from '../History/type';\nimport { message } from 'antd';\n\nexport const actionMap = {\n deleteNode: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n if (activeNode) {\n const flag = await designer?.export?.deleteNode(activeNode.id);\n if (!flag) {\n message.error('该节点不能删除');\n }\n return flag;\n }\n },\n copyNode: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n if (activeNode) {\n const flag = await designer?.export?.copyNode(activeNode.id);\n return flag;\n }\n },\n moveToUp: async (ctx: CPluginCtx) => {\n const res = await actionMap.moveToSiblingUp(ctx);\n if (res) {\n return;\n }\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n const parentNode = activeNode?.parent;\n if (parentNode && parentNode.nodeType !== 'PAGE') {\n const flag = await designer?.export?.selectNode(parentNode.id);\n return flag;\n }\n },\n moveToSiblingUp: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n const parentNode = activeNode?.parent;\n if (parentNode?.nodeType === 'PAGE' || !activeNode) {\n return;\n }\n const parentNodeValue = parentNode?.value as any;\n const children: CNode[] = parentNodeValue.children || parentNodeValue.value;\n const targetIndex = children.findIndex((el) => el.id === activeNode.id);\n const nextIndex = targetIndex - 1;\n if (nextIndex < 0) {\n return;\n }\n const child = children?.[nextIndex] as CNode;\n if (child && (child as any).id) {\n return await designer?.export?.selectNode(child.id);\n }\n },\n moveToDown: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n const children = activeNode?.value.children;\n const child = children?.[0] as CNode;\n if (child && (child as any).id) {\n return await designer?.export?.selectNode(child.id);\n }\n\n return await actionMap.moveToSiblingDown(ctx);\n },\n moveToSiblingDown: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n\n const activeNode = ctx.engine.getActiveNode();\n const parentNode = activeNode?.parent;\n if (parentNode?.nodeType === 'PAGE' || !activeNode) {\n return;\n }\n const parentNodeValue = parentNode?.value as any;\n const children: CNode[] = parentNodeValue.children || parentNodeValue.value;\n const targetIndex = children.findIndex((el) => el.id === activeNode.id);\n const nextIndex = targetIndex + 1;\n if (nextIndex >= children.length) {\n return;\n }\n const child = children?.[nextIndex] as CNode;\n if (child && (child as any).id) {\n return await designer?.export?.selectNode(child.id);\n }\n },\n redo: async (ctx: CPluginCtx) => {\n const historyStack = await ctx.pluginManager.get<HistoryPluginInstance>('History');\n if (historyStack?.export.canGoNextStep()) {\n historyStack?.export.nextStep();\n return true;\n }\n },\n undo: async (ctx: CPluginCtx) => {\n const historyStack = await ctx.pluginManager.get<HistoryPluginInstance>('History');\n if (historyStack?.export.canGoPreStep()) {\n historyStack?.export.preStep();\n return true;\n }\n },\n};\n","import { DesignerPluginInstance } from '../Designer/type';\nimport { HotKeysManager } from './hotKeyManager';\nimport localize from './localize';\nimport { actionMap } from './action';\nimport { HotKeysPluginType } from './type';\n\nconst PLUGIN_NAME = 'Hotkeys' as const;\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\nexport const HotkeysPlugin: HotKeysPluginType = {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const { i18n } = ctx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n\n const subWin = designer?.export.getDesignerWindow();\n\n const hotkeyManager = new HotKeysManager({\n elements: [window.document.body, subWin!.document.body],\n });\n\n ctx.engine.pageModel.emitter.on('onReloadPage', () => {\n const subWin = designer?.export.getDesignerWindow();\n setTimeout(() => {\n hotkeyManager.addElement(subWin!.document.body);\n }, 1000);\n });\n\n hotkeyManager.addHotAction(['ctrl', 'c'], () => {\n actionMap.copyNode(ctx);\n });\n\n hotkeyManager.addHotAction(['ctrl', 'z'], () => {\n actionMap.undo(ctx);\n });\n\n hotkeyManager.addHotAction(['ctrl', 'shift', 'z'], () => {\n actionMap.redo(ctx);\n });\n\n hotkeyManager.addHotAction(['up'], () => {\n actionMap.moveToUp(ctx);\n });\n\n hotkeyManager.addHotAction(['w'], () => {\n actionMap.moveToUp(ctx);\n });\n\n hotkeyManager.addHotAction(['shift', 'w'], () => {\n actionMap.moveToSiblingUp(ctx);\n });\n\n hotkeyManager.addHotAction(['down'], () => {\n actionMap.moveToDown(ctx);\n });\n\n hotkeyManager.addHotAction(['s'], () => {\n actionMap.moveToDown(ctx);\n });\n\n hotkeyManager.addHotAction(['shift', 's'], () => {\n actionMap.moveToSiblingDown(ctx);\n });\n\n hotkeyManager.addHotAction(['backspace'], () => {\n actionMap.deleteNode(ctx);\n });\n (ctx as any).hotkeyManager = hotkeyManager;\n ctx.pluginReadyOk();\n },\n async destroy(ctx) {\n const hotkeyManager: HotKeysManager = (ctx as any).hotkeyManager;\n hotkeyManager?.destroy();\n },\n export: (ctx) => {\n return {\n /** 注册快捷操作 */\n addHotAction: (actionKey: (string | number)[], cb: () => void) => {\n const hotkeyManager: HotKeysManager = (ctx as any).hotkeyManager;\n hotkeyManager.addHotAction(actionKey, cb);\n },\n disable: (status: boolean) => {\n const hotkeyManager: HotKeysManager = (ctx as any).hotkeyManager;\n hotkeyManager.setDisable(status);\n },\n };\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\n/** 必须 */\nHotkeysPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","/* eslint-disable react-refresh/only-export-components */\nimport { CPlugin } from '../core/pluginManager';\nimport { ComponentLibPlugin } from './ComponentLibrary';\nimport { DesignerPlugin } from './Designer';\nimport { OutlineTreePlugin } from './OutlineTree';\nimport { RightPanelPlugin } from './RightPanel';\nimport { GlobalStatePanelPlugin } from './GlobalStatePanel';\nimport { DisplaySourceSchema } from './DisplaySourceSchema';\nimport { HistoryPlugin } from './History';\nimport { HotkeysPlugin } from './Hotkeys';\n\nexport const DEFAULT_PLUGIN_LIST: CPlugin[] = [\n DesignerPlugin,\n OutlineTreePlugin,\n ComponentLibPlugin,\n GlobalStatePanelPlugin,\n RightPanelPlugin,\n HistoryPlugin,\n HotkeysPlugin,\n];\n\nexport {\n DesignerPlugin,\n ComponentLibPlugin,\n RightPanelPlugin,\n OutlineTreePlugin,\n GlobalStatePanelPlugin,\n HistoryPlugin,\n DisplaySourceSchema,\n HotkeysPlugin,\n};\n\n/** 组件唯一名 */\nexport const DEFAULT_PLUGIN_NAME_MAP = {\n HotkeysPlugin: HotkeysPlugin['PLUGIN_NAME']!,\n ComponentLibPlugin: ComponentLibPlugin['PLUGIN_NAME']!,\n RightPanelPlugin: RightPanelPlugin['PLUGIN_NAME']!,\n GlobalStatePanelPlugin: GlobalStatePanelPlugin['PLUGIN_NAME']!,\n HistoryPlugin: HistoryPlugin['PLUGIN_NAME']!,\n DesignerPlugin: DesignerPlugin['PLUGIN_NAME']!,\n OutlineTreePlugin: OutlineTreePlugin['PLUGIN_NAME']!,\n};\n\nexport * from './AdvancePanel/index';\nexport * from './ComponentLibrary/index';\nexport * from './ComponentStatePanel/index';\nexport * from './Designer/index';\nexport * from './DisplaySourceSchema/index';\nexport * from './GlobalStatePanel/index';\nexport * from './History';\nexport * from './OutlineTree';\nexport * from './PropertyPanel';\nexport * from './RightPanel';\nexport * from './RightPanel/type';\nexport * from './VisualPanelPlus';\nexport * from './Hotkeys';\n","import { DesignerPluginInstance } from '@/plugins/Designer/type';\nimport { EnginContext } from '@/type';\nimport { BorderOutlined, MobileOutlined } from '@ant-design/icons';\nimport { InputNumber, Segmented, Space } from 'antd';\nimport { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nexport const DesignerSizer = (props: { ctx: EnginContext }) => {\n const designerRef = useRef<DesignerPluginInstance>();\n\n const [currentSize, setCurrentSize] = useState('AUTO');\n const [width, setWith] = useState(1200);\n const getSubWindowWidth = useCallback(() => {\n const designer = designerRef.current;\n const subWin = designer?.export.getDesignerWindow();\n const w = subWin?.innerWidth;\n setWith(Number(w));\n }, []);\n\n useEffect(() => {\n let resizeHandler: any;\n let subWin: Window | null;\n props.ctx.pluginManager.onPluginReadyOk('Designer').then((designer: DesignerPluginInstance) => {\n designerRef.current = designer;\n subWin = designer?.export.getDesignerWindow();\n resizeHandler = () => {\n setWith(Number(subWin?.innerWidth));\n };\n subWin?.addEventListener('resize', resizeHandler);\n getSubWindowWidth();\n });\n\n return () => {\n subWin?.removeEventListener('resize', resizeHandler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const setCanvasWidth = useCallback(\n debounce((w: number) => {\n const designer = designerRef.current;\n designer?.export.setCanvasWidth(w);\n }, 100),\n []\n );\n return (\n <Space>\n <Segmented\n defaultValue={currentSize}\n onChange={(value) => {\n const designer = designerRef.current;\n if (!designer) {\n return;\n }\n if (value === 'AUTO') {\n designer.export.setCanvasWidth('100%');\n getSubWindowWidth();\n } else if (value === 'IPAD') {\n designer.export.setCanvasWidth(768);\n } else {\n designer.export.setCanvasWidth(350);\n }\n setCurrentSize(value);\n }}\n options={[\n {\n label: (\n <span>\n <span\n onClick={() => {\n const designer = designerRef.current;\n designer?.export.setCanvasWidth('100%');\n getSubWindowWidth();\n }}\n >\n Auto\n </span>\n {currentSize === 'AUTO' && (\n <InputNumber\n size=\"small\"\n style={{\n marginLeft: '10px',\n }}\n controls={false}\n changeOnWheel\n suffix=\"px\"\n value={width}\n min={350}\n max={1920}\n onChange={(val) => {\n setWith(Number(val));\n setCanvasWidth(Number(val));\n }}\n ></InputNumber>\n )}\n </span>\n ),\n value: 'AUTO',\n },\n {\n label: <BorderOutlined />,\n value: 'IPAD',\n },\n {\n label: <MobileOutlined />,\n value: 'MOBILE',\n },\n ]}\n />\n </Space>\n );\n};\n","import { CMaterialPropsType } from '@chamn/model';\n\nexport const containerProps: CMaterialPropsType<'FastLayoutSetter'> = [\n {\n name: 'style',\n title: '布局',\n valueType: 'string',\n setters: [\n {\n componentName: 'FastLayoutSetter',\n initialValue: {},\n hiddenLabel: true,\n props: {},\n },\n ],\n },\n];\n","import { CMaterialPropsType, CMaterialType, DEFAULT_EVENT_LIST, HTMl_TAGS } from '@chamn/model';\nimport { capitalize } from 'lodash-es';\nimport { containerProps } from './container.meta';\n\nconst customAttributesMeta: CMaterialPropsType[number] = {\n name: '$$attributes',\n title: '属性',\n valueType: 'object',\n setters: [\n {\n componentName: 'ArraySetter',\n props: {\n collapse: {\n open: true,\n },\n sortLabelKey: 'key',\n item: {\n setters: [\n {\n componentName: 'ShapeSetter',\n props: {\n elements: [\n {\n name: 'key',\n title: '属性名',\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'value',\n title: '值',\n valueType: 'string',\n setters: ['StringSetter', 'NumberSetter', 'JSONSetter', 'FunctionSetter', 'ExpressionSetter'],\n },\n ],\n },\n initialValue: {},\n },\n ],\n initialValue: {},\n },\n },\n initialValue: [],\n },\n ],\n};\n\nconst groupName = '内置组件';\nconst categoryName = '原子组件';\n\nconst INNER_META_VERSION = '1.0.0';\nconst PKG_NAME = 'CHAMELEON_INNER_PKG';\n\nconst htmlNativeComponentMeta = HTMl_TAGS.map((tag) => {\n const DivMeta: CMaterialType = {\n title: capitalize(tag),\n componentName: tag,\n props: [customAttributesMeta],\n snippets: [],\n npm: {\n name: tag,\n package: PKG_NAME,\n version: INNER_META_VERSION,\n },\n };\n\n return DivMeta;\n});\n\nconst BaseComponentMeta: CMaterialType[] = [\n {\n title: '块',\n componentName: 'CBlock',\n props: [\n {\n name: 'children',\n title: '文本',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n groupName: groupName,\n snippets: [\n {\n title: '块',\n snapshotText: 'Block',\n category: categoryName,\n schema: {\n props: {},\n css: {\n value: [\n {\n state: 'normal',\n media: [],\n text: 'background: white ; width: 100%; height: 100px',\n },\n ],\n },\n },\n },\n ],\n },\n {\n title: '容器',\n componentName: 'CContainer',\n isContainer: true,\n props: [...(containerProps as any), customAttributesMeta],\n groupName: groupName,\n snippets: [\n {\n title: '容器',\n snapshotText: 'Con',\n category: categoryName,\n schema: {\n css: {\n value: [\n {\n state: 'normal',\n media: [],\n text: 'background: white;width: 100%;',\n },\n ],\n },\n },\n },\n ],\n },\n {\n title: '图片',\n componentName: 'CImage',\n props: [\n {\n name: 'src',\n title: '地址',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n advanceCustom: {\n wrapComponent: (comp) => {\n return (props: any) => {\n const Comp = comp;\n return <Comp {...props} style={{ ...(props.style || {}), userSelect: 'none', WebkitUserDrag: 'none' }} />;\n };\n },\n },\n\n groupName: groupName,\n snippets: [\n {\n title: '图片',\n snapshotText: 'Img',\n category: categoryName,\n schema: {\n css: {\n value: [\n {\n text: 'background:white;width:500px;height:300px;overflow:auto;',\n media: [],\n state: 'normal',\n },\n ],\n },\n props: {\n src: 'https://images.unsplash.com/photo-1584080277544-2db5b2c2d9dd?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80',\n },\n },\n },\n ],\n },\n {\n title: '视频',\n componentName: 'CVideo',\n props: [\n {\n name: 'src',\n title: '地址',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n {\n name: 'autoPlay',\n title: '自动播放',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'controls',\n title: '控制面板',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n fixedProps: {\n autoPlay: false,\n },\n advanceCustom: {\n wrapComponent: (Comp) => {\n return (props) => {\n // 原生的控制面板会阻断页面级别的事件监听,导致拖拽失效,这里在编辑态禁用 video 的控制面板相关事件触发\n return (\n <div\n style={{\n ...props.style,\n display: 'inline-flex',\n }}\n >\n <Comp\n {...props}\n style={{\n ...props.style,\n pointerEvents: 'none',\n }}\n ></Comp>\n </div>\n );\n };\n },\n },\n groupName: groupName,\n snippets: [\n {\n title: '视频',\n snapshotText: 'Video',\n category: categoryName,\n schema: {\n props: {\n src: 'https://vjs.zencdn.net/v/oceans.mp4',\n },\n css: {\n value: [\n {\n state: 'normal',\n media: [],\n text: 'background:white;width:300px;height:150px;',\n },\n ],\n },\n },\n },\n ],\n },\n {\n title: '音频',\n groupName: groupName,\n componentName: 'CAudio',\n props: [\n {\n name: 'src',\n title: '地址',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n {\n name: 'autoPlay',\n title: '自动播放',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'controls',\n title: '控制面板',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n advanceCustom: {\n wrapComponent: () => {\n return (props) => {\n return (\n <div\n style={{\n display: 'inline-block',\n fontSize: 0,\n }}\n >\n <audio\n {...props}\n style={{\n pointerEvents: 'none',\n ...props.style,\n }}\n ></audio>\n </div>\n );\n };\n },\n },\n snippets: [\n {\n title: '音频',\n snapshotText: 'Audio',\n category: categoryName,\n schema: {\n props: {\n src: 'https://vjs.zencdn.net/v/oceans.mp4',\n controls: true,\n },\n },\n },\n ],\n },\n {\n title: '文本',\n componentName: 'CText',\n groupName: groupName,\n props: [\n {\n name: 'content',\n title: '内容',\n valueType: 'string',\n setters: ['TextAreaSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n snippets: [\n {\n title: '文本',\n snapshotText: 'Text',\n category: categoryName,\n schema: {\n props: {\n content: 'text',\n },\n },\n },\n ],\n },\n {\n title: 'Canvas',\n componentName: 'CCanvas',\n props: [\n {\n name: 'afterMount',\n title: '渲染之后',\n valueType: 'function',\n setters: ['FunctionSetter', 'ExpressionSetter', 'ActionFlowSetter' as any],\n },\n {\n name: 'beforeDestroy',\n title: '销毁之前',\n valueType: 'function',\n setters: ['FunctionSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n groupName: groupName,\n advanceCustom: {\n onNewAdd: async (node) => {\n const props = node.getPlainProps();\n const id = Math.random().toString(32).slice(3, 9);\n props.$$attributes = [\n {\n key: 'id',\n value: id,\n },\n {\n key: 'style',\n value: {\n display: 'block',\n margin: '0 auto',\n },\n },\n ];\n props.afterMount.value = props.afterMount.value.replace('$[id]', id);\n node.updateWithPlainObj({\n props,\n });\n return {\n addNode: node,\n };\n },\n },\n snippets: [\n {\n title: '画布',\n snapshotText: 'Cavs',\n category: categoryName,\n schema: {\n props: {\n width: '600px',\n height: '150px',\n style: {\n margin: '0 auto',\n },\n afterMount: {\n type: 'FUNCTION',\n value: `\n function run () {\n var ctx = document.getElementById(\"$[id]\").getContext(\"2d\");\n ctx.font = \"48px serif\";\n ctx.fillText(\"Hello Canvas\", 10, 50);\n }\n `,\n },\n },\n },\n },\n ],\n },\n {\n title: 'HTML 标签',\n componentName: 'CNativeTag',\n props: [\n {\n name: 'htmlTag',\n title: '标签名',\n valueType: 'string',\n setters: [\n {\n componentName: 'SelectSetter',\n props: {\n options: HTMl_TAGS.map((tag) => {\n return {\n name: tag,\n value: tag,\n };\n }),\n },\n },\n ],\n },\n customAttributesMeta,\n ],\n isContainer: true,\n groupName: groupName,\n snippets: [\n {\n title: 'HTML',\n snapshotText: 'HTML',\n category: categoryName,\n schema: {\n props: {\n htmlTag: 'div',\n },\n },\n },\n ],\n },\n];\nBaseComponentMeta.forEach((el) => {\n el.events = DEFAULT_EVENT_LIST;\n});\n\nconst BaseComponentMetaWithVersion = BaseComponentMeta.map((el) => {\n return {\n ...el,\n npm: {\n name: el.componentName,\n package: PKG_NAME,\n version: INNER_META_VERSION,\n },\n };\n});\n\nexport const InnerComponentMeta = [...BaseComponentMetaWithVersion, ...htmlNativeComponentMeta];\n","/* eslint-disable react-refresh/only-export-components */\nimport React from 'react';\nimport { TWidgetVisible, Workbench } from './component/Workbench';\nimport { loader } from '@monaco-editor/react';\n\nimport styles from './Engine.module.scss';\nimport i18n from './i18n/index';\nimport { PluginManager } from './core/pluginManager';\nimport mitt, { Emitter } from 'mitt';\nimport { AssetPackage, CMaterialType, CNode, CPage, CPageDataType, CRootNode, EmptyPage } from '@chamn/model';\nimport { getDefaultRender, beforeInitRender } from './utils/defaultEngineConfig';\nimport { DesignerPluginInstance } from './plugins/Designer/type';\nimport clsx from 'clsx';\nimport { AssetLoader, ComponentsType, collectVariable } from '@chamn/render';\nimport { AssetsPackageListManager } from './core/assetPackagesListManage';\nimport { flatObject } from '@chamn/render';\nimport customI18n from './i18n/index';\nimport { EngineProps } from './type';\n\nexport class Engine extends React.Component<EngineProps> {\n static version = __PACKAGE_VERSION__;\n currentSelectNode: CNode | CRootNode | null;\n\n pluginManager!: PluginManager;\n workbenchRef = React.createRef<Workbench>();\n pageSchema: CPageDataType | undefined;\n pageModel: CPage;\n material: CMaterialType[] | undefined;\n emitter: Emitter<any>;\n assetsPackageListManager: AssetsPackageListManager;\n\n workbenchConfig?: EngineProps['workbenchConfig'] = {};\n _oldHiddenWidgetConfig:\n | { hiddenTopBar: boolean | undefined; hiddenLeftPanel: boolean | undefined; hiddenRightPanel: boolean | undefined }\n | undefined;\n\n constructor(props: EngineProps) {\n super(props);\n this.pageSchema = props.schema;\n this.material = props.material;\n this.currentSelectNode = null;\n (window as any).__CHAMELEON_ENG__ = this;\n this.assetsPackageListManager = new AssetsPackageListManager(props.assetPackagesList || []);\n this.workbenchConfig = props.workbenchConfig || {};\n\n if (props.monacoEditor?.cndUrl) {\n loader.config({\n paths: {\n vs: props.monacoEditor?.cndUrl,\n },\n });\n }\n\n try {\n this.pageModel = new CPage(this.pageSchema, {\n materials: this.material || [],\n assetPackagesList: props.assetPackagesList || [],\n });\n } catch (e) {\n console.error(e);\n this.pageModel = new CPage(EmptyPage);\n }\n this.emitter = mitt();\n }\n\n updateCurrentSelectNode(node: CNode | CRootNode | null) {\n this.currentSelectNode = node;\n this.emitter.emit('onSelectNodeChange', {\n node,\n });\n }\n\n async componentDidMount() {\n (window as any).__C_ENGINE__ = this;\n const plugins = this.props.plugins;\n const pluginManager = new PluginManager({\n engine: this,\n getWorkbench: () => this.workbenchRef.current!,\n emitter: this.emitter,\n pageModel: this.pageModel,\n i18n,\n assetsPackageListManager: this.assetsPackageListManager,\n });\n this.pluginManager = pluginManager;\n // 使用默认的渲染策略\n pluginManager.customPlugin<DesignerPluginInstance>('Designer', (pluginInstance) => {\n pluginInstance.ctx.config.beforeInitRender = beforeInitRender;\n pluginInstance.ctx.config.customRender = getDefaultRender({\n components: this.props.components || {},\n renderProps: this.props.renderProps || {},\n });\n pluginInstance.ctx.config.components = this.props.components;\n return pluginInstance;\n });\n this.props.beforePluginRun?.({\n pluginManager: this.pluginManager,\n });\n\n const pList = plugins.map((p) => {\n return this.pluginManager.add(p);\n });\n\n this.props.onMount?.({\n pluginManager: this.pluginManager,\n engine: this,\n });\n\n await Promise.all(pList);\n\n this.pageModel.emitter.on('onReloadPage', () => {\n if (!this.currentSelectNode) {\n return;\n }\n const newSelectNode = this.pageModel.getNode(this.currentSelectNode?.id);\n if (newSelectNode) {\n this.updateCurrentSelectNode(newSelectNode);\n }\n });\n\n this.props.onReady?.({\n pluginManager: this.pluginManager,\n engine: this,\n });\n }\n\n getActiveNode() {\n if (!this.currentSelectNode?.id) {\n return null;\n }\n const node = this.pageModel.getNode(this.currentSelectNode.id) ?? null;\n this.currentSelectNode = node;\n return node;\n }\n\n updatePage = (page: CPageDataType) => {\n this.pageModel.updatePage(page);\n };\n\n updateMaterials = async (\n materials: CMaterialType[],\n assetPackagesList: AssetPackage[],\n options?: {\n formatComponents?: (componentMap: ComponentsType) => ComponentsType;\n }\n ) => {\n const designerPlugin = await this.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerPluginExport = designerPlugin?.export;\n\n this.pluginManager.assetsPackageListManager.setList(assetPackagesList);\n this.pageModel.assetPackagesList = this.pluginManager.assetsPackageListManager.getList();\n\n const subWin = designerPluginExport?.getDesignerWindow();\n\n if (!subWin) {\n console.warn('subWin not exits');\n return;\n }\n\n // 从子窗口获取物料对象\n const assetLoader = new AssetLoader(assetPackagesList, subWin);\n await assetLoader.load();\n const componentCollection = collectVariable(assetPackagesList, subWin);\n // 排平\n let newComponents = flatObject(componentCollection);\n if (options?.formatComponents) {\n newComponents = options.formatComponents(newComponents);\n }\n // 更新 render 中的组件库\n designerPluginExport?.updateRenderComponents(newComponents);\n this.pageModel.materialsModel.addMaterials(materials);\n this.emitter.emit('updateMaterials');\n };\n\n refresh = async () => {\n this.pageModel.reloadPage(this.pageModel.export('design'));\n };\n\n getWorkbench = () => {\n return this.workbenchRef.current;\n };\n\n /** return i18n object */\n getI18n() {\n return customI18n;\n }\n\n /** 进入预览模式 */\n async preview() {\n const oldHiddenWidgetConfig = this.workbenchRef.current?.getHiddenWidgetConfig();\n this._oldHiddenWidgetConfig = oldHiddenWidgetConfig;\n this.workbenchRef.current?.hiddenWidget({\n hiddenLeftPanel: true,\n hiddenRightPanel: true,\n hiddenTopBar: true,\n canvasFull: true,\n });\n\n const designerPlugin = await this.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerPluginExport = designerPlugin?.export;\n designerPluginExport?.setPreviewMode();\n }\n\n async existPreview() {\n this.workbenchRef.current?.hiddenWidget({\n ...(this._oldHiddenWidgetConfig || {}),\n canvasFull: false,\n });\n const designerPlugin = await this.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerPluginExport = designerPlugin?.export;\n designerPluginExport?.setEditMode();\n }\n\n hiddenWidget(config: Partial<TWidgetVisible>) {\n this.workbenchRef.current?.hiddenWidget(config || {});\n }\n\n render() {\n return (\n <div className={clsx([styles.engineContainer, this.props.className])} style={this.props.style}>\n <Workbench ref={this.workbenchRef} emitter={this.emitter} {...this.workbenchConfig} />\n </div>\n );\n }\n}\n\nexport * as plugins from './plugins';\nexport * from './plugins';\nexport * from './component';\nexport * from '@chamn/layout';\n\nexport * from './material/innerMaterial';\nexport * from './component/CustomSchemaForm/components/Setters/type';\nexport * from './utils/index';\n\n/** 注册自定义 setter */\nexport { registerCustomSetter } from './component/CustomSchemaForm/components/Form';\n\nexport * from './type';\nexport * from './core/pluginManager';\nexport * from './core/assetPackagesListManage';\n"],"names":["styleArr2Obj","val","res","item","styleObjToArr","obj","tempRes","key","styleList2Text","formatStyleProperty","styleList","isPlainObject","normalProperty","expressionProperty","allProperty","it","isExpression","formatCSSTextProperty","cssText","ast","csstree","cssList","node","getRandomStr","formatCssToNodeVal","className","state","currentStateCss","tempVal","mediaKey","formatNodeValToEditor","list","el","tempStyle","_a","getColorFromStr","str","hexColorPattern","rgbaColorPattern","rgbColorPattern","hsbColorPattern","hexColors","rgbaColors","rgbColors","hsbColors","parseBoxShadowString","colorsList","color16Map","c","Color","tempStr","shadowItem","newStr","color","newStrArr","sizeArr","i","AssetsPackageListManager","assets","__publicField","newAssets","tempList","newList","getUniqueAssetsList","idMap","beforeInitRender","iframe","subWin","getDefaultRender","options","iframeContainer","page","pageModel","ready","renderJSUrl","iframeWindow","iframeDoc","IframeReact","IframeReactDOM","CRender","pageInfo","allAssets","allLibs","collectVariable","componentsLibs","flatObject","thirdLibs","getThirdLibs","App","designRenderInstance","LOGGER","consola","waitReactUpdate","time","cb","resolve","ensureKeyExist","defaultValue","sageJSONParse","jsonStr","errorValue","Workbench","React","props","panel","panelName","newPanel","targetIndex","newPanels","currentActiveLeftPanel","newActive","leftBoxVisible","rightBoxSize","newView","rightBoxVisible","newVisible","_e","_direction","_ref","d","newW","mitt","config","view","newViewList","leftBoxSize","leftBoxFixed","leftPanels","bodyView","rightView","topToolBarView","subTopToolBarView","customViewList","hiddenTopBar","hiddenLeftPanel","hiddenRightPanel","leftBoContentStyle","currentActivePluginObj","CurrentPluginRenderView","onPluginIconClick","toggleRightPanel","toggleLeftPanel","onLeftBoxResizeStop","jsxs","styles","jsx","clsx","pl","Resizable","Button","PushpinOutlined","CloseOutlined","DoubleRightOutlined","createPortal","zh_CN","en_US","resources","i18n","initReactI18next","customI18n","PluginManager","getWorkbench","emitter","assetsPackageListManager","engine","pluginName","customPluginHook","customPluginHooks","hookList","plugin","ctx","innerPlugin","pluginCtx","pluginInstance","name","p","pluginObj","newPluginObj","localize$4","DragComponentItem","dragInfo","DRAG_ITEM_KEY","icon","useMemo","contentView","Popover","ListView","dataSource","defaultActiveKey","items","category","Collapse","getTargetMNodeKeyVal","dom","searchComponentSnippets","componentList","searchKeyWords","newResList","searchString","snippets","hit","_b","_c","_d","PLUGIN_NAME","i18nNamespace","TabTitle","children","ComponentLibView","visible","targetDom","targetNodeId","meta","containerRef","designerHandle","dnd","boxSensor","Sensor","eventObj","newNode","designerExport","dragStart","workbench","event","selectedNodeId","selectedNode","containerNode","findContainerNode","pos","dropNode","isPageModel","rootNode","designerInstance","addFlag","addNodeInfo","materialsModel","allSnippets","df","localize","lng","componentsList","searchResultList","searchMode","toAddNewNode","CustomSearchBar","capitalize","defaultSearchValue","Input","SearchOutlined","e","Tabs","ComponentLibPlugin","ComponentLibViewWithLocalize","withTranslation","Title","t","Fragment","AppstoreAddOutlined","localize$3","LayoutSelect","onSelect","hover","setHover","useState","getDefaultToolbarItem","nodeList","toSelectNode","toDelete","toCopy","toHidden","currentNode","parentNodeItems","nodeMeta","label","copyItem","CopyOutlined","deleteItem","DeleteOutlined","visibleItem","EyeInvisibleOutlined","nodeLayout","DefaultSelectToolBar","getClosestNodeList","level","count","isNodeModel","GhostView","AdvanceCustomHook","dragNode","nodeAdvanceCustom","dropNodeAdvanceCustom","commonParams","canAcceptFlag","material","resNode","onCopy","newRes","onDelete","Designer","extraData","layoutRef","dropPosInfo","posFlag","_f","_g","_h","_i","_j","_k","flag","toolbarView","commonParam","canDragFlag","dragFlag","ghostView","CustomGhostView","nodeId","id","cpNode","targetNodeModel","devState","toolbarProps","defaultToolbarItem","ToolbarView","newState","selectViewProps","selectRectViewRender","Comp","selectNode","hoverViewProps","hoverRectViewRender","dropViewProps","dropViewRender","newComponentMap","newComponents","layoutInstance","onSelectNode","onDragStart","onHoverNode","onNodeDrop","onNodeDragging","onNodeDragEnd","hoverToolbarView","selectToolbarView","portalView","advanceCustomProps","Layout","DesignerPlugin","designerRef","newMode","LayoutMode","width","map","transformNodeSchemaToTreeData","nodeSchema","parent","tb","nodeChild","newCurrentNode","propsNodeList","slotNode","treeNodeView","processProps","keys","isJSSlotPropNode","pageModeNode","propsTitle","tempTitle","getPropsLabel","getMTitle","plainTitle","tempNode","propValue","newKey","index","nodeModel","keyPath","propsLabelMap","getNodePropsLabelMap","newKeyPath","childNodeList","transformPageSchemaToTreeData","pageSchema","tree","child","traverseTree","handler","tempTree","stop","traverseCb","conditionCb","calculateDropPosInfo","params","point","mousePos","targetRect","targetDomH","xCenter","yCenter","resMap","singleProcessUnit","paths","newPaths","objSetter","componentName","arrItemSetter","parentTitle","currentTitle","newObjPaths","it2","targetItem","isSpecialMaterialPropType","itemArr","DragState","CTreeContext","TreeNode","allStateRef","useRef","nodeVisible","setNodeVisible","ctxState","updateState","onDeleteNode","getDesignerHandler","onCopyNode","useContext","titleEditable","setTitleEditable","editInputValue","setEditInputValue","expanded","toggleExpandNode","open","newExpandKeys","selected","titleEditInputRef","toggleSelectNode","newKeys","singPadding","indent","canBeSelected","dragKeyProps","updateExpandKeyRef","ctxStateRef","oldExpandKeys","domRef","useEffect","timerHandler","clickHandle","sunWin","designerPluginInstance","designerHandler","win","toggleNodeVisible","titleView","compInstances","RightOutlined","inputValue","EyeOutlined","TreeView","plainTreeData","tempTreeData","targetKey","treeData","target","parentPaths","parentNode","targetNode","sensor","targetTreeNode","nodeCanDragRes","canDragResInfo","startNode","dropInfo","nodeCanDropRes","dropDom","rect","newDropInfo","currentSelectNode","dragState","sk","designer","newVal","message","localize$2","OutlineTreePlugin","TreeViewWithLocalize","ApartmentOutlined","REACT_FLOW_DRAG_CLASS_NAME","INPUT_HANDLE_ID","OUTPUT_HANDLE_ID","REQUEST_API_FAILED_HANDLE_ID","CFormContext","CUSTOM_SETTER_MAP","registerCustomSetter","customSetterMap","CForm","data","conditionConfig","changeKeys","StringSetter","onValueChange","setterContext","initialValue","ConfigProvider","NumberSetter","InputNumber","value","getSetterList","setters","setter","setterTypeMap","getValueType","getDefaultSetterByValue","setterList","valueType","setterName","ArrayItem","keyPaths","style","objectValue","formRef","SetterSwitcher","SortItemOrderModal","sortLabelKey","modalProps","listValue","setListValue","innerList","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","active","over","oldIndex","newIndex","newInnerListVal","arrayMove","modalTransform","setModalTransform","Modal","modal","DndContext","delta","ModalDragView","restrictToVerticalAxis","SortableContext","SortableItem","transform","setNodeRef","attributes","listeners","tempTransform","useDraggable","finalTransform","CSS","transition","useSortable","labelText","formatValue","ArraySetter","itemInitialValue","itemLabelPrefix","itemLabelPrefixKey","sortVisible","setSortVisible","innerSetters","ShapeSetter","elements","title","tip","getMTitleTip","MonacoEditor","handleEditorBeforeMount","monaco","handleEditorDidMount","editor","Editor","DefaultTslibSource","quicktypeJSON","typeName","jsonString","jsonInput","jsonInputForTargetLanguage","inputData","InputData","quicktype","getPageTypeDefined","stateTypeMap","pList","traversePageNode","InnerComponentNameEnum","globalStateDts","pageStateDts","nodeIdList","k","body","getBodyDefined","dtsContent","currentNodeDtsText","dtsStr","ExpressionSetter","editorOptions","mode","editorRef","setOpen","onInnerValueChange","newValStr","CNodePropsTypeEnum","lineNumberOptions","editorView","realtimeDts","libUri","BooleanSetter","Switch","SelectSetter","Select","option","MoveableModal","oldValue","EditorConfig","JsonEditor","onChange","height","oldValueRef","oldVal","editorInstance","JSONSetter","FunctionSetter","TextAreaSetter","valueValidator","checkValueStatus","setCheckValueStatus","newValue","CSSSourceInfo","CSSProperties","CSSPropertyList","CSSValueSetter","propertyKey","propertyValueRef","innerValue","setInnerVal","focusState","setFocusState","updateOuterValue","optionsValue","AutoComplete","ColorSetter","SketchPicker","newColor","newColorStr","DEFAULT_PRESET_COLORS","AntDColorSetter","restProps","ColorPicker","SliderSetter","Slider","RadioGroupSetter","Radio","InputNumberPlus","min","max","addonAfter","updateInnerVal","processUpdateVal","num","resVal","isLegal","newNum","UNIT_LIST","useDragSize","cumulativeInfo","processEnd","useCallback","processing","onMouseDown","processMove","start","tempCumulativeX","tempCumulativeY","shakeDIstance","startInfo","minX","maxX","globalMoveDispose","addEventListenerReturnCancel","globalUpDispose","globalLeaveDispose","CSSSizeInput","outValue","dragSizing","setDragSizing","originalValObj","unit","currentUnitList","currentMinMix","valObj","updateValue","valStr","processNewVal","cumulativeData","onDragMoveChange","nV","onDragEnd","handleRef","dragSizeHandle","unitSelect","CSSSizeSetter","keyList","getDefaultValue","maxVal","DimensionInput","forwardRef","ref","innerVal","noTrigger","finalVal","pick","useImperativeHandle","realValue","Row","Col","ArrowRightFromLine","ArrowLeftFromLine","ArrowDownFromLine","ArrowUpFromLine","SquareX","AlignHorizontalDistributeStart","AlignHorizontalDistributeEnd","StretchVertical","AlignHorizontalSpaceBetween","AlignHorizontalSpaceAround","AlignVerticalJustifyStart","AlignVerticalJustifyEnd","StretchHorizontal","AlignVerticalSpaceBetween","AlignVerticalSpaceAround","MoveHorizontal","MoveVertical","inputW","getEmptyVal","MarginAndPaddingInput","outVal","prefix","CustomColorPicker","setColor","FONT_CSS_KEY_LIST","alignOptions","fontWeightOptions","FontInput","colorRef","CSS_BORDER_KEY_LIST","BorderInput","emptyVal","currentEditVal","tmpVal","updateSingleBorderVal","newBorderVal","CloseCircleOutlined","CSS_BACKGROUND_KEY_LIST","BackgroundInput","ShadowInput","newUpdateVal","boxShadowStr","parseCssToObject","css","result","selector","declarations","declaration","prop","getCssCodeFromStyleObj","styleObj","CSSCodeEditor","valueRef","isEqual","newValObj","StyleUIPanel","initialVal","noCard","setMode","dimensionRef","marinRef","paddingRef","borderRef","backgroundRef","shadowRef","fontRef","cssCodeEditorRef","inputRefs","tempValueRef","onStyleItemChange","finalValue","omitBy","isNil","coreEditView","Card","SquareCode","Component","FastLayoutSetter","resetProps","cssUIRef","lastNode","initialValueInner","newStyle","updatePanelValue","newNormaCss","newStyleList","emptyValMap","EmptyValueSetter","emptyValue","hiddenDefaultOption","tempValue","BUILD_IN_SETTER_MAP","CField","tips","hiddenLabel","errorInfo","setErrorInfo","labelView","formState","updateContext","updateConditionConfig","canRender","newTip","Tooltip","newChildren","isValidElement","extraProps","rules","checkResult","checkValue","Alert","QuestionCircleOutlined","pass","errorMsg","CCustomSchemaFormContext","SetterSwitcherCore","currentSetter","setCurrentSetter","customSetterMapProp","defaultSetterConfig","allSetterMap","InnerSetters","currentSetterName","st","CurrentSetterComp","outerSetter","condition","useField","setVisible","onSetterChange","SetterTypeEnum","menuItems","setterRuntime","switcher","onChooseSetter","targetSetter","Dropdown","SwapOutlined","setterProps","newProps","collapseHeaderExt","setCollapseHeaderExt","labelWidth","labelAlign","collapse","specialSetter","filedView","cFiledProps","renderCollapse","collapseObj","extraHeaderContent","CustomSchemaFormCore","originProperties","properties","property","CustomSchemaForm","getNodeInfo","traverse","nodes","SelectNodeModal","onCancel","onOk","boxDomRef","TreeSelect","treeNode","nodeInfo","SelectNodeByTree","modalOpen","setModalOpen","setInnerValue","nodeTitle","SelectNodeState","Space","isValidJSVariableName","DEFAULT_NODE_LIST","LogicType","AssignValueType","CreateNewNodePopup","handleOpenChange","newOpen","InputHandle","Handle","Position","OutputHandle","NodeCard","nodeProps","customHandle","outHandleNewNodeAdd","useCardStyle","outputHandle","inputHandle","isConnectable","reactFlowInstance","useReactFlow","outputNodeHasConnected","UseNodeHasConnected","handleNewNodeAdd","newNodeData","newEdge","getNewNodePosInfo","customHandleView","HolderOutlined","ActionFlowContext","createContext","useActionFlow","context","CFiledWithSwitchSetter","defaultSetterName","AssignValueNode","onDataChange","DEV_CONFIG_KEY","devConfigObj","isReady","setIsReady","formValue","setFormValue","CommonDynamicValueSetter","StartNode","ARGS_PREFIX","getArgsObjFormSchema","methodName","formatArgsObjToArray","formatArgsToObject","valArr","CallNodeMethodNode","methodList","methodListOptions","argsFormSchema","updateKeySetterConfig","JumpLinkNode","defaultLinkSetter","isFunction","requestParamsSchemaSetterList","methodOptions","RequestAPINode","pluginConfig","CustomAPISelectInput","checkHandleConnection","handleId","edge","isOutputHandleConnected","isAfterFailedResponseHandleConnected","formHandler","newValueObj","tabItems","handleType","offsetX","newNodePosition","newFormData","RunCodeNode","NODE_TYPE","NODE_MAP","calculateElementLayout","edges","g","Dagre","position","x","y","createFlowNode","nodeData","createFlowEdge","source","sourceHandle","parseActionLogicToNodeList","processNodes","nextItem","revertNodeToActionLogic","nodeMap","visited","traverseNodes","currentNodeId","handlers","successTargets","failedTargets","nextEdges","nextHandlers","ActionFlowSetterCore","fitView","flowMount","setFlowMount","setNodes","onNodesChange","useNodesState","setEdges","onEdgesChange","useEdgesState","latesEdgesRef","onConnect","eds","addEdge","latestNodeRef","dataReady","setDataReady","layoutGraph","layoutInfo","saveData","newSchemaValue","ReactFlow","changes","connection","Background","Controls","MiniMap","ActionFlowSetter","newValueRef","disableLowcodeHotKey","status","hotkey","triggerView","ReactFlowProvider","BUILD_IN_ADVANCE_SETTER_MAP","PropertyPanel","handel","PropertyPanelConfig","ComponentStatePanel","nodeState","currentState","ComponentStatePanelConfig","AdvancePanel","innerProperties","loopObj","AdvancePanelConfig","CRightPanelContext","UseCRightPanelContext","defaultPropertyOptions","SinglePropertyEditor","keyFormatStatus","setKeyFormatStatus","rightPanelContext","mod","propertyOptions","setPropertyOptions","onSearch","searchText","newOptions","propertyKeyRef","innerOnCreate","PlusOutlined","MinusOutlined","CSSPropertiesVariableBindEditor","propertyList","setPropertyList","newProperty","setNewProperty","innerOnValueChange","createPropertyRef","ClassNameEditor","valueFormatStatus","isCreate","valueOptions","setValueOptions","allValueOptions","setAllValueOptions","updateValueOptions","tempProperty","onValueSearch","updateKeyValue","keyVal","CSSPropertiesEditor","newAddVal","setNewAddVal","newCssVal","DOM_CSS_STATUS","DOM_CSS_STATUS_LIST","CSSEditor","selectedStateTag","setSelectedStateTag","mediaQueryList","cssPropertyRefMap","handleChange","tag","domStatusList","setDomStatusList","cssStatusList","selectCssStatusList","cssVal","setCssVal","currentCssStateVal","initVal","initRef","isEmpty","updateCss","checked","CheckableTag","MinusCircleOutlined","VisualPanelPlus","styleVariableRef","classNameList","cssEditorRef","classNameEditorRef","formatStyle","fCss","onUpdateStyleVariable","styleArr","onUpdateStyle","onUpdateCss","VisualPanelPlusConfig","activeTab","INNER_EVENT_LIST_MAP","ON_DID_RENDER","ON_WILL_DESTROY","EventPanel","eventList","updateEventList","nodeEventList","evt","currentEvent","updateCurrentEvent","newEvent","eventLabel","newEventList","EventPanelConfig","RightPanel","panels","panelParams","displayPanels","customTabs","activeKey","firstPanelKey","_","args","Empty","RightPanelPlugin","uiHandle","localize$1","triggerChangeBySelf","GlobalStatePanel","rootState","GlobalStatePanelPlugin","GlobalStatePanelWithLocalize","DatabaseOutlined","DisplaySourceSchema","engineCtx","newPage","newPageJSON","HistoryPlugin","CTX","dataStore","originalPageRecord","loadPage","resObj","currentStepIndex","historyRecords","cloneDeep","debounceAddStep","debounce","isff","_keyMap","_modifier","defaultGetCode","getKey","getModifier","getKeyString","HotKeysManager","disposeListCb","disposeCb","triggerAction","keydownCb","keyupCb","findKeyIndex","clearKeyDownList","newKeysCode","hotActionId","code","tagName","isInput","actionMap","activeNode","parentNodeValue","nextIndex","historyStack","HotkeysPlugin","hotkeyManager","actionKey","DEFAULT_PLUGIN_LIST","DEFAULT_PLUGIN_NAME_MAP","DesignerSizer","currentSize","setCurrentSize","setWith","getSubWindowWidth","w","resizeHandler","setCanvasWidth","Segmented","BorderOutlined","MobileOutlined","containerProps","customAttributesMeta","groupName","categoryName","INNER_META_VERSION","PKG_NAME","htmlNativeComponentMeta","HTMl_TAGS","BaseComponentMeta","comp","DEFAULT_EVENT_LIST","BaseComponentMetaWithVersion","InnerComponentMeta","Engine","materials","assetPackagesList","designerPlugin","designerPluginExport","AssetLoader","componentCollection","loader","CPage","EmptyPage","plugins","pluginManager","newSelectNode","oldHiddenWidgetConfig"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWaA,KAAe,CAACC,MAAkB;AAC7C,QAAMC,IAA2B,CAAA;AACjC,SAAAD,EAAI,QAAQ,CAACE,MAAS;AACpB,IAAAD,EAAIC,EAAK,QAAQ,IAAIA,EAAK;AAAA,EAC5B,CAAC,GACMD;AACT,GAEaE,KAAgB,CAACC,IAA2B,OACjC,OAAO,KAAKA,CAAG,EAAE,OAAO,CAACC,GAASC,MAC/C;AAAA,EACL,GAAGD;AAAA,EACH;AAAA,IACE,UAAUC;AAAA,IACV,OAAOF,EAAIE,CAAG;AAAA,EAAA;AAChB,GAED,CAAA,CAAc,GAKNC,KAAiB,CAACP,MAAkB;AAC/C,MAAIC,IAAM;AACV,SAAAD,EAAI,QAAQ,CAACE,MAAS;AACpB,IAAAD,KAAO,GAAGC,EAAK,QAAQ,IAAIA,EAAK,KAAK;AAAA,EACvC,CAAC,GACMD;AACT,GAEaO,KAAsB,CAACC,IAAyC,OAAO;AAElF,EAAIC,GAAcD,CAAS,MACzBA,IAAY,OAAO,KAAKA,CAAS,EAAE,IAAI,CAACH,OAC/B;AAAA,IACL,UAAUA;AAAA,IACV,OAAQG,EAAkBH,CAAG;AAAA,EAAA,EAEhC;AAEH,QAAMK,IAAwD,CAAA,GACxDC,IAA0E,CAAA,GAC1EC,IAAkD,CAAA;AACxD,SAAAJ,EAAU,QAAQ,CAACK,MAAO;AACxB,UAAMd,IAAMc,EAAG,OACTV,IAAM;AAAA,MACV,UAAUU,EAAG;AAAA,MACb,OAAOd;AAAA,IAAA;AAGT,IAAAa,EAAY,KAAKT,CAAG,GAChBW,GAAaf,CAAG,IAClBY,EAAmB,KAAK;AAAA,MACtB,GAAGR;AAAA,MACH,OAAOJ;AAAA,IAAA,CACR,IAEDW,EAAe,KAAK;AAAA,MAClB,GAAGP;AAAA,MACH,OAAOJ;AAAA,IAAA,CACR;AAAA,EAEL,CAAC,GACW;AAAA,IACV,gBAAAW;AAAA,IACA,oBAAAC;AAAA,IACA,aAAAC;AAAA,EAAA;AAGJ,GAEaG,KAAwB,CAACC,MAAoB;AAExD,QAAMC,IAAMC,GAAQ,MAAM,UAAUF,CAAO,GAAG,GAExCG,IAA6D,CAAA;AAGnE,SAAAD,GAAQ,KAAKD,GAAK,SAAUG,GAAM;AAChC,IAAIA,EAAK,SAAS,iBAChBD,EAAQ,KAAK;AAAA,MACX,IAAIE,GAAA;AAAA,MACJ,UAAUD,EAAK;AAAA,MACf,OAAOF,GAAQ,SAASE,EAAK,KAAK;AAAA,IAAA,CACnC;AAAA,EAEL,CAAC,GAEMD;AACT,GAEaG,KAAqB,CAACC,GAAmBxB,MAAyB;AAE7E,QAAMC,IAAe;AAAA,IACnB,OAAOuB;AAAA,IACP,OAAO,CAAA;AAAA,EAAC,GAEJJ,IAAsB,CAAA;AAC5B,gBAAO,KAAKpB,CAAG,EAAE,QAAQ,CAACyB,MAAU;AAClC,UAAMC,IAAkB1B,EAAIyB,CAAkB,GACxCE,IAAoB;AAAA,MACxB,OAAAF;AAAA,MACA,OAAO,CAAA;AAAA,MACP,OAAMC,KAAA,gBAAAA,EAAkB,WAAa;AAAA,IAAA;AAEvC,WAAO,KAAKA,KAAoB,CAAA,CAAU,EAAE,QAAQ,CAACE,MAAa;AAChE,MAAAD,EAAQ,QAAQA,EAAQ,SAAS,CAAA,GAC7BC,MAAa,YACfD,EAAQ,MAAM,KAAK;AAAA,QACjB,MAAM;AAAA,QACN,OAAOC;AAAA,QACP,OAAMF,KAAA,gBAAAA,EAAkBE,OAAa;AAAA,MAAA,CACtC;AAAA,IAEL,CAAC,GACDR,EAAQ,KAAKO,CAAO;AAAA,EACtB,CAAC,GACD1B,EAAI,QAAQmB,GACLnB;AACT,GAEa4B,KAAwB,CAAC7B,MAA0B;AAC9D,MAAI,CAACA;AACH,WAAO,CAAA;AAET,QAAM8B,IAAO9B,EAAI,OACXC,IAAc,CAAA;AAEpB,SAAA6B,EAAK,QAAQ,CAACC,MAAO;;AACnB,UAAMC,IAAaD,EAAW;AAE9B,IAAI,CAACA,EAAG,QAAQC,MACdD,EAAG,OAAO,OAAO,KAAKC,CAAS,EAAE,OAAO,CAACf,GAASX,OAChDW,KAAW,GAAGX,CAAG,KAAK0B,EAAU1B,CAAG,CAAC,KAC7BW,IACN,EAAE;AAGP,UAAMS,IAA0C;AAAA,MAC9C,QAAQK,EAAG,QAAQ;AAAA,IAAA;AAErB,KAAAE,IAAAF,EAAG,UAAH,QAAAE,EAAU,QAAQ,CAACnB,MAAO;AACxB,MAAAY,EAAgBZ,EAAG,KAAK,IAAIA,EAAG,QAAQ;AAAA,IACzC,IACAb,EAAI8B,EAAG,KAAqB,IAAIL;AAAA,EAClC,CAAC,GAEMzB;AACT,GAEaiC,KAAkB,CAACC,MAAgB;AAE9C,QAAMC,IAAkB,+BAGlBC,IAAmB,2EAGnBC,IAAkB,0CAGlBC,IAAkB,4CAClBC,IAAYL,EAAI,MAAMC,CAAe,KAAK,CAAA,GAC1CK,IAAaN,EAAI,MAAME,CAAgB,KAAK,CAAA,GAC5CK,IAAYP,EAAI,MAAMG,CAAe,KAAK,CAAA,GAC1CK,IAAYR,EAAI,MAAMI,CAAe,KAAK,CAAA;AAEhD,SAAO,CAAC,GAAGC,GAAW,GAAGC,GAAY,GAAGC,GAAW,GAAGC,CAAS;AACjE,GAWaC,KAAuB,CAACT,MAAgB;AAEnD,QAAMU,IAAaX,GAAgBC,CAAG,GAChCW,IAAaD,EAAW,OAAO,CAAC5C,GAAK8C,OACzC9C,EAAI8C,CAAC,IAAIC,GAAMD,CAAC,EAAE,KAAA,GACX9C,IACN,CAAA,CAAS;AAEZ,MAAIgD,IAAUd;AACd,SAAAU,EAAW,QAAQ,CAACE,MAAM;AACxB,IAAAE,IAAUA,EAAQ,WAAWF,GAAGD,EAAWC,CAAC,CAAC;AAAA,EAC/C,CAAC,GAGWE,EAAQ,MAAM,GAAG,EAAE,IAAI,CAAClB,MAAO;AACzC,UAAMmB,IAA+B;AAAA,MACnC,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAER,QAAIC,IAASpB;AACb,IAAIoB,EAAO,SAAS,OAAO,MACzBD,EAAW,OAAO,SAClBC,IAASA,EAAO,QAAQ,SAAS,EAAE,EAAE,KAAA;AAGvC,UAAMC,IAAQlB,GAAgBiB,CAAM;AACpC,IAAIC,EAAM,WACRF,EAAW,QAAQE,EAAM,CAAC,GAC1BD,IAASA,EAAO,QAAQD,EAAW,OAAO,EAAE,EAAE,KAAA;AAGhD,UAAMG,IAAYF,EAAO,MAAM,GAAG,GAC5BG,IAAU,CAAA;AAChB,aAASC,IAAI,GAAGA,IAAIF,EAAU,UACxB,CAAC,MAAM,SAASA,EAAUE,CAAC,CAAC,CAAC,GADGA;AAElC,MAAAD,EAAQ,KAAKD,EAAUE,CAAC,CAAC;AAK7B,WAAAL,EAAW,UAAUI,EAAQ,CAAC,GAC9BJ,EAAW,UAAUI,EAAQ,CAAC,GAC9BJ,EAAW,OAAOI,EAAQ,CAAC,KAAK,IAChCJ,EAAW,SAASI,EAAQ,CAAC,KAAK,IAE7BJ,EAAW,UACdA,EAAW,QAAQG,EAAUC,EAAQ,MAAM,IAEtCJ;AAAA,EACT,CAAC;AAGH;ACpPO,MAAMM,GAAyB;AAAA,EAEpC,YAAYC,GAAwB;AAD5B,IAAAC,EAAA;AAEN,SAAK,UAAUD;AAAA,EACjB;AAAA,EAEA,UAAU;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQE,GAA2B;AACjC,UAAMC,IAAW,CAAC,GAAGD,GAAW,GAAG,KAAK,OAAO,GACzCE,IAAUC,GAAoBF,CAAQ;AAE5C,SAAK,UAAUC;AAAA,EACjB;AACF;AAEO,MAAMC,KAAsB,CAACF,MAA6B;AAC/D,QAAMC,IAA0B,CAAA,GAC1BE,IAA6B,CAAA;AACnC,SAAAH,EAAS,QAAQ,CAAC7B,MAAO;AACvB,IAAKgC,EAAMhC,EAAG,OAAO,MACnBgC,EAAMhC,EAAG,OAAO,IAAIA,GACpB8B,EAAQ,KAAK9B,CAAE;AAAA,EAEnB,CAAC,GAEM8B;AACT,GC1BaG,KAAwD,OAAO,EAAE,QAAAC,QAAa;AACzF,QAAMC,IAASD,EAAO,UAAA;AACtB,EAAKC,MAGJA,EAAe,QAAQ,OAAO,OAC9BA,EAAe,WAAW,OAAO,UACjCA,EAAe,iBAAkB,OAAe;AACnD,GAGaC,KAAmB,CAACC,MAIwB,OAAO;AAAA,EAC5D,QAAQC;AAAA,EACR,QAAAZ;AAAA,EACA,MAAAa;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,MACI;AACJ,QAAMJ,EAAgB,SAASI,KAAe,EAAE;AAChD,QAAMC,IAAeL,EAAgB,UAAA,GAC/BM,IAAYN,EAAgB,YAAA,GAC5BO,IAAcF,EAAa,OAC3BG,IAAiBH,EAAa,gBAC9BI,IAAUJ,EAAa,SAGvBK,IAAWT,MAAQC,KAAA,gBAAAA,EAAW;AACpC,MAAI,CAACQ,GAAU;AACb,YAAQ,IAAI,sBAAsB;AAClC;AAAA,EACF;AACA,QAAMC,IAAYlB,GAAoB,CAAC,GAAGL,GAAQ,GAAIsB,EAAS,UAAU,CAAA,CAAG,CAAC;AAK7E,EAHoB,IAAID,EAAQ,YAAYE,GAAW;AAAA,IACrD,QAAQX,EAAgB,UAAA;AAAA,EAAU,CACnC,EAEE,UAAU,MAAM;AACf,UAAMY,IAAUC,GAAgBF,GAAWN,CAAY,GACjDS,IAAiBC,GAAWH,CAAO,GACnCI,IAAYC,GAAaL,GAASF,EAAS,aAAa,CAAA,CAAE,GAC1DQ,IAAMX,KAAA,gBAAAA,EAAa,cAAcE,EAAQ,cAAc;AAAA,MAC3D,SAASA,KAAA,gBAAAA,EAAS;AAAA,MAClB,MAAAR;AAAA,MACA,WAAAC;AAAA,MACA,YAAY,EAAE,GAAGY,GAAgB,GAAIf,EAAQ,cAAc,CAAA,EAAC;AAAA,MAC5D,WAAW;AAAA,QACT,WAAAiB;AAAA,MAAA;AAAA,MAEF,SAAS,CAACG,MAAyB;AACjC,QAAAhB,EAAMgB,CAAoB;AAAA,MAC5B;AAAA,MACA,IAAKpB,KAAA,gBAAAA,EAAS,gBAAuB,CAAA;AAAA,IAAC;AAExC,IAAAS,EAAe,WAAWF,EAAU,eAAe,KAAK,CAAE,EAAE,OAAOY,CAAG;AAAA,EACxE,CAAC,EACA,QAAQ,MAAM;AACb,YAAQ,IAAI,QAAQ;AAAA,EACtB,CAAC,EACA,KAAA;AACL,GCrEWE,KAASC,GAAQ,OAAO;AAAA,EACnC,OAAO;AACT,CAAC,GCEYC,KAAkB,CAAC,EAAE,MAAAC,IAAO,MAAO,IAAI,IAAAC,EAAA,IAAyD,OACpG,IAAI,QAAQ,CAACC,MAAY;AAC9B,aAAW,MAAM;AACf,IAAAA,EAAQ,IAAI,GACZD,KAAA,QAAAA;AAAA,EACF,GAAGD,CAAI;AACT,CAAC,GAGUG,KAAiB,CAAC3F,GAAUE,GAAa0F,MAAsB;AAC1E,EAAI5F,EAAIE,CAAG,MAAM,WAGjBF,EAAIE,CAAG,IAAI0F;AACb,GAEaC,KAAgB,SAAUC,GAAiBC,GAAiB;AACvE,MAAI;AAEF,WADY,KAAK,MAAMD,CAAO;AAAA,EAEhC,QAAa;AACX,WAAOC,KAAc;AAAA,EACvB;AACF;ACkCO,MAAMC,WAAkBC,EAAM,UAAkD;AAAA,EAGrF,YAAYC,GAA2B;AACrC,UAAMA,CAAK;AAHb,IAAA5C,EAAA;AACA,IAAAA,EAAA;AA8CA,IAAAA,EAAA,sBAAe,CAAC6C,MAAqB;AACnC,WAAK,MAAM,WAAW,KAAKA,CAAK,GAChC,KAAK,SAAS;AAAA,QACZ,YAAY,CAAC,GAAG,KAAK,MAAM,UAAU;AAAA,MAAA,CACtC;AAAA,IACH;AAGA;AAAA,IAAA7C,EAAA,0BAAmB,CAAC8C,GAAmBC,MAAwB;AAC7D,YAAMC,IAAc,KAAK,MAAM,WAAW,UAAU,CAAC3E,MAAOA,EAAG,SAASyE,CAAS;AACjF,UAAIE,IAAc,IAAI;AACpB,cAAMC,IAAY,CAAC,GAAG,KAAK,MAAM,UAAU;AAC3C,QAAAA,EAAUD,CAAW,IAAID,GACzB,KAAK,SAAS;AAAA,UACZ,YAAYE;AAAA,QAAA,CACb;AAAA,MACH;AAAA,IACF;AAuBA,IAAAjD,EAAA,uBAAgB,OAAOkD,MAAoC;AACzD,YAAMC,IAAYD,KAA0B,KAAK,MAAM;AACvD,WAAK,SAAS;AAAA,QACZ,gBAAgB;AAAA,QAChB,aAAa;AAAA,UACX,OAAO;AAAA,UACP,QAAQ;AAAA,QAAA;AAAA,QAEV,wBAAwBC;AAAA,MAAA,CACzB,GAED,MAAMlB,GAAA,GACN,KAAK,QAAQ,KAAK,oBAAoB;AAAA,QACpC,SAAS;AAAA,QACT,WAAWkB;AAAA,MAAA,CACZ;AAAA,IACH;AAEA,IAAAnD,EAAA,wBAAiB,YAAY;AAC3B,WAAK,SAAS;AAAA,QACZ,gBAAgB;AAAA,QAChB,aAAa;AAAA,UACX,OAAO;AAAA,UACP,QAAQ;AAAA,QAAA;AAAA,MACV,CACD,GACD,MAAMiC,GAAA,GACN,KAAK,QAAQ,KAAK,oBAAoB;AAAA,QACpC,SAAS;AAAA,QACT,WAAW,KAAK,MAAM;AAAA,MAAA,CACvB;AAAA,IACH;AAEA,IAAAjC,EAAA,yBAAkB,MAAM;AACtB,YAAM,EAAE,gBAAAoD,MAAmB,KAAK;AAEhC,MADmB,CAACA,IAElB,KAAK,cAAA,IAEL,KAAK,eAAA;AAAA,IAET;AAEA,IAAApD,EAAA,2BAAoB,CAAC6C,MAAqB;AACxC,YAAM,EAAE,wBAAAK,MAA2B,KAAK;AACxC,MAAIA,MAA2BL,EAAM,QAAQ,KAAK,MAAM,iBACtD,KAAK,eAAA,IAEL,KAAK,cAAcA,EAAM,IAAI;AAAA,IAEjC;AAEA,IAAA7C,EAAA,wBAAiB,MAAM;AACrB,YAAM,EAAE,cAAAqD,MAAiB,KAAK;AAC9B,WAAK,SAAS;AAAA,QACZ,iBAAiB;AAAA,QACjB,cAAc;AAAA,UACZ,OAAO;AAAA,UACP,QAAQA,EAAa;AAAA,QAAA;AAAA,MACvB,CACD;AAAA,IACH;AAEA,IAAArD,EAAA,yBAAkB,MAAM;AACtB,YAAM,EAAE,cAAAqD,MAAiB,KAAK;AAC9B,WAAK,SAAS;AAAA,QACZ,iBAAiB;AAAA,QACjB,cAAc;AAAA,UACZ,OAAO;AAAA,UACP,QAAQA,EAAa;AAAA,QAAA;AAAA,MACvB,CACD;AAAA,IACH;AAEA,IAAArD,EAAA,yBAAkB,CAACsD,MAA6B;AAC9C,WAAK,SAAS;AAAA,QACZ,UAAUA;AAAA,MAAA,CACX;AAAA,IACH;AAEA,IAAAtD,EAAA,0BAAmB,CAACsD,MAA6B;AAC/C,WAAK,SAAS;AAAA,QACZ,WAAWA;AAAA,MAAA,CACZ;AAAA,IACH;AAEA,IAAAtD,EAAA,2BAAoB,CAACsD,MAA6B;AAChD,WAAK,SAAS;AAAA,QACZ,gBAAgBA;AAAA,MAAA,CACjB;AAAA,IACH;AAEA,IAAAtD,EAAA,8BAAuB,CAACsD,MAA6B;AACnD,WAAK,SAAS;AAAA,QACZ,mBAAmBA;AAAA,MAAA,CACpB;AAAA,IACH;AAEA,IAAAtD,EAAA,0BAAmB,MAAM;AACvB,YAAM,EAAE,iBAAAuD,GAAiB,cAAAF,EAAA,IAAiB,KAAK,OACzCG,IAAa,CAACD;AACpB,WAAK,SAAS;AAAA,QACZ,iBAAiBC;AAAA,QACjB,cAAc;AAAA,UACZ,OAAOA,IAAa,MAAM;AAAA,UAC1B,QAAQH,EAAa;AAAA,QAAA;AAAA,MACvB,CACD;AAAA,IACH;AAEA,IAAArD,EAAA,6BAAsC,CAACyD,GAAIC,GAAYC,GAAMC,MAAM;AACjE,YAAMC,IAAO,KAAK,MAAM,YAAY,QAAQD,EAAE;AAC9C,WAAK,SAAS;AAAA,QACZ,aAAa;AAAA,UACX,OAAOC;AAAA,UACP,QAAQ,KAAK,MAAM,YAAY;AAAA,QAAA;AAAA,MACjC,CACD;AAAA,IACH;AAEA,IAAA7D,EAAA,uBAAgB,CAAC,MAAkB;;AACjC,MAAI,EAAE,YAAUzB,IAAA,KAAK,oBAAoB,YAAzB,QAAAA,EAAkC,SAAS,EAAE,YAIzD,CAAC,KAAK,MAAM,gBAAgB,KAAK,MAAM,kBACzC,KAAK,eAAA;AAAA,IAET;AAnNE,SAAK,UAAUqE,EAAM,WAAWkB,GAAA,GAChC,KAAK,sBAAsBnB,EAAM,UAAA,GACjC,KAAK,QAAQ;AAAA,MACX,gBAAgB;AAAA,MAChB,aAAa;AAAA,QACX,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAEV,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAEV,wBAAwB;AAAA,MACxB,YAAY,CAAA;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,mBAAmB;AAAA,MACnB,gBAAgB,CAAA;AAAA,MAChB,cAAcC,EAAM,gBAAgB;AAAA,MACpC,iBAAiBA,EAAM,mBAAmB;AAAA,MAC1C,kBAAkBA,EAAM,oBAAoB;AAAA,MAC5C,YAAYA,EAAM,cAAc;AAAA,IAAA;AAAA,EAEpC;AAAA,EAEA,wBAAwB;AACtB,WAAO;AAAA,MACL,cAAc,KAAK,MAAM;AAAA,MACzB,iBAAiB,KAAK,MAAM;AAAA,MAC5B,kBAAkB,KAAK,MAAM;AAAA,IAAA;AAAA,EAEjC;AAAA;AAAA,EAGA,aAAamB,GAAiC;AAC5C,SAAK,SAAS;AAAA,MACZ,GAAIA,KAAU,CAAA;AAAA,IAAC,CAChB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BA,cAAcC,GAA2B;AACvC,UAAMC,IAAc,KAAK,MAAM;AAC/B,WAAAA,EAAY,KAAKD,CAAI,GAErB,KAAK,SAAS;AAAA,MACZ,gBAAgB,CAAC,GAAGC,CAAW;AAAA,IAAA,CAChC,GAEM,MAAM;AACX,YAAMA,IAAc,KAAK,MAAM,eAAe,OAAO,CAAC5F,MAAOA,MAAO2F,CAAI;AACxE,WAAK,SAAS;AAAA,QACZ,gBAAgB,CAAC,GAAGC,CAAW;AAAA,MAAA,CAChC;AAAA,IACH;AAAA,EACF;AAAA,EAoIA,oBAAoB;AAClB,aAAS,iBAAiB,SAAS,KAAK,aAAa;AAAA,EACvD;AAAA,EAEA,SAAS;AACP,UAAM;AAAA,MACJ,gBAAAb;AAAA,MACA,aAAAc;AAAA,MACA,cAAAC;AAAA,MACA,cAAAd;AAAA,MACA,iBAAAE;AAAA,MACA,YAAAa;AAAA,MACA,wBAAAlB;AAAA,MACA,UAAAmB;AAAA,MACA,WAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,kBAAAC;AAAA,IAAA,IACE,KAAK,OACHC,IAA0C,CAAA;AAChD,IAAKV,MACHU,EAAmB,WAAW,YAC9BA,EAAmB,OAAO,QAC1BA,EAAmB,MAAM;AAG3B,UAAMC,IAAyBV,EAAW,KAAK,CAAC/F,MAAOA,EAAG,SAAS6E,CAAsB,GAEnF6B,KAA0BD,KAAA,gBAAAA,EAAwB,WAAU,MAC5D,EAAE,mBAAAE,GAAmB,kBAAAC,GAAkB,iBAAAC,GAAiB,qBAAAC,MAAwB;AACtF,WACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,oBACpB,UAAA;AAAA,MAAA,CAACX,KACA,gBAAAY,EAAC,OAAA,EAAI,WAAWD,EAAO,eACrB,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAO,gBAAiB,UAAAd,EAAA,CAAe,GACzD;AAAA,MAGF,gBAAAa,EAAC,OAAA,EAAI,WAAWC,EAAO,aACpB,UAAA;AAAA,QAAA,CAACV,KACA,gBAAAS;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWG,EAAK,CAACF,EAAO,SAASV,KAAmBU,EAAO,eAAe,CAAC;AAAA,YAC3E,KAAK,KAAK;AAAA,YAEV,UAAA;AAAA,cAAA,gBAAAC,EAAC,SAAI,WAAWD,EAAO,eACpB,UAAAjB,EAAW,IAAI,CAACoB,MAEb,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,SAAS,MAAMN,EAAkBQ,CAAE;AAAA,kBACnC,WAAWD,EAAK;AAAA,oBACdF,EAAO;AAAA,qBACPP,KAAA,gBAAAA,EAAwB,UAASU,EAAG,QAAQH,EAAO;AAAA,kBAAA,CACpD;AAAA,kBAEA,UAAAG,EAAG;AAAA,gBAAA;AAAA,gBAPCA,EAAG;AAAA,cAAA,CAUb,EAAA,CACH;AAAA,cACCpC,KACC,gBAAAgC;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,WAAWJ,EAAO;AAAA,kBAClB,MAAMnB;AAAA,kBACN,OAAOW;AAAA,kBACP,UAAU;AAAA,kBACV,UAAU;AAAA,kBACV,QAAQ;AAAA,oBACN,OAAOzB;AAAA,kBAAA;AAAA,kBAET,cAAc+B;AAAA,kBAEd,UAAA;AAAA,oBAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,cACrB,UAAA;AAAA,sBAAA,gBAAAC,EAAC,UAAK,WAAWD,EAAO,gBACrB,WAAAP,KAAA,gBAAAA,EAAwB,WAASA,KAAA,gBAAAA,EAAwB,MAAA,CAC5D;AAAA,sBACA,gBAAAQ;AAAA,wBAACI;AAAA,wBAAA;AAAA,0BACC,WAAWH,EAAK,CAACF,EAAO,QAAQ,CAAC;AAAA,0BACjC,MAAK;AAAA,0BACL,MAAK;AAAA,0BACL,SAAS,MAAM;AACb,iCAAK,SAAS;AAAA,8BACZ,cAAc,CAAC,KAAK,MAAM;AAAA,4BAAA,CAC3B;AAAA,0BACH;AAAA,0BAEA,UAAA,gBAAAC,EAACK,MAAgB,WAAWJ,EAAK,CAACpB,KAAgBkB,EAAO,MAAM,CAAC,EAAA,CAAG;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAErE,gBAAAC,EAACI,GAAA,EAAO,WAAWL,EAAO,UAAU,MAAK,QAAO,MAAK,SAAQ,SAASH,GACpE,UAAA,gBAAAI,EAACM,MAAc,EAAA,CACjB;AAAA,oBAAA,GACF;AAAA,oBACA,gBAAAN,EAAC,OAAA,EAAI,WAAWD,EAAO,gBAAiB,UAAAN,EAAA,CAAwB;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAClE;AAAA,UAAA;AAAA,QAAA;AAAA,QAKN,gBAAAK,EAAC,OAAA,EAAI,WAAWC,EAAO,WACpB,UAAA;AAAA,UAAAb,KAAqB,gBAAAc,EAAC,OAAA,EAAI,WAAWD,EAAO,kBAAmB,UAAAb,GAAkB;AAAA,UAClF,gBAAAc,EAAC,SAAI,WAAWC,EAAK,CAACF,EAAO,WAAW,KAAK,MAAM,eAAe,MAAQA,EAAO,gBAAgB,CAAC,GAChG,UAAA,gBAAAC,EAAC,SAAI,WAAWD,EAAO,WAAY,UAAAhB,EAAA,CAAS,EAAA,CAC9C;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAe,EAAC,OAAA,EAAI,WAAWG,EAAK,CAACF,EAAO,gBAAgBT,KAAoBS,EAAO,gBAAgB,CAAC,GACvF,UAAA;AAAA,UAAA,gBAAAC,EAAC,SAAI,WAAWD,EAAO,aAAa,SAASJ,GAC3C,UAAA,gBAAAK,EAACO,IAAA,EAAoB,WAAWN,EAAK,CAAC,CAAChC,KAAmB8B,EAAO,MAAM,CAAC,GAAG,GAC7E;AAAA,UACA,gBAAAC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,SAAS/B,IAAkB,UAAU;AAAA,gBACrC,QAAQ;AAAA,cAAA;AAAA,cAGV,UAAA,gBAAA+B;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,UAAU;AAAA,kBACV,UAAU;AAAA,kBACV,QAAQ;AAAA,oBACN,MAAMlC;AAAA,kBAAA;AAAA,kBAER,MAAMF;AAAA,kBACN,cAAc,CAACI,GAAIC,GAAYC,GAAMC,MAAM;AACzC,yBAAK,SAAS;AAAA,sBACZ,cAAc;AAAA,wBACZ,OAAO,KAAK,MAAM,aAAa,QAAQA,EAAE;AAAA,wBACzC,QAAQ,KAAK,MAAM,aAAa;AAAA,sBAAA;AAAA,oBAClC,CACD;AAAA,kBACH;AAAA,kBAEA,UAAA,gBAAA0B,EAAC,OAAA,EAAI,WAAWD,EAAO,UAAW,UAAAf,EAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC9C;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MACCwB;AAAA,QACC,gBAAAR,EAAC,SAAI,WAAWD,EAAO,eACpB,UAAAZ,EAAe,IAAI,CAACpG,MAEjB,gBAAAiH;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,OAAO;AAAA,cACL,eAAe;AAAA,cACf,SAAS;AAAA,YAAA;AAAA,YAGV,UAAAjH,EAAG;AAAA,UAAA;AAAA,UANCA,EAAG;AAAA,QAAA,CASb,EAAA,CACH;AAAA,QACA,SAAS;AAAA,MAAA;AAAA,IACX,GACF;AAAA,EAEJ;AACF;;;GCxba0H,KAAQ;AAAA,EACnB,aAAa;AAAA,IACX,oBAAoB;AAAA,EAAA;AAExB,GCJaC,KAAQ;AAAA,EACnB,aAAa;AAAA,IACX,oBAAoB;AAAA,EAAA;AAExB,GCIMC,KAAY;AAAA,EAAA,OAChBF;AAAAA,EAAA,OACAC;AACF;AAEAE,GACG,IAAIC,EAAgB,EACpB,KAAK;AAAA,EACJ,WAAAF;AAAA,EACA,KAAK;AAAA;AAAA;AAAA;AAAA,EAGL,OAAO;AAAA,IACL,UAAU;AAAA,IACV,eAAe;AAAA,EAAA;AAEnB,CAAC;AAMH,MAAMG,KAAyBF;AAE/BE,GAAW,SAAS,MAAM;AACxB,aAAW,MAAM;AACf,IAAAF,GAAK,KAAK,OAAO;AAAA,EACnB,GAAG,CAAC;AACN;AAEAE,GAAW,eAAe,OAAO;ACmB1B,MAAMC,GAAc;AAAA,EAUzB,YAAY,EAAE,cAAAC,GAAc,SAAAC,GAAS,WAAA1F,GAAW,MAAAqF,GAAM,0BAAAM,GAA0B,QAAAC,KAAgC;AAThH,IAAAzG,EAAA,qCAA2C,IAAA;AAC3C,IAAAA,EAAA,iBAAwB8D,GAAA;AACxB,IAAA9D,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,2BAAwD,CAAA;AAYxD;AAAA,IAAAA,EAAA,sBAAe,CAAqC0G,GAAoBC,MAA0C;AAChH,YAAMC,IAAoB,KAAK,mBACzBC,IAAWD,EAAkBF,CAAU,KAAK,CAAA;AAClD,MAAAG,EAAS,KAAKF,CAAgB,GAC9BC,EAAkBF,CAAU,IAAIG,GAChC,KAAK,oBAAoBD;AAAA,IAC3B;AAEA,IAAA5G,EAAA,yBAAkB,OACQ;AAAA,MACtB,eAAe,KAAK;AAAA,MACpB,SAAS8D,GAAA;AAAA,MACT,QAAQ,CAAA;AAAA,MACR,cAAc,KAAK;AAAA,MACnB,eAAe;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,MAAM,KAAK;AAAA,MACX,0BAA0B,KAAK;AAAA,MAC/B,QAAQ,KAAK;AAAA,MACb,eAAe,MAAM;AAAA,MAAC;AAAA,IAAA;AA5BxB,SAAK,eAAewC,GACpB,KAAK,UAAUC,GACf,KAAK,YAAY1F,GACjB,KAAK,OAAOqF,GACZ,KAAK,2BAA2BM,GAChC,KAAK,SAASC;AAAA,EAChB;AAAA,EA2BA,MAAM,IAAIK,GAAiB;;AACzB,UAAMC,IAAM,KAAK,gBAAA;AAEjB,QAAIC;AACJ,IAAI,OAAOF,KAAW,aACpBE,IAAcF,EAAOC,CAAG,IAExBC,IAAcF;AAEhB,QAAIG,IAA4B;AAAA,MAC9B,QAAQD;AAAA,MACR,KAAAD;AAAA,MACA,UAAQxI,IAAAyI,EAAY,WAAZ,gBAAAzI,EAAA,KAAAyI,GAAqBD,OAAQ,CAAA;AAAA,MACrC,OAAO;AAAA,IAAA;AAGT,KADuB,KAAK,kBAAkBC,EAAY,IAAI,KAAK,CAAA,GACpD,QAAQ,CAAC7E,MAAO;AAC7B,MAAA8E,IAAY9E,EAAG8E,CAAS;AAAA,IAC1B,CAAC,GACDF,EAAI,gBAAgB,MAAM;AACxB,WAAK,QAAQ,KAAK,GAAGC,EAAY,IAAI,QAAQ,GAC7CC,EAAU,QAAQ;AAAA,IACpB,GACA,KAAK,QAAQ,IAAID,EAAY,MAAMC,CAAS,GAC5C,MAAMD,EAAY,KAAKD,CAAG;AAAA,EAC5B;AAAA,EAEA,MAAM,IAAwCL,GAA4C;AACxF,UAAMQ,IAAiB,KAAK,QAAQ,IAAIR,CAAU;AAClD,WAAIQ,KAAA,QAAAA,EAAgB,SAGlB,MAAM,KAAK,gBAAgBR,CAAU,GAC9BQ;AAAA,EAEX;AAAA,EAEA,MAAM,OAAOC,GAAc;AACzB,UAAMC,IAAI,KAAK,QAAQ,IAAID,CAAI;AAC/B,WAAMC,KAAA,gBAAAA,EAAG,OAAO,QAAQA,EAAE,OAC1B,KAAK,QAAQ,OAAOD,CAAI;AAAA,EAC1B;AAAA,EAEA,gBAAgBT,GAAoBvE,GAA6C;AAC/E,WAAO,IAAI,QAAwB,CAACC,MAAY;AAC9C,YAAMiF,IAAY,KAAK,QAAQ,IAAIX,CAAU;AAC7C,MAAIW,KAAA,QAAAA,EAAW,QACbjF,EAAQiF,CAAS,IACRA,MAAc,UACvB,QAAQ,KAAK,WAAWX,CAAU,aAAa,GAEjD,KAAK,QAAQ,GAAG,GAAGA,CAAU,UAAU,MAAM;AAC3C,cAAMY,IAAe,KAAK,QAAQ,IAAIZ,CAAU;AAChD,QAAIY,MACFA,EAAa,QAAQ,IACrBnF,KAAA,QAAAA,EAAKmF,IACLlF,EAAQkF,CAAY;AAAA,MAExB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AClKO,MAAMvB,KAA6B;AAAA,EACxC,YAAY;AACd,GCFaC,KAA6B;AAAA,EACxC,YAAY;AACd,GCAAuB,KAAe,EAAA,OAAExB,WAAOC,GAAA;;;;;;;;;;;GCaXwB,KAAoB,CAAC5E,MAAkC;AAClE,QAAM6E,IAAW;AAAA,IACf,CAACC,EAAa,GAAG9E,EAAM;AAAA,EAAA,GAGnB+E,IAAOC,EAAQ,MACfhF,EAAM,WACD,gBAAA0C,EAAC,OAAA,EAAI,WAAWD,GAAO,UAAW,iBAAOzC,EAAM,QAAQ,EAAE,YAAA,EAAY,CAAE,IAE5E,OAAOA,EAAM,QAAS,WACjB,gBAAA0C,EAAC,SAAI,WAAWD,GAAO,SAAS,KAAKzC,EAAM,MAAM,WAAW,GAAA,CAAO,IAEnEA,EAAM,MAEd,CAACA,EAAM,MAAMA,EAAM,QAAQ,CAAC,GAEzBiF,sBACH,OAAA,EAAI,WAAWtC,EAAK,CAACF,GAAO,QAAQzC,EAAM,kBAAkB,CAAC,GAC5D,UAAA,gBAAAwC,EAAC,SAAK,GAAGqC,GAAU,WAAWpC,GAAO,eAAe,OAAOzC,EAAM,OAC/D,UAAA;AAAA,IAAA,gBAAA0C,EAAC,OAAA,EAAI,WAAWD,GAAO,SAAU,UAAAsC,GAAK;AAAA,IACtC,gBAAArC,EAAC,QAAA,EAAM,UAAA1C,EAAM,KAAA,CAAK;AAAA,EAAA,EAAA,CACpB,EAAA,CACF;AAGF,SAAIA,EAAM,cAEN,gBAAA0C;AAAA,IAACwC;AAAA,IAAA;AAAA,MACC,mBAAmB;AAAA,QACjB,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU;AAAA,MAAA;AAAA,MAEZ,SAASlF,EAAM,eAAe;AAAA,MAC9B,QAAQ;AAAA,MACR,WAAU;AAAA,MAET,UAAAiF;AAAA,IAAA;AAAA,EAAA,IAIEA;AAEX,GAEaH,KAAgB;;;GChDhBK,KAAW,CAACnF,MAAyB;AAChD,QAAM,EAAE,YAAAoF,MAAepF,GACjBqF,IAAmBD,EAAW,IAAI,CAAC3J,MAAOA,EAAG,QAAQ,EAAE,GAEvD6J,IAAQN,EAAQ,MACbI,EAAW,IAAI,CAAC3J,MAAO;AAC5B,UAAM8J,IAAW9J,EAAG,QAAQ,IACtBwJ,IACJ,gBAAAvC,EAAC,OAAA,EAAI,WAAWD,GAAO,eACpB,UAAAhH,EAAG,KAAK,IAAI,CAACjB,MAEV,gBAAAkI;AAAA,MAACkC;AAAA,MAAA;AAAA,QACC,IAAIpK,EAAG;AAAA,QAEP,MAAMA,EAAG;AAAA,QACT,MAAMA,EAAG,YAAYA,EAAG;AAAA,QACxB,UAAUA,EAAG;AAAA,QACb,aAAaA,EAAG,eAAe;AAAA,MAAA;AAAA,MAJ1BA,EAAG;AAAA,IAAA,CAOb,EAAA,CACH;AAGF,WAAO;AAAA,MACL,KAAK+K;AAAA,MACL,OAAOA;AAAA,MACP,UAAUN;AAAA,IAAA;AAAA,EAEd,CAAC,GACA,CAACG,CAAU,CAAC;AAEf,SAAKA,EAAW,SAKd,gBAAA1C,EAAC,OAAA,EAAI,WAAWD,GAAO,SACrB,UAAA,gBAAAC,EAAC8C,IAAA,EAAS,OAAO,EAAE,OAAO,OAAA,GAAU,kBAAAH,GAAoC,OAAAC,GAAc,GACxF,IANO;AAQX,GCnDaG,KAAuB,CAACC,GAAyB1L,MAA+B;AAC3F,MAAI,CAAC0L;AACH,WAAO;AAET,QAAMhM,IAAMgM,EAAI,aAAa1L,CAAG;AAChC,SAAKN,KACI+L,GAAqBC,EAAI,eAAe1L,CAAG;AAItD,GAEa2L,KAA0B,CAACC,GAAmCC,MAA2B;AACpG,QAAMC,IAGA,CAAA,GACAC,IAAeF,KAAA,gBAAAA,EAAgB;AACrC,SAAAD,EAAc,QAAQ,CAACnK,MAAO;AAG5B,IADiB,CAAC,GAAGA,EAAG,IAAI,EACnB,QAAQ,CAACjB,MAAO;AACvB,YAAMwL,IAAWxL,EAAG,KAAK,OAAO,CAACyC,MAAM;;AACrC,YAAIgJ,IAA2B;AAC/B,eAAI,OAAOhJ,EAAE,eAAgB,aAC3BgJ,KAAMtK,IAAAsB,EAAE,gBAAF,gBAAAtB,EAAe,SAASoK,KAEhCE,IAAMA,OAAOC,IAAAjJ,EAAE,UAAF,gBAAAiJ,EAAS,cAAc,SAASH,KAC7CE,IAAMA,OAAOE,IAAAlJ,EAAE,iBAAF,gBAAAkJ,EAAgB,cAAc,SAASJ,KACpDE,IAAMA,OAAOG,IAAAnJ,EAAE,aAAF,gBAAAmJ,EAAY,cAAc,SAASL,KACzCE;AAAA,MACT,CAAC;AACD,MAAID,EAAS,UACXF,EAAW,KAAK;AAAA,QACd,MAAMtL,EAAG;AAAA,QACT,MAAMwL;AAAA,MAAA,CACP;AAAA,IAEL,CAAC;AAAA,EACH,CAAC,GAEMF;AACT,GCdaO,KAAc,gBACrBC,KAAgB,UAAUD,EAAW,IAErCE,KAAW,CAAC,EAAE,UAAAC,0BACV,OAAA,EAAI,WAAW/D,GAAO,UAAW,UAAA+D,GAAS;AAoBpD,MAAMC,WAAyB1G,EAAM,UAAwD;AAAA,EAK3F,YAAYC,GAA8B;AACxC,UAAMA,CAAK;AALb,IAAA5C,EAAA;AACA,IAAAA,EAAA,qBAA8B,CAAA;AAC9B,IAAAA,EAAA;AAaA,IAAAA,EAAA,4BAAqB,OAAO,EAAE,SAAAsJ,GAAS,WAAAxG,QAAyD;AAC9F,YAAM,KAAK,MAAM,UAAU,cAAc,gBAAgB,UAAU,GAC/DA,MAAcmG,MAAeK,KAC/B,KAAK,kBAAA;AAAA,IAET;AAwCA,IAAAtJ,EAAA,oBAAa,CAACuJ,MAAkC;AAC9C,YAAM,EAAE,WAAAtC,MAAc,KAAK,OACrBpG,IAAYoG,EAAU;AAE5B,UAAI,CAACsC;AACH;AAEF,YAAMC,IAAenB,GAAqBkB,GAA0B7B,EAAa;AAEjF,UAAI,CAAC8B;AACH;AAGF,YAAMC,IAAO5I,EAAU,eAAe,gBAAgB2I,CAAY;AAClE,UAAKC;AAGL,eAAO5I,KAAA,gBAAAA,EAAW,WAAW4I,EAAK;AAAA,IACpC;AAEA,IAAAzJ,EAAA,2BAAoB,YAAY;AAC9B,YAAM,EAAE,cAAA0J,MAAiB,MACnB,EAAE,WAAAzC,MAAc,KAAK,OACrB0C,IAAiB,MAAM1C,EAAU,cAAc,IAA4B,UAAU;AAK3F,UAHI,CAAC0C,KAGD,CAACD,EAAa;AAChB;AAGF,YAAME,IADiBD,EAAe,OACX,OAAA,GACrBE,IAAY,IAAIC,GAAuC;AAAA,QAC3D,MAAM;AAAA,QACN,WAAWJ,EAAa;AAAA,QACxB,cAAc;AAAA,MAAA,CACf;AAED,WAAK,YAAYG,GAEjBA,EAAU,WAAW,OAAOE,MAAa;AACvC,cAAMC,IAAU,KAAK,WAAWD,EAAS,MAAM,MAAa;AAE5D,oBAAK,MAAM,UAAU,cAAc,IAA4B,UAAU,EAAE,KAAK,CAACJ,MAAmB;AAClG,gBAAMM,IAAiBN,KAAAA,gBAAAA,EAAgB;AACvCM,UAAAA,KAAAA,QAAAA,EAAgB,WAAW;AAAA,QAC7B,CAAC,GAEM;AAAA,UACL,GAAGF;AAAA,UACH,WAAW;AAAA,YACT,UAAU;AAAA,YACV,UAAUC;AAAA,UAAA;AAAA,QACZ;AAAA,MAEJ,CAAC,GACDJ,EAAI,eAAeC,CAAS;AAE5B,YAAMK,IAAY,MAAM;AACtB,cAAM,EAAE,cAAA5D,EAAA,IAAiB,KAAK,MAAM,WAC9B6D,IAAY7D,EAAA;AAClB,QAAK6D,EAAU,MAAM,gBACnBA,EAAU,eAAA;AAAA,MAEd;AAEA,WAAK,YAAY,KAAK,MAAM;AAC1B,QAAAP,EAAI,QAAQ,IAAI,aAAaM,CAAS;AAAA,MACxC,CAAC,GACDN,EAAI,QAAQ,GAAG,aAAaM,CAAS;AAAA,IACvC;AAEA,IAAAlK,EAAA,sBAAyD,OAAOoK,MAAU;AACxE,YAAMJ,IAAU,KAAK,WAAWI,EAAM,YAAY,MAAqB;AACvE,UAAI,CAACJ;AACH;AAGF,YAAM,EAAE,WAAAnJ,EAAA,IAAc,KAAK,MAAM;AAEjC,aAAO,KAAK,MAAM,UAAU,cAAc,IAA4B,UAAU,EAAE,KAAK,OAAO8I,MAAmB;;AAC/G,cAAMM,IAAiBN,KAAA,gBAAAA,EAAgB,QAEjCU,IAAiBJ,KAAA,gBAAAA,EAAgB,qBACjCK,IAAezJ,EAAU,QAAQwJ,CAAc,GAC/CE,IAAgBC,GAAkBF,CAAY;AACpD,YAAIG,IAAyB,aACzBC,IAA6CJ,KAAgB;AACjE,YAAIA;AAEF,UAAIC,MAAkBD,EAAa,SAC7BA,EAAa,iBACfG,IAAM,aACNC,IAAWJ,MAEXG,IAAM,SACNC,IAAWJ,KAEJC,KAAiB,CAACI,GAAYJ,CAAa,MACpDE,IAAM,aACNC,IAAWH;AAAA,aAER;AACL,gBAAMK,IAAW/J,EAAU,YAAA;AAC3B,UAAI+J,MACFH,IAAM,aACNC,IAAWE;AAAA,QAEf;AACA,cAAMC,IAAmBZ,KAAA,gBAAAA,EAAgB,eAEnCa,IAAU,OAAMD,KAAA,gBAAAA,EAAkB,kBAAkB,SAAS;AAAA,UACjE,UAAUb;AAAA,UACV,UAAAU;AAAA,UACA,UAAU;AAAA,YACR,MAAMN,EAAM;AAAA,YACZ,YAAY,KAAK;AAAA,YACjB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,WAAW,CAAA;AAAA,UAAC;AAAA,QACd;AAEF,YAAIU,MAAY;AACd;AAEF,YAAIC,IAAc;AAAA,UAChB,UAAUf;AAAA,UACV,UAAAU;AAAA,UACA,KAAAD;AAAA,QAAA;AAEF,QAAI,OAAOK,KAAY,aACrBC,IAAc;AAAA,UACZ,GAAGA;AAAA,UACH,UAAWD,EAAQ,WAAmBC,EAAY;AAAA,UAClD,UAAWD,EAAQ,YAAoBC,EAAY;AAAA,UACnD,OAAMxM,IAAAuM,EAAQ,gBAAR,gBAAAvM,EAAqB,QAAewM,EAAY;AAAA,QAAA,IAG1DlK,EAAU,QAAQkK,EAAY,UAAUA,EAAY,UAAmBA,EAAY,GAAG,GACtF,WAAW,MAAM;AACf,UAAAd,KAAA,QAAAA,EAAgB,WAAWc,EAAY,SAAS;AAAA,QAClD,GAAG,EAAE;AAAA,MACP,CAAC;AAAA,IACH;AAEA,IAAA/K,EAAA,kBAAW,MAAM;AACf,UAAI,CAAC,KAAK,MAAM,aAAa,QAAQ;AACnC,aAAK,SAAS;AAAA,UACZ,kBAAkB,CAAA;AAAA,UAClB,YAAY;AAAA,QAAA,CACb;AACD;AAAA,MACF;AACA,YAAMG,IAAUoI,GAAwB,KAAK,MAAM,gBAAgB,KAAK,MAAM,YAAY;AAC1F,WAAK,SAAS;AAAA,QACZ,kBAAkBpI;AAAA,QAClB,YAAY;AAAA,MAAA,CACb;AAAA,IACH;AArNE,SAAK,eAAewC,EAAM,UAAA,GAC1B,KAAK,QAAQ;AAAA,MACX,gBAAgB,CAAA;AAAA,MAChB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB,CAAA;AAAA,IAAC;AAAA,EAEvB;AAAA,EASA,uBAAuB;AACrB,UAAM,EAAE,WAAAsE,MAAc,KAAK,OACrB,EAAE,WAAApG,MAAcoG,GAChB,EAAE,gBAAA+D,MAAmBnK,GACrBoK,IAAcD,EAAe,eAAA;AAEnC,QAAIC,EAAY,UAAUA,EAAY,CAAC,EAAE,SAAS,WAAW;AAC3D,YAAMC,IAAKD,EAAY,MAAA;AACvB,MAAIC,KACFD,EAAY,KAAKC,CAAE;AAAA,IAEvB;AAEA,SAAK,SAAS;AAAA,MACZ,gBAAgBD;AAAA,IAAA,CACjB;AAAA,EACH;AAAA,EAEA,MAAM,oBAAoB;AACxB,UAAM,KAAK,MAAM,UAAU,cAAc,gBAAgB,UAAU,GACnE,KAAK,kBAAA;AACL,UAAM,EAAE,WAAAhE,MAAc,KAAK,OACrB,EAAE,MAAAf,MAASe;AACjB,WAAO,KAAKkE,EAAQ,EAAE,QAAQ,CAACC,MAAQ;AACrC,MAAAlF,EAAK,kBAAkBkF,GAAKlC,IAAeiC,GAASC,CAAG,GAAG,IAAM,EAAI;AAAA,IACtE,CAAC,GAEDlF,EAAK,OAAA,GACL,KAAK,qBAAA,GACLe,EAAU,cAAc,GAAG,mBAAmB,MAAM;AAClD,WAAK,qBAAA;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EAEA,uBAA6B;AAC3B,SAAK,YAAY,IAAI,CAAC5I,MAAOA,GAAI;AAAA,EACnC;AAAA,EAmKA,SAA0B;AACxB,UAAM,EAAE,gBAAAgN,GAAgB,cAAA1C,GAAc,kBAAA2C,GAAkB,YAAAC,EAAA,IAAe,KAAK,OACtE,EAAE,cAAAC,MAAiB,MACnBC,IAAkB,KAAK,MAAM,UAAU,OAAO,iBAC9CvD,IAAQmD,EAAe,IAAI,CAAChN,OACzB;AAAA,MACL,yBAAQ8K,IAAA,EAAU,UAAAuC,GAAWrN,EAAG,IAAI,GAAE;AAAA,MACtC,KAAKA,EAAG;AAAA,MACR,UAAU,gBAAAiH,EAACyC,IAAA,EAAS,YAAY1J,EAAG,MAAM;AAAA,IAAA,EAE5C,GAEKsN,IACJ,gBAAArG;AAAA,MAACsG;AAAA,MAAA;AAAA,QACC,OAAOjD;AAAA,QACP,aAAY;AAAA,QACZ,0BAASkD,IAAA,EAAe,OAAO,EAAE,OAAO,kBAAA,GAAqB;AAAA,QAC7D,cAAc,KAAK;AAAA,QACnB,YAAU;AAAA,QACV,SAAS,MAAM;AACb,eAAK,SAAS;AAAA,YACZ,YAAY;AAAA,YACZ,kBAAkB,CAAA;AAAA,UAAC,CACpB;AAAA,QACH;AAAA,QACA,UAAU,CAACC,MAAM;AACf,eAAK,SAAS;AAAA,YACZ,cAAcA,EAAE,OAAO;AAAA,UAAA,CACxB;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAGJ,WACE,gBAAA1G,EAAC,SAAI,KAAK,KAAK,cAAc,WAAWC,GAAO,WAAW,SAASmG,GACjE,UAAA;AAAA,MAAA,gBAAAlG,EAAC,SAAI,WAAWD,GAAO,QACpB,UAAAoG,sBACEA,GAAA,EAAgB,kBAAkBE,GAAoB,aAAa,KAAK,SAAS,KAAK,IAAI,EAAA,CAAU,IAErGA,GAEJ;AAAA,MACCJ,uBACE,OAAA,EACE,UAAA;AAAA,QAAA,CAACD,EAAiB,UAAU,gBAAAhG,EAAC,SAAI,WAAWD,GAAO,mBAAmB,UAAA,UAAM;AAAA,QAC7E,gBAAAC,EAACyC,IAAA,EAAS,YAAYuD,GAAkB;AAAA,MAAA,GAC1C;AAAA,MAED,CAACA,EAAiB,UAAU,CAACC,KAC5B,gBAAAjG;AAAA,QAACyG;AAAA,QAAA;AAAA,UACC,kBAAiB;AAAA,UACjB,OAAA7D;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,QACT;AAAA,MAAA;AAAA,IACF,GAEJ;AAAA,EAEJ;AACF;AAEO,MAAM8D,KAAwD;AAAA,EACnE,MAAM/C;AAAAA,EAAA,aACNA;AAAAA,EACA,MAAM,KAAKlC,GAAK;AACd,UAAMkF,IAA+BC,GAAgBhD,EAAa,EAAEG,EAAgB,GAC9E8C,IAAQD,GAAgBhD,EAAa,EAAE,CAAC,EAAE,GAAAkD,0BACvCC,GAAA,EAAG,UAAAD,EAAE,YAAY,GAAE,CAC3B;AAED,IADkBrF,EAAI,aAAA,EACZ,aAAa;AAAA,MACrB,yBAAQoF,GAAA,EAAM;AAAA,MACd,MAAM;AAAA,MACN,wBAAOG,IAAA,EAAoB;AAAA,MAC3B,QAAQ,gBAAAhH,EAAC2G,GAAA,EAA6B,WAAWlF,GAAK;AAAA,IAAA,CACvD,GACDA,EAAI,cAAA;AAAA,EACN;AAAA,EACA,QAAQ,YAAY;AAClB,YAAQ,IAAIkC,IAAa,oBAAoB;AAAA,EAC/C;AAAA,EACA,MAAM,QAAQlC,GAAK;AACjB,YAAQ,IAAI,WAAWA,CAAG;AAAA,EAC5B;AAAA,EACA,QAAQ,OACC,CAAA;AAAA,EAET,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEAiF,GAAmB,cAAc/C;AClX1B,MAAMA,KAAc,YCAdlD,KAA6B;AAAA,EACxC,YAAY;AACd,GCFaC,KAA6B;AAAA,EACxC,YAAY;AACd,GCAAuG,KAAe,EAAA,OAAExG,WAAOC,GAAA;;;;;;;;GCalBwG,KAAe,CAAC;AAAA,EACpB,YAAAxE;AAAA,EACA,UAAAoB;AAAA,EACA,UAAAqD;AACF,MAIM;AACJ,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAS,EAAK;AACxC,SACE,gBAAAxH,EAAC,OAAA,EAAI,WAAWC,GAAO,iBACrB,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAK,CAACF,GAAO,UAAUqH,KAASrH,GAAO,cAAc,CAAC,GACnE,UAAA2C,EAAW,IAAI,CAAC3J,MAEb,gBAAAiH,EAAC,OAAA,EAAI,WAAWD,GAAO,WAAwB,SAAS,MAAMoH,EAASpO,EAAG,GAAG,GAC1E,UAAAA,EAAG,MAAA,GADiCA,EAAG,GAE1C,CAEH,EAAA,CACH;AAAA,IACA,gBAAAiH,EAAC,OAAA,EAAI,WAAWD,GAAO,aAAa,aAAa,MAAMsH,EAAS,EAAI,GAAG,YAAY,MAAMA,EAAS,EAAK,GACpG,UAAAvD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ,GAEayD,KAAwB,CAACjK,MAAqC;;AACzE,QAAM,EAAE,UAAAkK,GAAU,cAAAC,GAAc,UAAAC,GAAU,QAAAC,GAAQ,UAAAC,MAAatK,GACzD1C,IAAW,CAAC,GAAG4M,CAAQ,GACvBK,IAAcjN,EAAS,MAAA,GACvBkN,IAAkBlN,EAAS,IAAI,CAAC7B,MAAO;;AAC3C,UAAMV,IAAOU,GACPgP,KAAW9O,IAAAZ,EAAK,eAAe,oBAAoBA,EAAK,MAAM,aAAa,MAAhE,gBAAAY,EAAmE,MAAM,OACpF+O,IAAQ3P,EAAK,MAAM,SAAS0P,KAAY1P,EAAK,MAAM,iBAAiB;AAC1E,WAAO;AAAA,MACL,KAAKU,EAAG;AAAA,MACR,OAAOiP,KAAS;AAAA,IAAA;AAAA,EAEpB,CAAC,GAEKC,IACJ,gBAAAjI,EAAC,OAAA,EAAI,WAAWD,GAAO,MAAM,SAAS,MAAM4H,GAAOE,KAAA,gBAAAA,EAAa,OAAM,EAAE,GACtE,UAAA,gBAAA7H,EAACkI,IAAA,CAAA,CAAa,KADgE,cAEhF,GAGIC,IACJ,gBAAAnI,EAAC,OAAA,EAAI,WAAWD,GAAO,MAAM,SAAS,MAAM2H,GAASG,KAAA,gBAAAA,EAAa,OAAM,EAAE,GACxE,UAAA,gBAAA7H,EAACoI,IAAA,CAAA,CAAe,KADgE,gBAElF,GAGIC,IACJ,gBAAArI,EAAC,OAAA,EAAI,WAAWD,GAAO,MAAM,SAAS,MAAM6H,GAASC,KAAA,gBAAAA,EAAa,OAAM,EAAE,GACxE,UAAA,gBAAA7H,EAACsI,IAAA,CAAA,CAAqB,KAD0D,sBAElF,GAGIC,sBACHrB,IAAA,EAAa,YAAYY,EAAgB,QAAA,GAAW,UAAUL,GAC7D,UAAA,gBAAAzH,EAAC,SAAK,WAAA6H,KAAA,gBAAAA,EAAa,MAAM,YAAS5O,IAAA4O,KAAA,gBAAAA,EAAa,aAAb,gBAAA5O,EAAuB,MAAM,UAAS,SAAQ,KADA,cAElF;AAGF,SAAO;AAAA,IACL,KAAK,EAAE,UAAAgP,GAAU,YAAAE,GAAY,aAAAE,GAAa,YAAAE,EAAA;AAAA,IAC1C,MAAM,CAACA,GAAYF,GAAaJ,GAAUE,CAAU;AAAA,EAAA;AAExD,GAEaK,KAAuB,CAAClL,MAAqC;AACxE,QAAM,EAAE,UAAA2K,GAAU,YAAAE,GAAY,aAAAE,GAAa,YAAAE,EAAA,IAAejG,EAAQ,MACzDiF,GAAsBjK,CAAK,EAAE,KACnC,CAACA,CAAK,CAAC;AAEV,SACE,gBAAAwC,EAAC,OAAA,EAAI,WAAWC,GAAO,YACpB,UAAA;AAAA,IAAAwI;AAAA,IACAF;AAAA,IACAJ;AAAA,IACAE;AAAA,EAAA,GACH;AAEJ,GClGaM,KAAqB,CAACpQ,GAAyBqQ,IAAQ,MAAM;AACxE,QAAMzR,IAAM,CAAA;AACZ,MAAI0R,IAAQ,GACRd,IAAgExP;AAEpE,SAAOsQ,IAAQD,KAASb;AACtB,IAAIe,GAAYf,CAAW,MACzB5Q,EAAI,KAAK4Q,CAAW,GACpBc,MAGFd,IAAcA,EAAY,UAAU;AAGtC,SAAO5Q;AACT,GCda4R,KAAY,CAAC,EAAE,MAAAxQ,QAExB,gBAAA2H;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,cAAc;AAAA,MACd,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAGR,YAAK,MAAM;AAAA,EAAA;AAAA;;;ACMX,MAAM8I,GAAkB;AAAA,EAI7B,YAAY1N,GAAmC;AAH/C,IAAAV,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,mBAAmBU,EAAQ,kBAChC,KAAK,MAAMA,EAAQ,KACnB,KAAK,YAAYA,EAAQ;AAAA,EAC3B;AAAA,EAEA,MAAM,QAAQ,EAAE,UAAA2N,GAAU,UAAAtE,KAA+E;;AACvG,UAAMuE,KAAoB/P,IAAA8P,KAAA,gBAAAA,EAAU,aAAV,gBAAA9P,EAAoB,MAAM;AACpD,WAAI+P,KAAA,QAAAA,EAAmB,cACTA,KAAA,gBAAAA,EAAmB,YAAYD,GAAW;AAAA,MACpD,SAAS,KAAK;AAAA,MACd,YAAY,KAAK,iBAAA;AAAA,MACjB,OAAOtE;AAAA,MACP,OAAOA,EAAS;AAAA,IAAA,KAKb;AAAA,EACT;AAAA,EAEA,MAAM,QAAQ,EAAE,UAAAsE,GAAU,UAAA3D,GAAU,UAAAX,KAA+E;;AACjH,UAAMuE,KAAoB/P,IAAA8P,KAAA,gBAAAA,EAAU,aAAV,gBAAA9P,EAAoB,MAAM,eAC9CgQ,KAAwBzF,IAAA4B,EAAU,aAAV,gBAAA5B,EAAoB,MAAM;AACxD,QAAIvM,IAAmE,CAAA;AACvE,UAAMiS,IAAe;AAAA,MACnB,UAAA9D;AAAA,MACA,SAAS,KAAK;AAAA,MACd,YAAY,KAAK,iBAAA;AAAA,MACjB,OAAOX;AAAA,MACP,OAAOA,EAAS;AAAA,IAAA;AAElB,QAAIuE,KAAA,QAAAA,EAAmB;AAIrB,UAHA/R,IAAM,MAAM+R,EAAkB,YAAYD,GAAWG,CAAY,GAG7DD,KAAA,QAAAA,EAAuB,eAAe;AACxC,YAAIE;AACJ,eAAI,OAAOlS,KAAQ,WACjBkS,IAAgB,OAAMF,KAAA,gBAAAA,EAAuB,cAAchS,EAAI,UAAW;AAAA,UACxE,GAAGiS;AAAA,UACH,GAAGjS;AAAA,QAAA,MAGLkS,IAAgB,OAAMF,KAAA,gBAAAA,EAAuB,cAAcF,GAAW;AAAA,UACpE,GAAGG;AAAA,QAAA,KAGAC;AAAA,MACT;AACE,eAAOlS;AAAA,aAEAgS,KAAA,QAAAA,EAAuB;AAIhC,aAHsB,OAAMA,KAAA,gBAAAA,EAAuB,cAAcF,GAAW;AAAA,QAC1E,GAAGG;AAAA,MAAA;AAIP,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAS,EAAE,UAAAH,GAAU,UAAA3D,GAAU,UAAAX,KAA4E;;AAC/G,UAAMxN,IAAM,QAAMwM,KAAAD,KAAAvK,IAAA8P,EAAU,aAAV,gBAAA9P,EAAoB,MAAM,kBAA1B,gBAAAuK,EAAyC,aAAzC,gBAAAC,EAAA,KAAAD,GAAoDuF,GAAW;AAAA,MAC/E,UAAA3D;AAAA,MACA,SAAS,KAAK;AAAA,MACd,YAAY,KAAK,iBAAA;AAAA,MACjB,OAAOX;AAAA,MACP,OAAOA,EAAS;AAAA,IAAA;AAElB,WAAIxN,MAAQ,KACH,KAEFA;AAAA,EACT;AAAA,EAEA,wBAAwBoB,GAAyB;;AAC/C,UAAM+Q,IAAW/Q,EAAK;AACtB,YAAOY,IAAAmQ,KAAA,gBAAAA,EAAU,MAAM,kBAAhB,gBAAAnQ,EAA+B;AAAA,EACxC;AAAA,EAEA,uBAAuBZ,GAAiC;;AACtD,QAAI,CAACA;AACH,aAAO;AAET,UAAM+Q,IAAW/Q,EAAK;AACtB,YAAOY,IAAAmQ,KAAA,gBAAAA,EAAU,MAAM,kBAAhB,gBAAAnQ,EAA+B;AAAA,EACxC;AAAA,EAEA,kBAAkBZ,GAAiC;;AACjD,QAAI,CAACA;AACH,aAAO;AAET,UAAM+Q,IAAW/Q,EAAK;AACtB,YAAOY,IAAAmQ,KAAA,gBAAAA,EAAU,MAAM,kBAAhB,gBAAAnQ,EAA+B;AAAA,EACxC;AAAA,EAEA,mBAAmBZ,GAAiC;;AAClD,QAAI,CAACA;AACH,aAAO;AAET,UAAM+Q,IAAW/Q,EAAK;AACtB,YAAOY,IAAAmQ,KAAA,gBAAAA,EAAU,MAAM,kBAAhB,gBAAAnQ,EAA+B;AAAA,EACxC;AAAA,EACA,qBAAqBZ,GAAiC;;AACpD,QAAI,CAACA;AACH,aAAO;AAET,UAAM+Q,IAAW/Q,EAAK;AACtB,YAAOY,IAAAmQ,KAAA,gBAAAA,EAAU,MAAM,kBAAhB,gBAAAnQ,EAA+B;AAAA,EACxC;AAAA,EAEA,MAAM,OAAOZ,GAAyB;;AACpC,QAAIgR,IAAUhR;AACd,UAAMoJ,IAAM,KAAK,KACX2H,IAAW/Q,EAAK,UAChBiR,KAASrQ,IAAAmQ,KAAA,gBAAAA,EAAU,MAAM,kBAAhB,gBAAAnQ,EAA+B;AAC9C,QAAIqQ,GAAQ;AACV,YAAMC,IAAS,MAAMD,EAAOjR,GAAM;AAAA,QAChC,YAAY,KAAK,iBAAA;AAAA,QACjB,SAASoJ;AAAA,QACT,OAAO,CAAA;AAAA,MAAC,CACT;AACD,UAAI8H,MAAW;AACb,eAAO;AAET,MAAI,OAAOA,KAAW,aACpBF,IAAUE,EAAO,YAAYF;AAAA,IAEjC;AAEA,WAAIA,KACc5H,EAAI,UAAU,SAAS4H,CAAgB,KAErD,MAAM1M,GAAA,GAIH0M;AAAA,EACT;AAAA,EAEA,MAAM,SAAShR,GAAyB;;AACtC,QAAIgR,IAAUhR;AACd,UAAMoJ,IAAM,KAAK,KACX2H,IAAW/Q,EAAK,UAChBmR,KAAWvQ,IAAAmQ,KAAA,gBAAAA,EAAU,MAAM,kBAAhB,gBAAAnQ,EAA+B;AAEhD,QAAIuQ,GAAU;AACZ,YAAMD,IAAS,MAAMC,EAASnR,GAAM;AAAA,QAClC,YAAY,KAAK,iBAAA;AAAA,QACjB,SAASoJ;AAAA,QACT,OAAO,CAAA;AAAA,MAAC,CACT;AACD,UAAI8H,MAAW;AACb,eAAO;AAET,MAAI,OAAOA,KAAW,aACpBF,IAAUE,EAAO,cAAcF;AAAA,IAEnC;AAEA,WAAIA,KACc5H,EAAI,UAAU,WAAW4H,CAAgB,KAEvD,MAAM1M,GAAA,GAIH0M;AAAA,EACT;AACF;AC1JO,MAAMI,WAAiBpM,EAAM,UAAgD;AAAA,EAGlF,YAAYC,GAA0B;AACpC,UAAMA,CAAK;AAHb,IAAA5C,EAAA;AACA,IAAAA,EAAA;AAsBA,IAAAA,EAAA,0BAAmB,OACV;AAAA,MACL,SAAS,CAACgE,MAA0B;AAClC,aAAK,SAAS;AAAA,UACZ,YAAYA;AAAA,QAAA,CACb;AAAA,MACH;AAAA,MACA,WAAW,MAAM;AACf,aAAK,SAAS;AAAA,UACZ,YAAY;AAAA,QAAA,CACb;AAAA,MACH;AAAA,IAAA;AA2EJ,IAAAhE,EAAA,wBAAoD,OAAO+J,MAAa;;AACtE,YAAMiF,IAAYjF,EAAS,WACrBsE,IAAWW,KAAA,gBAAAA,EAAW;AAC5B,UAAIX;AAOF,gBANYtF,KAAAD,KAAAvK,IAAA8P,EAAS,aAAT,gBAAA9P,EAAmB,MAAM,kBAAzB,gBAAAuK,EAAwC,eAAxC,gBAAAC,EAAA,KAAAD,GAAqDuF,GAAU;AAAA,UACzE,SAAS,KAAK,MAAM;AAAA,UACpB,YAAY,KAAK,iBAAA;AAAA,UACjB,OAAOtE;AAAA,UACP,OAAOiF;AAAA,QAAA;AAAA,IAIb;AAEA,IAAAhP,EAAA,uBAAiD,YAAY;AAC3D,WAAK,SAAS;AAAA,QACZ,GAAG,KAAK;AAAA,QACR,gBAAgB,KAAK,MAAM,UAAU,OAAO;AAAA,MAAA,CAC7C;AAAA,IACH;AAEA,IAAAA,EAAA,oBAA4C,OAAO+J,MAAa;;AAC9D,YAAM,EAAE,WAAAkF,MAAc,MAChBpO,IAAY,KAAK,MAAM,UAAU,WACjCmO,IAAYjF,EAAS,WACrBmF,IAAcF,KAAA,gBAAAA,EAAW,aACzBG,IAAU;AAAA,QACd,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,MAAA,GACTD,KAAA,gBAAAA,EAAa,QAAO,OAAO,GACvBb,IAAWW,KAAA,gBAAAA,EAAW;AAC5B,UAAIX,KACU,QAAMtF,KAAAD,KAAAvK,IAAA8P,EAAS,aAAT,gBAAA9P,EAAmB,MAAM,kBAAzB,gBAAAuK,EAAwC,WAAxC,gBAAAC,EAAA,KAAAD,GAAiDuF,GAAU;AAAA,QAC3E,SAAS,KAAK,MAAM;AAAA,QACpB,YAAY,KAAK,iBAAA;AAAA,QACjB,OAAOtE;AAAA,QACP,OAAOiF;AAAA,MAAA,QAEG;AACV,eAAO;AAGX,UAAI,EAACA,KAAA,QAAAA,EAAW;AACd,uBAAQ,KAAK,wCAAwC,GAC9C;AAET,UAAIA,EAAU,aAAa,WAAW;AACpC,YAAIX,KACU,QAAMe,KAAA3L,KAAAuF,IAAAqF,EAAS,aAAT,gBAAArF,EAAmB,MAAM,kBAAzB,gBAAAvF,EAAwC,aAAxC,gBAAA2L,EAAA,KAAA3L,GAAmD4K,GAAU;AAAA,UAC7E,UAAUW,EAAU;AAAA,UACpB,SAAS,KAAK,MAAM;AAAA,UACpB,YAAY,KAAK,iBAAA;AAAA,UACjB,OAAOjF;AAAA,UACP,OAAOiF;AAAA,QAAA,QAEG;AACV,iBAAO;AAIX,UAAIK,IAAAL,EAAU,aAAV,gBAAAK,EAAoB,cAAa,SACnCxO,KAAA,QAAAA,EAAW,QAAQmO,EAAU,UAAmBA,EAAU,UAAW,iBAErEnO,KAAA,QAAAA,EAAW,QAAQmO,EAAU,UAAmBA,EAAU,UAAWG;AAAA,MAEzE,OAAO;AACL,cAAIG,IAAAN,EAAU,aAAV,gBAAAM,EAAoB,UAAOC,IAAAP,EAAU,aAAV,gBAAAO,EAAoB;AACjD,yBAAQ,KAAK,sCAAsC,GAC5C;AAGT,YAAI,CADQ1O,EAAU,eAAa2O,IAAAR,EAAU,aAAV,gBAAAQ,EAAoB,OAAM,MAAIC,IAAAT,KAAA,gBAAAA,EAAW,aAAX,gBAAAS,EAAqB,OAAM,IAAIN,CAAO;AAErG,yBAAQ,KAAK,aAAa,GACnB;AAAA,MAEX;AAEA,kBAAK,MAAM,UAAU,QAAQ,KAAK,UAAUpF,CAAQ,GAC7C,IAAI,QAAQ,CAAC3H,MAAY;AAE9B,mBAAW,YAAY;;AACrB,cAAIiM,KACW,MAAM,KAAK,aAAaA,GAAU,IAAI,MACtC;AACX,oBAAA9P,IAAA0Q,EAAU,YAAV,QAAA1Q,EAAmB,WAAW,KACvB6D,EAAQ,EAAK;AAGxB,WAAA2G,IAAAkG,EAAU,YAAV,QAAAlG,EAAmB,aAAWD,IAAAkG,EAAU,aAAV,gBAAAlG,EAAoB,OAAM,KACxD1G,EAAQ,EAAI;AAAA,QACd,GAAG,EAAE;AAAA,MACP,CAAC;AAAA,IACH;AAEA,IAAApC,EAAA,sBAA0D,OAAOrC,GAAgCyM,MAAU;;AACzG,YAAM,EAAE,WAAAnD,MAAc,KAAK,OACrB,EAAE,WAAAgI,MAAc;AAEtB,UAAI,CAACtR;AACH,eAAAsJ,EAAU,OAAO,wBAAwB,IAAI,IAC7C1I,IAAA0Q,EAAU,YAAV,QAAA1Q,EAAmB,WAAW,KAC9B,KAAK,SAAS;AAAA,UACZ,mBAAmB;AAAA,QAAA,CACpB,GACM;AAET,YAAMmR,IAAO,QAAM1G,KAAAD,KAAAD,IAAAnL,EAAK,aAAL,gBAAAmL,EAAe,MAAM,kBAArB,gBAAAC,EAAoC,aAApC,gBAAAC,EAAA,KAAAD,GAA+CpL,GAAM;AAAA,QACtE,SAAS,KAAK,MAAM;AAAA,QACpB,YAAY,KAAK,iBAAA;AAAA,QACjB,OAAAyM;AAAA,QACA,OAAO,CAAA;AAAA,MAAC;AAEV,UAAIsF,MAAS;AACX,eAAOA;AAGT,YAAMC,IAAc,KAAK,eAAehS,CAAI;AAC5C,kBAAK,SAAS;AAAA,QACZ,mBAAmBgS;AAAA,QACnB,sBACE,KAAK,kBAAkB,wBAAwBhS,CAAI,KAAK,KAAK,MAAM,UAAU,OAAO;AAAA,MAAA,CACvF,GAGD,WAAW,MAAM;AACf,QAAAsJ,EAAU,OAAO,wBAAwBtJ,CAAI;AAAA,MAC/C,GAAG,KAAK,GAED;AAAA,IACT;AAEA,IAAAqC,EAAA,qBAAkD,OAAO,MAAM;;AAC7D,YAAMgP,IAAY,EAAE,WACdX,IAAWW,KAAA,gBAAAA,EAAW;AAC5B,UAAI,CAACX;AACH,eAAO;AAGT,YAAMuB,IAAc;AAAA,QAClB,SAAS,KAAK,MAAM;AAAA,QACpB,YAAY,KAAK,iBAAA;AAAA,QACjB,OAAO;AAAA,QACP,OAAOZ;AAAA,MAAA,GAGHa,IAAc,QAAM9G,KAAAD,KAAAvK,IAAA8P,EAAS,aAAT,gBAAA9P,EAAmB,MAAM,kBAAzB,gBAAAuK,EAAwC,gBAAxC,gBAAAC,EAAA,KAAAD,GAAsDuF,GAAU;AAAA,QACxF,SAAS,KAAK,MAAM;AAAA,QACpB,YAAY,KAAK,iBAAA;AAAA,QACjB,OAAO;AAAA,QACP,OAAO,CAAA;AAAA,MAAC;AAGV,UAAIwB,MAAgB;AAClB,eAAOA;AAGT,YAAMC,IAAW,QAAMV,KAAA3L,KAAAuF,IAAAqF,EAAS,aAAT,gBAAArF,EAAmB,MAAM,kBAAzB,gBAAAvF,EAAwC,gBAAxC,gBAAA2L,EAAA,KAAA3L,GAAsD4K,GAAU,EAAE,GAAGuB;AAC5F,UAAIE,MAAa;AACf,eAAOA;AAGT,YAAMC,IAAY,KAAK,aAAa1B,GAAUuB,CAAW;AACzD,kBAAK,SAAS;AAAA,QACZ,GAAG,KAAK;AAAA,QACR,WAAAG;AAAA,QACA,gBAAgB,KAAK,kBAAkB,kBAAkB1B,CAAQ,KAAK,KAAK,MAAM,UAAU,OAAO;AAAA,MAAA,CACnG,GACM;AAAA,IACT;AAEA,IAAArO,EAAA,sBAAe,CAACqO,GAA6BuB,MAAwC;AACnF,UAAIG,IAAgC,gBAAAzK,EAAC6I,IAAA,EAAU,MAAME,EAAA,CAAU;AAE/D,YAAM2B,IADgB,KAAK,kBAAkB,mBAAmB3B,CAAQ,KAC/B,KAAK,MAAM,UAAU,OAAO;AAErE,aAAI2B,MACFD,IAAY,gBAAAzK,EAAC0K,GAAA,EAAgB,MAAM3B,GAAU,QAAQuB,GAAa,IAE7DG;AAAA,IACT;AAEA,IAAA/P,EAAA,sBAAe,OAAOiQ,MAAmB;;AAEvC,YAAMtS,IADM,KAAK,MAAM,UACN,UAAU,QAAQsS,CAAM;AAEzC,aADa,MAAM,KAAK,aAAatS,KAAQ,MAAM,IAAI,MAC1C,KACJ,OAEPY,IAAA,KAAK,UAAU,YAAf,QAAAA,EAAwB,WAAW0R,IAC5B;AAAA,IAEX;AAEA,IAAAjQ,EAAA,oBAAa,OAAOkQ,MAAe;AAEjC,YAAMC,IADM,KAAK,MAAM,UACJ,UAAU,QAAQD,CAAE,GACjClG,IAAU,MAAM,KAAK,kBAAkB,OAAOmG,CAAe;AACnE,UAAInG;AACF,oBAAK,aAAaA,EAAQ,EAAE,GACrB;AAAA,IAEX;AAEA,IAAAhK,EAAA,sBAAe,OAAOiQ,MAAmB;AAEvC,YAAMtS,IADM,KAAK,MAAM,UACN,UAAU,QAAQsS,CAAM;AACzC,aAAKtS,IAGU,MAAM,KAAK,kBAAkB,SAASA,CAAI,MAC1C,KACN,MAET,KAAK,aAAa,EAAE,GACb,MAPL;AAAA,IAQJ;AAEA,IAAAqC,EAAA,kBAAW,CAACkQ,MAAe;AACzB,YAAME,IAAkB,KAAK,MAAM,UAAU,UAAU,QAAQF,CAAE;AACjE,UAAI,CAACE;AACH;AAEF,YAAMC,IAAWD,EAAgB,MAAM,UAAU,YAAY,CAAA;AAC7D,aAAAC,EAAS,YAAY,IACrBD,EAAgB,MAAM,UAAU,WAAWC,GAC3CD,EAAgB,YAAA,GACT;AAAA,IACT;AAEA,IAAApQ,EAAA,wBAAiB,CAACrC,MAA4B;AAE5C,YAAM2S,IAA0C;AAAA,QAC9C,UAFWvC,GAAmBpQ,GAAM,CAAC;AAAA,QAGrC,cAAc,KAAK;AAAA,QACnB,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,MAAA,GAEX4S,IAAqB1D,GAAsByD,CAAY;AAC7D,UAAIX,IAAc,gBAAArK,EAACwI,IAAA,EAAsB,GAAGwC,EAAA,CAAc;AAC1D,YAAME,IACJ,KAAK,kBAAkB,qBAAqB7S,CAAI,KAAK,KAAK,MAAM,UAAU,OAAO;AACnF,aAAI6S,MACFb,IACE,gBAAArK;AAAA,QAACkL;AAAA,QAAA;AAAA,UACC,MAAA7S;AAAA,UACA,SAAS,KAAK,MAAM;AAAA,UACpB,cAAc4S,EAAmB;AAAA,UACjC,iBAAiBA,EAAmB;AAAA,QAAA;AAAA,MAAA,IAInCZ;AAAA,IACT;AAEA,IAAA3P,EAAA,qBAA8C,CAACrC,GAAM0Q,GAAUvC,MAAM;AACnE,WAAK,MAAM,UAAU,QAAQ,KAAK,WAAWnO,CAAI;AACjD,YAAM+Q,IAAW/Q,KAAA,gBAAAA,EAAM;AACvB,MAAK+Q,KACH,QAAQ,KAAK,sBAAsB/Q,CAAI;AAEzC,YAAMiS,IAAc;AAAA,QAClB,SAAS,KAAK,MAAM;AAAA,QACpB,YAAY,KAAK,iBAAA;AAAA,QACjB,OAAO9D;AAAA,QACP,OAAO,CAAA;AAAA,MAAC,GAEJiE,IAAY,KAAK,aAAa1B,GAAUuB,CAAW,GAEnDa,IAAW;AAAA,QACf,kBAAkB,gBAAAnL,EAAC,OAAA,EAAI,WAAWD,GAAO,WAAY,WAAAqJ,KAAA,gBAAAA,EAAU,MAAM,WAASA,KAAA,gBAAAA,EAAU,eAAA,CAAc;AAAA,QACtG,WAAAqB;AAAA,QACA,qBACE,KAAK,kBAAkB,uBAAuBpS,CAAI,KAAK,KAAK,MAAM,UAAU,OAAO;AAAA,MAAA;AAEvF,MAAK0Q,MACHoC,EAAS,YAAY,OAEvB,KAAK,SAAS;AAAA,QACZ,GAAGA;AAAA,MAAA,CACJ;AAAA,IACH;AAEA,IAAAzQ,EAAA,qBAA8C,OAAO,MAAM;AACzD,YAAMgP,IAAY,EAAE,WACdX,IAAWW,KAAA,gBAAAA,EAAW;AAK5B,aAJY,MAAM,KAAK,kBAAkB,QAAQ;AAAA,QAC/C,UAAAX;AAAA,QACA,UAAU;AAAA,MAAA,CACX;AAAA,IAEH;AAEA,IAAArO,EAAA,qBAA8C,OAAO,MAAM;AACzD,YAAMgP,IAAY,EAAE,WACdX,IAAWW,KAAA,gBAAAA,EAAW;AAM5B,aALY,MAAM,KAAK,kBAAkB,QAAQ;AAAA,QAC/C,UAAAX;AAAA,QACA,UAAU;AAAA,QACV,GAAGW;AAAA,MAAA,CACJ;AAAA,IAEH;AAEA,IAAAhP,EAAA,mCAAqE,CAAC0Q,MAAoB;AACxF,YAAM,EAAE,sBAAAC,MAAyB,KAAK,OAChC,EAAE,WAAA1J,MAAc,KAAK,OAErB2J,IAAOD,GACPE,IAAa5J,EAAU,OAAO,cAAA;AAEpC,aAAI,CAAC2J,KAAQ,CAACC,IACL,gBAAAvL,EAAA+G,GAAA,EAAE,IAGT,gBAAA/G;AAAA,QAACsL;AAAA,QAAA;AAAA,UACC,MAAMC;AAAA,UACN,mBAAmBH,EAAgB;AAAA,UACnC,wBAAwBA,EAAgB;AAAA,UACxC,QAAQ;AAAA,YACN,YAAY,KAAK,iBAAA;AAAA,YACjB,SAAS,KAAK,MAAM;AAAA,YACpB,OAAO,CAAA;AAAA,UAAC;AAAA,QACV;AAAA,MAAA;AAAA,IAGN;AAEA,IAAA1Q,EAAA,kCAAmE,CAAC8Q,MAAmB;AACrF,YAAM,EAAE,qBAAAC,MAAwB,KAAK,OAE/BH,IAAOG;AAEb,aAAKH,IAIH,gBAAAtL;AAAA,QAACsL;AAAA,QAAA;AAAA,UACC,MAAME,EAAe,SAAS;AAAA,UAC9B,mBAAmBA,EAAe;AAAA,UAClC,wBAAwBA,EAAe;AAAA,UACvC,QAAQ;AAAA,YACN,YAAY,KAAK,iBAAA;AAAA,YACjB,SAAS,KAAK,MAAM;AAAA,YACpB,OAAO,CAAA;AAAA,UAAC;AAAA,QACV;AAAA,MAAA,IAXK,gBAAAxL,EAAA+G,GAAA,EAAE;AAAA,IAcb;AAEA,IAAArM,EAAA,6BAAyD,CAACgR,MAAkB;AAC1E,YAAM,EAAE,gBAAAC,MAAmB,KAAK,OAE1BL,IAAOK;AAEb,aAAKL,IAIH,gBAAAtL;AAAA,QAACsL;AAAA,QAAA;AAAA,UACE,GAAII;AAAA,UACL,MAAMA,EAAc,SAAS;AAAA,UAC7B,mBAAmBA,EAAc;AAAA,UACjC,wBAAwBA,EAAc;AAAA,UACtC,QAAQ;AAAA,YACN,YAAY,KAAK,iBAAA;AAAA,YACjB,SAAS,KAAK,MAAM;AAAA,YACpB,OAAO,CAAA;AAAA,UAAC;AAAA,QACV;AAAA,MAAA,IAZK,gBAAA1L,EAAA+G,GAAA,EAAE;AAAA,IAeb;AA5dE,SAAK,QAAQ;AAAA,MACX,WAAWzJ,EAAM,UAAU;AAAA,MAC3B,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,sBAAsB;AAAA,MACtB,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,IAAA,GAElB,KAAK,YAAYD,EAAM,UAAA,GACvB,KAAK,oBAAoB,IAAIyL,GAAkB;AAAA,MAC7C,kBAAkB,KAAK;AAAA,MACvB,KAAK,KAAK,MAAM;AAAA,MAChB,WAAW,KAAK;AAAA,IAAA,CACjB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAM,uBAAuB8C,IAAuC,IAAI;;AAEtE,UAAMC,IAAgB;AAAA,MACpB,GAFoB,KAAK,MAAM,UAAU,OAAO,cAAc,CAAA;AAAA,MAG9D,GAAGD;AAAA,IAAA;AAEL,SAAK,MAAM,UAAU,OAAO,aAAaC;AACzC,UAAM,EAAE,WAAAlC,MAAc;AACtB,QAAI,CAACA,EAAU,SAAS;AACtB,cAAQ,KAAK,qBAAqB;AAClC;AAAA,IACF;AAEA,UAAMA,EAAU,QAAQ,MAAA;AAExB,UAAMmC,IAAiBnC,EAAU;AAEjC,KAAAnG,KAAAvK,IAAA6S,KAAA,gBAAAA,EAAgB,oBAAhB,gBAAA7S,EAAiC,YAAjC,QAAAuK,EAA0C,iBAAiBqI;AAAA,EAC7D;AAAA,EAEA,oBAA0B;AACxB,UAAM,EAAE,MAAAjL,EAAA,IAAS,KAAK,MAAM;AAC5B,WAAO,KAAKiF,EAAQ,EAAE,QAAQ,CAACC,MAAQ;AACrC,MAAAlF,EAAK,kBAAkBkF,GAAK,UAAUnC,EAAW,IAAIkC,GAASC,CAAG,GAAG,IAAM,EAAI;AAAA,IAChF,CAAC,GACD,KAAK,KAAA;AAAA,EACP;AAAA,EAEA,eAAe;;AACb,YAAO7M,IAAA,KAAK,UAAU,YAAf,gBAAAA,EAAwB;AAAA,EACjC;AAAA,EAEA,eAAe;;AACb,KAAAA,IAAA,KAAK,UAAU,YAAf,QAAAA,EAAwB,UACxB,KAAK,MAAM,UAAU,UAAU,WAAA;AAAA,EACjC;AAAA,EAEA,MAAM,OAAO;AACX,UAAM,EAAE,WAAA0Q,MAAc,MAChB,EAAE,WAAAhI,MAAc,KAAK;AAC3B,QAAI,CAACgI,EAAU,SAAS;AACtB,cAAQ,KAAK,qBAAqB;AAClC;AAAA,IACF;AAEA,UAAMA,EAAU,QAAQ,MAAA;AACxB,UAAMmC,IAAiBnC,EAAU;AAEjC,IAAAhI,EAAU,QAAQ,KAAK,SAAS;AAAA,MAC9B,YAAY;AAAA,IAAA,CACb,GAEDmK,EAAe,IAAI,QAAQ,GAAG,SAAS,CAAC,EAAE,OAAAhH,QAAmC;AAE3E,MADkBnD,EAAU,aAAA,EAClB,cAAcmD,CAAK;AAAA,IAC/B,CAAC,GAED,KAAK,MAAM,UAAU,UAAU,QAAQ,GAAG,gBAAgB,CAAC,EAAE,MAAAzM,QAAW;;AACtE,OAAAoL,KAAAD,KAAAvK,IAAA0Q,EAAU,YAAV,gBAAA1Q,EAAmB,oBAAnB,gBAAAuK,EAAoC,YAApC,QAAAC,EAA6C,SAASpL;AAAA,IACxD,CAAC,GAED,KAAK,MAAM,UAAU,UAAU,QAAQ,GAAG,gBAAgB,CAAC,EAAE,MAAAA,QAAW;;AACtE,OAAAoL,KAAAD,KAAAvK,IAAA0Q,EAAU,YAAV,gBAAA1Q,EAAmB,oBAAnB,gBAAAuK,EAAoC,YAApC,QAAAC,EAA6C,SAASpL;AAAA,IACxD,CAAC,GAEDsJ,EAAU,cAAA;AAAA,EACZ;AAAA,EAwXA,SAAS;AACP,UAAM,EAAE,WAAAgI,GAAW,OAAArM,GAAO,cAAAyO,GAAc,aAAAC,GAAa,aAAAC,GAAa,YAAAC,GAAY,gBAAAC,GAAgB,eAAAC,EAAA,IAC5F,MACI;AAAA,MACJ,WAAA7Q;AAAA,MACA,kBAAA8Q;AAAA,MACA,mBAAAC;AAAA,MACA,WAAA7B;AAAA,MACA,YAAA8B;AAAA,MACA,sBAAAlB;AAAA,MACA,qBAAAI;AAAA,MACA,gBAAAE;AAAA,IAAA,IACE,KAAK,OAEH,EAAE,WAAAhK,MAAcrE,GAChB7C,IAASkH,EAAU,yBAAyB,QAAA,KAAc,CAAA,GAE1DlG,IAAckG,EAAU,OAAO,MAAM,eAAe,mBACpD6K,IAAsC,CAAA;AAE5C,WAAInB,MACFmB,EAAmB,uBAAuB,KAAK,4BAG7Cf,MACFe,EAAmB,sBAAsB,KAAK,2BAG5Cb,MACFa,EAAmB,iBAAiB,KAAK,sBAEvCF,MACFE,EAAmB,oBAAoB,KAAK,MAAM,oBAIlD,gBAAA1M,EAAAiH,GAAA,EACE,UAAA;AAAA,MAAA,gBAAA/G;AAAA,QAACyM;AAAA,QAAA;AAAA,UACC,kBAAkBnP,EAAM,UAAU,OAAO;AAAA,UACzC,cAAcA,EAAM,UAAU,OAAO;AAAA,UACrC,KAAKqM;AAAA,UACL,WAAApO;AAAA,UACA,aAAAE;AAAA,UACC,GAAG6B;AAAA,UACJ,kBAAkB+O;AAAA,UAClB,gBAAgB,CAAA;AAAA,UAChB,eAAe,CAAA;AAAA,UACf,aAAa,KAAK;AAAA,UAClB,aAAa,KAAK;AAAA,UAClB,cAAAN;AAAA,UACA,iBAAiBC;AAAA,UACjB,aAAAC;AAAA,UACA,YAAAC;AAAA,UACA,gBAAAC;AAAA,UACA,cAAcC;AAAA,UACb,GAAGI;AAAA,UACJ,WAAA/B;AAAA,UACA,QAAAhQ;AAAA,UACA,WAAW,KAAK,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,MAEvB8R,KAAc/L,GAAa+L,GAAY,SAAS,IAAI;AAAA,IAAA,GACvD;AAAA,EAEJ;AACF;ACnkBO,MAAMG,KAAqC,MAAM;AACtD,QAAMC,IAActP,EAAM,UAAA;AAC1B,SAAO;AAAA,IACL,MAAMsG;AAAAA,IAAA,aACNA;AAAAA,IACA,MAAM,KAAKlC,GAAK;AACd,MAAAA,EAAI,OAAOkC,IACOlC,EAAI,aAAA,EACZ,gBAAgB,gBAAAzB,EAACyJ,IAAA,EAAS,KAAKkD,GAAa,WAAWlL,GAAK,CAAE;AAAA,IAC1E;AAAA,IACA,MAAM,QAAQA,GAAK;AACjB,cAAQ,IAAI,WAAWA,CAAG;AAAA,IAC5B;AAAA,IACA,QAAQ,OACC;AAAA;AAAA,MAEL,QAAQmL,GAAS;;AACf,gBAAOpJ,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,QAAQoJ;AAAA,MACzD;AAAA,MACA,iBAAiB;;AACf,gBAAOpJ,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,QAAQqJ,GAAW;AAAA,MACpE;AAAA,MACA,cAAc;;AACZ,gBAAOrJ,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,QAAQqJ,GAAW;AAAA,MACpE;AAAA,MACA,eAAeC,GAAwB;;AACrC,cAAMzR,KAAkBpC,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB;AAE7C,YAAIoC,KAAA,QAAAA,EAAiB,cAAc;AACjC,cAAIkD,IAAOuO;AACX,UAAI,OAAOA,KAAU,aACnBvO,IAAO,GAAGuO,CAAK,OAEjBzR,EAAgB,aAAa,MAAM,QAAQ,OAAOkD,CAAI,GACtDlD,EAAgB,aAAa,MAAM,SAAS;AAAA,QAC9C;AAAA,MACF;AAAA,MACA,eAAe;;AACb,gBAAOpC,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB;AAAA,MAC9B;AAAA,MACA,aAAa,MACJ0T,EAAY;AAAA,MAErB,QAAQ,MAAM;;AACZ,gBAAOnJ,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC;AAAA,MACjD;AAAA,MACA,YAAY,OAAOmH,MAAW;;AAC5B,eAAO,QAAM1R,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,aAAa0R;AAAA,MACjD;AAAA,MACA,UAAU,OAAOA,MAAW;;AAC1B,eAAO,QAAM1R,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,WAAW0R;AAAA,MAC/C;AAAA,MACA,YAAY,OAAOA,MAAW;;AAC5B,eAAO,QAAM1R,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,aAAa0R;AAAA,MACjD;AAAA,MACA,mBAAmB,MAAM;;AACvB,gBAAOnH,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,MAAM;AAAA,MACvD;AAAA,MACA,YAAY,CAAClI,MAAgC;;AAC3C,SAAAoI,KAAAD,KAAAD,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,oBAAxC,gBAAAC,EAAyD,YAAzD,QAAAC,EAAkE,SAASpI;AAAA,MAC7E;AAAA,MACA,QAAQ,MAAM;;AACZ,SAAArC,IAAA0T,EAAY,YAAZ,QAAA1T,EAAqB;AAAA,MACvB;AAAA,MACA,uBAAuB,CAAC2R,MAAe;;AACrC,iBAAOnH,KAAAD,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,gBAAgB,YAAxD,gBAAAC,EAAiE,iBAAiBmH,OAAO,CAAA;AAAA,MAClG;AAAA,MACA,8BAA8B,CAACA,MAAe;;AAC5C,cAAMmC,KACJrJ,KAAAD,KAAAD,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,gBAAgB,YAAxD,gBAAAC,EAAiE,UAAU,YAA3E,gBAAAC,EACI;AACN,gBAAOqJ,KAAA,gBAAAA,EAAK,IAAInC,OAAQ,CAAA;AAAA,MAC1B;AAAA,MACA,cAAc,MAAM;;AAClB,gBAAO3R,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB;AAAA,MAC9B;AAAA,MACA,mBAAmB,MAAM;;AACvB,gBAAOuK,KAAAvK,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,UAAU,YAA/B,gBAAAuK,EAAwC,gBAAgB;AAAA,MACjE;AAAA,MACA,wBAAwB,CAACqI,MAA0C;;AACjE,gBAAO5S,IAAA0T,EAAY,YAAZ,gBAAA1T,EAAqB,uBAAuB4S;AAAA,MACrD;AAAA,IAAA;AAAA,IAGJ,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAEJ;AAEAa,GAAe,cAAc/I;AChFtB,MAAMZ,KAAuB,CAACC,GAAyB1L,MAA+B;AAC3F,MAAI,CAAC0L;AACH,WAAO;AAET,QAAMhM,IAAMgM,EAAI,aAAa1L,CAAG;AAChC,SAAKN,KACI+L,GAAqBC,EAAI,eAAe1L,CAAG;AAItD,GAEa0V,KAAgC,CAC3CC,GACAC,GACA3R,MACkC;AAClC,QAAM4R,IAAK,CAAC9U,GAAqB6U,MAA+C;;AAC9E,QAAIE,IAAmB/U,EAAK,YAAY,CAAA;AACxC,IAAK,MAAM,QAAQ+U,CAAS,MAE1BA,IAAY,CAAA,IAGdA,IAAYA,EAAU,OAAO,CAACrU,MAAO,OAAOA,KAAO,QAAQ;AAC3D,UAAMgP,KAAW9O,IAAAsC,EAAU,eAAe,oBAAoBlD,EAAK,aAAa,MAA/D,gBAAAY,EAAkE,MAAM,OACnFoU,IAA+B;AAAA,MACnC,OAAOhV,EAAK,SAAS0P,KAAY1P,EAAK;AAAA,MACtC,KAAKA,EAAK;AAAA,MACV,UAAU,CAAA;AAAA,MACV,QAAQ6U;AAAAA,MACR,aAAY1J,IAAAjI,EAAU,QAAQlD,EAAK,MAAM,EAAE,MAA/B,QAAAmL,EAAkC,gBAAgB,SAAY,CAAC,SAAS,QAAQ;AAAA,IAAA,GAGxF8J,IAAgC,CAAA,GAChCC,IAAyB;AAAA,MAC7B,OAAO;AAAA,MACP,KAAK,GAAGlV,EAAK,EAAE;AAAA,MACf,UAAUiV;AAAA,MACV,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,iBAAiB,CAAC,EAAE,cAAAE,QAEhB,gBAAAxN;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,WAAW;AAAA,UAAA;AAAA,UAGZ,UAAAwN;AAAA,QAAA;AAAA,MAAA;AAAA,IAGP,GAEIlQ,IAAQjF,EAAK,SAAS,CAAA,GAEtBoV,IAAe,CAACzW,GAAcM,GAAaoW,MAAmB;AAGlE,UAFaC,GAAiB3W,CAAG,GAEvB;AACR,cAAM2B,IAAU3B,GACV4W,IAAerS,EAAU,QAAQlD,EAAK,EAAG;AAC/C,YAAIwV,IAAa;AACjB,YAAID,GAAc;AAChB,gBAAME,KAAYC,EAAcH,GAAuB,CAAC,GAAGF,GAAMpW,CAAG,CAAC;AACrE,UAAAuW,IAAaG,GAAUF,EAAS;AAAA,QAClC;AACA,YAAIG,IAAa3W;AACjB,QAAIuW,MACFI,IAAaD,GAAUH,CAAU,KAAKvW;AAExC,cAAM4W,IAAyB;AAAA,UAC7B,OAAOD;AAAA,UACP,KAAK,GAAG5V,EAAK,EAAE,IAAIqV,EAAK,KAAK,GAAG,CAAC;AAAA,UACjC,UAAU,CAAA;AAAA,UACV,eAAe;AAAA,UACf,SAAS;AAAA,UACT,YAAY,CAAC,SAAS;AAAA,UACtB,QAAQH;AAAA,QAAA;AAGV,YAAIY,IAA6B,CAAA;AACjC,QAAIxV,EAAQ,SAAS,CAAC,MAAM,QAAQA,EAAQ,KAAK,IAC/CwV,IAAY,CAACxV,EAAQ,KAAK,IAE1BwV,IAAYxV,EAAQ,OAGtBuV,EAAS,WAAWlB,GAA8BmB,GAAWD,GAAU3S,CAAS,GAChF+R,EAAc,KAAKY,CAAQ;AAC3B;AAAA,MACF;AACA,UAAIxW,GAAcV,CAAG,GAAG;AACtB,cAAM2B,IAAU3B;AAChB,eAAO,KAAK2B,CAAO,EAAE,QAAQ,CAACyV,MAAW;AACvC,UAAAX,EAAa9U,EAAQyV,CAAM,GAAGA,GAAQ,CAAC,GAAGV,GAAMpW,CAAG,CAAC;AAAA,QACtD,CAAC;AAAA,MACH;AACA,MAAI,MAAM,QAAQN,CAAG,KACHA,EACR,QAAQ,CAACE,GAAMmX,MAAU;AAC/B,QAAAZ,EAAavW,GAAM,OAAOmX,CAAK,GAAG,CAAC,GAAGX,GAAMpW,CAAG,CAAC;AAAA,MAClD,CAAC;AAAA,IAEL,GAEMyW,IAAgB,CAACO,GAAkBC,MAAsB;AAC7D,YAAMC,IAAgBC,GAAqBH,CAAS,GAC9CI,IAAaH,EAAQ,IAAI,CAACxV,MAC1B,OAAO,SAASA,GAAI,EAAE,CAAC,MAAMA,IACxB,SAEAA,CAEV;AACD,aAAOyV,EAAcE,EAAW,KAAK,GAAG,CAAC,KAAK;AAAA,IAChD;AAEA,WAAO,KAAKpR,CAAK,EAAE,QAAQ,CAAChG,MAAQ;AAClC,MAAAmW,EAAanQ,EAAMhG,CAAG,GAAGA,GAAK,CAAA,CAAE;AAAA,IAClC,CAAC,GAEGgW,EAAc,SAAS,OACzB7J,IAAA4J,EAAe,aAAf,QAAA5J,EAAyB,KAAK8J,IAC9BA,EAAS,SAASF;AAEpB,UAAMsB,IAAgBvB,EAAU,IAAI,CAACrU,MAAOoU,EAAGpU,GAAIsU,CAAc,CAAC,KAAK,CAAA;AACvE,WAAAA,EAAe,WAAW,CAAC,GAAGA,EAAe,UAAW,GAAGsB,CAAa,GACjEtB;AAAA,EACT;AAEA,SAAI,MAAM,QAAQJ,CAAU,IACnBA,EAAW,IAAI,CAAClU,MACdoU,EAAGpU,GAAImU,CAAM,CACrB,IAEMC,EAAGF,GAAYC,CAAM;AAEhC,GAEa0B,KAAgC,CAACC,GAA2BtT,MAAqC;AAC5G,QAAMuT,IAAOD,EAAW;AACxB,MAAIE,IAASD,EAAK,YAAY,CAAA;AAC9B,EAAK,MAAM,QAAQC,CAAK,MACtBA,IAAQ,CAAA;AAGV,QAAMzJ,IAAyB;AAAA,IAC7B,OAAO;AAAA,IACP,KAAKwJ,EAAK,MAAM;AAAA,IAChB,UAAU;AAAA,IACV,UAAU,CAAA;AAAA,EAAC;AAEb,SAAAxJ,EAAS,WAAW0H,GAA8B+B,GAAOzJ,GAAU/J,CAAS,GACrE,CAAC+J,CAAQ;AAClB,GAEa0J,KAAe,CAC1BF,GACAG,MACG;AACH,MAAIC,IAA2B,CAAA;AAC/B,EAAI,MAAM,QAAQJ,CAAI,IACpBI,IAAWJ,IAEXI,IAAW,CAACJ,CAAI;AAGlB,MAAIK,IAAO;AAEX,QAAMC,IAAa,CAAC/W,GAAoBgX,MAA6D;;AACnG,QAAIF;AACF;AAGF,IADYE,EAAYhX,CAAI,IAE1B8W,IAAO,MAEPlW,IAAAZ,EAAK,aAAL,QAAAY,EAAe,QAAQ,CAACF,MAAO;AAC7B,MAAAqW,EAAWrW,GAAIsW,CAAW;AAAA,IAC5B;AAAA,EAEJ;AACA,EAAAH,EAAS,QAAQ,CAACnW,MAAO;AACvB,IAAAqW,EAAWrW,GAAIkW,CAAO;AAAA,EACxB,CAAC;AACH;AAEO,SAASK,GAAqBC,GAA4E;AAC/G,QAAM,EAAE,OAAAC,GAAO,KAAAxM,EAAA,IAAQuM;AACvB,MAAIpK;AAEJ,QAAMsK,IAAWD,GACXE,IAAa1M,EAAI,sBAAA,GACjB2M,IAAaD,EAAW,QACxBE,IAAUF,EAAW,IAAI,IACzBG,IAAUH,EAAW,IAAI,KAAK,MAAMC,IAAa,CAAC;AAExD,SAAIF,EAAS,IAAII,IACf1K,IAAM,UAENA,IAAM,UAGJsK,EAAS,IAAIG,KAAWzK,MAAQ,YAClCA,IAAM,YAGD;AAAA,IACL,KAAAA;AAAA,IACA,WAAW;AAAA,EAAA;AAEf;AAGO,MAAMsJ,KAAuB,CAACpW,MAAgB;;AACnD,QAAMyX,IAAiC,CAAA,GACjCxS,KAAQrE,IAAAZ,EAAK,aAAL,gBAAAY,EAAe,MAAM;AACnC,MAAI,CAACqE;AACH,WAAOwS;AAET,QAAMC,IAAoB,CAAC/Y,GAAiBgZ,MAAoB;;AAC9D,QAAItY,GAAcV,CAAG,GAAG;AACtB,YAAMiZ,IAAW,CAAC,GAAGD,CAAK,GACpBE,IAAYlZ,GACZmZ,IAAgBD,EAAU;AAChC,UAAIC,MAAkB,eAAe;AAEnC,cAAMC,MAAgBnX,IADPiX,EACc,UAAP,gBAAAjX,EAAc,KAAK,YAAW,CAAA,GAC9CoX,IAAcP,EAAOE,EAAM,KAAK,GAAG,CAAC;AAC1C,YAAIM,IAAe;AACnB,QAAI,OAAOD,KAAgB,WACzBC,IAAeD,IAEfC,IAAeD,EAAY,OAE7BJ,EAAS,KAAK,MAAM,GACpBG,EAAc,QAAQ,CAACrX,MAAO;AAC5B,UAAAuX,IAAe,GAAGA,CAAY,IAC9BR,EAAOG,EAAS,KAAK,GAAG,CAAC,IAAIK,GAC7BP,EAAkBhX,GAAIkX,CAAQ;AAAA,QAChC,CAAC;AAAA,MACH,MAAA,CAAWE,MAAkB,oBAEV3M,IADF0M,EACS,UAAP,gBAAA1M,EAAc,aAAY,CAAA,GAClC,QAAQ,CAAC1L,MAAO;AACvB,cAAMyY,IAAc,CAAC,GAAGN,CAAQ;AAChC,QAAAM,EAAY,KAAKzY,EAAG,IAAI,GACxBgY,EAAOS,EAAY,KAAK,GAAG,CAAC,IAAIzY,EAAG,QACjBA,EAAG,WAAW,CAAA,GACtB,QAAQ,CAAC0Y,MAAQ;AACzB,UAAAT,EAAkBS,GAAK,CAAC,GAAGD,CAAW,CAAC;AAAA,QACzC,CAAC;AAAA,MACH,CAAC;AAAA,IAEL;AAAA,EACF;AAEA,SAAAjT,EAAM,QAAQ,CAACpG,MAAS;AACtB,QAAIuZ,IAA2D;AAC/D,IAAIC,GAA0BxZ,CAAI,IAChCuZ,IAAavZ,EAAK,UAElBuZ,IAAavZ;AAEf,QAAIyZ,IAA8B,CAAA;AAClC,IAAI,MAAM,QAAQF,CAAU,IAC1BE,IAAUF,IAEVE,IAAU,CAACF,CAAU,GAGvBE,EAAQ,QAAQ,CAAC7Y,MAAO;;AACtB,YAAMmY,IAAqB,CAACnY,EAAG,IAAI;AACnC,MAAAgY,EAAOG,EAAS,KAAK,GAAG,CAAC,IAAInY,EAAG,QAChCmB,IAAAnB,EAAG,YAAH,QAAAmB,EAAY,QAAQ,CAACuX,MAAQ;AAC3B,QAAAT,EAAkBS,GAAKP,CAAQ;AAAA,MACjC;AAAA,IACF,CAAC;AAAA,EACH,CAAC,GAEMH;AACT;AC5SO,IAAKc,uBAAAA,OACVA,EAAA,WAAW,YACXA,EAAA,SAAS,UAFCA,IAAAA,MAAA,CAAA,CAAA;AAuBL,MAAMC,KAAexT,EAAM,cAAgC;AAAA,EAChE,OAAO;AAAA,IACL,UAAU,CAAA;AAAA,IACV,uBAAuB,CAAA;AAAA,IACvB,YAAY,CAAA;AAAA,IACZ,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAAA,EAEb,aAAa,MAAM;AAAA,EAAC;AAAA,EACpB,cAAc,YACL;AAAA,EAET,cAAc,YACL;AAAA,EAET,YAAY,YACH;AAEX,CAAC;;;;;;;;;;;;;GCpCY+E,KAAgB,iBAQhB0O,KAAW,CAACxT,MAAyB;;AAChD,QAAMyT,IAAcC,EAAmC;AAAA,IACrD,eAAe;AAAA,EAAA,CAChB,GACK,EAAE,OAAAtI,IAAQ,GAAG,MAAAxR,GAAM,OAAA8Y,IAAQ,CAAC,GAAG,MAAM1S,GACrC,CAAC2T,GAAaC,CAAc,IAAI5J,EAAS,EAAI,GAC7C;AAAA,IACJ,OAAO6J;AAAA,IACP,aAAAC;AAAA,IACA,cAAArF;AAAA,IACA,cAAAsF;AAAA,IACA,oBAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,IACEC,GAAWX,EAAY,GAErB,CAACY,GAAeC,CAAgB,IAAIpK,GAASrO,IAAA8X,EAAY,YAAZ,gBAAA9X,EAAqB,aAAa,GAC/E,CAAC0Y,GAAgBC,CAAiB,IAAItK,EAAS,EAAE;AACvD,EAAAyJ,EAAY,QAAQ,gBAAgBU;AACpC,QAAMI,IAAWV,EAAS,WAAW,KAAK,CAACpY,MAAOA,MAAO7B,EAAK,GAAG,GAC3D4a,IAAmB,CAACC,MAAmB;AAC3C,QAAIC,IAAgBb,EAAS;AAC7B,IAAIY,MAAS,SACPA,MAAS,KACNF,KACHG,EAAc,KAAK9a,EAAK,OAAO,EAAE,IAG/B2a,MACFG,IAAgBA,EAAc,OAAO,CAACjZ,MAAOA,MAAO7B,EAAK,GAAG,KAI5D2a,IACFG,IAAgBA,EAAc,OAAO,CAACjZ,MAAOA,MAAO7B,EAAK,GAAG,IAE5D8a,EAAc,KAAK9a,EAAK,OAAO,EAAE,GAIrCka,EAAY;AAAA,MACV,YAAYY;AAAA,IAAA,CACb;AAAA,EACH,GACMC,IAAWd,EAAS,sBAAsB,KAAK,CAACpY,MAAOA,MAAO7B,EAAK,GAAG,GACtEgb,IAAoBlB,EAAiB,IAAI,GACzCmB,IAAmB,YAAY;;AAEnC,QADAL,EAAiB,EAAI,GACjBL,GAAe;AACjB,OAAAxY,IAAAiZ,KAAA,gBAAAA,EAAmB,YAAnB,QAAAjZ,EAA4B;AAC5B;AAAA,IACF;AACA,QAAI/B,EAAK,kBAAkB,UAAaA,EAAK,kBAAkB;AAC7D;AAEF,QAAIkb,IAAUjB,EAAS;AACvB,QAAI,CAACA,EAAS,aAAa;AACzB,MAAIja,EAAK,MACM,OAAM6U,KAAA,gBAAAA,EAAe,EAAE,MAAM,CAAC7U,EAAK,GAAG,GAAG,MAAMA,SAE1Dka,EAAY;AAAA,QACV,uBAAuB,CAAC,OAAOla,EAAK,GAAG,CAAC;AAAA,MAAA,CACzC,IAGH6U,KAAA,QAAAA,EAAe,EAAE,MAAM,CAAA,GAAI,MAAM7U;AAGnC;AAAA,IACF;AACA,IAAI+a,IACFG,IAAUA,EAAQ,OAAO,CAACrZ,MAAOA,MAAO7B,EAAK,GAAG,IAEhDkb,EAAQ,KAAK,OAAOlb,EAAK,GAAG,CAAC,GAE/B6U,KAAA,QAAAA,EAAe,EAAE,MAAMqG,GAAS,MAAMlb,MACtCka,EAAY;AAAA,MACV,uBAAuBgB;AAAA,IAAA,CACxB;AAAA,EACH,GACMC,IAAc,IACdC,IAASD,IAAc3J,GACvB6J,IAAgBrb,EAAK,iBAAiB,IAEtCsb,IAAe;AAAA,IACnB,CAACpQ,EAAa,GAAGlL,EAAK;AAAA,EAAA,GAElBub,IAAqBzB,EAAA,GACrB0B,IAAc1B,EAAA;AACpB,EAAA0B,EAAY,UAAUvB,GACtBsB,EAAmB,UAAU,CAACnb,MAAQ;AACpC,UAAMqb,IAAgBxB,EAAS,YACzBa,IAAgB,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAGW,GAAerb,CAAG,CAAC,CAAC;AACjE,IAAA8Z,EAAY;AAAA,MACV,YAAYY;AAAA,IAAA,CACb;AAAA,EACH;AACA,QAAMY,KAAS5B,EAAuB,IAAI;AAC1C,EAAA6B,EAAU,MAAM;;AAEd,QAAIC,IAAe;AACnB,KAAA7Z,KAAA2Z,GAAO,YAAP,QAAA3Z,GAAgB,iBAAiB,cAAc,MAAM;AACnD,MAAA6Z,IAAe,OAAO,WAAW,MAAM;;AACrC,UAAI7Z,KAAAyZ,EAAY,YAAZ,gBAAAzZ,GAAqB,eAAc2X,GAAU,cAC/CpN,KAAAiP,EAAmB,YAAnB,QAAAjP,GAAA,KAAAiP,GAA6Bvb,EAAK,OAAO;AAAA,MAE7C,GAAG,MAAM,GAAI;AAAA,IACf,KACAsM,KAAAoP,GAAO,YAAP,QAAApP,GAAgB,iBAAiB,cAAc,MAAM;AACnD,mBAAasP,CAAY;AAAA,IAC3B;AAEA,UAAMC,IAAc,CAACvM,OAAkB;;AACrC,UAAIuK,EAAY,QAAQ,eAAe;AACrC,YAAIvK,GAAE,aAAWvN,KAAAiZ,EAAkB,YAAlB,gBAAAjZ,GAA2B;AAC1C;AAEF,QAAAyY,EAAiB,EAAK,GACtB5G,EAAgB,YAAA;AAAA,MAClB;AAAA,IACF;AACA,QAAIkI;AASJ,YAR8B,YAAY;AACxC,YAAMC,KAAyB,MAAM3V,EAAM,UAAU,cAAc,IAA4B,UAAU,GACnG4V,KAAkBD,MAAA,gBAAAA,GAAwB,QAC1CE,KAAMD,MAAA,gBAAAA,GAAiB;AAC7B,MAAAC,MAAA,QAAAA,GAAK,iBAAiB,SAASJ,IAC/BC,IAASG,MAAO;AAAA,IAClB,GAEA,GACA,SAAS,iBAAiB,SAASJ,CAAW,GAEvC,MAAM;AACX,MAAID,KACF,aAAaA,CAAY,GAE3B,SAAS,oBAAoB,SAASC,CAAW,GACjDC,KAAA,QAAAA,EAAQ,oBAAoB,SAASD;AAAA,IACvC;AAAA,EAEF,GAAG,CAAA,CAAE;AAEL,QAAMjI,KAAkBtH,IAAA2N,EAAS,cAAT,gBAAA3N,EAAoB,QAAQtM,EAAK,OAAO,KAE1Dkc,KAAoB,MAAM;AAC9B,UAAMlV,IAAa,CAAC+S;AAEpB,QAAI,CAACnG;AACH;AAEF,UAAMC,IAAWD,EAAgB,MAAM,UAAU,YAAY,CAAA;AAC7D,IAAAC,EAAS,YAAY7M,GACrB4M,EAAgB,MAAM,UAAU,WAAWC,GAC3CD,EAAgB,YAAA,GAChBoG,EAAehT,CAAU;AAAA,EAC3B;AAEA,MAAImV,KAAYnc,EAAK;AACrB,EAAIA,EAAK,oBACPmc,KAAYnc,EAAK,gBAAgB;AAAA,IAC/B,MAAAA;AAAA,IACA,WAAWA,EAAK;AAAA,EAAA,CACjB;AAGH,QAAM6H,KACJ,gBAAAe,EAAC,OAAA,EAAI,WAAWC,GAAO,SACrB,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWG,EAAK,CAACF,GAAO,aAAakS,KAAYM,KAAiBxS,GAAO,QAAQ,CAAC;AAAA,QAClF,OAAO,EAAE,YAAY,GAAG,CAACuS,CAAM,MAAM,aAAa,GAAGA,IAAS,CAAC,KAAA;AAAA,QAC/D,aAAa,YAAY;AACvB,cAAI,CAACpb,EAAK;AACR;AAEF,gBAAMgc,IAAkB,OAAM5B,KAAA,gBAAAA,MACxBgC,IAAgBJ,KAAA,gBAAAA,EAAiB,6BAA6Bhc,EAAK;AACzE,UAAI,QAAOoc,KAAA,gBAAAA,EAAe,cAAe,OACvCpC,EAAeoC,KAAA,gBAAAA,EAAe,UAAU;AAAA,QAE5C;AAAA,QAEC,UAAA;AAAA,WAAA7P,IAAAvM,EAAK,aAAL,QAAAuM,EAAe,SACd,gBAAAzD,EAAC,QAAA,EAAK,OAAO,EAAE,cAAc,MAAA,GAAS,WAAWD,GAAO,WAAW,gBAAgB,MAAM+R,EAAA,GACvF,UAAA,gBAAA9R,EAACuT,IAAA,EAAc,WAAWtT,EAAK,CAACF,GAAO,WAAW8R,KAAY9R,GAAO,QAAQ,CAAC,EAAA,CAAG,GACnF,IACE;AAAA,UACJ,gBAAAD;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWC,GAAO;AAAA,cACjB,GAAGyS;AAAA,cACJ,KAAKI;AAAA,cACL,SAAST;AAAA,cACT,eAAe,MAAM;;AAEnB,oBAAI,CAACrH;AACH;AAEF,sBAAMzS,IAAOyS,GACP/C,KAAW9O,KAAAZ,EAAK,eAAe,oBAAoBA,EAAK,MAAM,aAAa,MAAhE,gBAAAY,GAAmE,MAAM,OACpFua,IAAanb,EAAK,MAAM,SAAS0P,KAAY1P,EAAK,MAAM,iBAAiB;AAC/E,gBAAAuZ,EAAkB4B,CAAU,GAC5B9B,EAAiB,EAAI,GACrB,WAAW,MAAM;;AACf,mBAAAzY,KAAAiZ,EAAkB,YAAlB,QAAAjZ,GAA2B;AAAA,gBAC7B,GAAG,KAAK;AAAA,cACV;AAAA,cAEC,UAAA;AAAA,gBAAA,CAACwY,KAAiB4B;AAAA,gBAClB5B,KACC,gBAAAzR;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAO;AAAA,sBACL,cAAc;AAAA,oBAAA;AAAA,oBAGhB,UAAA,gBAAAA;AAAA,sBAACsG;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,WAAW;AAAA,wBACX,OAAO,CAAA;AAAA,wBACP,KAAK4L;AAAA,wBACL,OAAOP;AAAA,wBACP,cAAc,MAAM;AAClB,0BAAAD,EAAiB,EAAK,GACtB5G,EAAgB,YAAA;AAAA,wBAClB;AAAA,wBACA,UAAU,CAACtE,MAAM;AACf,0BAAAsE,EAAgB,MAAM,QAAQtE,EAAE,OAAO,OACvCoL,EAAkBpL,EAAE,OAAO,KAAK;AAAA,wBAClC;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH,CAACiL,KAAiB,CAACva,EAAK,YACvB,gBAAA4I,EAAC,OAAA,EAAI,WAAWC,GAAO,YACrB,UAAA;AAAA,YAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,GAAO,UACpB,UAAA;AAAA,cAAA,CAACkR,KAAe,gBAAAjR,EAACyT,IAAA,EAAY,SAASL,GAAA,CAAmB;AAAA,cACzDnC,KAAe,gBAAAjR,EAACsI,IAAA,EAAqB,SAAS8K,GAAA,CAAmB;AAAA,YAAA,GACpE;AAAA,YACA,gBAAApT;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWD,GAAO;AAAA,gBAClB,SAAS,MAAM;AACb,kBAAAwR,EAAWra,EAAK,OAAO,EAAE;AAAA,gBAC3B;AAAA,gBAEA,4BAACgR,IAAA,CAAA,CAAa;AAAA,cAAA;AAAA,YAAA;AAAA,YAEhB,gBAAAlI;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWD,GAAO;AAAA,gBAClB,SAAS,MAAM;AACb,kBAAAsR,EAAana,EAAK,OAAO,EAAE;AAAA,gBAC7B;AAAA,gBAEA,4BAACkR,IAAA,CAAA,CAAe;AAAA,cAAA;AAAA,YAAA;AAAA,UAClB,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ,gBAAApI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAK,CAACF,GAAO,cAAckS,KAAYlS,GAAO,QAAQ,CAAC;AAAA,QAClE,OAAO;AAAA,UACL,aAAa,GAAGsS,CAAW;AAAA,UAC3B,QAAQR,IAAW,SAAS;AAAA,QAAA;AAAA,QAG7B,iBACCnO,KAAAxM,EAAK,aAAL,gBAAAwM,GAAe,IAAI,CAAC3K,GAAIsV,MAAU;AAChC,gBAAM/W,IAAM,GAAGyB,EAAG,GAAG,IAAIsV,CAAK;AAC9B,mCACGyC,IAAA,EAAmB,MAAM/X,GAAI,OAAO,CAAC,GAAGiX,GAAO3B,CAAK,GAAG,OAAO3F,IAAQ,GAAG,WAAWpL,EAAM,aAA5EhG,CAAuF;AAAA,QAE1G;AAAA,MAAC;AAAA,IAAA;AAAA,EACL,GACF;AAEF,SAAIJ,EAAK,kBACeA,EAAK,gBAAgB;AAAA,IACzC,MAAAA;AAAA,IACA,cAAc6H;AAAA,EAAA,CACf,IAGIA;AACT;AC1RO,MAAM2U,WAAiBrW,EAAM,UAKlC;AAAA,EAIA,YAAYC,GAAsB;AAChC,UAAMA,CAAK;AAJb,IAAA5C,EAAA;AACA,IAAAA,EAAA,uBAAgC,CAAA;AAChC,IAAAA,EAAA;AAmBA,IAAAA,EAAA,4BAAqB,YAAY;AAC/B,YAAMuY,IAAyB,MAAM,KAAK,MAAM,UAAU,cAAc,IAA4B,UAAU;AAE9G,aADwBA,KAAA,gBAAAA,EAAwB;AAAA,IAElD;AAEA,IAAAvY,EAAA,gCAAyB,MAAM;AAC7B,YAAM,EAAE,WAAAiH,MAAc,KAAK,OACrB,EAAE,WAAApG,MAAcoG,GAChBgS,IAAgBpY,EAAU,OAAA,GAC1BqY,IAAehF,GAA8B+E,GAAepY,CAAS;AAC3E,WAAK,SAAS;AAAA,QACZ,UAAUqY;AAAA,MAAA,CACX;AAAA,IACH;AAEA,IAAAlZ,EAAA,2BAAoB,CAACmZ,MAAsB;AACzC,YAAM,EAAE,UAAAC,MAAa,KAAK;AAC1B,UAAIC,IAAuB;AAQ3B,UAPA/E,GAAa8E,GAAU,CAACzb,MAClBA,EAAK,QAAQwb,KACfE,IAAS1b,GACF,MAEF,EACR,GACG0b,GAAQ;AACV,YAAI7F,IAAW6F,KAAA,gBAAAA,EAAQ;AACvB,cAAM9c,IAAM,CAAA;AACZ,eAAOiX;AACL,UAAIA,EAAS,OACXjX,EAAI,KAAKiX,EAAS,GAAG,GAEvBA,IAAWA,EAAS;AAEtB,eAAOjX;AAAA,MACT;AACE,eAAO,CAAA;AAAA,IAEX;AAEA,IAAAyD,EAAA,0BAAmB,CAACpD,MAAgB;;AAClC,YAAM0L,IAAM,SAAS,cAAc,IAAIZ,EAAa,KAAK9K,CAAG,IAAI;AAChE,OAAA2B,IAAA+J,KAAA,gBAAAA,EAAK,mBAAL,QAAA/J,EAAA,KAAA+J,GAAsB;AAAA,QACpB,UAAU;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,IAEX;AAwCA,IAAAtI,EAAA,0BAAmB,CAACrC,MAAmC;AACrD,UAAI,CAACA,GAAM;AACT,aAAK,SAAS;AAAA,UACZ,uBAAuB,CAAA;AAAA,QAAC,CACzB;AACD;AAAA,MACF;AACA,YAAM2b,IAAc,KAAK,kBAAkB3b,EAAK,EAAE;AAClD,MAAAoE,GAAO,MAAM,kCAAkCuX,GAAa3b,CAAI;AAChE,YAAM2Z,IAAgB,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAG,KAAK,MAAM,YAAY,GAAGgC,CAAW,CAAC,CAAC;AAEpF,MAAAvX,GAAO,MAAM,oCAAoCuV,GAAe3Z,CAAI,GAEpE,KAAK,SAAS;AAAA,QACZ,uBAAuB,CAACA,EAAK,EAAE;AAAA,QAC/B,YAAY2Z;AAAA,MAAA,CACb,GAED,WAAW,MAAM;AACf,aAAK,iBAAiB3Z,EAAK,EAAE;AAAA,MAC/B,GAAG,EAAE;AAAA,IACP;AAEA,IAAAqC,EAAA,qBAAc,CAACuZ,GAA0BC,MAA6B;AACpE,UAAIjd,IAAM;AACV,aAAA+X,GAAaiF,GAAY,CAAC5b,MACpBA,EAAK,QAAQ6b,EAAW,OAC1Bjd,IAAMoB,GACC,MAEF,EACR,GACMpB;AAAA,IACT;AAEA,IAAAyD,EAAA,0BAAmB,CAACpD,MAAqC;AACvD,YAAM,EAAE,UAAAwc,MAAa,KAAK;AAC1B,UAAIC,IAA8B;AAClC,aAAA/E,GAAa8E,GAAU,CAACzb,MAClBA,EAAK,QAAQf,KACfyc,IAAS1b,GACF,MAEF,EACR,GACM0b;AAAA,IACT;AAEA,IAAArZ,EAAA,2BAAoB,YAAY;AAC9B,UAAI,CAAC,KAAK,OAAO;AACf;AAEF,YAAMyZ,IAAS,IAAI3P,GAAuC;AAAA,QACxD,WAAW,KAAK,OAAO;AAAA,QACvB,MAAM;AAAA,QACN,eAAe;AAAA,QACf,cAAc;AAAA,MAAA,CACf,GACK,EAAE,WAAA7C,MAAc,KAAK,OAErBpG,IAAYoG,EAAU,WACtBgD,IAAiB,MAAM,KAAK,mBAAA,GAC5BL,IAAMK,EAAgB,OAAA;AAE5B,MAAAwP,EAAO,WAAW,OAAO1P,MAAa;;AACpC,cAAMR,IAAYQ,EAAS,MAAM;AACjC,YAAI,CAACR;AACH;AAEF,cAAMC,IAAenB,GAAqBkB,GAAW7B,EAAa;AAElE,YAAI,CAAC8B;AACH;AAGF,cAAMgQ,IAAa3Y,EAAU,QAAQ2I,CAAY,GAC3CkQ,IAAiB,KAAK,iBAAiBlQ,CAAY;AAEzD,aAAIkQ,KAAA,gBAAAA,EAAgB,aAAY,WAAaA,KAAA,gBAAAA,EAAgB,aAAY;AACvE;AAIF,cAAM7O,IAAmBZ,EAAgB,YAAA,GACnC0P,IAAiB,OAAM9O,KAAA,gBAAAA,EAAkB,kBAAkB,QAAQ;AAAA,UACvE,UAAU2O;AAAA,UACV,UAAU;AAAA,YACR,WAAW,CAAA;AAAA,YACX,GAAGzP;AAAA,YACH,MAAMA,EAAS;AAAA,YACf,YAAY0P;AAAA,YACZ,aAAa1P,EAAS;AAAA,UAAA;AAAA,QACxB;AAGF,YAAI4P,MAAmB;AACrB,iBAAO;AAGT,YAAI,CAACH,GAAY;AACf,kBAAQ,IAAI,sBAAsB;AAClC;AAAA,QACF;AAEA,cAAMI,IAAiB;AAAA,UACrB,GAAG7P;AAAA,UACH,WAAW;AAAA,YACT,UAAUyP;AAAA,YACV,aAAaA,EAAW;AAAA,UAAA;AAAA,QAC1B;AAGF,eAAI,OAAOG,KAAmB,aAC5BC,EAAe,UAAU,WAAWD,EAAe,UACnDC,EAAe,UAAU,gBAAcrb,IAAAob,EAAe,aAAf,gBAAApb,EAAyB,OAAM,KAGjEqb;AAAA,MACT,CAAC,GAEDH,EAAO,WAAW,OAAO1P,MAAa;;AACpC,cAAMR,IAAYQ,EAAS,MAAM;AAEjC,YAAI,CAACR;AACH,iBAAAxH,GAAO,MAAM,oBAAoB,GAC1BgI;AAET,cAAMP,IAAenB,GAAqBkB,GAAW7B,EAAa;AAElE,YAAI,CAAC8B;AACH,iBAAAzH,GAAO,MAAM,8BAA8BgI,GAAUR,GAAW7B,EAAa,GACtEqC;AAET,cAAM2P,IAAiB,KAAK,iBAAiBlQ,CAAY;AACzD,aAAIkQ,KAAA,gBAAAA,EAAgB,gBAAe,UAAaA,EAAe,eAAe;AAC5E,iBAAA3X,GAAO,MAAM,0CAA0C,GAChDgI;AAGT,cAAMyP,IAAa3Y,EAAU,QAAQ2I,CAAY;AAEjD,YAAI,CAACgQ;AACH,iBAAAzX,GAAO,MAAM,sBAAsB,GAC5BgI;AAET,cAAM8P,KAAYtb,IAAAwL,EAAS,cAAT,gBAAAxL,EAAoB;AACtC,YAAI,CAACsb;AACH,iBAAA9X,GAAO,MAAM,qBAAqB,GAC3BgI;AAGT,aAAI8P,KAAA,gBAAAA,EAAW,QAAOL,EAAW;AAC/B,iBAAAzX,GAAO,MAAM,oCAAoC,GAC1CgI;AAIT,YAFmB8P,EAAU,SAASL,EAAW,EAAE;AAGjD,iBAAAzX,GAAO,MAAM,4BAA4B,GAClCgI;AAGT,cAAM+P,IAAWlF,GAAqB;AAAA,UACpC,OAAO7K,EAAS;AAAA,UAChB,KAAKR;AAAA,QAAA,CACN;AAED,YAAI,MAAM,QAAQmQ,KAAA,gBAAAA,EAAgB,UAAU,KAAK,EAACA,KAAA,QAAAA,EAAgB,WAAW,SAASI,EAAS;AAC7F,iBAAO;AAGT,QAAA/X,GAAO,KAAK,gBAAgByX,CAAU;AAEtC,cAAMjd,IAAM;AAAA,UACV,GAAGwN;AAAA,UACH,WAAW;AAAA,YACT,GAAGA,EAAS;AAAA,YACZ,aAAa+P;AAAA,YACb,UAAUN;AAAA,YACV,aAAaA,EAAW;AAAA,UAAA;AAAA,QAC1B,GAII3O,IAAmBZ,EAAgB,YAAA,GACnC8P,IAAiB,OAAMlP,KAAA,gBAAAA,EAAkB,kBAAkB,QAAQ;AAAA,UACvE,UAAUtO,EAAI,UAAU;AAAA,UACxB,UAAUid;AAAA,UACV,UAAU;AAAA,YACR,GAAGjd;AAAA,YACH,MAAMA,EAAI;AAAA,YACV,YAAYkd;AAAA,YACZ,aAAald,EAAI;AAAA,UAAA;AAAA,QACnB;AAGF,eAAIwd,MAAmB,KACd,MAGL,OAAOA,KAAmB,aAC5Bxd,EAAI,YAAY;AAAA,UACd,GAAGA,EAAI;AAAA,UACP,GAAGwd;AAAA,QAAA,IAGAxd;AAAA,MACT,CAAC,GAEDqN,EAAI,eAAe6P,CAAM,GAEzBA,EAAO,QAAQ,GAAG,YAAY,CAAC3N,MAAM;;AACnC,cAAMpB,IAAWoB,EAAE,UAAU;AAK7B,YAJA,KAAK,SAAS;AAAA,UACZ,WAAWoK,GAAU;AAAA,QAAA,CACtB,GAEG,CAACxL,GAAU;AACb,eAAK,SAAS;AAAA,YACZ,aAAa;AAAA,UAAA,CACd;AACD;AAAA,QACF;AACA,cAAMsP,KAAUzb,IAAA,SAAS,iBAAiB,IAAImJ,EAAa,KAAKgD,EAAS,EAAE,IAAI,MAA/D,gBAAAnM,EAAmE;AACnF,YAAI,CAACyb;AACH;AAEF,cAAM9K,MAAcpG,IAAAgD,EAAE,cAAF,gBAAAhD,EAAa,gBAAgB,CAAA,GAC3CmR,IAAOD,EAAQ,sBAAA,GACfE,IAAc,EAAE,GAAG,GAAG,GAAG,EAAA;AAE/B,QAAAA,EAAY,IAAID,EAAK,GACjB/K,EAAY,QAAQ,WACtBgL,EAAY,IAAID,EAAK,IACZ/K,EAAY,QAAQ,UAC7BgL,EAAY,IAAID,EAAK,IAAIA,EAAK,UAE9BC,EAAY,IAAID,EAAK,IAAIA,EAAK,QAC9BC,EAAY,IAAID,EAAK,IAAI,KAE3B,KAAK,SAAS;AAAA,UACZ,aAAaC;AAAA,QAAA,CACd;AAAA,MACH,CAAC,GAEDT,EAAO,QAAQ,GAAG,WAAW,MAAM;AACjC,aAAK,SAAS;AAAA,UACZ,WAAWvD,GAAU;AAAA,QAAA,CACtB;AAAA,MACH,CAAC,GACD,KAAK,SAASuD;AAAA,IAChB;AAlWE,SAAK,SAAS9W,EAAM,UAAA,GAEpB,KAAK,QAAQ;AAAA,MACX,UAAU,CAAA;AAAA,MACV,uBAAuB,CAAA;AAAA,MACvB,YAAY,CAAA;AAAA,MACZ,aAAaC,EAAM,eAAe;AAAA,MAClC,aAAa;AAAA,QACX,GAAG;AAAA,QACH,GAAG;AAAA,MAAA;AAAA,MAEL,WAAWA,EAAM,UAAU;AAAA,MAC3B,WAAWsT,GAAU;AAAA,IAAA;AAAA,EAEzB;AAAA,EAmDA,MAAM,oBAAoB;AACxB,SAAK,uBAAA;AACL,UAAM,EAAE,WAAAjP,MAAc,KAAK,OACrB,EAAE,WAAApG,MAAcoG;AAEtB,IAAApG,EAAU,QAAQ,GAAG,KAAK,MAAM;AAC9B,WAAK,uBAAA;AAAA,IACP,CAAC,GAEDoG,EAAU,cAAc,GAAG,sBAAsB,CAAC,EAAE,MAAAtJ,QAAW;AAC7D,WAAK,iBAAiBA,CAAI;AAAA,IAC5B,CAAC,GAEiBsJ,EAAU,aAAA,EAElB,QAAQ,GAAG,oBAAoB,CAAC,EAAE,SAAAqC,GAAS,WAAAxG,QAAgB;AACnE,UAAIwG,KAAWxG,MAAc,eAAe;AAC1C,gBAAQ,IAAI,sBAAsBwG,GAASxG,CAAS;AACpD,cAAMqX,IAAoBlT,EAAU,OAAO,cAAA;AAC3C,QAAIkT,KACF,KAAK,iBAAiBA,CAAiB;AAAA,MAE3C;AAAA,IACF,CAAC;AAED,UAAMA,IAAoBlT,EAAU,OAAO,cAAA;AAC3C,IAAIkT,KACF,KAAK,iBAAiBA,CAAiB,GAGzC,MAAM,KAAK,MAAM,UAAU,cAAc,gBAAgB,UAAU,GACnE,KAAK,kBAAA,GAEL,KAAK,MAAM,UAAU,OAAO,UAAU,QAAQ,GAAG,gBAAgB,MAAM;AACrE,WAAK,kBAAA;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EA+PA,SAAS;AACP,UAAM,EAAE,UAAAf,GAAU,WAAAgB,GAAW,aAAAlL,EAAA,IAAgB,KAAK,OAC5C,EAAE,WAAAjI,MAAc,KAAK;AAE3B,WACE,gBAAA3B;AAAA,MAAC6Q,GAAa;AAAA,MAAb;AAAA,QACC,OAAO;AAAA,UACL,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,oBAAoB,KAAK;AAAA,UACzB,cAAc,OAAO,EAAE,MAAMkE,QAAS;AACpC,kBAAMC,IAAW,MAAMrT,EAAU,cAAc,IAA4B,UAAU;AACrF,gBAAI,CAACqT;AACH,6BAAQ,KAAK,mBAAmB,GACzB;AAET,kBAAMrK,KAASoK,KAAA,gBAAAA,EAAK,OAAM;AAE1B,mBADWpT,EAAU,UAAU,QAAQgJ,CAAM,IAMhC,MADUqK,EAAS,OACE,WAAWrK,CAAM,IAJ1C;AAAA,UAMX;AAAA,UACA,aAAa,CAACsK,MAAW;AACvB,iBAAK,SAASA,CAAa;AAAA,UAC7B;AAAA,UACA,cAAc,OAAOrK,MAAO;AAC1B,kBAAMoK,IAAW,MAAMrT,EAAU,cAAc,IAA4B,UAAU;AACrF,gBAAI,CAACqT;AACH,6BAAQ,KAAK,mBAAmB,GACzB;AAET,kBAAMrQ,IAAiBqQ,EAAS,QAC1BrK,IAASC;AAEf,gBAAI,CADOjJ,EAAU,UAAU,QAAQgJ,CAAM;AAE3C,qBAAAuK,GAAQ,MAAM,SAAS,GAChB;AAET,kBAAM9K,IAAO,MAAMzF,EAAe,WAAWiG,CAAE;AAC/C,mBAAKR,KACH8K,GAAQ,MAAM,SAAS,GAElB9K;AAAA,UACT;AAAA,UACA,YAAY,OAAOQ,MAAO;AACxB,kBAAMoK,IAAW,MAAMrT,EAAU,cAAc,IAA4B,UAAU;AACrF,mBAAKqT,IAKE,MADgBA,EAAS,OACJ,SAASpK,CAAE,KAJrC,QAAQ,KAAK,mBAAmB,GACzB;AAAA,UAIX;AAAA,QAAA;AAAA,QAGF,4BAAC,OAAA,EAAI,WAAW7K,GAAO,YAAY,KAAK,KAAK,QAC1C,UAAA;AAAA,UAAA+T,EAAS,IAAI,CAAC5c,GAAMmX,MACZ,gBAAArO,EAAC8Q,IAAA,EAAS,MAAA5Z,GAAwC,WAAW,KAAK,MAAM,UAAA,GAA7CA,EAAK,MAAM,GAAGmX,CAAK,EAAqC,CAC3F;AAAA,UACAyG,MAAclE,GAAU,YAAYhH,KACnC,gBAAA5J;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,GAAO;AAAA,cAClB,OAAO;AAAA,gBACL,MAAM,GAAG6J,EAAY,CAAC;AAAA,gBACtB,KAAK,GAAGA,EAAY,CAAC;AAAA,cAAA;AAAA,YACvB;AAAA,UAAA;AAAA,QACD,GAEL;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AC9cO,MAAMnJ,KAA6B;AAAA,EACxC,YAAY;AACd,GCFaC,KAA6B;AAAA,EACxC,YAAY;AACd,GCAAyU,KAAe,EAAA,OAAE1U,WAAOC,GAAA,GCIlBiD,KAAc,eACdC,KAAgB,UAAUD,EAAW,IAE9ByR,KAA6B;AAAA,EACxC,MAAMzR;AAAAA,EAAA,aACNA;AAAAA,EACA,MAAM,KAAKlC,GAAK;AACd,UAAM,EAAE,MAAAb,MAASa;AACjB,WAAO,KAAKoE,EAAQ,EAAE,QAAQ,CAACC,MAAQ;AACrC,MAAAlF,EAAK,kBAAkBkF,GAAKlC,IAAeiC,GAASC,CAAG,GAAG,IAAM,EAAI;AAAA,IACtE,CAAC;AAED,UAAMuP,IAAuBzO,GAAgBhD,EAAa,EAAE8P,EAAQ,GAC9D7M,IAAQD,GAAgBhD,EAAa,EAAE,CAAC,EAAE,GAAAkD,EAAA,MAAQ,gBAAA9G,EAAA+G,GAAA,EAAG,UAAAD,EAAE,YAAY,EAAA,CAAE,CAAG;AAE9E,IADkBrF,EAAI,aAAA,EACZ,aAAa;AAAA,MACrB,yBAAQoF,GAAA,EAAM;AAAA,MACd,MAAMlD;AAAAA,MACN,wBAAO2R,IAAA,EAAkB;AAAA,MACzB,QAAQ,gBAAAtV,EAACqV,GAAA,EAAqB,WAAW5T,EAAA,CAAK;AAAA,IAAA,CAC/C,GAEDA,EAAI,cAAA;AAAA,EACN;AAAA,EACA,MAAM,QAAQA,GAAK;AACjB,YAAQ,IAAI,WAAWA,CAAG;AAAA,EAC5B;AAAA,EACA,QAAQ,OACC,CAAA;AAAA,EAET,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA2T,GAAkB,cAAczR;AC3CzB,MAAM4R,KAA6B,6BAE7BC,KAAkB,mBAElBC,KAAmB,oBAEnBC,KAA+B,gCCS/BC,KAAetY,EAAM,cAAgC;AAAA,EAChE,UAAU;AAAA,EACV,WAAW,CAAA;AAAA,EACX,iBAAiB,CAAA;AAAA,EACjB,eAAe,MAAM;AAAA,EAAC;AAAA,EACtB,uBAAuB,MAAM;AAAA,EAAC;AAAA;AAAA,EAE9B,iBAAiB,CAAA;AACnB,CAAC,GCXKuY,KAAoB,CAAA;AAE1B,IAAIxE,KAAc,MAAM;AAAC;AAElB,MAAMyE,KAAuB,CAACC,MAAyD;AAC5F,SAAO,OAAOF,IAAmBE,CAAe,GAChD1E,MAAA,QAAAA;AACF;AACO,MAAM2E,WAAc1Y,EAAM,UAAwC;AAAA,EAGvE,YAAYC,GAAmB;AAC7B,UAAMA,CAAK;AAHb,IAAA5C,EAAA;AACA,IAAAA,EAAA,iBAAU;AA6CV,IAAAA,EAAA,wBAAiB,MACR,KAAK,YAAY,KAAK,MAAM,SAAS;AAG9C,IAAAA,EAAA,mBAAY,CAACjC,MAA+B;AAC1C,WAAK,SAAS;AAAA,QACZ,WAAWA;AAAA,MAAA,CACZ;AAAA,IACH;AAEA,IAAAiC,EAAA,qBAAc,CAACsb,MAA8B;AAC3C,YAAM/e,IAA2B,CAAA,GAC3Bgf,IAAkB,KAAK,MAAM;AACnC,oBAAO,KAAKD,CAAI,EAAE,QAAQ,CAAC1e,MAAQ;;AAEjC,WADgB2B,IAAAgd,EAAgB3e,OAAhB,gBAAA2B,EAAA,KAAAgd,GAAuBD,OAAS,QAE9C/e,EAAIK,CAAG,IAAI0e,EAAK1e,CAAG;AAAA,MAEvB,CAAC,GACML;AAAA,IACT;AA9DE,SAAK,gBAAgB,CAACkU,GAAwB+K,MAA0B;;AACtE,WAAK,SAAS;AAAA,QACZ,WAAW/K;AAAA,QACX,iBAAiByK;AAAA,MAAA,CAClB,IACDpS,KAAAvK,IAAA,KAAK,OAAM,kBAAX,QAAAuK,EAAA,KAAAvK,GAA2B,KAAK,YAAYkS,CAAQ,GAAG+K;AAAA,IACzD,GACA9E,KAAc,MAAM;AAClB,MAAK,KAAK,WAGV,KAAK,SAAS;AAAA,QACZ,iBAAiB,EAAE,GAAGwE,IAAmB,GAAG,KAAK,MAAM,gBAAA;AAAA,MAAgB,CACxE;AAAA,IACH,GACAC,GAAqBvY,EAAM,mBAAmB,EAAE,GAChD,KAAK,QAAQ;AAAA,MACX,UAAUA,EAAM;AAAA,MAChB,WAAWA,EAAM,gBAAgB,CAAA;AAAA,MACjC,iBAAiB,CAAA;AAAA,MACjB,iBAAiBA,EAAM,mBAAmB,CAAA;AAAA,MAE1C,eAAe,KAAK;AAAA,MACpB,uBAAuB,CAACuE,GAAchF,MAAgD;AACpF,aAAK,SAAS;AAAA,UACZ,iBAAiB;AAAA,YACf,GAAG,KAAK,MAAM;AAAA,YACd,CAACgF,CAAI,GAAGhF;AAAA,UAAA;AAAA,QACV,CACD;AAAA,MACH;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,oBAA0B;AACxB,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,uBAA6B;AAC3B,SAAK,UAAU;AAAA,EACjB;AAAA,EAwBA,SAAoB;AAClB,UAAM,EAAE,OAAApE,MAAU,MACZ,EAAE,UAAAqL,MAAa,KAAK;AAE1B,6BAAQ6R,GAAa,UAAb,EAAsB,OAAOld,GAAQ,UAAAqL,GAAS;AAAA,EACxD;AACF;AC5FO,MAAMqS,KAAoC,CAAC;AAAA,EAChD,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGhZ;AACL,MAEI,gBAAA0C;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAACsG;AAAA,MAAA;AAAA,QACE,GAAGhJ;AAAA,QACJ,OAAOA,EAAM,SAASgZ;AAAA,QACtB,UAAU,CAAC9P,MAAM;;AACf,WAAAvN,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBkJ,IACjB4P,KAAA,QAAAA,EAAgB5P,EAAE,OAAO;AAAA,QAC3B;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAAA;AAKN2P,GAAa,aAAa;ACzBnB,MAAMK,KAA0C,CAAC;AAAA,EACtD,eAAAJ;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGhZ;AACL,MAEI,gBAAA0C;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAACyW;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,QAAA;AAAA,QAER,GAAGnZ;AAAA,QACJ,OAAOA,EAAM,SAASgZ;AAAA,QACtB,UAAU,CAACI,MAAU;;AACnB,WAAAzd,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBoZ,IACjBN,KAAA,QAAAA,EAAgBM;AAAA,QAClB;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAAA;AAKNF,GAAa,aAAa;AC/BnB,MAAMG,KAAgB,CAAiCC,IAA2B,OAChFA,EAAQ,IAAI,CAACC,MACd,OAAOA,KAAW,WACb;AAAA,EACL,eAAeA;AAAA,IAGVA,CAEV,GAGGC,KAAgB;AAAA,EACpB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,MAAM;AACR,GAEMC,KAAe,CAACL,MACOA,KAAU,OAC5B,WAGL,MAAM,QAAQA,CAAK,IACd,UAGL,OAAOA,KAAU,WACfA,EAAM,SAAS,eAAqB,eACpCA,EAAM,SAAS,aAAmB,aAC/B,SAGF,OAAOA,GAIHM,KAA0B,CAACN,GAAYO,MAAgC;AAClF,QAAMC,IAAYH,GAAaL,CAAK,GAC9BS,IAAaL,GAAcI,CAAS;AAC1C,SAAOD,EAAW,KAAK,CAACJ,MAAWA,EAAO,kBAAkBM,CAAU;AACxE;ACzCO,SAASC,GAAU9Z,GASvB;AACD,QAAM,EAAE,OAAA+Q,GAAO,UAAAgJ,GAAU,SAAAT,EAAA,IAAYtZ,GAE/Bga,IAAQ;AAAA,IACZ,GAAGha,EAAM;AAAA,EAAA,GAELia,IAAc;AAAA,IAClB,CAAClJ,CAAK,GAAG/Q,EAAM;AAAA,EAAA,GAEXka,IAAUxG,EAAc,IAAI;AAClC,SAAA6B,EAAU,MAAM;;AACd,KAAA5Z,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAU;AAAA,MACzB,CAACoV,CAAK,GAAG/Q,EAAM;AAAA,IAAA;AAAA,EAEnB,GAAG,CAAC+Q,GAAO/Q,EAAM,KAAK,CAAC,GAGrB,gBAAA0C,EAAC,SAAI,OAAAsX,GACH,UAAA,gBAAAtX;AAAA,IAAC+V;AAAA,IAAA;AAAA,MACC,KAAKyB;AAAA,MACL,MAAM,OAAOnJ,CAAK;AAAA,MAClB,cAAckJ,KAAe,CAAA;AAAA,MAC7B,eAAeja,EAAM;AAAA,MACrB,iBAAiB,CAAA;AAAA,MAEjB,UAAA,gBAAA0C;AAAA,QAACyX;AAAA,QAAA;AAAA,UACC,QACE,gBAAAzX;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,YAAY;AAAA,gBACZ,QAAQ;AAAA,gBACR,UAAU;AAAA,cAAA;AAAA,cAGZ,UAAA,gBAAAA,EAACoI,IAAA,EAAe,SAAS9K,EAAM,SAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAG7C,MAAM,OAAO+Q,CAAK;AAAA,UAClB,OAAO,GAAG/Q,EAAM,eAAe,MAAM+Q,CAAK,EAAE;AAAA,UAC5C,UAAU,CAAC,GAAGgJ,GAAU,OAAOhJ,CAAK,CAAC;AAAA,UACrC,SAAAuI;AAAA,QAAA;AAAA,MAAA;AAAA,IACD;AAAA,EAAA,GAEL;AAEJ;;;;;GCnCac,KAAqB,CAAC;AAAA,EACjC,MAAA5e;AAAA,EACA,eAAAsd;AAAA,EACA,UAAAiB;AAAA,EACA,OAAArP;AAAA,EACA,cAAA2P;AAAA,EACA,GAAGC;AACL,MAA0B;AACxB,QAAM,CAACC,GAAWC,CAAY,IAAIxQ,EAAqC,CAAA,CAAE;AACzE,EAAAuL,EAAU,MAAM;AACd,UAAMkF,IAAYjf,EAAK,IAAI,CAACC,GAAIsV,OAAW;AAAA,MACzC,KAAKtV;AAAA,MACL,UAAUsV;AAAA,MACV,IAAI/V,GAAA;AAAA,IAAa,EACjB;AACF,IAAAwf,EAAaC,CAAS;AAAA,EACxB,GAAG,CAACjf,GAAM8e,EAAW,IAAI,CAAC;AAE1B,QAAMI,IAAUC;AAAA,IACdC,GAAUC,IAAe;AAAA,MACvB,sBAAsB;AAAA,QACpB,UAAU;AAAA,MAAA;AAAA,IACZ,CACD;AAAA,IACDD,GAAUE,IAAgB;AAAA,MACxB,kBAAkBC;AAAA,IAAA,CACnB;AAAA,EAAA;AAGH,WAASC,EAAcxT,GAAqB;AAC1C,UAAM,EAAE,QAAAyT,GAAQ,MAAAC,EAAA,IAAS1T;AACzB,QAAIyT,EAAO,QAAOC,KAAA,gBAAAA,EAAM,KAAI;AAC1B,YAAMC,IAAWZ,EAAU,UAAU,CAAC9e,MAAOA,EAAG,QAAOwf,KAAA,gBAAAA,EAAQ,GAAE,GAC3DG,IAAWb,EAAU,UAAU,CAAC9e,MAAOA,EAAG,QAAOyf,KAAA,gBAAAA,EAAM,GAAE,GACzDG,IAAkBC,GAAUf,GAAWY,GAAUC,CAAQ,GACzDzD,IAAS0D,EAAgB,IAAI,CAAC5f,MAC3BA,EAAG,GACX;AACD,MAAA+e,EAAaa,CAAe,GAC5BvC,KAAA,QAAAA,EAAgBnB;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,CAAC4D,GAAgBC,CAAiB,IAAIxR,EAAoB;AAAA,IAC9D,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,CACT;AAED,SACE,gBAAAtH;AAAA,IAAC+Y;AAAA,IAAA;AAAA,MACE,GAAGnB;AAAA,MACJ,OAAO,UAAU5P,CAAK,KAAKqP,EAAS,KAAK,GAAG,CAAC;AAAA,MAC7C,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,iBAAiB;AAAA,QAAA;AAAA,MACnB;AAAA,MAEF,aAAa,CAAC2B,MAEV,gBAAAhZ;AAAA,QAACiZ;AAAA,QAAA;AAAA,UACC,SAAAjB;AAAA,UACA,WAAW,CAAC,EAAE,OAAAkB,QAAY;AACxB,kBAAMjiB,IAAM;AAAA,cACV,GAAG4hB;AAAA,cACH,GAAGK;AAAA,cACH,GAAGL,EAAe,MAAKK,KAAA,gBAAAA,EAAO,MAAK;AAAA,cACnC,GAAGL,EAAe,MAAKK,KAAA,gBAAAA,EAAO,MAAK;AAAA,YAAA;AAErC,YAAAJ,EAAkB7hB,CAAG;AAAA,UACvB;AAAA,UAEA,UAAA,gBAAA+I,EAACmZ,IAAA,EAAc,OAAAH,GAAc,WAAWH,EAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,MAK9D,UAAA,gBAAA7Y,EAAC,OAAA,EAAI,WAAWD,GAAO,cACrB,4BAACkZ,IAAA,EAAW,SAAAjB,GAAkB,WAAWM,GAAe,WAAW,CAACc,EAAsB,GACxF,UAAA,gBAAApZ,EAACqZ,IAAA,EAAgB,OAAOxB,GACrB,UAAAA,EAAU,IAAI,CAAC,EAAE,IAAAjN,GAAI,KAAA5T,EAAA,GAAOqX,MACpB,gBAAArO,EAACsZ,MAAsB,IAAA1O,GAAQ,OAAAyD,GAAc,OAAOrX,EAAI2gB,KAAgB,EAAE,EAAA,GAAvD/M,CAA0D,CACrF,EAAA,CACH,EAAA,CACF,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GAEMuO,KAAgB,CAAC,EAAE,OAAAH,GAAO,WAAAO,QAAkE;AAChG,QAAM3O,IAAKoG,EAAO1Y,IAAc,GAC1B;AAAA,IACJ,YAAAkhB;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAWC;AAAA,EAAA,IACTC,GAAa;AAAA,IACf,IAAIhP,EAAG;AAAA,EAAA,CACR,GAEKiP,IAAiB;AAAA,IACrB,GAAGN;AAAA,IACH,GAAGI;AAAA,IACH,GAAGJ,EAAU,MAAKI,KAAA,gBAAAA,EAAe,MAAK;AAAA,IACtC,GAAGJ,EAAU,MAAKI,KAAA,gBAAAA,EAAe,MAAK;AAAA,EAAA;AAGxC,SACE,gBAAA3Z;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKwZ;AAAA,MACL,OAAO;AAAA,QACL,eAAe;AAAA,QACf,WAAWM,GAAI,UAAU,SAASD,CAAc;AAAA,MAAA;AAAA,MAEjD,GAAGJ;AAAA,MACH,GAAGC;AAAA,MAEH,UAAAV;AAAA,IAAA;AAAA,EAAA;AAGP,GAEMM,KAAe,CAAChc,MAAkE;AACtF,QAAM,EAAE,YAAAmc,GAAY,WAAAC,GAAW,YAAAF,GAAY,WAAAD,GAAW,YAAAQ,MAAeC,GAAY,EAAE,IAAI1c,EAAM,GAAA,CAAI,GAC3Fga,IAAQ;AAAA,IACZ,WAAWwC,GAAI,UAAU,SAASP,CAAS;AAAA,IAC3C,YAAAQ;AAAA,EAAA,GAEIE,IAAY3c,EAAM,SAAS,OAAOA,EAAM,KAAK;AACnD,SACE,gBAAA0C,EAAC,OAAA,EAAI,WAAWD,GAAO,UAAU,KAAKyZ,GAAY,OAAAlC,GAAe,GAAGmC,GAAa,GAAGC,GACjF,UAAAO,EAAA,CACH;AAEJ;AC7IA,SAASC,GAAYxD,GAAgB;AACnC,SAAI,MAAM,QAAQA,CAAK,IACdA,IAEA,CAAA;AAEX;AAEO,MAAMyD,KAAc,CAAC;AAAA,EAC1B,eAAA/D;AAAA,EACA,eAAAC;AAAA,EACA,MAAM,EAAE,SAAAO,GAAS,cAAcwD,EAAA;AAAA,EAC/B,cAAAzC;AAAA,EACA,cAAArB;AAAA,EACA,iBAAA+D;AAAA,EACA,oBAAAC;AAAA,EACA,GAAGhd;AACL,MAAuC;AACrC,QAAM,EAAE,UAAA+Z,GAAU,OAAArP,EAAA,IAAUqO,GACtBwB,IAAmBvV,EAAQ,MACxB4X,GAAY5c,EAAM,SAASgZ,CAAY,GAC7C,CAACA,GAAchZ,EAAM,KAAK,CAAC,GAExB,CAACid,GAAaC,CAAc,IAAIlT,EAAS,EAAK,GAC9CmT,IAAe9D;AAAA,IACnBC,KAAW;AAAA,MACT;AAAA,QACE,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,EACF;AAGF,SAAA/D,EAAU,MAAM;;AACd,IAAIwD,EAAc,0BAChBpd,IAAAod,EAAc,yBAAd,QAAApd,EAAA;AAAA,MAAAod;AAAA,MACE,gBAAArW;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAET,SAAS,CAACoG,MAAM;AACd,YAAAA,EAAE,eAAA,GACFA,EAAE,gBAAA,GACFgU,EAAe,EAAI;AAAA,UACrB;AAAA,UACD,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA;AAAA,EAKP,GAAG,CAACnE,CAAa,CAAC,GAGhB,gBAAAvW;AAAA,IAACyW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGD,UAAA;AAAA,QAAAsB,EAAU,IAAI,CAAC7gB,GAAKqX,MAEjB,gBAAArO;AAAA,UAACoX;AAAA,UAAA;AAAA,YACC,aAAapgB,EAAIsjB,KAAsB3C,KAAgB,EAAE,KAAK0C;AAAA,YAE9D,OAAO,EAAE,eAAe,OAAA;AAAA,YACxB,OAAAhM;AAAA,YACA,UAAAgJ;AAAA,YACA,OAAOrgB;AAAA,YACP,eAAe,CAACA,MAAQ;AACtB,cAAA6gB,EAAUxJ,CAAK,IAAIrX,EAAIqX,CAAK,GAC5B+H,KAAA,QAAAA,EAAgB,CAAC,GAAGyB,CAAS;AAAA,YAC/B;AAAA,YACA,SAAS4C;AAAA,YACT,UAAU,MAAM;AACd,oBAAMxF,IAAS,CAAC,GAAG4C,CAAS;AAC5B,cAAA5C,EAAO,OAAO5G,GAAO,CAAC,GACtB+H,KAAA,QAAAA,EAAgBnB;AAAA,YAClB;AAAA,UAAA;AAAA,UAdK5G;AAAA,QAAA,CAiBV;AAAA,QAED,gBAAArO;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,WAAWL,GAAO;AAAA,YAClB,MAAK;AAAA,YACL,SAAS,MAAM;AACb,oBAAMkV,IAAS,CAAC,GAAG4C,CAAS;AAC5B,cAAAzB,KAAA,QAAAA,EAAgB,CAAC,GAAGnB,GAAQmF,KAAoB,EAAE;AAAA,YACpD;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAApa;AAAA,UAAC0X;AAAA,UAAA;AAAA,YACC,OAAA1P;AAAA,YACA,cAAA2P;AAAA,YACA,eAAe,CAAC1C,MAAW;AACzB,cAAAmB,KAAA,QAAAA,EAAgB,CAAC,GAAGnB,CAAM;AAAA,YAC5B;AAAA,YACA,MAAMsF;AAAA,YACN,MAAM1C;AAAA,YACN,UAAAR;AAAA,YACA,UAAU,MAAM;AACd,cAAAmD,EAAe,EAAK;AAAA,YACtB;AAAA,YACA,MAAM,MAAM;AACV,cAAAA,EAAe,EAAK;AAAA,YACtB;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAL,GAAY,aAAa;ACxHlB,MAAMO,KAA0C,CAAC;AAAA,EACtD,eAAAtE;AAAA,EACA,UAAAuE;AAAA,EACA,OAAAjE;AAAA,EACA,eAAAL;AAAA,EACA,cAAAC;AACF,MAAuC;AACrC,QAAM,EAAE,UAAAe,MAAahB,GACfmB,IAAUxG,EAAc,IAAI;AAClC,SAAA6B,EAAU,MAAM;;AACd,KAAA5Z,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAUyd,KAAS,CAAA;AAAA,EACtC,GAAG,CAACA,CAAK,CAAC,GAGR,gBAAA1W;AAAA,IAACuW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA,gBAAAvW;AAAA,QAAC+V;AAAA,QAAA;AAAA,UACC,KAAKyB;AAAA,UACL,MAAMH,EAAS,KAAK,GAAG;AAAA,UACvB,cAAcX,KAASJ,KAAgB,CAAA;AAAA,UACvC,eAAe,CAACtf,MAAQ;AACtB,YAAAof,KAAA,QAAAA,EAAgBpf;AAAA,UAClB;AAAA,UACA,iBAAiB,CAAA;AAAA,UAEhB,UAAA2jB,EAAS,IAAI,CAAC5hB,GAAIsV,MAAU;AAC3B,kBAAMuI,IAAUD,GAAc5d,EAAG,OAAO,GAClC6hB,IAAQ5M,GAAUjV,EAAG,KAAK,GAC1B8hB,IAAMC,GAAa/hB,EAAG,KAAK,MAAKA,KAAA,gBAAAA,EAAI;AAC1C,qCACG,OAAA,EACC,UAAA,gBAAAiH;AAAA,cAACyX;AAAA,cAAA;AAAA,gBACC,MAAM1e,EAAG;AAAA,gBACT,OAAO6hB;AAAA,gBACP,MAAMC;AAAA,gBACN,WAAW9hB,EAAG;AAAA,gBACd,UAAU,CAAC,GAAGse,GAAUte,EAAG,IAAI;AAAA,gBAC/B,SAAA6d;AAAA,cAAA;AAAA,YAAA,KAPMvI,CASV;AAAA,UAEJ,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;AAEAqM,GAAY,aAAa;AClDlB,MAAMK,KAAe,CAACzd,MAA6B;AACxD,QAAM0d,IAAqD,CAACC,MAAW;;AACrE,KAAAhiB,IAAAqE,EAAM,gBAAN,QAAArE,EAAA,KAAAqE,GAAoB2d;AAAA,EACtB,GAEMC,IAA8C,CAACC,MAAW;;AAC9D,KAAAliB,IAAAqE,EAAM,eAAN,QAAArE,EAAA,KAAAqE,GAAmB6d;AAAA,EACrB;AAEA,SACE,gBAAAnb;AAAA,IAACob;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,OAAM;AAAA,MACN,iBAAiB9d,EAAM;AAAA,MACvB,cAAcA,EAAM;AAAA,MACpB,aAAa0d;AAAA,MACb,SAASE;AAAA,MACT,SAAS5d,EAAM;AAAA,MACf,OAAOA,EAAM;AAAA,MACb,UAAUA,EAAM;AAAA,IAAA;AAAA,EAAA;AAGtB,GCtCA+d,KAAe;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;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;;;ACKf,eAAsBC,GAAcC,GAAkBC,GAAoB;AACxE,QAAMC,IAAYC,GAA2B,YAAY;AAKzD,QAAMD,EAAU,UAAU;AAAA,IACxB,MAAMF;AAAA,IACN,SAAS,CAACC,CAAU;AAAA,EAAA,CACrB;AAED,QAAMG,IAAY,IAAIC,GAAA;AACtB,SAAAD,EAAU,SAASF,CAAS,GAErB,MAAMI,GAAU;AAAA,IACrB,WAAAF;AAAA,IACA,MAAM;AAAA,IACN,iBAAiB;AAAA,MACf,cAAc;AAAA,MACd,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,IAAA;AAAA,EACnB,CACD;AACH;AAEO,MAAMG,KAAqB,OAAOvgB,GAAkBsM,MAAuB;AAChF,QAAMkU,IAMF,CAAA,GACEC,IAAe,CAAA;AACrB,EAAAC,GAAiB1gB,GAAW,CAAClD,MAAS;AAKpC,QAJA0jB,EAAa1jB,EAAK,EAAE,IAAI;AAAA,MACtB,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,IAAA,GAElBA,EAAK,MAAM,OAAO;AACpB,YAAMwE,IAAK,YAAY;AACrB,YAAI0e,IAAW,QAAQljB,EAAK,GAAG,aAAa,IACxCuS,IAAKvS,EAAK;AACd,QAAIA,EAAK,MAAM,kBAAkB6jB,GAAuB,mBACtDX,IAAW,eACX3Q,IAAK;AAEP,cAAMvT,IAAU,MAAMikB,GAAcC,GAAU,KAAK,UAAUljB,EAAK,MAAM,KAAK,CAAC;AAC9E,QAAA0jB,EAAanR,CAAE,IAAI;AAAA,UACjB,kBAAkBvT,EAAQ,MAAM,KAAK;AAAA,CAAI;AAAA,UACzC,oBAAoB;AAAA,QAAA;AAAA,MAExB;AAEA,MAAA2kB,EAAM,KAAKnf,GAAI;AAAA,IACjB;AAAA,EACF,CAAC,GAED,MAAM,QAAQ,IAAImf,CAAK;AAEvB,QAAMG,IAAiBJ,EAAa;AACpC,SAAOA,EAAa;AAGpB,MAAIK,IAAe;AAEnB,EAAAA,KAAgB;AAAA;AAChB,QAAMC,IAAuB,CAAA;AAE7B,SAAO,KAAKN,CAAY,EAAE,QAAQ,CAACO,MAAM;AACvC,QAAIP,EAAaO,CAAC,EAAE,kBAAkB;AACpC,YAAMC,IAAOC,GAAe,QAAQF,EAAE,YAAA,CAAa,IAAIP,EAAaO,CAAC,EAAE,gBAAgB;AACvF,MAAAF,KAAgB,MAAME,CAAC,MAAMC,CAAI;AAAA,GACjCF,EAAW,KAAK,IAAIC,CAAC,GAAG;AAAA,IAC1B;AAAA,EACF,CAAC,GAEDF,KAAgB;AAAA;AAAA;AAEhB,MAAIK,IAAapB,GAAmB,QAAQ,yBAAyBe,CAAY;AACjF,EAAAK,IAAaA,EAAW,QAAQ,sBAAsB,iBAAiBJ,EAAW,KAAK,KAAK,CAAC,GAAG,GAC5FF,KAAA,QAAAA,EAAgB,qBAClBM,IAAaA,EAAW,QAAQ,2BAA2BN,EAAe,gBAAgB,GAC1FM,IAAaA,EAAW;AAAA,IACtB;AAAA,IACAD,GAAe,eAAeL,EAAe,gBAAgB;AAAA,EAAA;AAMjE,QAAMO,KADiB,MAAMpB,GAAc,oBAAoB,KAAK,UAAUzT,EAAY,MAAM,SAAS,CAAA,CAAE,CAAC,GAClE,MAAM,KAAK;AAAA,CAAI;AACzD,SAAA4U,IAAaA,EAAW,QAAQ,gCAAgCC,CAAkB,GAClFD,IAAaA,EAAW,QAAQ,6BAA6BD,GAAe,oBAAoBE,CAAkB,CAAC,GAG5GD;AACT,GAEMD,KAAiB,CACrBjB,GACAoB,GACAvhB,MAIauhB,EAAO,QAAQ,oBAAoBpB,CAAQ,IAAI,EAAE,EAAE,KAAA,GC3FrDqB,KAAmD,CAAC;AAAA,EAC/D,eAAAxG;AAAA,EACA,cAAAE;AAAA,EACA,eAAAD;AAAA,EACA,eAAAwG;AAAA,EAEA,MAAAC,IAAO;AAAA,EACP,GAAGxf;AACL,MAAM;;AACJ,QAAMyf,IAAY/L,EAAoC,IAAI,GACpD,CAACe,GAAMiL,CAAO,IAAI1V,EAAS,EAAK,GAChC2V,IAAqB,MAAM;;AAC/B,UAAMC,MAAYjkB,IAAA8jB,EAAU,YAAV,gBAAA9jB,EAAmB,eAAc;AACnD,IAAAmd,KAAA,QAAAA,EAAgB;AAAA,MACd,MAAM+G,GAAmB;AAAA,MACzB,OAAOD;AAAA,IAAA;AAAA,EAEX;AAEA,MAAIE,IAAoB,CAAA;AACxB,GAAI9f,EAAM,eAAe,MAASwf,MAAS,cACzCM,IAAoB;AAAA,IAClB,aAAa;AAAA,IACb,sBAAsB;AAAA,IACtB,qBAAqB;AAAA,IACrB,aAAa;AAAA,EAAA;AAIjB,QAAMC,IACJ,gBAAArd;AAAA,IAAC+a;AAAA,IAAA;AAAA,MACC,aAAa,OAAOE,MAAW;AAC7B,QAAAA,EAAO,UAAU,WAAW,mBAAmB,sBAAsB;AAAA,UACnE,sBAAsB;AAAA,UACtB,oBAAoB;AAAA,QAAA,CACrB,GAGDA,EAAO,UAAU,WAAW,mBAAmB,mBAAmB;AAAA,UAChE,QAAQA,EAAO,UAAU,WAAW,aAAa;AAAA,UACjD,sBAAsB;AAAA,QAAA,CACvB;AAED,cAAMqC,IAAc,MAAMxB,GAAmBzF,EAAc,UAAU,WAAWA,EAAc,SAAS,GAEjGkH,IAAS;AACf,QAAAtC,EAAO,UAAU,WAAW,mBAAmB,YAAYqC,GAAaC,CAAM,GAGhEtC,EAAO,OAAO,SAASA,EAAO,IAAI,MAAMsC,CAAM,CAAC,KAE3DtC,EAAO,OAAO,YAAYI,IAAoB,cAAcJ,EAAO,IAAI,MAAMsC,CAAM,CAAC;AAAA,MAExF;AAAA,MACA,YAAY,CAACpC,MAAW;AACtB,QAAA4B,EAAU,UAAU5B;AAAA,MACtB;AAAA,MACA,gBAAcliB,IAAAqE,EAAM,UAAN,gBAAArE,EAAa,UAASqd;AAAA,MACpC,UAAU;AAAA,MACV,SAAS;AAAA,QACP,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,SAAS,EAAE,SAAS,GAAA;AAAA,QACpB,SAAS;AAAA,QACT,OAAO;AAAA;AAAA,QAAA;AAAA,QAGP,GAAG8G;AAAA,QACH,GAAIP,KAAiB,CAAA;AAAA,MAAC;AAAA,MAExB,UAAU,MAAM;AACd,QAAIC,MAAS,YAEXG,EAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAIJ,SAAIH,MAAS,WAET,gBAAA9c;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWD,GAAO;AAAA,MAClB,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,GAAIzC,EAAM,kBAAkB,CAAA;AAAA,QAC5B,QAAQ;AAAA,MAAA;AAAA,MAGT,UAAA+f;AAAA,IAAA;AAAA,EAAA,IAKL,gBAAAvd;AAAA,IAACyW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAvW;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO;AAAA,cACL,WAAW;AAAA,cACX,OAAO;AAAA,cACP,OAAO;AAAA,cACP,UAAU;AAAA,YAAA;AAAA,YAEZ,SAAS,MAAM;AACb,cAAA4c,EAAQ,EAAI;AAAA,YACd;AAAA,YAEC,YAAAxZ,IAAAlG,EAAM,UAAN,gBAAAkG,EAAa,UAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAEzB,gBAAAxD;AAAA,UAAC+Y;AAAA,UAAA;AAAA,YACC,gBAAc;AAAA,YACd,MAAAhH;AAAA,YACA,OAAM;AAAA,YACN,UAAU,MAAMiL,EAAQ,EAAK;AAAA,YAC7B,OAAM;AAAA,YACN,MAAM,MAAM;AACV,cAAAC,EAAA,GACAD,EAAQ,EAAK;AAAA,YACf;AAAA,YACA,OAAO;AAAA,cACL,UAAU;AAAA,YAAA;AAAA,YAEZ,QAAQ;AAAA,cACN,MAAM;AAAA,gBACJ,QAAQ;AAAA,cAAA;AAAA,YACV;AAAA,YAGF,UAAA,gBAAAhd,EAAC,SAAI,OAAO,EAAE,QAAQ,UAAW,eAAQqd,EAAA,CAAW;AAAA,UAAA;AAAA,QAAA;AAAA,MACtD;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAT,GAAiB,aAAa;AC1JvB,MAAMY,KAA0E,CAAC;AAAA,EACtF,eAAApH;AAAA,EACA,cAAAE;AAAA,EACA,eAAAD;AAAA,EACA,GAAG/Y;AACL,MAEI,gBAAA0C;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAACyd;AAAA,MAAA;AAAA,QACE,GAAGngB;AAAA,QACJ,SAAUA,EAAM,SAASgZ;AAAA,QACzB,UAAU,CAACvE,GAAMvL,MAAM;;AACrB,WAAAvN,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiByU,GAAMvL,IACvB4P,KAAA,QAAAA,EAAgBrE;AAAA,QAClB;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAAA;AAKNyL,GAAc,aAAa;AC5BpB,MAAME,KAAqC,CAAC;AAAA,EACjD,eAAAtH;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGhZ;AACL,MAEI,gBAAA0C;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAAC2d;AAAA,MAAA;AAAA,QACC,YAAU;AAAA,QACV,OAAO;AAAA,UACL,OAAO;AAAA,QAAA;AAAA,QAER,GAAGrgB;AAAA,QACJ,OAAOA,EAAM,SAASgZ;AAAA,QACtB,UAAU,CAACtf,GAAK4mB,MAAW;;AACzB,WAAA3kB,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBtG,GAAK4mB,IACtBxH,KAAA,QAAAA,EAAgBpf;AAAA,QAClB;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAAA;AAKN0mB,GAAa,aAAa;ACzBnB,MAAMG,KAAgB,CAACvgB,MAAsB;AAClD,QAAM0a,IAAUC;AAAA,IACdC,GAAUC,IAAe;AAAA,MACvB,sBAAsB;AAAA,QACpB,UAAU;AAAA,MAAA;AAAA,IACZ,CACD;AAAA,EAAA,GAGG,CAACU,GAAgBC,CAAiB,IAAIxR,EAAoB;AAAA,IAC9D,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,CACT;AAED,SACE,gBAAAtH;AAAA,IAAC+Y;AAAA,IAAA;AAAA,MACE,GAAGzb;AAAA,MACJ,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,iBAAiB;AAAA,UACjB,eAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MAEF,aAAa,CAAC0b,MAEV,gBAAAhZ;AAAA,QAACiZ;AAAA,QAAA;AAAA,UACC,SAAAjB;AAAA,UACA,WAAW,CAAC,EAAE,OAAAkB,QAAY;AACxB,kBAAMjiB,IAAM;AAAA,cACV,GAAG4hB;AAAA,cACH,GAAGK;AAAA,cACH,GAAGL,EAAe,MAAKK,KAAA,gBAAAA,EAAO,MAAK;AAAA,cACnC,GAAGL,EAAe,MAAKK,KAAA,gBAAAA,EAAO,MAAK;AAAA,YAAA;AAErC,YAAAJ,EAAkB7hB,CAAG;AAAA,UACvB;AAAA,UAEA,UAAA,gBAAA+I,EAACmZ,IAAA,EAAc,OAAAH,GAAc,WAAWH,GAAgB,mBAAAC,EAAA,CAAsC;AAAA,QAAA;AAAA,MAAA;AAAA,IAGpG;AAAA,EAAA;AAGN,GAEMK,KAAgB,CAAC;AAAA,EACrB,OAAAH;AAAA,EACA,WAAAO;AAAA,EACA,mBAAAT;AACF,MAIM;AACJ,QAAMlO,IAAKoG,EAAO1Y,IAAc,GAC1B;AAAA,IACJ,YAAAkhB;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAWC;AAAA,EAAA,IACTC,GAAa;AAAA,IACf,IAAIhP,EAAG;AAAA,EAAA,CACR,GAEKiP,IAAiB;AAAA,IACrB,GAAGN;AAAA,IACH,GAAGI;AAAA,IACH,GAAGJ,EAAU,MAAKI,KAAA,gBAAAA,EAAe,MAAK;AAAA,IACtC,GAAGJ,EAAU,MAAKI,KAAA,gBAAAA,EAAe,MAAK;AAAA,EAAA;AAGxC,SACE,gBAAA7Z;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,eAAe;AAAA,QACf,WAAWga,GAAI,UAAU,SAASD,CAAc;AAAA,MAAA;AAAA,MAGlD,UAAA;AAAA,QAAA,gBAAA7Z;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAe,MAAM;AACnB,cAAA8Y,EAAkB,CAACgF,OACV;AAAA,gBACL,GAAGA;AAAA,gBACH,GAAG;AAAA,gBACH,GAAG;AAAA,cAAA,EAEN;AAAA,YACH;AAAA,YACA,KAAKtE;AAAA,YACL,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,QAAQ;AAAA,YAAA;AAAA,YAET,GAAGC;AAAA,YACH,GAAGC;AAAA,UAAA;AAAA,QAAA;AAAA,QAELV;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GC5GM+E,KAAe;AAAA,EACnB,SAAS;AAAA,IACP,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,4BAA4B;AAAA,IAC5B,SAAS,EAAE,SAAS,GAAA;AAAA,EAAM;AAAA,EAE5B,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,cAAc;AAAA,EAAA;AAElB,GAEMC,KAAa,CAAC,EAAE,QAAA7C,GAAQ,OAAAzE,GAAO,cAAAJ,GAAc,UAAA2H,GAAU,QAAAC,GAAQ,eAAArB,QAAyB;AAC5F,QAAME,IAAY/L,EAAA,GACZmN,IAAcnN,EAAA;AACpB,SAAAmN,EAAY,UAAUzH,GACtB7D,EAAU,MAAM;;AACd,UAAMuL,IAASnhB,KAAchE,IAAA8jB,EAAU,YAAV,gBAAA9jB,EAAmB,eAAc,IAAI,EAAE;AACpE,IAAI,KAAK,UAAUyd,CAAK,MAAM,KAAK,UAAU0H,CAAM,OAGnD5a,IAAAuZ,EAAU,YAAV,QAAAvZ,EAAmB,SAAS,KAAK,UAAUkT,GAAO,MAAM,CAAC;AAAA,EAC3D,GAAG,CAACA,CAAK,CAAC,GAER,gBAAA1W,EAAC,SAAI,OAAO,EAAE,QAAQke,KAAUH,GAAa,MAAM,OAAA,GACjD,UAAA,gBAAA/d;AAAA,IAAC+a;AAAA,IAAA;AAAA,MACC,YAAY,CAACsD,MAAmB;AAC9B,QAAAlD,EAAO,UAAUkD,GACjBtB,EAAU,UAAUsB;AAAA,MACtB;AAAA,MACA,UAAAJ;AAAA,MACA,cAAc,KAAK,UAAUvH,MAAUJ,KAAgB,KAAK,MAAM,CAAC;AAAA,MACnE,UAAS;AAAA,MACT,SAAS;AAAA,QACP,GAAGyH,GAAa;AAAA,QAChB,GAAGlB;AAAA,MAAA;AAAA,IACL;AAAA,EAAA,GAEJ;AAEJ,GACayB,KAA2B,CAAC;AAAA,EACvC,eAAAlI;AAAA,EACA,cAAAE;AAAA,EACA,MAAAwG,IAAO;AAAA,EACP,eAAAD;AAAA,EACA,eAAAxG;AAAA,EACA,GAAG/Y;AACL,MAMO;AACL,QAAMyf,IAAY/L,EAAoC,IAAI,GACpD,CAACe,GAAMiL,CAAO,IAAI1V,EAAS,EAAK,GAEhC2V,IAAqB,MAAM;;AAC/B,UAAMC,MAAYjkB,IAAA8jB,EAAU,YAAV,gBAAA9jB,EAAmB,eAAc;AACnD,QAAI;AACF,YAAMgc,IAAS,KAAK,MAAMiI,CAAS;AACnC,MAAA9G,KAAA,QAAAA,EAAgBnB;AAAA,IAClB,SAASzO,GAAG;AACV,cAAQ,KAAKA,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,2BACG+P,GAAA,EAAe,OAAO,EAAE,OAAO,EAAE,cAAc,IAAE,GAC/C,gBAAS,WACR,gBAAAvW,EAAC,OAAA,EAAI,OAAO+d,GAAa,OACvB,UAAA,gBAAA/d;AAAA,IAACge;AAAA,IAAA;AAAA,MACC,QAAQjB;AAAA,MACR,OAAOzf,EAAM;AAAA,MACb,cAAAgZ;AAAA,MACA,UAAU2G;AAAA,MACV,eAAeJ,KAAiB,CAAA;AAAA,IAAC;AAAA,EAAA,EACnC,CACF,IAEA,gBAAA/c,EAAAiH,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA/G;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,UACL,WAAW;AAAA,UACX,OAAO;AAAA,UACP,OAAO;AAAA,UACP,UAAU;AAAA,QAAA;AAAA,QAEZ,SAAS,MAAM4c,EAAQ,EAAI;AAAA,QAC5B,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGD,gBAAAhd;AAAA,MAAC6d;AAAA,MAAA;AAAA,QACC,gBAAc;AAAA,QACd,MAAA9L;AAAA,QACA,OAAM;AAAA,QACN,OAAM;AAAA,QACN,UAAU,MAAMiL,EAAQ,EAAK;AAAA,QAC7B,MAAM,MAAM;AACV,UAAAC,EAAA,GACAD,EAAQ,EAAK;AAAA,QACf;AAAA,QAEC,UAAAjL,KACC,gBAAA/R;AAAA,UAACge;AAAA,UAAA;AAAA,YACC,QAAQjB;AAAA,YACR,OAAOzf,EAAM;AAAA,YACb,cAAAgZ;AAAA,YACA,QAAO;AAAA,YACP,eAAeuG,KAAiB,CAAA;AAAA,UAAC;AAAA,QAAA;AAAA,MACnC;AAAA,IAAA;AAAA,EAEJ,EAAA,CACF,EAAA,CAEJ;AAEJ;AAEAyB,GAAW,aAAa;AC1HjB,MAAMC,KAMR,CAAC,EAAE,eAAAnI,GAAe,cAAAE,GAAc,eAAAD,GAAe,eAAAwG,GAAe,GAAGvf,QAAY;;AAChF,EAAAwe,GAAmBzF,EAAc,UAAU,WAAWA,EAAc,SAAS;AAC7E,QAAM0G,IAAY/L,EAAoC,IAAI,GACpD,CAACe,GAAMiL,CAAO,IAAI1V,EAAS,EAAK,GAChC2V,IAAqB,MAAM;;AAC/B,UAAMC,MAAYjkB,IAAA8jB,EAAU,YAAV,gBAAA9jB,EAAmB,eAAc;AACnD,IAAAmd,KAAA,QAAAA,EAAgB;AAAA,MACd,MAAM+G,GAAmB;AAAA,MACzB,OAAOD;AAAA,IAAA;AAAA,EAEX;AAEA,MAAIE,IAAoB,CAAA;AACxB,EAAI9f,EAAM,eAAe,OACvB8f,IAAoB;AAAA,IAClB,aAAa;AAAA,IACb,sBAAsB;AAAA,IACtB,qBAAqB;AAAA,IACrB,aAAa;AAAA,EAAA;AAIjB,QAAMC,IACJ,gBAAArd;AAAA,IAAC+a;AAAA,IAAA;AAAA,MACC,aAAa,OAAOE,MAAW;AAC7B,QAAAA,EAAO,UAAU,WAAW,mBAAmB,sBAAsB;AAAA,UACnE,sBAAsB;AAAA,UACtB,oBAAoB;AAAA,QAAA,CACrB,GAGDA,EAAO,UAAU,WAAW,mBAAmB,mBAAmB;AAAA,UAChE,QAAQA,EAAO,UAAU,WAAW,aAAa;AAAA,UACjD,sBAAsB;AAAA,QAAA,CACvB;AAED,cAAMqC,IAAc,MAAMxB,GAAmBzF,EAAc,UAAU,WAAWA,EAAc,SAAS,GAEjGkH,IAAS;AACf,QAAAtC,EAAO,UAAU,WAAW,mBAAmB,YAAYqC,GAAaC,CAAM,GAGhEtC,EAAO,OAAO,SAASA,EAAO,IAAI,MAAMsC,CAAM,CAAC,KAE3DtC,EAAO,OAAO,YAAYI,IAAoB,cAAcJ,EAAO,IAAI,MAAMsC,CAAM,CAAC;AAAA,MAExF;AAAA,MACA,YAAY,CAACpC,MAAW;AACtB,QAAA4B,EAAU,UAAU5B;AAAA,MACtB;AAAA,MACA,gBAAcliB,IAAAqE,EAAM,UAAN,gBAAArE,EAAa,WAAUqd,KAAgB;AAAA;AAAA,MACrD,UAAU;AAAA,MACV,SAAS;AAAA,QACP,iBAAiB;AAAA,QACjB,SAAS;AAAA,QAET,SAAS;AAAA,UACP,SAAShZ,EAAM,WAAW;AAAA,QAAA;AAAA,QAE5B,GAAG8f;AAAA,QACH,GAAIP,KAAiB,CAAA;AAAA,MAAC;AAAA,MAExB,UAAU,MAAM;AACd,QAAIvf,EAAM,SAAS,YAEjB2f,EAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAIJ,SAAI3f,EAAM,SAAS,WAEf,gBAAA0C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,GAAI1C,EAAM,kBAAkB,CAAA;AAAA,MAAC;AAAA,MAG9B,UAAA+f;AAAA,IAAA;AAAA,EAAA,IAKL,gBAAAvd;AAAA,IAACyW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAvW;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO;AAAA,cACL,WAAW;AAAA,cACX,OAAO;AAAA,cACP,OAAO;AAAA,cACP,UAAU;AAAA,YAAA;AAAA,YAEZ,SAAS,MAAM;AACb,cAAA4c,EAAQ,EAAI;AAAA,YACd;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAhd;AAAA,UAAC+Y;AAAA,UAAA;AAAA,YACC,UAAQ;AAAA,YACR,gBAAc;AAAA,YACd,MAAAhH;AAAA,YACA,OAAM;AAAA,YACN,UAAU,MAAMiL,EAAQ,EAAK;AAAA,YAC7B,OAAM;AAAA,YACN,MAAM,MAAM;AACV,cAAAC,EAAA,GACAD,EAAQ,EAAK;AAAA,YACf;AAAA,YACA,OAAO;AAAA,cACL,UAAU;AAAA,YAAA;AAAA,YAEZ,QAAQ;AAAA,cACN,MAAM;AAAA,gBACJ,WAAW;AAAA,gBACX,QAAQ;AAAA,cAAA;AAAA,YACV;AAAA,YAGF,UAAA,gBAAAhd,EAAC,SAAI,OAAO,EAAE,QAAQ,UAAW,eAAQqd,EAAA,CAAW;AAAA,UAAA;AAAA,QAAA;AAAA,MACtD;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAkB,GAAe,aAAa;ACzIrB,MAAMC,KAAgD,CAAC;AAAA,EAC5D,eAAApI;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAmI;AAAA,EACA,GAAGnhB;AACL,MAA0C;AACxC,QAAM,CAACohB,GAAkBC,CAAmB,IAAIrX,EAAkC,EAAE;AACpF,SACE,gBAAAtH;AAAA,IAACuW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA,gBAAAvW;AAAA,QAACsG,GAAM;AAAA,QAAN;AAAA,UACC,QAAQoY;AAAA,UACP,GAAGphB;AAAA,UACJ,OAAOA,EAAM,SAASgZ;AAAA,UACtB,UAAU,CAAC9P,MAAM;;AACf,kBAAMoY,IAAWpY,EAAE,OAAO;AAC1B,gBAAIiY,MAAmB,QAAW;AAChC,oBAAMxnB,IAAMwnB,EAAeG,CAAQ;AACnC,cAGED,EAHG1nB,IAGiB,KAFA,OAEE;AAAA,YAE1B;AACA,aAAAgC,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBkJ,IACjB4P,KAAA,QAAAA,EAAgB5P,EAAE,OAAO;AAAA,UAC3B;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AAEAgY,GAAe,aAAa;;;;GC/CtBK,KAAgB;AAAA,EAuJpB,aAAa;AAAA,IACX,iBAAiB;AAAA,MACf,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,eAAe;AAAA,MACb,QAAQ,CAAC,YAAY,UAAU,YAAY,cAAc,SAAS;AAAA,IAAA;AAAA,IAEpE,cAAc;AAAA,MACZ,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,KAAK,EAAE,QAAQ,GAAC;AAAA,IAChB,WAAW,EAAE,QAAQ,GAAC;AAAA,IACtB,mBAAmB,EAAE,QAAQ,GAAC;AAAA,IAC9B,uBAAuB;AAAA,MACrB,QAAQ,CAAC,aAAa,qBAAqB,UAAU,SAAS;AAAA,IAAA;AAAA,IAEhE,sBAAsB,EAAE,QAAQ,GAAC;AAAA,IACjC,uBAAuB;AAAA,MACrB,QAAQ,CAAC,aAAa,QAAQ,YAAY,MAAM;AAAA,IAAA;AAAA,IAElD,6BAA6B,EAAE,QAAQ,CAAC,UAAU,EAAA;AAAA,IAClD,kBAAkB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACnC,wBAAwB,EAAE,QAAQ,CAAC,UAAU,SAAS,EAAA;AAAA,IACtD,6BAA6B;AAAA,MAC3B,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,uBAAuB,EAAE,QAAQ,CAAC,UAAU,SAAS,EAAA;AAAA,IACrD,YAAY,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAChC,yBAAyB,EAAE,QAAQ,CAAC,SAAS,SAAS,QAAQ,EAAA;AAAA,IAC9D,yBAAyB;AAAA,MACvB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,mBAAmB,EAAE,QAAQ,CAAC,cAAc,eAAe,aAAa,EAAA;AAAA,IACxE,oBAAoB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACxC,oBAAoB;AAAA,MAClB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,qBAAqB;AAAA,MACnB,QAAQ,CAAC,cAAc,eAAe,aAAa;AAAA,IAAA;AAAA,IAErD,uBAAuB;AAAA,MACrB,QAAQ,CAAC,QAAQ,UAAU,SAAS,UAAU,KAAK;AAAA,IAAA;AAAA,IAErD,qBAAqB;AAAA,MACnB,QAAQ,CAAC,aAAa,UAAU,YAAY,YAAY,SAAS,OAAO;AAAA,IAAA;AAAA,IAE1E,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,WAAW,OAAO,EAAA;AAAA,IACxD,QAAQ,EAAE,QAAQ,GAAC;AAAA,IACnB,mBAAmB,EAAE,QAAQ,CAAC,YAAY,UAAU,EAAA;AAAA,IACpD,gBAAgB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACpC,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,uBAAuB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC3C,6BAA6B,EAAE,QAAQ,GAAC;AAAA,IACxC,8BAA8B,EAAE,QAAQ,GAAC;AAAA,IACzC,uBAAuB;AAAA,MACrB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,uBAAuB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IAC3D,gBAAgB,EAAE,QAAQ,CAAC,OAAO,EAAA;AAAA,IAClC,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,sBAAsB,EAAE,QAAQ,GAAC;AAAA,IACjC,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,uBAAuB,EAAE,QAAQ,CAAC,UAAU,SAAS,SAAS,SAAS,EAAA;AAAA,IACvE,sBAAsB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvC,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,qBAAqB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACzC,qBAAqB;AAAA,MACnB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,qBAAqB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACzD,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,sBAAsB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC1C,sBAAsB;AAAA,MACpB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,sBAAsB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IAC1D,cAAc,EAAE,QAAQ,GAAC;AAAA,IACzB,oBAAoB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACxC,0BAA0B,EAAE,QAAQ,GAAC;AAAA,IACrC,2BAA2B,EAAE,QAAQ,GAAC;AAAA,IACtC,oBAAoB;AAAA,MAClB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,oBAAoB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACxD,gBAAgB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACpD,wBAAwB,EAAE,QAAQ,CAAC,SAAS,OAAO,EAAA;AAAA,IACnD,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc,aAAa,EAAA;AAAA,IACpD,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACzB,eAAe;AAAA,MACb,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,gBAAgB;AAAA,MACd,QAAQ,CAAC,QAAQ,SAAS,gBAAgB,cAAc,cAAc;AAAA,IAAA;AAAA,IAExE,gBAAgB,EAAE,QAAQ,CAAC,UAAU,KAAK,EAAA;AAAA,IAC1C,eAAe,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,QAAA;AAAA,IACzC,OAAO,EAAE,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,OAAO,EAAA;AAAA,IACjD,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvB,OAAO,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC3B,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,eAAe,EAAE,QAAQ,CAAC,QAAQ,SAAS,EAAA;AAAA,IAC3C,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IACjC,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,qBAAqB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACzC,qBAAqB;AAAA,MACnB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,qBAAqB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACzD,eAAe,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAA;AAAA,IACvC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACjC,SAAS;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,qBAAqB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACtC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAClC,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,WAAW,EAAE,QAAQ,CAAC,OAAO,KAAK,EAAA;AAAA,IAClC,SAAS;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,eAAe,EAAE,QAAQ,CAAC,QAAQ,MAAM,EAAA;AAAA,IACxC,MAAM,EAAE,QAAQ,GAAC;AAAA,IACjB,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,MAAM,EAAE,QAAQ,CAAC,QAAQ,MAAM,EAAA;AAAA,IAC/B,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,kBAAkB;AAAA,MAChB,QAAQ,CAAC,UAAU,kBAAkB,OAAO,aAAa;AAAA,IAAA;AAAA,IAE3D,aAAa;AAAA,MACX,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,aAAa,EAAE,QAAQ,GAAC;AAAA,IACxB,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,aAAa,EAAE,QAAQ,CAAC,UAAU,QAAQ,cAAc,EAAA;AAAA,IACxD,OAAO,EAAE,QAAQ,CAAC,QAAQ,SAAS,QAAQ,gBAAgB,YAAY,EAAA;AAAA,IACvE,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,aAAA;AAAA,IACvC,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,aAAA;AAAA,IACvC,MAAM,EAAE,QAAQ,GAAC;AAAA,IACjB,gBAAgB;AAAA,MACd,QAAQ,CAAC,QAAQ,SAAS,QAAQ,YAAY,UAAU;AAAA,IAAA;AAAA,IAE1D,eAAe;AAAA,MACb,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC5C,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,EAAA;AAAA,IACnD,0BAA0B,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC7C,aAAa;AAAA,MACX,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,MAAM,EAAA;AAAA,IAC7C,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,cAAc,EAAE,QAAQ,CAAC,UAAU,UAAU,SAAS,EAAA;AAAA,IACtD,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,SAAS,QAAQ,EAAA;AAAA,IACtD,gBAAgB,EAAE,QAAQ,CAAC,UAAU,YAAY,EAAA;AAAA,IACjD,2BAA2B,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC9C,qBAAqB;AAAA,MACnB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,2BAA2B,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC9C,0BAA0B,EAAE,QAAQ,CAAC,UAAU,MAAM,EAAA;AAAA,IACrD,wBAAwB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC3C,yBAAyB,EAAE,QAAQ,CAAC,UAAU,OAAO,OAAO,EAAA;AAAA,IAC5D,eAAe;AAAA,MACb,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,KAAK,EAAE,QAAQ,CAAC,cAAc,EAAA;AAAA,IAC9B,MAAM,EAAE,QAAQ,GAAC;AAAA,IACjB,aAAa,EAAE,QAAQ,GAAC;AAAA,IACxB,qBAAqB,EAAE,QAAQ,GAAC;AAAA,IAChC,kBAAkB,EAAE,QAAQ,CAAC,OAAO,UAAU,OAAO,EAAA;AAAA,IACrD,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAChC,mBAAmB,EAAE,QAAQ,GAAC;AAAA,IAC9B,mBAAmB,EAAE,QAAQ,GAAC;AAAA,IAC9B,qBAAqB,EAAE,QAAQ,GAAC;AAAA,IAChC,YAAY,EAAE,QAAQ,GAAC;AAAA,IACvB,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC7B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAClC,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,yBAAyB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC1C,sBAAsB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvC,uBAAuB;AAAA,MACrB,QAAQ,CAAC,aAAa,SAAS,aAAa,QAAQ,MAAM;AAAA,IAAA;AAAA,IAE5D,QAAQ,EAAE,QAAQ,CAAC,QAAQ,eAAe,eAAe,aAAa,EAAA;AAAA,IACtE,SAAS,EAAE,QAAQ,CAAC,QAAQ,UAAU,MAAM,EAAA;AAAA,IAC5C,qBAAqB,EAAE,QAAQ,GAAC;AAAA,IAChC,oBAAoB,EAAE,QAAQ,CAAC,cAAc,MAAM,EAAA;AAAA,IACnD,WAAW,EAAE,QAAQ,CAAC,QAAQ,SAAS,EAAA;AAAA,IACvC,mBAAmB;AAAA,MACjB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,iBAAiB;AAAA,MACf,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvB,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IACrC,eAAe,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAClC,cAAc;AAAA,MACZ,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC9C,uBAAuB,EAAE,QAAQ,CAAC,UAAU,SAAS,EAAA;AAAA,IACrD,mBAAmB;AAAA,MACjB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACzB,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAClC,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAChC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACjC,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC9B,cAAc,EAAE,QAAQ,GAAC;AAAA,IACzB,aAAa,EAAE,QAAQ,GAAC;AAAA,IACxB,kBAAkB;AAAA,MAChB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,cAAc;AAAA,MACZ,QAAQ,CAAC,WAAW,SAAS,QAAQ,QAAQ,YAAY;AAAA,IAAA;AAAA,IAE3D,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,UAAU,SAAS,UAAU,KAAK,EAAA;AAAA,IACxE,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,GAAC;AAAA,IAClB,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,QAAA;AAAA,IAC7C,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,iBAAiB;AAAA,MACf,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,iBAAiB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACrD,UAAU,EAAE,QAAQ,CAAC,QAAQ,UAAU,UAAU,SAAS,EAAA;AAAA,IAC1D,cAAc,EAAE,QAAQ,CAAC,QAAQ,UAAU,UAAU,SAAS,EAAA;AAAA,IAC9D,cAAc,EAAE,QAAQ,CAAC,QAAQ,UAAU,UAAU,SAAS,EAAA;AAAA,IAC9D,iBAAiB,EAAE,QAAQ,CAAC,UAAU,YAAY,YAAY,EAAA;AAAA,IAC9D,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,oBAAoB;AAAA,MAClB,QAAQ,CAAC,UAAU,QAAQ,SAAS,QAAQ,OAAO;AAAA,IAAA;AAAA,IAErD,qBAAqB;AAAA,MACnB,QAAQ,CAAC,UAAU,QAAQ,SAAS,QAAQ,OAAO;AAAA,IAAA;AAAA,IAErD,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC/C,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC9B,sBAAsB;AAAA,MACpB,QAAQ,CAAC,UAAU,UAAU,QAAQ,SAAS,KAAK;AAAA,IAAA;AAAA,IAErD,kBAAkB;AAAA,MAChB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,UAAU,EAAE,QAAQ,CAAC,YAAY,SAAS,YAAY,UAAU,QAAQ,EAAA;AAAA,IACxE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACzB,sBAAsB;AAAA,MACpB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,uBAAuB;AAAA,MACrB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,uBAAuB;AAAA,MACrB,QAAQ,CAAC,QAAQ,SAAS,gBAAgB,cAAc,cAAc;AAAA,IAAA;AAAA,IAExE,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,cAAc,QAAQ,UAAU,EAAA;AAAA,IAC3D,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACxB,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,QAAQ,EAAA;AAAA,IAC9C,oBAAoB;AAAA,MAClB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAA;AAAA,IACvB,yBAAyB,EAAE,QAAQ,GAAC;AAAA,IACpC,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,iBAAiB;AAAA,MACf,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,YAAY,EAAE,QAAQ,GAAC;AAAA,IACvB,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC1C,cAAc;AAAA,MACZ,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,mBAAmB,EAAE,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,EAAA;AAAA,IAClE,mBAAmB;AAAA,MACjB,QAAQ,CAAC,gBAAgB,QAAQ,YAAY,WAAW;AAAA,IAAA;AAAA,IAE1D,yBAAyB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC7C,wBAAwB;AAAA,MACtB,QAAQ,CAAC,gBAAgB,QAAQ,YAAY,WAAW;AAAA,IAAA;AAAA,IAE1D,wBAAwB;AAAA,MACtB,QAAQ,CAAC,SAAS,OAAO,QAAQ,WAAW,QAAQ;AAAA,IAAA;AAAA,IAEtD,yBAAyB;AAAA,MACvB,QAAQ,CAAC,UAAU,UAAU,UAAU,SAAS,MAAM;AAAA,IAAA;AAAA,IAExD,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,uBAAuB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC3C,0BAA0B,EAAE,QAAQ,CAAC,SAAS,SAAS,QAAQ,OAAO,EAAA;AAAA,IACtE,uBAAuB;AAAA,MACrB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,gBAAgB;AAAA,MACd,QAAQ,CAAC,QAAQ,QAAQ,cAAc,iBAAiB;AAAA,IAAA;AAAA,IAE1D,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,UAAU,EAAA;AAAA,IAC9C,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,kBAAkB;AAAA,MAChB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,kBAAkB;AAAA,MAChB,QAAQ,CAAC,cAAc,cAAc,aAAa,QAAQ,WAAW;AAAA,IAAA;AAAA,IAEvE,2BAA2B;AAAA,MACzB,QAAQ,CAAC,cAAc,QAAQ,SAAS,QAAQ,OAAO;AAAA,IAAA;AAAA,IAEzD,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACtB,WAAW;AAAA,MACT,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,oBAAoB;AAAA,MAClB,QAAQ,CAAC,UAAU,UAAU,QAAQ,SAAS,KAAK;AAAA,IAAA;AAAA,IAErD,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,aAAa,EAAA;AAAA,IACnD,YAAY,EAAE,QAAQ,GAAC;AAAA,IACvB,oBAAoB,EAAE,QAAQ,GAAC;AAAA,IAC/B,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,uBAAuB,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAA;AAAA,IAC/C,8BAA8B;AAAA,MAC5B,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,gBAAgB,EAAE,QAAQ,CAAC,iBAAiB,SAAS,QAAQ,EAAA;AAAA,IAC7D,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,eAAe,EAAE,QAAQ,CAAC,OAAO,QAAQ,WAAW,QAAQ,MAAM,EAAA;AAAA,IAClE,kBAAkB;AAAA,MAChB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,YAAY,EAAE,QAAQ,CAAC,YAAY,UAAU,SAAS,EAAA;AAAA,IACtD,eAAe;AAAA,MACb,QAAQ,CAAC,UAAU,UAAU,OAAO,YAAY,UAAU;AAAA,IAAA;AAAA,IAE5D,QAAQ,EAAE,QAAQ,GAAC;AAAA,IACnB,OAAO,EAAE,QAAQ,CAAC,QAAQ,eAAe,eAAe,aAAa,EAAA;AAAA,IACrE,eAAe;AAAA,MACb,QAAQ,CAAC,QAAQ,YAAY,WAAW,iBAAiB;AAAA,IAAA;AAAA,IAE3D,cAAc,EAAE,QAAQ,CAAC,UAAU,aAAa,UAAU,EAAA;AAAA,IAC1D,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IACnC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,EAAE;AAElC,GAEaC,KAAgBD,GAAc,aAM9BE,KAAkB,OAAO,KAAKF,GAAc,WAAW,GCzhCvDG,KAA+C,CAAC;AAAA,EAC3D,eAAA5I;AAAA,EACA,aAAA6I,IAAc;AAAA,EACd,OAAAvI;AAAA,EACA,cAAAJ;AACF,MAAyC;AAEvC,QAAM4I,IAAmBlO,EAA6B,IAAI,GACpD,CAACmO,GAAYC,CAAW,IAAI9X,EAAcoP,MAAUJ,KAAgB,GAAG,GACvE,CAAC+I,GAAYC,CAAa,IAAIhY,EAAS,EAAK,GAC5CiY,IAAmB,MAAM;AAC7B,IAAAnJ,KAAA,QAAAA,EAAgB+I;AAAA,EAClB;AACA,EAAAtM,EAAU,MAAM;AACd,IAAAuM,EAAY1I,CAAK;AAAA,EACnB,GAAG,CAACA,CAAK,CAAC;AAEV,QAAM8I,IAAeld,EAAQ,MAAM;;AAEjC,cADarJ,IAAA6lB,GAAcG,CAA0C,MAAxD,gBAAAhmB,EAA2D,WAAU,CAAA,GACtE,IAAI,CAACF,OACR;AAAA,MACL,OAAOA;AAAA,IAAA,EAEV;AAAA,EACH,GAAG,CAACkmB,CAAW,CAAC;AAEhB,SACE,gBAAAjf;AAAA,IAACuW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA,gBAAAvW;AAAA,QAACyf;AAAA,QAAA;AAAA,UACC,KAAKP;AAAA,UACL,uBAAuB;AAAA,UACvB,SAAS;AAAA,UACT,OAAOC;AAAA,UACP,UAAU,CAACnoB,MAAQ;AACjB,YAAAooB,EAAYpoB,CAAG,GACfuoB,EAAA;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,UAAA;AAAA,UAER,SAAS,MAAM;AACb,YAAAD,EAAc,EAAI;AAAA,UACpB;AAAA,UACA,QAAQ,MAAM;AACZ,YAAAA,EAAc,EAAK;AAAA,UACrB;AAAA,UACA,WAAWrf,EAAK,CAACF,GAAO,WAAWsf,KAActf,GAAO,MAAM,CAAC;AAAA,UAC/D,aAAY;AAAA,UACZ,SAASyf;AAAA,QAAA;AAAA,MAAA;AAAA,IACV;AAAA,EAAA;AAGP;AAEAR,GAAe,aAAa;AChErB,MAAMU,KAAuB,CAAC,EAAE,eAAAtJ,GAAe,cAAAE,GAAc,OAAAI,QAEhE,gBAAA1W;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAACwC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,SACE,gBAAAxC;AAAA,UAAC2f;AAAA,UAAA;AAAA,YACC,OAAOjJ,KAASJ;AAAA,YAChB,UAAU,CAACsJ,MAAa;AACtB,oBAAMC,IAAc,QAAQD,EAAS,IAAI,CAAC,IAAIA,EAAS,IAAI,CAAC,IAAIA,EAAS,IAAI,CAAC,KAAKA,EAAS,IAAI,KAAK,CAAC;AACtG,cAAAxJ,KAAA,QAAAA,EAAgByJ;AAAA,YAClB;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJ,WAAW;AAAA,QACX,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,QAEF,OAAO;AAAA,UACL,eAAe;AAAA,QAAA;AAAA,QAGjB,UAAA,gBAAA7f;AAAA,UAACsG;AAAA,UAAA;AAAA,YACC,aAAY;AAAA,YACZ,OAAAoQ;AAAA,YACA,UAAU,CAAClQ,MAAM;AACf,cAAA4P,KAAA,QAAAA,EAAgB5P,EAAE,OAAO;AAAA,YAC3B;AAAA,YACA,QACE,gBAAAxG;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,iBAAiB0W,KAAS;AAAA,kBAC1B,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,UAAU;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,UACD;AAAA,QAAA;AAAA,MAEL;AAAA,IAAA;AAAA,EACF;AAAA;AAKNgJ,GAAY,aAAa;AC7DlB,MAAMI,KAAwB;AAAA,EACnC;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ,GC5BaC,KAA2B,CAAC;AAAA,EACvC,eAAA3J;AAAA,EACA,cAAAE;AAAA,EACA,OAAAI;AAAA,EACA,eAAAL;AAAA,EACA,GAAG2J;AACL,MAEI,gBAAAhgB;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAACigB;AAAA,MAAA;AAAA,QACC,UAAU;AAAA,QACV,YAAU;AAAA,QACV,OAAOvJ,KAASJ;AAAA,QAChB,kBAAkB,CAAClc,MAAU;AAC3B,UAAAgc,KAAA,QAAAA,EAAgBhc,EAAM;QACxB;AAAA,QACA,SAAS0lB;AAAA,QACR,GAAGE;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AAAA;AAKND,GAAgB,aAAa;AClCtB,MAAMG,KAA2C,CAAC;AAAA,EACvD,eAAA9J;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGhZ;AACL,MAEI,gBAAA0C;AAAA,EAACmgB;AAAA,EAAA;AAAA,IACE,GAAG7iB;AAAA,IACJ,OAAOA,EAAM,SAASgZ;AAAA,IACtB,UAAU,CAACsI,MAAa;;AACtB,OAAA3lB,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBshB,IACjBxI,KAAA,QAAAA,EAAgBwI;AAAA,IAClB;AAAA,EAAA;AAAA;AAKNsB,GAAa,aAAa;ACdnB,MAAME,KAA4B,CAAC;AAAA,EACxC,eAAAhK;AAAA,EACA,OAAAM;AAAA,EACA,cAAAJ;AAAA,EACA,eAAAD;AAAA,EACA,GAAG2J;AACL,MAEI,gBAAAhgB;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAACqgB,EAAM;AAAA,MAAN;AAAA,QACC,UAAU,CAAC7Z,MAAM;AACf,UAAA4P,KAAA,QAAAA,EAAgB5P,EAAE,OAAO;AAAA,QAC3B;AAAA,QACA,cAAc8P;AAAA,QACd,OAAAI;AAAA,QACC,GAAGsJ;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AAAA;AAKNI,GAAiB,aAAa;;;;;;GCvBjBE,KAAkB,CAAC,EAAE,KAAAC,GAAK,KAAAC,GAAK,OAAA9J,GAAO,UAAAuH,GAAU,YAAAwC,GAAY,GAAGT,QAAsC;AAChH,QAAMU,IAAiB,CAACzL,MAA+B;AACrD,IAAAgJ,KAAA,QAAAA,EAAWhJ;AAAA,EACb,GAEM0L,IAAmB,CAACC,MAAgB;AACxC,QAAIC,IAASD;AACb,IAAIL,MAAQ,WACVM,IAAS,KAAK,IAAIN,GAAKM,CAAM,IAE3BL,MAAQ,WACVK,IAAS,KAAK,IAAIL,GAAKK,CAAM,IAE/BH,EAAeG,CAAM;AAAA,EACvB,GAEMC,IAAUxe,EAAQ,MAAM;AAC5B,QAAIoU,MAAU;AACZ,aAAO;AAET,QAAI/d,IAAU+d;AAQd,WAPI6J,MAAQ,WACV5nB,IAAU,KAAK,IAAI4nB,GAAK5nB,CAAO,IAE7B6nB,MAAQ,WACV7nB,IAAU,KAAK,IAAI6nB,GAAK7nB,CAAO,IAG7BA,MAAY+d;AAAA,EAIlB,GAAG,CAAC8J,GAAKD,GAAK7J,CAAK,CAAC;AAEpB,SACE,gBAAA1W,EAAC,OAAA,EAAI,WAAWD,GAAO,iBACrB,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,MAAA;AAAA,MAGZ,UAAA,gBAAAA;AAAA,QAACsG;AAAA,QAAA;AAAA,UACC,YAAU;AAAA,UACT,GAAG0Z;AAAA,UACJ,QAAQc,IAAU,SAAY;AAAA,UAC9B,OAAApK;AAAA,UACA,SAAS,MAAM;AACb,YAAAgK,EAAe,MAAS;AAAA,UAC1B;AAAA,UACA,UAAU,CAACla,MAAM;AACf,kBAAMua,IAAS,SAASva,EAAE,OAAO,SAAS,KAAK,EAAE;AACjD,YAAAma,EAAiBI,CAAM;AAAA,UACzB;AAAA,UACA,YAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,GAEJ;AAEJ,GCvDMO,KAAY;AAAA,EAChB,EAAE,OAAO,MAAM,OAAO,KAAA;AAAA,EACtB,EAAE,OAAO,KAAK,OAAO,IAAA;AAAA,EACrB,EAAE,OAAO,MAAM,OAAO,KAAA;AAAA,EACtB,EAAE,OAAO,MAAM,OAAO,KAAA;AAAA,EACtB,EAAE,OAAO,OAAO,OAAO,MAAA;AACzB,GAEaC,KAAc,SAAU7lB,GAQlC;AACD,QAAM8lB,IAAiBlQ,EAKpB;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,IAEf,YAAY;AAAA,MACV,GAAG;AAAA,MACH,GAAG;AAAA,MACH,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,IAEf,WAAW;AAAA,EAAA,CACZ,GAEKmQ,IAAqCC,EAAY,MAAM;;AAC3D,IAAAF,EAAe,QAAQ,YAAY;AACnC,UAAM,EAAE,YAAAG,MAAeH,EAAe;AAEtC,KAAAjoB,IAAAmC,KAAA,gBAAAA,EAAS,UAAT,QAAAnC,EAAA,KAAAmC,GAAiB,EAAE,GAAGimB,MACtBH,EAAe,QAAQ,SAAS,IAChCA,EAAe,QAAQ,WAAW,cAAc,GAChDA,EAAe,QAAQ,WAAW,cAAc;AAAA,EAClD,GAAG,CAAC9lB,CAAO,CAAC,GAENkmB,IAAsCF,EAAY,MAAM;AAC5D,IAAAF,EAAe,QAAQ,YAAY;AAAA,EACrC,GAAG,CAAA,CAAE,GAECK,IAAsCH;AAAA,IAC1C,CAAC5a,MAAM;;AACL,UAAI,CAAC0a,EAAe,QAAQ;AAC1B;AAEF,YAAM,EAAE,OAAAM,GAAO,YAAAH,EAAA,IAAeH,EAAe,SAEvCO,IAAkBjb,EAAE,UAAUgb,EAAM,GACpCE,IAAkBlb,EAAE,UAAUgb,EAAM,GAEpCG,IAAgB;AACtB,UACET,EAAe,QAAQ,WAAW,cACjC,KAAK,IAAIO,CAAe,IAAIE,KAAiB,KAAK,IAAID,CAAe,IAAIC,IAC1E;AACA,QAAAT,EAAe,QAAQ,SAAS;AAChC,cAAMU,IAAYV,EAAe,QAAQ;AACzC,QAAAU,EAAU,IAAIpb,EAAE,SAChBob,EAAU,IAAIpb,EAAE,UAChBvN,IAAAmC,KAAA,gBAAAA,EAAS,YAAT,QAAAnC,EAAA,KAAAmC,GAAmB,EAAE,GAAGwmB;MAC1B;AAEA,UAAIV,EAAe,QAAQ,WAAW;AACpC;AAEF,MAAAG,EAAW,IAAI7a,EAAE,SACjB6a,EAAW,IAAI7a,EAAE,SAEjB6a,EAAW,cAAc7a,EAAE,UAAUgb,EAAM,GAC3CH,EAAW,cAAc7a,EAAE,UAAUgb,EAAM;AAG3C,YAAM,CAACK,GAAMC,CAAI,MAAIte,IAAApI,KAAA,gBAAAA,EAAS,oBAAT,gBAAAoI,EAA0B,MAAK,CAAA;AACpD,UAAIqe,MAAS,UAAaR,EAAW,cAAcQ,GAAM;AACvD,QAAAV,EAAW3a,CAAC;AACZ;AAAA,MACF;AAEA,UAAIsb,MAAS,UAAaT,EAAW,cAAcS,GAAM;AACvD,QAAAX,EAAW3a,CAAC;AACZ;AAAA,MACF;AAEA,OAAA/C,IAAArI,KAAA,gBAAAA,EAAS,aAAT,QAAAqI,EAAA,KAAArI,GAAoB,EAAE,GAAGimB;IAC3B;AAAA,IACA,CAACjmB,GAAS+lB,CAAU;AAAA,EAAA;AAGtB,SAAAtO,EAAU,MAAM;AACd,UAAMkP,IAAoBC,GAA6B,SAAS,MAAM,aAAa,CAACxb,MAAM;AACxF,MAAA+a,EAAY/a,CAAQ;AAAA,IACtB,CAAC,GAEKyb,IAAkBD,GAA6B,SAAS,MAAM,WAAW,CAACxb,MAAM;AACpF,MAAA2a,EAAW3a,CAAQ;AAAA,IACrB,CAAC,GACK0b,IAAqBF,GAA6B,SAAS,MAAM,cAAc,CAACxb,MAAM;AAC1F,MAAA2a,EAAW3a,CAAQ;AAAA,IACrB,CAAC;AAED,WAAO,MAAM;AACX,MAAAub,EAAA,GACAE,EAAA,GACAC,EAAA;AAAA,IACF;AAAA,EACF,GAAG,CAACf,GAAYI,CAAW,CAAC,GAErB;AAAA,IACL,aAAAD;AAAA,EAAA;AAEJ,GAwBaa,IAAe,CAAC7kB,MAA6B;AACxD,QAAM8kB,IAAW,OAAO9kB,EAAM,KAAK,GAC7B,CAAC+kB,GAAYC,CAAa,IAAIhb,EAAS;AAAA,IAC3C,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA,CACT,GAEKib,IAAiBjgB,EAAQ,MAAM;AACnC,UAAMrL,IAGF;AAAA,MACF,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAGR,QAAIqG,EAAM,UAAU;AAClB,aAAOrG;AAET,UAAM0B,IAAU,WAAW2E,EAAM,SAAS,EAAE;AAC5C,IAAK,MAAM3E,CAAO,MAChB1B,EAAI,QAAQ0B;AAGd,QAAI6pB,IAAyB;AAC7B,WAAIvrB,EAAI,UAAU,WAChBurB,IAAOJ,EAAS,QAAQ,OAAOnrB,EAAI,KAAK,GAAG,EAAE,EAAE,KAAA,IAE7C,CAAC,MAAM,KAAK,OAAO,MAAM,IAAI,EAAE,SAASurB,CAAI,MAC9CvrB,EAAI,OAAOurB,KAAQ,OAEdvrB;AAAA,EACT,GAAG,CAACmrB,GAAU9kB,EAAM,KAAK,CAAC,GAEpBmlB,IAAkBngB,EAA0B,MAC3ChF,EAAM,WAGJA,EAAM,SACV,IAAI,CAACvE,MACGioB,GAAU,KAAK,CAAClpB,MAAOA,EAAG,UAAUiB,CAAE,CAC9C,EACA,OAAO,OAAO,IANRioB,IAOR,CAAC1jB,EAAM,QAAQ,CAAC,GAEbolB,IAAgBpgB,EAAQ,MAAM;;AAClC,WAAO;AAAA,MACL,KAAK,OAAOhF,EAAM,OAAQ,WAAWA,EAAM,OAAMrE,IAAAqE,EAAM,QAAN,gBAAArE,EAAYspB,EAAe;AAAA,MAC5E,KAAK,OAAOjlB,EAAM,OAAQ,WAAWA,EAAM,OAAMkG,IAAAlG,EAAM,QAAN,gBAAAkG,EAAY+e,EAAe;AAAA,IAAI;AAAA,EAEpF,GAAG,CAACjlB,GAAOilB,CAAc,CAAC,GAEpBI,IAASrgB,EAAQ,MAAM;AAC3B,UAAMrL,IAAM,EAAE,GAAGsrB,EAAA;AACjB,WAAIF,EAAW,WAAW,eACxBprB,EAAI,QAAQorB,EAAW,QAGlBprB;AAAA,EACT,GAAG,CAACsrB,GAAgBF,CAAU,CAAC,GAEzBO,IAAcxB;AAAA,IAClB,CAACpqB,MAAqD;;AACpD,UAAI6rB,IAA6B,GAAG7rB,EAAI,KAAK,GAAGA,EAAI,IAAI;AACxD,MAAIA,EAAI,UAAU,WAChB6rB,IAAS,UAEX5pB,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsBulB;AAAA,IACxB;AAAA,IACA,CAACvlB,CAAK;AAAA,EAAA,GAGFwlB,IAAgB1B;AAAA,IACpB,CAAC2B,GAAoCrM,MAA8B;AACjE,UAAIV,IAAO,EAAE,GAAG+M,EAAA;AAChB,MAAIzlB,EAAM,wBACR0Y,IAAO1Y,EAAM,oBAAoB0Y,CAAI;AAGvC,UAAI4K,IAAMlK,KAAS;AACnB,MAAI,MAAMkK,CAAG,MACXA,IAAM;AAER,UAAI3L,IAAS2L,IAAM5K,EAAK;AAExB,aAAI0M,EAAc,QAAQ,WACxBzN,IAAS,KAAK,IAAIA,GAAQyN,EAAc,GAAG,IAEzCA,EAAc,QAAQ,WACxBzN,IAAS,KAAK,IAAIA,GAAQyN,EAAc,GAAG,IAEtCzN;AAAA,IACT;AAAA,IACA,CAACyN,EAAc,KAAKA,EAAc,KAAKplB,CAAK;AAAA,EAAA,GAGxC0O,IAAcoV;AAAA,IAClB,CAACpL,MAA6B;AAC5B,MAAAsM,EAAc;AAAA,QACZ,QAAQ;AAAA,QACR,OAAOQ,EAAc9M,GAAMuM,EAAe,KAAK;AAAA,MAAA,CAChD;AAAA,IACH;AAAA,IACA,CAACA,EAAe,OAAOO,CAAa;AAAA,EAAA,GAGhCE,IAAmB5B;AAAA,IACvB,CAACpL,MAA6B;AAC5B,YAAMiN,IAAKH,EAAc9M,GAAMuM,EAAe,KAAK;AACnD,MAAAD,EAAc;AAAA,QACZ,QAAQ;AAAA,QACR,OAAOW;AAAA,MAAA,CACR;AAAA,IACH;AAAA,IACA,CAACV,EAAe,OAAOO,CAAa;AAAA,EAAA,GAGhCI,IAAY9B;AAAA,IAChB,CAACpL,MAA6B;AAC5B,YAAMf,IAAS6N,EAAc9M,GAAMuM,EAAe,KAAK;AACvD,MAAIF,EAAW,WAAW,eAI1BO,EAAY;AAAA,QACV,OAAO3N;AAAA,QACP,MAAMsN,EAAe;AAAA,MAAA,CACtB,GACDD,EAAc;AAAA,QACZ,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA,CACR;AAAA,IACH;AAAA,IACA,CAACD,EAAW,QAAQE,GAAgBO,GAAeF,CAAW;AAAA,EAAA,GAE1DO,IAAYnS,EAAO;AAAA,IACvB,SAAShF;AAAA,IACT,UAAUgX;AAAA,IACV,OAAOE;AAAA,EAAA,CACR;AACD,EAAAC,EAAU,UAAU;AAAA,IAClB,SAASnX;AAAA,IACT,UAAUgX;AAAA,IACV,OAAOE;AAAA,EAAA;AAGT,QAAME,IAAiBnC,GAAY;AAAA,IACjC,SAAS,CAACjL,MAASmN,EAAU,QAAQ,QAAQnN,CAAI;AAAA,IACjD,UAAU,CAACA,MAASmN,EAAU,QAAQ,SAASnN,CAAI;AAAA,IACnD,OAAO,CAACA,MAASmN,EAAU,QAAQ,MAAMnN,CAAI;AAAA,IAC7C,iBAAiB;AAAA,MACf,GAAG,CAAC,KAAK,MAAS;AAAA,IAAA;AAAA,EACpB,CACD,GACKqN,IACJ,gBAAArjB,EAAC,QAAA,EAAK,WAAWD,GAAO,YACtB,UAAA,gBAAAC;AAAA,IAAC2d;AAAA,IAAA;AAAA,MACC,MAAMrgB,EAAM;AAAA,MACZ,cAAa;AAAA,MACb,OAAOqlB,EAAO;AAAA,MACd,UAAU,CAAC3rB,MAAQ;AACjB,QAAA4rB,EAAY;AAAA,UACV,OAAOD,EAAO;AAAA,UACd,MAAM3rB;AAAA,QAAA,CACP;AAAA,MACH;AAAA,MACA,OAAO;AAAA,QACL,OAAO;AAAA,MAAA;AAAA,MAET,uBAAuB;AAAA,MACvB,SAASyrB;AAAA,IAAA;AAAA,EAAA,GAEb;AAEF,SACE,gBAAAziB;AAAA,IAACuW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA,gBAAAvW,EAAC,OAAA,EAAI,WAAWC,EAAK,CAACF,GAAO,cAAczC,KAAA,gBAAAA,EAAO,SAAS,CAAC,GAAI,GAAG8lB,GAAgB,OAAO9lB,EAAM,OAC9F,UAAA,gBAAA0C;AAAA,QAACsgB;AAAA,QAAA;AAAA,UACC,MAAMhjB,EAAM;AAAA,UACZ,OAAOqlB,EAAO;AAAA,UACd,YAAYrlB,EAAM,SAAS,KAAQ,KAAK+lB;AAAA,UACxC,KAAKX,EAAc;AAAA,UACnB,KAAKA,EAAc;AAAA,UACnB,UAAU,CAAC1rB,MAAQ;AACjB,YAAA4rB,EAAY;AAAA,cACV,OAAO5rB;AAAA,cACP,MAAM2rB,EAAO;AAAA,YAAA,CACd;AAAA,UACH;AAAA,QAAA;AAAA,MAAA,GAEJ;AAAA,IAAA;AAAA,EAAA;AAGN,GCrWaW,KAA4C,CAAC;AAAA,EACxD,eAAAlN;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGhZ;AACL,MAEI,gBAAA0C;AAAA,EAACuW;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,UAAA,gBAAAvW;AAAA,MAACmiB;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACJ,GAAG7kB;AAAA,QACJ,OAAOA,EAAM,SAASgZ;AAAA,QACtB,eAAe,CAACrB,MAAW;AACzB,UAAAmB,KAAA,QAAAA,EAAgBnB;AAAA,QAClB;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAAA;AAKNqO,GAAc,aAAa;;;;;;;;GCLrBC,KAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAUA,SAASC,GAAgB1qB,GAAqB;AAC5C,SAAOA,EAAK,OAAO,CAAC7B,GAAK8B,OAChB;AAAA,IACL,GAAG9B;AAAA,IACH,CAAC8B,CAAE,GAAG;AAAA,EAAA,IAEP,CAAA,CAAE;AACP;AAEA,MAAM0qB,KAAS;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP,GAEaC,KAAiBC,GAAgD,CAACrmB,GAAOsmB,MAAQ;AAC5F,QAAM,CAACC,GAAUzE,CAAW,IAAI9X,EAAgBhK,EAAM,gBAAgBkmB,GAAgBD,EAAc,CAAC,GAE/F7C,IAAiBU;AAAA,IACrB,CAACnM,GAAwB6O,MAAwB;AAC/C,MAAA1E,EAAY,CAAChB,MAAW;;AACtB,cAAM2F,IAAW;AAAA,UACf,GAAG3F;AAAA,UACH,GAAG4F,GAAK/O,GAAQsO,EAAO;AAAA,QAAA;AAGzB,eAAIO,MAAc,QAChB7qB,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBymB,KAEZA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACzmB,CAAK;AAAA,EAAA;AAGR,EAAA2mB;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,UAAU,CAAC3O,MACTyL;AAAA,QACE;AAAA,UACE,GAAG8C,GAAgBD,EAAc;AAAA,UACjC,GAAGtO;AAAA,QAAA;AAAA,QAEL;AAAA,MAAA;AAAA,MAEJ,eAAe,MAAM;AACnB,QAAAmK,EAAYoE,GAAgBD,EAAc,CAAC;AAAA,MAC7C;AAAA,IAAA;AAAA,IAGJ,CAAC7C,CAAc;AAAA,EAAA;AAGjB,QAAMwD,IAAY5hB,EAAQ,MACjBhF,EAAM,SAASumB,GACrB,CAACvmB,EAAM,OAAOumB,CAAQ,CAAC;AAE1B,2BACG,OAAA,EACC,UAAA;AAAA,IAAA,gBAAA7jB,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EAAI,MAAM,IAAI,WAAU,QACvB,UAAA;AAAA,MAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,WAAO;AAAA,MACtC,gBAAAD;AAAA,QAACugB,EAAM;AAAA,QAAN;AAAA,UACC,OAAO6D,EAAU;AAAA,UACjB,MAAK;AAAA,UACL,aAAY;AAAA,UACZ,UAAU,CAAC1d,MAAM;AACf,YAAAka,EAAe;AAAA,cACb,SAASla,EAAE,OAAO;AAAA,YAAA,CACnB;AAAA,UACH;AAAA,UAEA,UAAA;AAAA,YAAA,gBAAAxG,EAACqgB,EAAM,QAAN,EAAa,OAAM,SAAQ,UAAA,SAAK;AAAA,8BAChCA,EAAM,QAAN,EAAa,OAAM,QAAO,UAAA,QAAI;AAAA,8BAC9BA,EAAM,QAAN,EAAa,OAAM,gBAAe,UAAA,WAAO;AAAA,8BACzCA,EAAM,QAAN,EAAa,OAAM,UAAS,UAAA,UAAM;AAAA,8BAClCA,EAAM,QAAN,EAAa,OAAM,QAAO,UAAA,OAAA,CAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACjC,EAAA,CACF,EAAA,CACF;AAAA,IAEC6D,EAAU,YAAY,UACrB,gBAAApkB,EAAAiH,GAAA,EACE,UAAA;AAAA,MAAA,gBAAA/G,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,QAACskB;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,YACT,eAAe;AAAA,YACf,YAAY;AAAA,UAAA;AAAA,UAGd,UAAA;AAAA,YAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,UAAM;AAAA,YACrC,gBAAAC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,YAAY;AAAA,gBAAA;AAAA,gBAGd,UAAA,gBAAAA;AAAA,kBAACqgB,EAAM;AAAA,kBAAN;AAAA,oBACC,MAAK;AAAA,oBACL,OAAO6D,EAAU,gBAAgB;AAAA,oBACjC,aAAa;AAAA,oBACb,SAAS;AAAA,sBACP;AAAA,wBACE,OAAO,gBAAAlkB,EAACqkB,IAAA,EAAmB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBAClF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAArkB,EAACskB,IAAA,EAAkB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACjF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAAtkB,EAACukB,IAAA,EAAkB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACjF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAAvkB,EAACwkB,IAAA,EAAgB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBAC/E,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAAxkB,EAACykB,IAAA,EAAQ,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACvE,OAAO;AAAA,sBAAA;AAAA,oBACT;AAAA,oBAEF,UAAU,CAACje,MAAM;AACf,sBAAAka,EAAe;AAAA,wBACb,kBAAkBla,EAAE,OAAO,SAAS;AAAA,sBAAA,CACrC;AAAA,oBACH;AAAA,oBACA,YAAW;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACb;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAxG,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,QAACskB;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,YACT,eAAe;AAAA,YACf,YAAY;AAAA,UAAA;AAAA,UAGd,UAAA;AAAA,YAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,UAAM;AAAA,YACrC,gBAAAC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,YAAY;AAAA,gBAAA;AAAA,gBAGd,UAAA,gBAAAA;AAAA,kBAACqgB,EAAM;AAAA,kBAAN;AAAA,oBACC,MAAK;AAAA,oBACL,OAAO6D,EAAU,iBAAiB;AAAA,oBAClC,aAAa;AAAA,oBACb,SAAS;AAAA,sBACP;AAAA,wBACE,OAAO,gBAAAlkB,EAAC0kB,IAAA,EAA+B,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBAC9F,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAA1kB,EAAC2kB,IAAA,EAA6B,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBAC5F,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAA3kB,EAAC4kB,IAAA,EAAgB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBAC/E,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAA5kB,EAAC6kB,IAAA,EAA4B,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBAC3F,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAA7kB,EAAC8kB,IAAA,EAA2B,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBAC1F,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAA9kB,EAACykB,IAAA,EAAQ,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACvE,OAAO;AAAA,sBAAA;AAAA,oBACT;AAAA,oBAEF,UAAU,CAACje,MAAM;AACf,sBAAAka,EAAe;AAAA,wBACb,mBAAmBla,EAAE,OAAO,SAAS;AAAA,sBAAA,CACtC;AAAA,oBACH;AAAA,oBACA,YAAW;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACb;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAxG,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,QAACskB;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,YACT,eAAe;AAAA,YACf,YAAY;AAAA,UAAA;AAAA,UAGd,UAAA;AAAA,YAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,UAAM;AAAA,YACrC,gBAAAC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,YAAY;AAAA,gBAAA;AAAA,gBAGd,UAAA,gBAAAA;AAAA,kBAACqgB,EAAM;AAAA,kBAAN;AAAA,oBACC,MAAK;AAAA,oBACL,OAAO6D,EAAU,aAAa;AAAA,oBAC9B,aAAa;AAAA,oBACb,SAAS;AAAA,sBACP;AAAA,wBACE,OAAO,gBAAAlkB,EAAC+kB,IAAA,EAA0B,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACzF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAA/kB,EAACglB,IAAA,EAAwB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACvF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAAhlB,EAACilB,IAAA,EAAkB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACjF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAAjlB,EAACklB,IAAA,EAA0B,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACzF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAAllB,EAACmlB,IAAA,EAAyB,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACxF,OAAO;AAAA,sBAAA;AAAA,sBAET;AAAA,wBACE,OAAO,gBAAAnlB,EAACykB,IAAA,EAAQ,MAAM,IAAI,OAAO,EAAE,KAAK,OAAO,UAAU,WAAA,EAAW,CAAG;AAAA,wBACvE,OAAO;AAAA,sBAAA;AAAA,oBACT;AAAA,oBAEF,UAAU,CAACje,MAAM;AACf,sBAAAka,EAAe;AAAA,wBACb,eAAela,EAAE,OAAO,SAAS;AAAA,sBAAA,CAClC;AAAA,oBACH;AAAA,oBACA,YAAW;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACb;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAxG,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EAAI,MAAM,IAAI,WAAU,QACvB,UAAA;AAAA,QAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,QACpC,gBAAAC;AAAA,UAACmiB;AAAA,UAAA;AAAA,YACC,WAAWpiB,EAAO;AAAA,YAClB,MAAM;AAAA,YACN,KAAK;AAAA,YACL,KAAK0jB;AAAAA,YACL,OAAOS,EAAU;AAAA,YACjB,eAAe,CAACjP,MAAW;AACzB,cAAAyL,EAAe;AAAA,gBACb,MAAMzL,KAAU;AAAA,cAAA,CACjB;AAAA,YACH;AAAA,YACA,MAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACP,EAAA,CACF,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IAIF,gBAAAjV,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS;AAAA,UACT,YAAY;AAAA,QAAA;AAAA,QAGd,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,UAAM;AAAA,UACrC,gBAAAC;AAAA,YAACmiB;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,OAAO;AAAA,cAAA;AAAA,cAET,KAAK;AAAA,cACL,KAAKsB;AAAAA,cACL,OAAOS,EAAU;AAAA,cACjB,eAAe,CAACltB,MAAQ;AACtB,gBAAA0pB,EAAe;AAAA,kBACb,OAAO1pB;AAAA,gBAAA,CACR;AAAA,cACH;AAAA,cACA,WAAW+I,EAAO;AAAA,cAClB,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,UAEP,gBAAAC;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO;AAAA,gBACL,YAAY;AAAA,cAAA;AAAA,cAEd,SAAS,MAAM;AACb,gBAAAsgB,EAAe;AAAA,kBACb,OAAO;AAAA,gBAAA,CACR;AAAA,cACH;AAAA,cAEA,UAAA,gBAAA1gB,EAAColB,IAAA,EAAe,MAAM,GAAA,CAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QAC5B;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAAplB,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS;AAAA,UACT,YAAY;AAAA,QAAA;AAAA,QAGd,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,WAAO;AAAA,UACtC,gBAAAC;AAAA,YAACmiB;AAAA,YAAA;AAAA,cACC,KAAK;AAAA,cACL,OAAO;AAAA,gBACL,OAAO;AAAA,cAAA;AAAA,cAET,KAAKsB;AAAAA,cACL,OAAOS,EAAU;AAAA,cACjB,eAAe,CAACltB,MAAQ;AACtB,gBAAA0pB,EAAe;AAAA,kBACb,QAAQ1pB;AAAA,gBAAA,CACT;AAAA,cACH;AAAA,cACA,WAAW+I,EAAO;AAAA,cAClB,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,UAEP,gBAAAC;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO;AAAA,gBACL,YAAY;AAAA,cAAA;AAAA,cAEd,SAAS,MAAM;AACb,gBAAAsgB,EAAe;AAAA,kBACb,QAAQ;AAAA,gBAAA,CACT;AAAA,cACH;AAAA,cAEA,UAAA,gBAAA1gB,EAACqlB,IAAA,EAAa,MAAM,GAAA,CAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QAC1B;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,sBACC,OAAA,EACC,UAAA;AAAA,MAAA,gBAAAvlB,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,QAAA,gBAAAD,EAACskB,GAAA,EAAI,MAAM,IAAI,WAAU,QACvB,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,UACpC,gBAAAC;AAAA,YAACmiB;AAAA,YAAA;AAAA,cACC,WAAWpiB,EAAO;AAAA,cAClB,KAAK;AAAA,cACL,KAAK0jB;AAAAA,cACL,OAAOS,EAAU,WAAW;AAAA,cAC5B,eAAe,CAACjP,MAAW;AACzB,gBAAAyL,EAAe;AAAA,kBACb,aAAazL;AAAA,gBAAA,CACd;AAAA,cACH;AAAA,cACA,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACP,GACF;AAAA,QACA,gBAAAnV,EAACskB,GAAA,EAAI,MAAM,IACT,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,UACpC,gBAAAC;AAAA,YAACmiB;AAAA,YAAA;AAAA,cACC,KAAK;AAAA,cACL,KAAKsB;AAAAA,cACL,OAAOS,EAAU,YAAY;AAAA,cAC7B,eAAe,CAACjP,MAAW;AACzB,gBAAAyL,EAAe;AAAA,kBACb,cAAczL;AAAA,gBAAA,CACf;AAAA,cACH;AAAA,cACA,WAAWlV,EAAO;AAAA,cAClB,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACP,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MACA,gBAAAD,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,QAAA,gBAAAD,EAACskB,GAAA,EAAI,MAAM,IAAI,WAAU,QACvB,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,UACpC,gBAAAC;AAAA,YAACmiB;AAAA,YAAA;AAAA,cACC,WAAWpiB,EAAO;AAAA,cAClB,KAAK;AAAA,cACL,KAAK0jB;AAAAA,cACL,OAAOS,EAAU,WAAW;AAAA,cAC5B,eAAe,CAACjP,MAAW;AACzB,gBAAAyL,EAAe;AAAA,kBACb,aAAazL;AAAA,gBAAA,CACd;AAAA,cACH;AAAA,cACA,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACP,GACF;AAAA,QACA,gBAAAnV,EAACskB,GAAA,EAAI,MAAM,IACT,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,UACpC,gBAAAC;AAAA,YAACmiB;AAAA,YAAA;AAAA,cACC,WAAWpiB,EAAO;AAAA,cAClB,KAAK;AAAA,cACL,KAAK0jB;AAAAA,cACL,OAAOS,EAAU,YAAY;AAAA,cAC7B,eAAe,CAACjP,MAAW;AACzB,gBAAAyL,EAAe;AAAA,kBACb,cAAczL;AAAA,gBAAA,CACf;AAAA,cACH;AAAA,cACA,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACP,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ,CAAC,GCjcKwO,KAAS;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP,GAEM6B,KAAS,SAETC,KAAc,OAAO;AAAA,EACzB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AACV,IAEaC,KAAwB7B,GAAuD,CAACrmB,GAAOsmB,MAAQ;AAC1G,QAAM,CAACC,GAAUzE,CAAW,IAAI9X,EAAgBhK,EAAM,gBAAgBioB,IAAa,GAC7EhC,IAAUjhB,EAAQ,MACf,CAAC,QAAQ,OAAO,SAAS,QAAQ,EAAE,IAAI,CAACvJ,MAAO,GAAGuE,EAAM,MAAM,IAAIvE,CAAE,EAAE,GAC5E,CAACuE,EAAM,MAAM,CAAC,GAEXojB,IAAiBU;AAAA,IACrB,CAACnM,GAAsB6O,MAAwB;AAC7C,MAAA1E,EAAY,CAAChB,MAAW;;AACtB,cAAM2F,IAAW;AAAA,UACf,GAAG3F;AAAA,UACH,GAAGnJ;AAAA,QAAA,GAECwQ,IAAS,OAAO,KAAK1B,CAAQ,EAAE,OAAO,CAAC9sB,GAAKqlB,OAC5CA,MAAM,QACRrlB,EAAI,GAAGqG,EAAM,MAAM,EAAE,IAAKymB,KAAA,gBAAAA,EAA8BzH,KAExDrlB,EAAI,GAAGqG,EAAM,MAAM,IAAIgf,CAAC,EAAE,IAAKyH,KAAA,gBAAAA,EAA8BzH,IAExDrlB,IACN,CAAA,CAAS;AACZ,eAAI6sB,MAAc,QAChB7qB,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiB0mB,GAAKyB,GAAQlC,CAAO,KAEhCQ;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACR,GAASjmB,CAAK;AAAA,EAAA,GAGX4c,IAAckH;AAAA,IAClB,CAAChqB,GAA0BsuB,MACH,OAAO,KAAKtuB,KAAO,CAAA,CAAE,EAAE,OAAO,CAACklB,MAAMA,EAAE,SAASoJ,CAAM,CAAC,EAC/C,OAAO,CAACzuB,GAAKqlB,OACrCA,EAAE,QAAQ,GAAGhf,EAAM,MAAM,IAAI,EAAE,MAAM,KACvCrG,EAAI,MAAUG,KAAA,gBAAAA,EAAyBklB,KAEvCrlB,EAAIqlB,EAAE,QAAQ,GAAGhf,EAAM,MAAM,KAAK,EAAE,CAAC,IAAKlG,KAAA,gBAAAA,EAAyBklB,IAE9DrlB,IACN,CAAA,CAAS;AAAA,IAGd,CAACqG,EAAM,MAAM;AAAA,EAAA;AAGf,EAAA2mB;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,UAAU,CAAC3O,MAAW;AACpB,QAAAyL;AAAA,UACE;AAAA,YACE,GAAG6E,GAAA;AAAA,YACH,GAAGrL,EAAYjF,GAAQ3X,EAAM,MAAM;AAAA,UAAA;AAAA,UAErC;AAAA,QAAA;AAAA,MAEJ;AAAA,MACA,eAAe,MAAM;AACnB,QAAAojB;AAAA,UACE;AAAA,YACE,GAAG6E,GAAA;AAAA,UAAY;AAAA,UAEjB;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,IAGJ,CAACrL,GAAa5c,EAAM,QAAQojB,CAAc;AAAA,EAAA;AAG5C,QAAMwD,IAAY5hB,EAAQ,MAAM;AAC9B,UAAM3J,IAAUuhB,EAAY5c,EAAM,SAAS,CAAA,GAAIA,EAAM,MAAM;AAC3D,WAAIA,EAAM,UAAU,SACXumB,IAEFlrB;AAAA,EACT,GAAG,CAACuhB,GAAa5c,EAAM,OAAOA,EAAM,QAAQumB,CAAQ,CAAC;AAErD,2BACG,OAAA,EACC,UAAA;AAAA,IAAA,gBAAA/jB,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,MAAA,gBAAAD;AAAA,QAACskB;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,UAAA;AAAA,UAGX,UAAA;AAAA,YAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,OAAOA,EAAO,KAAK,CAAC,CAAC,GAAG,UAAA,KAAA,CAAE;AAAA,YACxD,gBAAAC;AAAA,cAACmiB;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,KAAKsB;AAAAA,gBACL,OAAOS,EAAU;AAAA,gBACjB,eAAe,CAACltB,MAAQ;AACtB,kBAAA0pB,EAAe;AAAA,oBACb,KAAK1pB;AAAA,kBAAA,CACN;AAAA,gBACH;AAAA,gBACA,OAAO;AAAA,kBACL,OAAOsuB;AAAA,gBAAA;AAAA,gBAET,MAAK;AAAA,cAAA;AAAA,YAAA;AAAA,UACP;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAxlB,EAACskB,GAAA,EAAI,MAAM,IACT,UAAA;AAAA,QAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,OAAOA,EAAO,KAAK,CAAC,CAAC,GAAG,UAAA,KAAA,CAAE;AAAA,QACxD,gBAAAC;AAAA,UAACmiB;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAKsB;AAAAA,YACL,OAAOS,EAAU;AAAA,YACjB,eAAe,CAACltB,MAAQ;AACtB,cAAA0pB,EAAe;AAAA,gBACb,MAAM1pB;AAAA,cAAA,CACP;AAAA,YACH;AAAA,YACA,OAAO;AAAA,cACL,OAAOsuB;AAAA,YAAA;AAAA,YAET,MAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACP,EAAA,CACF;AAAA,IAAA,GACF;AAAA,sBACC,OAAA,EACC,UAAA,gBAAAxlB,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,MAAA,gBAAAD,EAACskB,GAAA,EAAI,MAAM,IACT,UAAA;AAAA,QAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,OAAOA,EAAO,KAAK,CAAC,CAAC,GAAG,UAAA,KAAA,CAAE;AAAA,QACxD,gBAAAC;AAAA,UAACmiB;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAKsB;AAAAA,YACL,OAAOS,EAAU;AAAA,YACjB,eAAe,CAACjP,MAAW;AACzB,cAAAyL,EAAe;AAAA,gBACb,QAAQzL;AAAA,cAAA,CACT;AAAA,YACH;AAAA,YACA,OAAO;AAAA,cACL,OAAOqQ;AAAA,YAAA;AAAA,YAET,MAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACP,GACF;AAAA,MACA,gBAAAxlB;AAAA,QAACskB;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,UAAA;AAAA,UAGX,UAAA;AAAA,YAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,OAAOA,EAAO,KAAK,CAAC,CAAC,GAAG,UAAA,KAAA,CAAE;AAAA,YACxD,gBAAAC;AAAA,cAACmiB;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAOmD;AAAA,gBAAA;AAAA,gBAET,KAAK;AAAA,gBACL,KAAK7B;AAAAA,gBACL,OAAOS,EAAU;AAAA,gBACjB,eAAe,CAACjP,MAAW;AACzB,kBAAAyL,EAAe;AAAA,oBACb,OAAOzL;AAAA,kBAAA,CACR;AAAA,gBACH;AAAA,gBACA,MAAK;AAAA,cAAA;AAAA,YAAA;AAAA,UACP;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ,CAAC,GC5LY0Q,KAAoBhC,GAAyD,SACxFrmB,GACAsmB,GACA;AACA,QAAM,CAACxpB,GAAOwrB,CAAQ,IAAIte,EAAA;AAE1B,SAAA2c,GAAoBL,GAAK,OAChB;AAAA,IACL,aAAa,CAACxpB,MAAkB;AAC9B,MAAAwrB,EAASxrB,CAAK;AAAA,IAChB;AAAA,EAAA,EAEH,GAGC,gBAAA4F;AAAA,IAACigB;AAAA,IAAA;AAAA,MACE,GAAG3iB;AAAA,MACJ,OAAOlD;AAAA,MACP,UAAU,CAACpD,MAAQ;AACjB,QAAA4uB,EAAS5uB,CAAG;AAAA,MACd;AAAA,MACA,kBAAkB,CAACA,MAAQ;;AACzB,SAAAiC,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBtG,EAAI;MACvB;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC,GC7BK6uB,KAAoB,CAAC,aAAa,SAAS,cAAc,aAAa,GAUtEpC,KAAS;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP,GAEMqC,KAAe;AAAA,EACnB,EAAE,OAAO,gBAAA9lB,EAAC,QAAA,EAAK,WAAWD,EAAO,YAAY,UAAA,OAAA,CAAI,GAAS,OAAO,OAAA;AAAA,EACjE,EAAE,OAAO,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,YAAY,UAAA,SAAA,CAAM,GAAS,OAAO,SAAA;AAAA,EACnE,EAAE,OAAO,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,YAAY,UAAA,SAAK,GAAS,OAAO,QAAA;AACpE,GAEMgmB,KAAoB;AAAA,EACxB,EAAE,OAAO,gBAAA/lB,EAAC,QAAA,EAAK,WAAWD,EAAO,YAAY,UAAA,UAAA,CAAO,GAAS,OAAO,MAAA;AAAA,EACpE,EAAE,OAAO,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,YAAY,UAAA,SAAA,CAAM,GAAS,OAAO,MAAA;AAAA,EACnE,EAAE,OAAO,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,YAAY,UAAA,QAAI,GAAS,OAAO,MAAA;AACnE,GAEMwlB,KAAc,OAAO;AAAA,EACzB,aAAa;AAAA,EACb,OAAO;AAAA,EACP,cAAc;AAAA,EACd,eAAe;AACjB,IAEaS,KAAYrC,GAA2C,CAACrmB,GAAOsmB,MAAQ;AAClF,QAAM,CAACC,GAAUzE,CAAW,IAAI9X,EAAgBhK,EAAM,gBAAgBioB,IAAa,GAC7EU,IAAWjV,EAA6B,IAAI,GAC5C0P,IAAiBU;AAAA,IACrB,CAACnM,GAAwB6O,MAAwB;AAC/C,MAAA1E,EAAY,CAAChB,MAAW;;AACtB,cAAM2F,IAAW;AAAA,UACf,GAAG3F;AAAA,UACH,GAAGnJ;AAAA,QAAA;AAEL,eAAI6O,MAAc,QAChB7qB,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBymB,KAEZA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACzmB,CAAK;AAAA,EAAA;AAGR,EAAA2mB;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,UAAU,CAAC3O,MAAW;;AACpB,SAAAhc,IAAAgtB,EAAS,YAAT,QAAAhtB,EAAkB,aAAYgc,KAAA,gBAAAA,EAAQ,UAAS,KAC/CyL;AAAA,UACE;AAAA,YACE,GAAG6E,GAAA;AAAA,YACH,GAAGvB,GAAK/O,GAAQ4Q,EAAiB;AAAA,UAAA;AAAA,UAEnC;AAAA,QAAA;AAAA,MAEJ;AAAA,MACA,eAAe,MAAM;AACnB,QAAAnF;AAAA,UACE;AAAA,YACE,GAAG6E,GAAA;AAAA,UAAY;AAAA,UAEjB;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,IAGJ,CAAC7E,CAAc;AAAA,EAAA;AAGjB,QAAMwD,IAAY5hB,EAAQ,MACjBhF,EAAM,SAASumB,GACrB,CAACvmB,EAAM,OAAOumB,CAAQ,CAAC;AAE1B,2BACG,OAAA,EACC,UAAA;AAAA,IAAA,gBAAA7jB,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,QAGX,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,KAAK,CAAC,GAAG,UAAA,UAAM;AAAA,UAC7C,gBAAAC;AAAA,YAAC2lB;AAAA,YAAA;AAAA,cACC,KAAKM;AAAA,cACL,UAAU;AAAA,cACV,MAAK;AAAA,cACL,UAAU,CAAC7rB,MAAU;AACnB,gBAAAsmB,EAAe;AAAA,kBACb,OAAAtmB;AAAA,gBAAA,CACD;AAAA,cACH;AAAA,cACA,SAAS0lB;AAAA,YAAA;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,sBACCqE,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,MACpC,gBAAAC;AAAA,QAACmiB;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,KAAKsB;AAAAA,UACL,OAAOS,EAAU,WAAW;AAAA,UAC5B,eAAe,CAACltB,MAAQ;AACtB,YAAA0pB,EAAe;AAAA,cACb,aAAa1pB;AAAA,YAAA,CACd;AAAA,UACH;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAET,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP,EAAA,CACF,EAAA,CACF;AAAA,IACA,gBAAA8I,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,KAAK,CAAC,GAAG,UAAA,UAAM;AAAA,MAC7C,gBAAAC;AAAA,QAACqgB,EAAM;AAAA,QAAN;AAAA,UACC,SAASyF;AAAA,UACT,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO7Q,EAAA,QAAe;AAC3C,YAAAyL,EAAe;AAAA,cACb,cAAczL;AAAA,YAAA,CACf;AAAA,UACH;AAAA,UACA,OAAOiP,EAAU,YAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAC/B,GACF;AAAA,IACA,gBAAApkB,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,KAAK,CAAC,GAAG,UAAA,WAAO;AAAA,MAC9C,gBAAAC;AAAA,QAACqgB,EAAM;AAAA,QAAN;AAAA,UACC,SAAS0F;AAAA,UACT,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO9Q,EAAA,QAAe;AAC3C,YAAAyL,EAAe;AAAA,cACb,eAAezL;AAAA,YAAA,CAChB;AAAA,UACH;AAAA,UACA,OAAOiP,EAAU,aAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IAChC,EAAA,CACF;AAAA,EAAA,GACF;AAEJ,CAAC,GCxJKgC,KAAsB,CAAC,UAAU,eAAe,GAKhDzC,KAAS;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP,GAEM8B,KAAc,OAAO;AAAA,EACzB,QAAQ;AAAA,EACR,iBAAiB;AACnB,IAQaY,KAAcxC,GAA6C,CAACrmB,GAAOsmB,MAAQ;AACtF,QAAM,CAACC,GAAUzE,CAAW,IAAI9X,EAAgBhK,EAAM,gBAAgBioB,IAAa,GAC7EU,IAAWjV,EAA6B,IAAI,GAE5C0P,IAAiBU;AAAA,IACrB,CAACnM,GAAwB6O,MAAwB;AAC/C,MAAA1E,EAAY,CAAChB,MAAW;;AACtB,cAAM2F,IAAW;AAAA,UACf,GAAG3F;AAAA,UACH,GAAGnJ;AAAA,QAAA;AAEL,eAAI6O,MAAc,QAChB7qB,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiBymB,KAEZA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACzmB,CAAK;AAAA,EAAA;AAGR,EAAA2mB;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,UAAU,CAAC3O,MAAW;AACpB,cAAMmR,IAAWb,GAAA;AACjB,QAAI,OAAO,KAAKtQ,CAAM,EAAE,SACtByL;AAAA,UACE;AAAA,YACE,GAAG0F;AAAA,YACH,GAAGpC,GAAK/O,GAAQiR,EAAmB;AAAA,UAAA;AAAA,UAErC;AAAA,QAAA,IAGFxF,EAAe0F,GAAU,EAAI;AAAA,MAEjC;AAAA,MACA,eAAe,MAAM;AACnB,QAAA1F;AAAA,UACE;AAAA,YACE,GAAG6E,GAAA;AAAA,UAAY;AAAA,UAEjB;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,IAGJ,CAAC7E,CAAc;AAAA,EAAA;AAGjB,QAAM2F,IAAiB/jB,EAAQ,MAAM;;AACnC,UAAM3J,IAAUkrB,EAAS,UAAa,IAChC/qB,IAAOH,EAAQ,MAAM,GAAG,GACxB2tB,IAAS;AAAA,MACb,MAAMxtB,EAAK,CAAC,KAAK;AAAA,MACjB,MAAMA,EAAK,CAAC,KAAK;AAAA,MACjB,OAAOH,EAAQ,QAAQ,KAAK,EAAE,EAAE,QAAQG,EAAK,CAAC,GAAG,EAAE,EAAE,QAAQA,EAAK,CAAC,GAAG,EAAE;AAAA,IAAA;AAE1E,YAAAG,IAAAgtB,EAAS,YAAT,QAAAhtB,EAAkB,YAAYqtB,EAAO,QAE9BA;AAAA,EACT,GAAG,CAACzC,CAAQ,CAAC,GAEP0C,IAAwB,CAACC,MAAwC;AACrE,IAAA9F,EAAe;AAAA,MACb,QAAQ,GAAG8F,EAAa,QAAQ,KAAK,IAAIA,EAAa,QAAQ,MAAM,IAClEA,EAAa,SAAS,aACxB,GAAG,KAAA;AAAA,IAAK,CACT;AAAA,EACH;AAEA,2BACG,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAxmB,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,QAAA;AAAA,QAEZ,MAAM;AAAA,QAEN,UAAA;AAAA,UAAA,gBAAApkB;AAAA,YAACymB;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP,KAAK;AAAA,gBACL,OAAO;AAAA,gBACP,QAAQ;AAAA,cAAA;AAAA,cAEV,SAAS,MAAM;AACb,gBAAA/F,EAAe;AAAA,kBACb,QAAQ;AAAA,gBAAA,CACT;AAAA,cACH;AAAA,YAAA;AAAA,UAAA;AAAA,UAEF,gBAAA1gB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,UACpC,gBAAAC;AAAA,YAACmiB;AAAA,YAAA;AAAA,cACC,KAAK;AAAA,cACL,KAAKsB;AAAA,cACL,OAAO4C,EAAe;AAAA,cACtB,OAAO;AAAA,gBACL,OAAO;AAAA,cAAA;AAAA,cAET,UAAU,CAAC,IAAI;AAAA,cACf,eAAe,CAACrvB,MAAQ;AACtB,gBAAAuvB,EAAsB;AAAA,kBACpB,GAAGF;AAAA,kBACH,MAAMrvB,KAAO;AAAA,gBAAA,CACd;AAAA,cACH;AAAA,cACA,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACP;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAAgJ,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,QAGX,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,KAAK,CAAC,GAAG,UAAA,UAAM;AAAA,UAC7C,gBAAAC;AAAA,YAAC2lB;AAAA,YAAA;AAAA,cACC,KAAKM;AAAA,cACL,UAAU;AAAA,cACV,MAAK;AAAA,cACL,OAAOI,EAAe,SAAS;AAAA,cAC/B,UAAU,CAACjsB,MAAU;AACnB,gBAAAmsB,EAAsB;AAAA,kBACpB,GAAGF;AAAA,kBACH,OAAAjsB;AAAA,gBAAA,CACD;AAAA,cACH;AAAA,cACA,SAAS0lB;AAAA,YAAA;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAA9f,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,QAGX,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,KAAK,CAAC,GAAG,UAAA,SAAK;AAAA,UAC5C,gBAAAD;AAAA,YAACugB,EAAM;AAAA,YAAN;AAAA,cACC,OAAOgG,EAAe;AAAA,cACtB,MAAK;AAAA,cACL,UAAU,CAAC7f,MAAM;AACf,gBAAA+f,EAAsB;AAAA,kBACpB,GAAGF;AAAA,kBACH,MAAM7f,EAAE,OAAO,SAAS;AAAA,gBAAA,CACzB;AAAA,cACH;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAxG,EAACqgB,EAAM,QAAN,EAAa,OAAM,SAAQ,UAAA,SAAK;AAAA,kCAChCA,EAAM,QAAN,EAAa,OAAM,UAAS,UAAA,UAAM;AAAA,kCAClCA,EAAM,QAAN,EAAa,OAAM,UAAS,UAAA,UAAM;AAAA,kCAClCA,EAAM,QAAN,EAAa,OAAM,QAAO,UAAA,OAAA,CAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACjC;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,sBACC8D,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,WAAO;AAAA,MACtC,gBAAAC;AAAA,QAACmiB;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,KAAKsB;AAAA,UACL,OAAOI,EAAS,eAAe;AAAA,UAC/B,eAAe,CAAC7sB,MAAQ;AACtB,YAAA0pB,EAAe;AAAA,cACb,iBAAiB1pB;AAAA,YAAA,CAClB;AAAA,UACH;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAET,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ,CAAC,GC9MK0vB,KAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAYMnB,KAAc,OACX;AAAA,EACL,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,IAIZoB,KAAkBhD,GAAiD,CAACrmB,GAAOsmB,MAAQ;;AAC9F,QAAM,CAACC,GAAUzE,CAAW,IAAI9X,EAAgBhK,EAAM,gBAAgBioB,IAAa,GAC7EU,IAAWjV,EAA6B,IAAI,GAE5C0P,IAAiBU;AAAA,IACrB,CAACnM,GAAwB6O,MAAwB;AAC/C,MAAA1E,EAAY,CAAChB,MAAW;;AACtB,cAAM2F,IAAW;AAAA,UACf,GAAG3F;AAAA,UACH,GAAGnJ;AAAA,QAAA;AAEL,gBAAAhc,IAAAgtB,EAAS,YAAT,QAAAhtB,EAAkB,YAAY8qB,EAAS,kBAAkB,IACrDD,MAAc,QAChBtgB,IAAAlG,EAAM,aAAN,QAAAkG,EAAA,KAAAlG,GAAiBymB,KAEZA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACzmB,CAAK;AAAA,EAAA;AAGR,EAAA2mB;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,UAAU,CAAC3O,MAAW;AACpB,cAAMmR,IAAWb,GAAA;AACjB,QAAI,OAAO,KAAKtQ,CAAM,EAAE,SACtByL;AAAA,UACE;AAAA,YACE,GAAG0F;AAAA,YACH,GAAGpC,GAAK/O,GAAQyR,EAAuB;AAAA,UAAA;AAAA,UAEzC;AAAA,QAAA,IAGFhG,EAAe0F,GAAU,EAAI;AAAA,MAEjC;AAAA,MACA,eAAe,MAAM;AACnB,cAAMA,IAAWb,GAAA;AACjB,QAAA7E,EAAe0F,GAAU,EAAI;AAAA,MAC/B;AAAA,IAAA;AAAA,IAGJ,CAAC1F,CAAc;AAAA,EAAA;AAGjB,QAAMwD,IAAY5hB,EAAQ,MACjBhF,EAAM,SAASumB,GACrB,CAACvmB,EAAM,OAAOumB,CAAQ,CAAC;AAE1B,2BACG,OAAA,EACC,UAAA;AAAA,IAAA,gBAAA7jB,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,QAGX,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,KAAK,CAAC,GAAG,UAAA,UAAM;AAAA,UAC7C,gBAAAC;AAAA,YAAC2lB;AAAA,YAAA;AAAA,cACC,KAAKM;AAAA,cACL,UAAU;AAAA,cACV,MAAK;AAAA,cACL,OAAO/B,EAAU,kBAAkB,KAAK;AAAA,cACxC,UAAU,CAAC9pB,MAAU;AACnB,gBAAAsmB,EAAe;AAAA,kBACb,oBAAoBtmB;AAAA,gBAAA,CACrB;AAAA,cACH;AAAA,cACA,SAAS0lB;AAAA,YAAA;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAA9f,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,QAGX,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,UAAM;AAAA,UACrC,gBAAAC;AAAA,YAACsG;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,MAAM,EAAA;AAAA,cACf,MAAK;AAAA,cACL,SAAOrN,IAAA,+BAA+B,KAAKirB,EAAU,kBAAkB,CAAC,MAAjE,gBAAAjrB,EAAqE,OAAM;AAAA,cAClF,UAAU,CAACuN,MAAM;AACf,wBAAQ,IAAI,QAAQA,EAAE,OAAO,KAAK,IAAI,GACtCka,EAAe;AAAA,kBACb,oBAAoB,QAAQla,EAAE,OAAO,KAAK;AAAA,gBAAA,CAC3C;AAAA,cACH;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAA1G,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,MACpC,gBAAAD;AAAA,QAACugB,EAAM;AAAA,QAAN;AAAA,UACC,MAAK;AAAA,UACL,cAAa;AAAA,UACb,aAAY;AAAA,UACZ,OAAO6D,EAAU,iBAAiB;AAAA,UAClC,UAAU,CAAC1d,MAAM;AACf,YAAAka,EAAe,EAAE,mBAAmBla,EAAE,OAAO,OAAO;AAAA,UACtD;AAAA,UAEA,UAAA;AAAA,YAAA,gBAAAxG,EAACqgB,EAAM,QAAN,EAAa,OAAM,WAAU,UAAA,WAAO;AAAA,8BACpCA,EAAM,QAAN,EAAa,OAAM,SAAQ,UAAA,SAAK;AAAA,8BAChCA,EAAM,QAAN,EAAa,OAAM,QAAO,UAAA,OAAA,CAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACjC,GACF;AAAA,IACA,gBAAAvgB,EAACqkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,WAAO;AAAA,MACtC,gBAAAD;AAAA,QAACugB,EAAM;AAAA,QAAN;AAAA,UACC,MAAK;AAAA,UACL,aAAY;AAAA,UACZ,OAAO6D,EAAU,mBAAmB;AAAA,UACpC,UAAU,CAAC1d,MAAM;AACf,YAAAka,EAAe,EAAE,qBAAqBla,EAAE,OAAO,OAAO;AAAA,UACxD;AAAA,UAEA,UAAA;AAAA,YAAA,gBAAAxG,EAACqgB,EAAM,QAAN,EAAa,OAAM,UAAS,UAAA,UAAM;AAAA,8BAClCA,EAAM,QAAN,EAAa,OAAM,aAAY,UAAA,WAAA,CAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1C,EAAA,CACF;AAAA,EAAA,GACF;AAEJ,CAAC,GCxJKkF,KAAc,OAAO;AAAA,EACzB,cAAc;AAChB,IAQaqB,KAAcjD,GAA6C,CAACrmB,GAAOsmB,MAAQ;AACtF,QAAM,CAACC,GAAUzE,CAAW,IAAI9X,EAAgBhK,EAAM,gBAAgBioB,IAAa,GAC7EU,IAAWjV,EAA6B,IAAI,GAE5CkT,IAAY5hB,EAAQ,MAAM;;AAC9B,UAAM3J,MAAUM,IAAAqE,EAAM,UAAN,gBAAArE,EAAc,kBAAiB4qB,EAAS,YAAY,GAC9DzsB,IAAMwC,GAAqBjB,KAAW,EAAE,EAAE,CAAC,KAAK,CAAA;AACtD,YAAA6K,IAAAyiB,EAAS,YAAT,QAAAziB,EAAkB,YAAYpM,EAAI,SAAS,KACpCA;AAAA,EACT,GAAG,CAACkG,EAAM,OAAOumB,CAAQ,CAAC,GAEpBnD,IAAiBU;AAAA,IACrB,CAACnM,GAAmC6O,MAAwB;AAC1D,MAAA1E,EAAY,CAAChB,MAAW;;AACtB,gBAAQ,IAAI,WAAWA,GAAQnJ,CAAM;AACrC,cAAMtc,KAAUM,IAAAqE,EAAM,UAAN,gBAAArE,EAAc,eAExB4tB,IAAe;AAAA,UACnB,GAFUjtB,GAAqBjB,KAAW,EAAE,EAAE,CAAC,KAAK,CAAA;AAAA,UAGpD,GAAGsc;AAAA,QAAA,GAEC6R,IAAe,GAAGD,EAAa,WAAW,GAAG,IAAIA,EAAa,WAAW,GAAG,IAChFA,EAAa,QAAQ,GACvB,IAAIA,EAAa,UAAU,GAAG,IAAIA,EAAa,SAAS,aAAa,IAC/D9C,IAAkB;AAAA,UACtB,GAAG3F;AAAA,UACH,cAAc0I;AAAA,QAAA;AAEhB,eAAIhD,MAAc,QAChBtgB,IAAAlG,EAAM,aAAN,QAAAkG,EAAA,KAAAlG,GAAiBymB,KAEZA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACzmB,CAAK;AAAA,EAAA;AAGR,SAAA2mB;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,UAAU,CAAC3O,MAAW;AACpB,QAAAyL;AAAA,UACE;AAAA,YACE,GAAG6E,GAAA;AAAA,YACH,GAAG3rB,GAAqBqb,EAAO,YAAY,KAAK,EAAE,EAAE,CAAC;AAAA,UAAA;AAAA,UAEvD;AAAA,QAAA;AAAA,MAEJ;AAAA,MACA,eAAe,MAAM;AACnB,QAAAyL;AAAA,UACE;AAAA,YACE,GAAI6E,GAAA;AAAA,UAAY;AAAA,UAElB;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,IAGJ,CAAC7E,CAAc;AAAA,EAAA,qBAId,OAAA,EACC,UAAA;AAAA,IAAA,gBAAA1gB,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,YAAQ;AAAA,MACvC,gBAAAC;AAAA,QAACmiB;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,UAAU,CAAC,IAAI;AAAA,UACf,OAAO+B,EAAU;AAAA,UACjB,eAAe,CAACltB,MAAQ;AACtB,YAAA0pB,EAAe;AAAA,cACb,GAAGwD;AAAA,cACH,SAASltB;AAAA,YAAA,CACV;AAAA,UACH;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAET,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP,EAAA,CACF,EAAA,CACF;AAAA,sBACCmtB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,YAAQ;AAAA,MACvC,gBAAAC;AAAA,QAACmiB;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,UAAU,CAAC,IAAI;AAAA,UACf,OAAO+B,EAAU;AAAA,UACjB,eAAe,CAACltB,MAAQ;AACtB,YAAA0pB,EAAe;AAAA,cACb,GAAGwD;AAAA,cAEH,SAASltB;AAAA,YAAA,CACV;AAAA,UACH;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAET,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP,EAAA,CACF,EAAA,CACF;AAAA,sBACCmtB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,SAAK;AAAA,MACpC,gBAAAC;AAAA,QAACmiB;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,UAAU,CAAC,IAAI;AAAA,UACf,OAAO+B,EAAU;AAAA,UACjB,eAAe,CAACltB,MAAQ;AACtB,YAAA0pB,EAAe;AAAA,cACb,GAAGwD;AAAA,cAEH,MAAMltB;AAAA,YAAA,CACP;AAAA,UACH;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAET,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP,EAAA,CACF,EAAA,CACF;AAAA,sBACCmtB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,4BAACqkB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAO,UAAA,WAAO;AAAA,MACtC,gBAAAC;AAAA,QAACmiB;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,UAAU,CAAC,IAAI;AAAA,UACf,OAAO+B,EAAU;AAAA,UACjB,eAAe,CAACltB,MAAQ;AACtB,YAAA0pB,EAAe;AAAA,cACb,GAAGwD;AAAA,cAEH,QAAQltB;AAAA,YAAA,CACT;AAAA,UACH;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAET,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP,EAAA,CACF,EAAA,CACF;AAAA,IACA,gBAAAgJ,EAACmkB,GAAA,EAAI,WAAWpkB,EAAO,KACrB,UAAA,gBAAAD;AAAA,MAACskB;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,QAGX,UAAA;AAAA,UAAA,gBAAApkB,EAAC,QAAA,EAAK,WAAWC,EAAK,CAACF,EAAO,KAAK,CAAC,GAAG,UAAA,UAAM;AAAA,UAC7C,gBAAAC;AAAA,YAAC2lB;AAAA,YAAA;AAAA,cACC,KAAKM;AAAA,cACL,UAAU;AAAA,cACV,MAAK;AAAA,cACL,UAAU,CAAC7rB,MAAU;AACnB,gBAAAsmB,EAAe;AAAA,kBACb,GAAGwD;AAAA,kBAEH,OAAA9pB;AAAA,gBAAA,CACD;AAAA,cACH;AAAA,cACA,SAAS0lB;AAAA,YAAA;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA,EACF,CACF;AAAA,EAAA,GACF;AAEJ,CAAC;;;ACrMM,SAASiH,GAAiBC,GAAqD;AACpF,QAAMC,IAAiD,CAAA,GAEjD/uB,IAAMC,GAAQ,MAAM6uB,GAAK;AAAA,IAC7B,SAAS;AAAA,EAAA,CACV;AAED,SAAA7uB,GAAQ,KAAKD,GAAK;AAAA,IAChB,OAAO;AAAA,IACP,MAAMG,GAAM;AACV,UAAIA,EAAK,SAAS,UAAUA,EAAK,QAAQ,SAAS,gBAAgB;AAChE,cAAM6uB,IAAW/uB,GAAQ,SAASE,EAAK,OAAO,GAExC8uB,IAAuC,CAAA;AAC7C,YAAI9uB,EAAK,MAAM,SAAS;AACtB,qBAAW+uB,KAAe/uB,EAAK,MAAM,SAAS;AAC5C,gBAAI+uB,EAAY,SAAS,eAAe;AACtC,oBAAMC,IAAOD,EAAY,UACnB1Q,IAAQve,GAAQ,SAASivB,EAAY,KAAK;AAChD,cAAAD,EAAaE,CAAI,IAAI3Q;AAAA,YACvB;AAAA;AAIJ,QAAAuQ,EAAOC,CAAQ,IAAIC;AAAA,MACrB;AAAA,IACF;AAAA,EAAA,CACD,GAEMF;AACT;ACzBA,MAAMK,KAAyB,CAACC,IAA6B,OAAO;AAClE,MAAItwB,IAAM;AAAA;AACV,gBAAO,KAAKswB,CAAQ,EAAE,QAAQ,CAACjwB,MAAQ;AACrC,IAAAL,KAAO,KAAKK,CAAG,KAAKiwB,EAASjwB,CAAG,CAAC;AAAA;AAAA,EACnC,CAAC,GACDL,KAAO,KAEAA;AACT,GAQauwB,KAAgB7D,GAAiD,CAACrmB,GAAOsmB,MAAQ;AAC5F,QAAM7G,IAAY/L,EAAoC,IAAI,GACpDyW,IAAWzW,EAAO,EAAE;AAC1B,SAAAiT;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,eAAe,MAAM;;AACnB,QAAA6D,EAAS,UAAU,CAAA,IACnBxuB,IAAA8jB,EAAU,YAAV,QAAA9jB,EAAmB,SAASquB,GAAuB,CAAA,CAAE;AAAA,MACvD;AAAA,MACA,UAAU,CAACtwB,MAAQ;;AACjB,QAAI0wB,GAAQ1wB,GAAKywB,EAAS,OAAO,MAGjCA,EAAS,UAAUzwB,IACnBiC,IAAA8jB,EAAU,YAAV,QAAA9jB,EAAmB,SAASquB,GAAuBtwB,CAAG;AAAA,MACxD;AAAA,IAAA;AAAA,IAGJ,CAAA;AAAA,EAAC,GAID,gBAAAgJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWD,GAAO;AAAA,MAClB,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,cAAc;AAAA,MAAA;AAAA,MAGhB,UAAA,gBAAAC;AAAA,QAAC+a;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,YAAY,CAACI,MAAW;;AACtB,YAAA4B,EAAU,UAAU5B,IACpBliB,IAAA8jB,EAAU,YAAV,QAAA9jB,EAAmB,SAASquB,GAAuBG,EAAS,WAAW,CAAA,CAAE;AAAA,UAC3E;AAAA,UACA,UAAU,CAACxS,MAAW;;AAEpB,kBAAM0S,IADWZ,GAAiB9R,KAAU,EAAE,EACnB,OAAO,KAAK,CAAA;AACvC,YAAAwS,EAAS,UAAUE,IACnB1uB,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsBqqB;AAAA,UACxB;AAAA,UACA,SAAS;AAAA,YACP,SAAS;AAAA,YACT,SAAS,EAAE,SAAS,GAAA;AAAA,YACpB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,OAAO;AAAA;AAAA,YAAA;AAAA,UAEP;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,CAAC,GC1DYC,KAAejE;AAAA,EAC1B,CAAC,EAAE,OAAAjN,GAAO,YAAAmR,GAAY,eAAAzR,GAAe,QAAA0R,EAAA,GAAUlE,MAAQ;AACrD,UAAM,CAAC9G,GAAMiL,CAAO,IAAIzgB;AAAA,MACrB,aAAa,QAAQ,yBAAyB,KAAa;AAAA,IAAA,GAExD0gB,IAAehX,EAAuB,IAAI,GAC1CiX,IAAWjX,EAAuB,IAAI,GACtCkX,IAAalX,EAAuB,IAAI,GACxCmX,IAAYnX,EAAuB,IAAI,GACvCoX,IAAgBpX,EAAuB,IAAI,GAC3CqX,IAAYrX,EAAuB,IAAI,GACvCsX,IAAUtX,EAAuB,IAAI,GACrCuX,IAAmBvX,EAAyB,IAAI;AAEtD,IAAA6B,EAAU,MAAM;AACd,mBAAa,QAAQ,2BAA2BiK,CAAI;AAAA,IACtD,GAAG,CAACA,CAAI,CAAC;AAET,UAAM0L,IAAYlmB,EAAQ,MACjB,CAAC0lB,GAAcC,GAAUC,GAAYC,GAAWC,GAAeC,GAAWC,CAAO,GACvF,CAACN,GAAcC,GAAUC,GAAYC,GAAWC,GAAeC,GAAWC,CAAO,CAAC,GAE/EG,IAAezX,EAAY,IAAI,GAE/B0P,IAAiBU;AAAA,MACrB,CAACnM,MAAgB;;AACf,YAAKA,GAKL;AAAA,cADAwT,EAAa,UAAUxT,GACnB6H,MAAS,QAAQ;AACnB,aAAA7jB,IAAAsvB,EAAiB,YAAjB,QAAAtvB,EAA0B,SAASgc;AACnC;AAAA,UACF;AAEA,UAAAuT,EAAU,QAAQ,CAAC5E,MAAQ;AACzB,uBAAW,MAAM;;AACfA,eAAAA,IAAAA,EAAI,YAAJA,QAAAA,EAAa,SAAS3O;AAAA,YACxB,CAAC;AAAA,UACH,CAAC;AAAA;AAAA,MACH;AAAA,MACA,CAACuT,GAAW1L,CAAI;AAAA,IAAA,GAGZ4L,IAAoBtH;AAAA,MACxB,CAACpqB,MAAa;AACZ,cAAMie,IAAS;AAAA,UACb,GAAIwT,EAAa,WAAW,CAAA;AAAA,UAC5B,GAAGzxB;AAAA,QAAA;AAEL,QAAAyxB,EAAa,UAAUxT;AAEvB,cAAM0T,IAAaC,GAAO3T,GAAQ,CAACyB,MAAUmS,GAAMnS,CAAK,KAAKA,MAAU,EAAE;AACzE,QAAAN,KAAA,QAAAA,EAAgBuS;AAAA,MAClB;AAAA,MACA,CAACvS,CAAa;AAAA,IAAA;AAGhB,IAAAvD,EAAU,MAAM;AACd,MAAA6N,EAAe+H,EAAa,OAAO;AAAA,IACrC,GAAG,CAAC3L,GAAM4D,CAAc,CAAC,GAEzBuD;AAAA,MACEL;AAAA,MACA,OACS;AAAA,QACL,UAAUlD;AAAA,QACV,eAAe,MAAMA,EAAe,CAAA,CAAE;AAAA,MAAA;AAAA,MAG1C,CAACA,CAAc;AAAA,IAAA;AAGjB,UAAM9d,IAAgCN,EAAQ,MACrC;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UACE,gBAAAtC;AAAA,UAAC0jB;AAAA,UAAA;AAAA,YACC,KAAKsE;AAAA,YACL,cAAcH;AAAA,YACd,OAAAnR;AAAA,YACA,UAAUgS;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,MAGJ;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UACE,gBAAA1oB;AAAA,UAACwlB;AAAA,UAAA;AAAA,YACC,QAAO;AAAA,YACP,KAAKyC;AAAA,YACL,cAAcJ;AAAA,YACd,OAAAnR;AAAA,YACA,UAAUgS;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,MAGJ;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UACE,gBAAA1oB;AAAA,UAACwlB;AAAA,UAAA;AAAA,YACC,KAAK0C;AAAA,YACL,cAAcL;AAAA,YACd,QAAO;AAAA,YACP,OAAAnR;AAAA,YACA,UAAUgS;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,MAIJ;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UACE,gBAAA1oB;AAAA,UAAC2mB;AAAA,UAAA;AAAA,YACC,KAAKyB;AAAA,YACL,OAAA1R;AAAA,YACA,cAAcmR;AAAA,YACd,UAAUa;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,MAGJ;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UACE,gBAAA1oB;AAAA,UAACgmB;AAAA,UAAA;AAAA,YACC,KAAKsC;AAAA,YACL,cAAcT;AAAA,YACd,OAAAnR;AAAA,YACA,UAAUgS;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,MAGJ;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,4BAAWvC,IAAA,EAAY,KAAKgC,GAAW,cAAcN,GAAmB,UAAUa,EAAA,CAAmB;AAAA,MAAA;AAAA,MAEvG;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UACE,gBAAA1oB;AAAA,UAAC4mB;AAAA,UAAA;AAAA,YACC,KAAKyB;AAAA,YACL,cAAcR;AAAA,YACd,OAAAnR;AAAA,YACA,UAAUgS;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAEJ,GAED,CAACb,GAAYa,GAAmBhS,CAAK,CAAC,GAEnCoS,IACJ,gBAAAhpB,EAAAiH,GAAA,EACG,UAAA;AAAA,MAAA+V,MAAS,UACR,gBAAA9c;AAAA,QAACwnB;AAAA,QAAA;AAAA,UACC,eAAe,CAACvS,MAAW;AACzB,YAAAwT,EAAa,UAAUxT,GACvBmB,KAAA,QAAAA,EAAgBnB;AAAA,UAClB;AAAA,UACA,KAAKsT;AAAA,QAAA;AAAA,MAAA;AAAA,MAIRzL,MAAS,UACR,gBAAA9c;AAAA,QAAC8C;AAAA,QAAA;AAAA,UACC,WAAW/C,EAAO;AAAA,UAClB,OAAA6C;AAAA,UACA,UAAU;AAAA,UACV,kBAAkB,CAAC,aAAa,cAAc,WAAW,QAAQ;AAAA,UACjE,UAAU,YAAY;AACpB,kBAAMjG,GAAA,GAEN+jB,EAAe+H,EAAa,OAAO;AAAA,UACrC;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,GAEJ;AAGF,WACE,gBAAA3oB;AAAA,MAACyW;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,YACL,cAAc;AAAA,UAAA;AAAA,QAChB;AAAA,QAGD,UAAA;AAAA,UAAAuR,KAAUgB;AAAA,UACV,CAAChB,KACA,gBAAA9nB;AAAA,YAAC+oB;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,yBAAQ,QAAA,EAAK,OAAO,EAAE,UAAU,OAAA,GAAU,UAAA,SAAK;AAAA,cAC/C,OACE,gBAAAjpB;AAAA,gBAACM;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,MAAK;AAAA,kBACL,SAAS,MAAM;AACb,oBAAA2nB,EAAQ,CAAC3J,MACHA,MAAW,SACN,WAEA,MAEV;AAAA,kBACH;AAAA,kBAEC,UAAA;AAAA,oBAAAtB,MAAS,YAAY,gBAAA9c,EAACgpB,IAAA,EAAW,MAAM,IAAI;AAAA,oBAC3ClM,MAAS,YAAY,gBAAA9c,EAACipB,IAAA,EAAU,MAAM,GAAA,CAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAG/C,OAAO;AAAA,gBACL,cAAc;AAAA,gBACd,cAAc;AAAA,cAAA;AAAA,cAGf,UAAAH;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF,GCtPaI,KAA+C,CAAC;AAAA,EAC3D,OAAAxS;AAAA,EACA,eAAAL;AAAA,EACA,cAAAC;AAAA,EACA,GAAG6S;AACL,MAAmE;AACjE,QAAMC,IAAWpY,EAAwB,IAAI,GACvC3Y,IAAOge,EAAc,WACrBgT,IAAWrY,EAAA,GAEXsY,IAAoBhnB,EAAQ,MAAM;AACtC,UAAMinB,IAAWlxB,EAAK,MAAM,SAAS,CAAA,GAC/B,EAAE,gBAAAV,EAAA,IAAmBH,GAAoB+xB,CAAQ;AACvD,WAAOxyB,GAAaY,CAAc;AAAA,EACpC,GAAG,CAACU,EAAK,MAAM,KAAK,CAAC,GAEfmxB,IAAmBpI,EAAY,MAAM;;AACzC,IAAAiI,EAAS,UAAUhxB;AACnB,UAAMkxB,IAAWlxB,EAAK,MAAM,SAAS,CAAA,GAC/B,EAAE,gBAAAV,EAAA,IAAmBH,GAAoB+xB,CAAQ;AACvD,KAAAtwB,IAAAmwB,EAAS,YAAT,QAAAnwB,EAAkB,SAASlC,GAAaY,CAAc,KAAK,CAAA;AAAA,EAC7D,GAAG,CAACU,CAAI,CAAC;AAET,SAAAwa,EAAU,OACR2W,EAAA,GACAnxB,EAAK,QAAQ,GAAG,gBAAgBmxB,CAAgB,GAChDnxB,EAAK,QAAQ,GAAG,gBAAgBmxB,CAAgB,GACzC,MAAM;AACX,IAAAnxB,EAAK,QAAQ,IAAI,gBAAgBmxB,CAAgB,GACjDnxB,EAAK,QAAQ,IAAI,gBAAgBmxB,CAAgB;AAAA,EACnD,IACC,CAACnxB,EAAK,SAASA,EAAK,IAAImxB,CAAgB,CAAC,GAG1C,gBAAAxpB;AAAA,IAAC4nB;AAAA,IAAA;AAAA,MACE,GAAGuB;AAAA,MACJ,YAAYG;AAAA,MACZ,KAAKF;AAAA,MACL,eAAe,CAACK,MAAgB;AAC9B,cAAMF,IAAWpyB,GAAcsyB,CAAW,GACpC,EAAE,oBAAA7xB,MAAuBJ,GAAoBa,EAAK,MAAM,SAAS,EAAE,GACnEqxB,IAAe,CAAC,GAAGH,GAAU,GAAG3xB,CAAkB;AACxD,QAAI8vB,GAAQrvB,EAAK,MAAM,OAAOqxB,CAAY,MAG1CrxB,EAAK,MAAM,QAAQqxB,GACnBrxB,EAAK,YAAA;AAAA,MACP;AAAA,IAAA;AAAA,EAAA;AAGN,GCrDMsxB,KAAc;AAAA,EAClB,QAAQ;AAAA,EACR,aAAa;AACf,GAEaC,KAAkD,CAAC;AAAA,EAC9D,eAAAxT;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAuT;AAAA,EACA,qBAAAC;AAAA,EACA,GAAGxsB;AACL,MAA4E;AAC1E,QAAMlC,IAAUkH,EAA+C,MAAM;AACnE,UAAMynB,IAAY;AAAA,MAChB,EAAE,OAAO,aAAa,OAAO,cAAA;AAAA,MAC7B,EAAE,OAAO,QAAQ,OAAO,SAAA;AAAA,IAAS;AAEnC,QAAIF,GAAY;AACd,UAAIC;AACF,eAAO,CAAC,EAAE,OAAOD,GAAY,OAAOA,GAAY;AAEhD,MAAAE,EAAU,KAAK,EAAE,OAAOF,GAAY,OAAOA,GAAY;AAAA,IAE3D;AAEA,WAAOE;AAAA,EACT,GAAG,CAACF,GAAYC,CAAmB,CAAC,GAE9B3K,IAAa7c,EAAQ,MAAM;AAC/B,UAAMynB,IAAYzT,KAAgBhZ,EAAM;AACxC,WAAIysB,MAAc,SACT,gBAGLA,MAAc,OACT,WAGFA,KAAa;AAAA,EACtB,GAAG,CAACzT,GAAchZ,EAAM,KAAK,CAAC;AAG9B,SAAAuV,EAAU,MAAM;AACd,IAAAuD,KAAA,QAAAA,EAAgByT,KAAc;AAAA,EAEhC,GAAG,CAAA,CAAE,GAGH,gBAAA7pB;AAAA,IAACuW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA,gBAAAvW;AAAA,QAACqgB,EAAM;AAAA,QAAN;AAAA,UACC,OAAK;AAAA,UACL,SAAAjlB;AAAA,UACA,cAAckb;AAAA,UACd,YAAW;AAAA,UACX,MAAK;AAAA,UACJ,GAAGhZ;AAAA,UACJ,OAAO6hB;AAAA,UACP,UAAU,CAAC3Y,MAAM;AACf,gBAAIyO,IAASzO,EAAE,OAAO;AACtB,YAAI,CAAC,UAAU,aAAa,EAAE,SAASyO,CAAM,MAC3CA,IAAS0U,GAAY1U,CAAkC,IAEzDmB,KAAA,QAAAA,EAAgBnB;AAAA,UAClB;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AAEA2U,GAAiB,aAAa;AC7DvB,MAAMI,KAAsB;AAAA,EACjC,kBAAAd;AAAA,EACA,cAAA/S;AAAA,EACA,aAAAgE;AAAA,EACA,aAAAO;AAAA,EACA,cAAAlE;AAAA,EACA,kBAAAoG;AAAA,EACA,eAAAY;AAAA,EACA,cAAAE;AAAA,EACA,YAAAY;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAQ;AAAA,EACA,aAAAU;AAAA,EACA,cAAAQ;AAAA,EACA,iBAAAH;AAAA,EACA,kBAAAK;AAAA,EACA,eAAAkD;AAAA,EACA,kBAAAsG;AACF;;;;;;;GCRaK,KAAS,CAAC3sB,MAAuB;AAC5C,QAAM,EAAE,UAAAwG,GAAU,OAAAkE,GAAO,MAAAkiB,GAAM,MAAAroB,GAAM,aAAAsoB,MAAgB7sB,GAC/C,CAAC8sB,GAAWC,CAAY,IAAI/iB,EAAS;AAAA,IACzC,QAAQ;AAAA,IACR,UAAU;AAAA,EAAA,CACX;AACD,MAAIgjB,IAAuBtiB;AAC3B,QAAM,EAAE,WAAAuiB,GAAW,eAAAC,GAAe,uBAAAC,MAA0BptB,EAAM,WAAWsY,EAAY;AAazF,MAZA9C,EAAU,MAAM;AACd,IAAIvV,EAAM,aACRmtB,EAAsB5oB,GAAMvE,EAAM,SAAS;AAAA,EAE/C,GAAG,CAACuE,GAAMvE,EAAM,WAAWmtB,CAAqB,CAAC,GAEjD5X,EAAU,MAAM;;AAEd,UAAM6X,KADYptB,EAAM,cAAc,MAAM,KAChBitB,CAAS;AACrC,KAAAtxB,IAAAqE,EAAM,2BAAN,QAAArE,EAAA,KAAAqE,GAA+BotB;AAAAA,EACjC,GAAG,CAACH,GAAWjtB,CAAK,CAAC,GAEjB4sB,GAAM;AACR,QAAIS,IAAcT;AAClB,IAAI,OAAOA,KAAS,eAClBS,IAAST,EAAA,IAEXI,IACE,gBAAAtqB;AAAA,MAAC4qB;AAAA,MAAA;AAAA,QACC,OAAO,gBAAA5qB,EAAC,QAAA,EAAK,OAAO,EAAE,OAAO,wBAAwB,UAAU,OAAA,GAAW,UAAA2qB,EAAA,CAAO;AAAA,QACjF,OAAM;AAAA,QAEN,UAAA,gBAAA3qB,EAAC,QAAA,EAAK,WAAWD,GAAO,WAAY,UAAAiI,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhD;AACA,MAAI6iB,IAAc/mB;AAElB,MAAIgnB,GAAehnB,CAAQ,GAAG;AAE5B,UAAMinB,IAAkB;AAAA,MACtB,CAFgBztB,EAAM,wBAAwB,eAEpC,GAAG,OAAOtG,MAAa;AAC/B,YAAI2B,IAAU3B;AACd,QAAIsG,EAAM,qBACR3E,IAAU2E,EAAM,iBAAiBtG,CAAG;AAItC,cAAMg0B,IAAQ1tB,EAAM,SAAS,CAAA,GACvB2tB,IAAc,MAAMC,GAAW5tB,EAAM,MAAM3E,GAASqyB,CAAK;AAC/D,QAAKC,EAAY,SAGfZ,EAAa;AAAA,UACX,QAAQ;AAAA,UACR,UAAU;AAAA,QAAA,CACX,IALDA,EAAaY,CAAW,GAO1BT;AAAA,UACE;AAAA,YACE,GAAGD;AAAA,YACH,CAAC1oB,CAAI,GAAGlJ;AAAA,UAAA;AAAA,UAEV,CAACkJ,CAAI;AAAA,QAAA;AAAA,MAET;AAAA,IAAA;AAGF,IAAAkpB,EAAW,QAASR,EAAkB1oB,CAAI,GAC1CgpB,IAAcxtB,EAAM,aAAayG,GAAUinB,CAAU;AAAA,EACvD;AAGA,UAFkBztB,EAAM,cAAc,MAAM,KAChBitB,CAAS,IAIjCjtB,EAAM,iCACE,UAAAutB,EAAA,CAAY,IAItB,gBAAA/qB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWG,EAAK,CAACF,GAAO,UAAU,CAACqqB,EAAU,UAAUrqB,GAAO,KAAK,CAAC;AAAA,MACpE,OAAO;AAAA,QACL,YAAYzC,EAAM,cAAc;AAAA,MAAA;AAAA,MAGjC,UAAA;AAAA,QAAA6sB,MAAgB,MACf,gBAAAnqB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD,GAAO;AAAA,YAClB,OAAO;AAAA,cACL,OAAOzC,EAAM,cAAc;AAAA,YAAA;AAAA,YAG5B,UAAAgtB;AAAA,UAAA;AAAA,QAAA;AAAA,QAGL,gBAAAtqB,EAAC,OAAA,EAAI,WAAWD,GAAO,SAAU,UAAA8qB,GAAY;AAAA,QAC5C,CAACT,EAAU,4BACT5nB,IAAA,EAAQ,2BAAU2oB,IAAA,EAAM,SAASf,EAAU,UAAU,MAAK,SAAQ,GACjE,UAAA,gBAAApqB,EAACorB,MAAuB,WAAWrrB,GAAO,cAAc,EAAA,CAC1D;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IA3BG;AA+BX,GAEMmrB,KAAa,OAAO5zB,GAAaof,GAAYsU,IAA8B,CAAA,MAAO;;AACtF,MAAIK,IAAO,IACPC,IAAW;AAEf,WAAS/wB,IAAI,GAAGA,IAAIywB,EAAM,QAAQzwB,KAAK;AACrC,QAAIywB,EAAMzwB,CAAC,EAAE,YAAY,CAACmc,GAAO;AAC/B,MAAA2U,IAAO,IACPC,IAAW,GAAGh0B,CAAG;AACjB;AAAA,IACF;AACA,QAAI0zB,EAAMzwB,CAAC,EAAE;AACX,UAAI;AAEF,YAAI,CADW,QAAMiJ,KAAAvK,IAAA+xB,EAAMzwB,CAAC,GAAE,cAAT,gBAAAiJ,EAAA,KAAAvK,GAAqByd,KAC7B;AACX,UAAA2U,IAAO,IACPC,MAAW7nB,IAAAunB,EAAMzwB,CAAC,MAAP,gBAAAkJ,EAAU,QAAO,GAAGnM,CAAG;AAClC;AAAA,QACF;AAAA,MACF,SAASkP,GAAG;AACV,QAAA6kB,IAAO,IACPC,IAAW,GAAG,OAAO9kB,CAAC,CAAC;AACvB;AAAA,MACF;AAAA,EAEJ;AAEA,SAAO;AAAA,IACL,QAAQ6kB;AAAA,IACR,UAAAC;AAAA,EAAA;AAEJ;;;;GClJaC,KAA2BluB,EAAM,cAA4C;AAAA,EACxF,qBAAqB,CAAA;AAAA,EACrB,gBAAgB,MAAM;AAAA,EAAC;AAAA,EACvB,iBAAiB,CAAA;AACnB,CAAC,GCDYmuB,KAAqB,CAAC;AAAA,EACjC,SAAA5U;AAAA,EACA,UAAAS;AAAA,EACA,eAAAoU;AAAA,EACA,kBAAAC;AAAA,EACA,iBAAiBC;AAAA,EACjB,GAAGruB;AACL,MAMM;AACJ,QAAM,EAAE,iBAAAwY,EAAA,IAAoBtE,GAAWmE,EAAY,GAC7C,EAAE,qBAAAiW,EAAA,IAAwBpa,GAAW+Z,EAAwB,GAC7DM,IAAe;AAAA,IACnB,GAAGC;AAAAA,IACH,GAAIH,KAAuB,CAAA;AAAA,IAC3B,GAAG7V;AAAA,EAAA;AAGL,EAAAjD,EAAU,MAAM;;AACd,UAAMkZ,MAAoB9yB,IAAA2yB,EAAoBvU,EAAS,KAAK,GAAG,CAAC,MAAtC,gBAAApe,EAAyC,WAAU,IAEvE+yB,IADkBpV,EAAQ,KAAK,CAAC7d,MAAOA,EAAG,kBAAkBgzB,CAAiB,KACrD/U,GAAwB1Z,EAAM,OAAOsZ,CAAO,KAAKA,EAAQ,CAAC;AACxF,IAAA8U,EAAiBM,CAAE;AAAA,EAErB,GAAG,CAAA,CAAE;AAEL,MAAIC,IAAoB;AACxB,SAAIR,KAAA,QAAAA,EAAe,kBACjBQ,IAAoBJ,EAAaJ,KAAA,gBAAAA,EAAe,aAAa,KAAKA,EAAc,YAE7EQ,MACHA,IAAoB,WAAuB;AACzC,WACE,gBAAAjsB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,cAAc;AAAA,UACd,OAAO;AAAA,QAAA;AAAA,QAET,UAAA,GAAGyrB,KAAA,gBAAAA,EAAe,aAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAErC,IAGK,gBAAAzrB,EAACisB,GAAA,EAAmB,GAAG3uB,EAAA,CAAO;AACvC,GCjDama,KAAiB,CAAC;AAAA,EAC7B,SAASyU;AAAA,EACT,UAAA7U;AAAA,EACA,WAAA8U;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,GAAG9uB;AACL,MAA2B;;AACzB,QAAM,CAAC0G,GAASqoB,CAAU,IAAI/kB,EAAS,EAAI,GACrC,EAAE,iBAAAwO,EAAA,IAAoBtE,GAAWmE,EAAY,GAC7C,EAAE,gBAAA2W,GAAgB,qBAAAV,GAAqB,SAAApU,GAAS,WAAA7V,GAAW,QAAAgJ,EAAA,IAAW6G,GAAW+Z,EAAwB,GACzGM,IAAe;AAAA,IACnB,GAAGC;AAAAA,IACH,GAAGhW;AAAA,EAAA,GAGCc,IAAUtU,EAAQ,MACf;AAAA,IACL,GAAG4pB;AAAA,IACH;AAAA,MACE,eAAeK,GAAe;AAAA,IAAA;AAAA,EAChC,GAED,CAACL,CAAW,CAAC,GACV,CAACT,GAAeC,CAAgB,IAAIpkB,EAAwB,MAAM;;AACtE,UAAMykB,MAAoB9yB,IAAA2yB,EAAoBvU,EAAS,KAAK,GAAG,CAAC,MAAtC,gBAAApe,EAAyC,WAAU;AAE7E,WADwB2d,EAAQ,KAAK,CAAC7d,OAAOA,GAAG,kBAAkBgzB,CAAiB,KACzDnV,EAAQ,CAAC;AAAA,EACrC,CAAC,GAEK4V,IAAY5V,EAAQ,IAAI,CAACC,MAAW;AACxC,UAAMM,KAAaN,KAAA,gBAAAA,EAAQ,kBAAiB,IACtC4V,IAAgBZ,EAAa1U,CAAU;AAC7C,WAAO;AAAA,MACL,KAAKN,EAAO;AAAA,MACZ,QAAO4V,KAAA,gBAAAA,EAAe,eAAc5V,EAAO;AAAA,IAAA;AAAA,EAE/C,CAAC,GAEK6V,IAAWpqB,EAAQ,MAAM;AAC7B,UAAMqqB,IAAuC,CAAC,EAAE,KAAAr1B,QAAU;AACxD,YAAMs1B,IAAehW,EAAQ,KAAK,CAACC,OAAWA,GAAO,kBAAkBvf,CAAG;AAC1E,MAAIs1B,MACFlB,EAAiBkB,CAAY,GAC7BN,KAAA,QAAAA,EAAiBjV,GAAUuV,EAAa;AAAA,IAE5C;AACA,WAAIJ,EAAU,WAAW,IAChB,OAIP,gBAAAxsB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,GAAO;AAAA,QAClB,SAAS,CAACyG,MAAM;AACd,UAAAA,EAAE,eAAA,GACFA,EAAE,gBAAA;AAAA,QACJ;AAAA,QAEA,UAAA,gBAAAxG;AAAA,UAAC6sB;AAAA,UAAA;AAAA,YACC,SAAS,CAAC,OAAO;AAAA,YACjB,MAAM;AAAA,cACJ,YAAY;AAAA,cACZ,OAAOL;AAAA,cACP,SAASG;AAAA,cACT,qBAAqB,EAAClB,KAAA,gBAAAA,EAAe,kBAAiB,EAAE;AAAA,YAAA;AAAA,YAG1D,4BAACqB,IAAA,CAAA,CAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MAChB;AAAA,IAAA;AAAA,EAGN,GAAG,CAACN,GAAWf,KAAA,gBAAAA,EAAe,eAAe7U,GAAS0V,GAAgBjV,CAAQ,CAAC,GAEzE0V,IAAczqB,EAAQ,MAAM;AAChC,QAAI0qB,IAAW;AAAA,MACb,IAAIvB,KAAA,gBAAAA,EAAe,UAAS,CAAA;AAAA,MAC5B,cAAcA,KAAA,gBAAAA,EAAe;AAAA,IAAA;AAE/B,UAAM1X,IAAS6C,EAAQ,KAAK,CAAC7d,MAAOA,EAAG,mBAAkB0yB,KAAA,gBAAAA,EAAe,cAAa;AACrF,WAAI1X,MACFiZ,IAAW;AAAA,MACT,GAAGA;AAAA,MACH,GAAGjZ,EAAO;AAAA,IAAA,IAGPiZ;AAAA,EACT,GAAG,CAACpW,GAAS6U,CAAa,CAAC,GAErB,CAACwB,GAAmBC,CAAoB,IAAI5lB,EAAc,CAAA,CAAE;AAElE,MAAIvI,IAAgB;AACpB,QAAMorB,KAAcsB,KAAA,gBAAAA,EAAe,iBAAgB,IAE7C0B,IAAa1B,KAAA,gBAAAA,EAAe,YAC5B2B,KAAa3B,KAAA,gBAAAA,EAAe,eAAc,UAC1C4B,KAAYp0B,KAAAwyB,KAAA,gBAAAA,EAAe,UAAf,gBAAAxyB,GAA8B,UAC1Cq0B,IAAgB,CAAC,eAAe,aAAa,EAAE,SAAS7B,KAAA,gBAAAA,EAAe,aAAa,GACpFpV,KAAgB/T;AAAA,IACpB,OAAO;AAAA,MACL,SAAAkV;AAAA,MACA,WAAA7V;AAAA,MACA,UAAU,CAAC,GAAG0V,CAAQ;AAAA,MACtB,OAAO/Z,EAAM;AAAA,MACb,sBAAsBgwB,IAAgBJ,IAAuB;AAAA,MAC7D,WAAWvrB,KAAA,gBAAAA,EAAW,UAAU,QAAQgJ;AAAA,IAAM;AAAA,IAEhD,CAAC6M,GAASH,GAAU1M,GAAQhJ,GAAWrE,EAAM,OAAOgwB,CAAa;AAAA,EAAA,GAE7DC,IAAYjrB,EAAQ,MAAM;AAC9B,UAAMwT,IAAkB;AAAA,MACtB,GAAIxY,EAAM,mBAAmB,CAAA;AAAA,IAAC,GAG1BkwB,IAAc;AAAA,MAClB,YAAAL;AAAA,MACA,YAAAC;AAAA,MACA,aAAAjD;AAAA,MACA,WAAAgC;AAAA,MACA,SAAS,EAAAmB;AAAA,MACT,wBAAwB,CAACt2B,MAAiB;AACxC,QAAAq1B,EAAWr1B,CAAG;AAAA,MAChB;AAAA,IAAA;AAGF,WAAIo1B,MAAa,KAEb,gBAAApsB;AAAA,MAACwrB;AAAA,MAAA;AAAA,QACC,SAAA5U;AAAA,QACA,UAAAS;AAAA,QACA,eAAAoU;AAAA,QACA,kBAAAC;AAAA,QACC,GAAGpuB;AAAA,QACH,GAAGyvB;AAAA,QACJ,iBAAiBjX;AAAAA,QACjB,eAAAO;AAAA,MAAA;AAAA,IAAA,IAKJ,gBAAArW,EAACiqB,IAAA,EAAQ,GAAGuD,GAAc,GAAGlwB,GAC3B,UAAA,gBAAA0C;AAAA,MAACwrB;AAAA,MAAA;AAAA,QACC,SAAA5U;AAAA,QACA,UAAAS;AAAA,QACA,eAAAoU;AAAA,QACA,kBAAAC;AAAA,QACC,GAAGqB;AAAA,QACJ,iBAAiBjX;AAAAA,QACjB,eAAAO;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,EAEJ,GAAG;AAAA,IACD8V;AAAA,IACAV;AAAA,IACAtB;AAAA,IACA9S;AAAA,IACA+V;AAAA,IACAD;AAAA,IACA7vB;AAAA,IACA+Y;AAAA,IACA0W;AAAA,IACAnW;AAAA,IACA0W;AAAA,IACAlB;AAAA,EAAA,CACD,GAEKqB,KAAiBnrB;AAAA,IACrB,WAA0B;AACxB,YAAMorB,IAAc,OAAOL,KAAa,WAAWA,IAAW,CAAA;AA2B9D,aAzB0B,CAACM,OACzB,gBAAA3tB;AAAA,QAAC8C;AAAA,QAAA;AAAA,UACC,UAAU;AAAA,UACT,GAAG4qB;AAAA,UACJ,OAAO;AAAA,YACL,cAAc;AAAA,YACd,MAAM;AAAA,UAAA;AAAA,UAER,kBAAkB,CAACA,EAAY,OAAOpwB,EAAM,OAAO,EAAE;AAAA,UACrD,OAAO;AAAA,YACL;AAAA,cACE,KAAKA,EAAM;AAAA,cACX,OACE,gBAAAwC,EAAC,OAAA,EAAI,WAAWC,GAAO,gBACrB,UAAA;AAAA,gBAAA,gBAAAC,EAAC,UAAK,OAAO,EAAE,MAAM,EAAA,GAAM,YAAM,OAAM;AAAA,gBACtC2tB;AAAA,gBACAjB;AAAA,cAAA,GACH;AAAA,cAEF,UAAUa;AAAA,YAAA;AAAA,UACZ;AAAA,QACF;AAAA,MAAA;AAAA,IAKN;AAAA,IACA,CAACF,GAAU/vB,EAAM,MAAMA,EAAM,OAAOovB,GAAUa,CAAS;AAAA,EAAA;AAGzD,SAAI,CAAC,aAAa,EAAE,UAAS9B,KAAA,gBAAAA,EAAe,kBAAiB,EAAE,IAC7D1sB,IAAW0uB,GAAeR,CAAiB,IAClC,CAAC,aAAa,EAAE,UAASxB,KAAA,gBAAAA,EAAe,kBAAiB,EAAE,IACpE1sB,IACE,gBAAAe,EAAC,OAAA,EAAI,WAAWC,GAAO,eACpB,UAAA;AAAA,IAAAzC,EAAM,UAAU;AAAA,MACfkG,KAAAioB,KAAA,gBAAAA,EAAe,UAAf,gBAAAjoB,GAA8B,cAAa,MAAS,gBAAAxD,EAAC,OAAA,EAAI,OAAO,EAAE,OAAO,OAAA,GAAW,UAAAutB,EAAA,CAAU;AAAA,IAC/FF,MAAa,MAASI,GAAA;AAAA,IACtBnwB,EAAM,UAAU;AAAA,EAAA,GACnB,IAGFyB,IACE,gBAAAe,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAYstB,GAAY,eAAe,MAAA,GACnE,UAAA;AAAA,IAAA9vB,EAAM,UAAU;AAAA,IAChBiwB;AAAA,IACAb;AAAA,IACApvB,EAAM,UAAU;AAAA,EAAA,GACnB,GAIG,gBAAA0C,EAAC,SAAI,OAAO,EAAE,SAASgE,IAAU,UAAU,OAAA,GAAW,UAAAjF,EAAA,CAAS;AACxE;;GC9NM6uB,KAAuB,CAACtwB,GAA8BsmB,MAA+C;AACzG,QAAM;AAAA,IACJ,YAAYiK;AAAA,IACZ,cAAAvX;AAAA,IACA,eAAAF;AAAA,IACA,gBAAAkW;AAAA,IACA,qBAAAV;AAAA,IACA,WAAAjqB;AAAA,IACA,iBAAAmU;AAAA,EAAA,IACExY,GACEwwB,IAAiCD;AACvC,SACE,gBAAA7tB;AAAA,IAACurB,GAAyB;AAAA,IAAzB;AAAA,MACC,OAAO;AAAA,QACL,qBAAAK;AAAA;AAAA,QAEA,iBAAA9V;AAAA,QACA,gBAAAwW;AAAA,QACA,SAAS1I;AAAA,QACT,WAAAjiB;AAAA,QACA,QAAQrE,EAAM;AAAA,MAAA;AAAA,MAGhB,UAAA,gBAAA0C;AAAA,QAACuW;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAO;AAAA,cACL,cAAc;AAAA,YAAA;AAAA,UAChB;AAAA,UAGF,UAAA,gBAAAvW,EAAC,OAAA,EAAI,WAAWD,GAAO,gBACrB,UAAA,gBAAAC;AAAA,YAAC+V;AAAA,YAAA;AAAA,cACC,KAAA6N;AAAA,cACA,MAAK;AAAA,cACL,cAAAtN;AAAA,cACA,iBAAAR;AAAA,cACA,eAAe,CAAC9e,MAAQ;AACtB,gBAAAof,KAAA,QAAAA,EAAgBpf;AAAA,cAClB;AAAA,cAEC,UAAA82B,EAAW,IAAI,CAACC,MAAa;AAC5B,oBAAIrd,GAA0Bqd,CAAQ;AACpC,0BAAQ,IAAI,4DAA4D;AAAA,qBACnE;AACL,wBAAMnT,IAAQ5M,GAAU+f,EAAS,KAAK,GAChClT,IAAMC,GAAaiT,EAAS,KAAK,MAAKA,KAAA,gBAAAA,EAAU,cAChD9W,IAAaN,GAAcoX,EAAS,OAAO,GAC3C1W,IAAW,CAAC0W,EAAS,IAAI;AAC/B,yBACE,gBAAA/tB;AAAA,oBAACyX;AAAA,oBAAA;AAAA,sBAEC,WAAWsW,EAAS;AAAA,sBACpB,UAAA1W;AAAA,sBACA,SAASJ;AAAA,sBACT,OAAO2D;AAAA,sBACP,MAAMmT,EAAS,QAAQ;AAAA,sBACvB,MAAMlT;AAAA,oBAAA;AAAA,oBANDkT,EAAS;AAAA,kBAAA;AAAA,gBASpB;AAAA,cACF,CAAC;AAAA,YAAA;AAAA,UAAA,EACH,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GAEaC,KAAmB3wB,EAAM,WAAWuwB,EAAoB,GC7ExDK,KAAc,CAAC32B,GAAawX,MAA8C;AACrF,QAAMof,IAAW,CAACC,MAA+C;;AAC/D,eAAW91B,KAAQ81B,GAAO;AACxB,UAAI91B,EAAK,QAAQf;AACf,eAAOe;AAET,WAAIY,IAAAZ,EAAK,aAAL,QAAAY,EAAe,QAAQ;AACzB,cAAMguB,IAASiH,EAAS71B,EAAK,QAAQ;AACrC,YAAI4uB;AACF,iBAAOA;AAAA,MAEX;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,SAAOiH,EAASpf,CAAI;AACtB,GCpBasf,KAAkB,CAAC9wB,MAAgC;AAC9D,QAAM,EAAE,MAAAyU,GAAM,UAAAsc,GAAU,MAAAC,GAAM,WAAA/yB,GAAW,OAAAmb,MAAUpZ,GAC7CixB,IAAYvd,EAAuB,IAAI,GAEvC8C,IAAWxR,EAAQ,MAAM;AAC7B,QAAI,CAAC/G,EAAW;AAChB,UAAMuY,IAAWlF,GAA8BrT,KAAA,gBAAAA,EAAW,UAAUA,CAAS;AAC7E,WAAAyT,GAAa8E,GAAU,CAAC/a,OACtBA,EAAG,aAAa;AAAA,MACd,OAAOA,EAAG;AAAA,MACV,OAAOA,EAAG;AAAA,IAAA,GAEZA,EAAG,QAAQA,EAAG,KACdA,EAAG,QAAQ,gBAAAiH,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,UAAU,SAAS,QAAQ,OAAO,QAAA,GAAY,YAAG,OAAM,GAEnF,GACR,GACM8T;AAAAA,EACT,GAAG,CAACvY,CAAS,CAAC;AAEd,SACE,gBAAAyE,EAAC+Y,IAAA,EAAM,MAAAhH,GAAY,UAAAsc,GAAoB,OAAM,QAAO,MAAM,MAAMC,EAAK,EAAE,QAAQ5X,KAAS,IAAI,OAAO,GAAA,CAAI,GACrG,UAAA,gBAAA1W,EAAC,OAAA,EAAI,KAAKuuB,GAAW,OAAO,EAAE,OAAO,OAAA,GACnC,UAAA,gBAAAvuB;AAAA,IAACwuB;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,YAAU;AAAA,MACV,OAAO,EAAE,OAAO,OAAA;AAAA,MAChB,OAAA9X;AAAA,MACA,YAAU;AAAA,MACV,SAAS,MAAM;AACb,QAAA4X,EAAK;AAAA,UACH,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA,CACR;AAAA,MACH;AAAA,MACA,gBAAgB,CAAC9a,GAAYib,MAAkB;;AAC7C,iBAAOx1B,IAAAw1B,EAAS,eAAT,gBAAAx1B,EAAqB,MAAM,cAAc,QAAQua,EAAW,YAAA,MAAiB;AAAA,MACtF;AAAA,MACA,mBAAmB,MAAM+a,EAAU;AAAA,MACnC,sBAAoB;AAAA,MACpB,UAAU,CAACtZ,MAAW;;AACpB,cAAMyZ,IAAWT,GAAYhZ,GAASnB,KAAoB,CAAA,CAAE;AAC5D,QAAAwa,EAAK;AAAA,UACH,QAAQrZ;AAAA,UACR,QAAQhc,IAAAy1B,KAAA,gBAAAA,EAAkB,eAAlB,gBAAAz1B,EAA8B;AAAA,QAAA,CACvC;AAAA,MACH;AAAA,MACA,UAAA6a;AAAA,IAAA;AAAA,EAAA,GAEJ,EAAA,CACF;AAEJ,GC7Da6a,KAAmB,CAACrxB,MAI3B;AACJ,QAAM,CAACsxB,GAAWC,CAAY,IAAIvnB,EAAS,EAAK,GAC1C,CAAC6X,GAAY2P,CAAa,IAAIxnB,EAA4ChK,EAAM,KAAK,GAErFyxB,IAAYzsB,EAAQ,MAAM;;AAC9B,UAAMosB,IAAWpxB,EAAM,UAAU,SAAQ6hB,KAAA,gBAAAA,EAAY,WAAU7hB,EAAM,KAAK;AAE1E,WAAIoxB,MACKA,EAAS,MAAM,WAASz1B,IAAAy1B,EAAS,aAAT,gBAAAz1B,EAAmB,MAAM,WAASkmB,KAAA,gBAAAA,EAAY,WAAS;AAAA,EAG1F,GAAG,CAAC7hB,EAAM,WAAWA,KAAA,gBAAAA,EAAO,OAAO6hB,KAAA,gBAAAA,EAAY,QAAQA,KAAA,gBAAAA,EAAY,KAAK,CAAC;AAEzE,SACE,gBAAArf,EAAAiH,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA/G;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,QAAA;AAAA,QAET,SAAS,MAAMyuB,EAAa,EAAI;AAAA,QAE/B,UAAAE,KAAa;AAAA,MAAA;AAAA,IAAA;AAAA,IAEhB,gBAAA/uB;AAAA,MAACouB;AAAA,MAAA;AAAA,QACC,MAAMQ;AAAA,QACN,UAAU,MAAMC,EAAa,EAAK;AAAA,QAClC,MAAM,CAAC7Y,MAAS;;AACd,WAAA/c,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiB0Y,IACjB8Y,EAAc9Y,CAAI,GAClB6Y,EAAa,EAAK;AAAA,QACpB;AAAA,QACA,WAAWvxB,EAAM;AAAA,QACjB,QAAO6hB,KAAA,gBAAAA,EAAY,WAAU7hB,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACrC,GACF;AAEJ,GCzCa0xB,KAAkB,CAAC1xB,MAO1B;;AACJ,SACE,gBAAA0C,EAAC,OAAA,EACC,UAAA,gBAAAF,EAACmvB,IAAA,EACC,UAAA;AAAA,IAAA,gBAAAjvB;AAAA,MAAC2uB;AAAA,MAAA;AAAA,QACC,WAAWrxB,EAAM;AAAA,QACjB,OAAOA,EAAM;AAAA,QACb,UAAU,CAAC0Y,MAAS;;AAClB,WAAAxS,IAAAlG,EAAM,aAAN,QAAAkG,EAAA,KAAAlG,GAAiB;AAAA,YACf,QAAQ0Y,EAAK;AAAA,YACb,WAAS/c,IAAAqE,EAAM,UAAN,gBAAArE,EAAa,YAAW;AAAA,UAAA;AAAA,QAErC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAA+G;AAAA,MAACsG;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,QAAA;AAAA,QAET,QAAOrN,IAAAqE,EAAM,UAAN,gBAAArE,EAAa;AAAA,QACpB,UAAU,CAAC,MAAM;;AACf,gBAAM,EAAE,OAAOua,EAAA,IAAe,EAAE;AAChC,WAAAhQ,IAAAlG,EAAM,aAAN,QAAAkG,EAAA,KAAAlG,GAAiB;AAAA,YACf,UAAQrE,IAAAqE,EAAM,UAAN,gBAAArE,EAAa,WAAU;AAAA,YAC/B,SAAS,OAAOua,CAAU;AAAA,UAAA;AAAA,QAE9B;AAAA,QACA,aAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,EAAA,CACF,EAAA,CACF;AAEJ;;;AC1CO,SAAS0b,GAAsBrtB,GAAc;AAGlD,MAAI,CADoB,6BACH,KAAKA,CAAI;AAC5B,WAAO;AAIT,MAAI;AACF,eAAI,SAAS,OAAOA,CAAI,GAAG,GACpB;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;;;;;GCHastB,KAAoB;AAAA,EAC/B;AAAA,IACE,KAAKC,GAAU;AAAA,IACf,MAAM;AAAA,IACN,aAAa,OAEoC;AAAA,MAC7C,IAFS92B,GAAA;AAAA,MAGT,MAAM82B,GAAU;AAAA,MAChB,WAAWC,GAAgB;AAAA,MAC3B,cAAc;AAAA,MACd,iBAAiB;AAAA,IAAA;AAAA,EAIrB;AAAA,EAEF;AAAA,IACE,KAAKD,GAAU;AAAA,IACf,MAAM;AAAA,IACN,aAAa,OAEiC;AAAA,MAC1C,IAFS92B,GAAA;AAAA,MAGT,MAAM82B,GAAU;AAAA,MAChB,MAAM;AAAA,IAAA;AAAA,EAIV;AAAA,EAEF;AAAA,IACE,KAAKA,GAAU;AAAA,IACf,MAAM;AAAA,IACN,aAAa,MAAM;AACjB,YAAMxkB,IAAKtS,GAAA;AAmBX,aAlB6C;AAAA,QAC3C,IAAAsS;AAAA,QACA,MAAMwkB,GAAU;AAAA,QAChB,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ,CAAA;AAAA,QACR,OAAO,CAAA;AAAA,QACP,iBAAiB,gBAAgBxkB,CAAE;AAAA,QACnC,sBAAsB,CAAA;AAAA,QACtB,qBAAqB;AAAA,UACnB;AAAA,YACE,IAAItS,GAAA;AAAA,YACJ,MAAM82B,GAAU;AAAA,YAChB,OAAO;AAAA,UAAA;AAAA,QACT;AAAA,MACF;AAAA,IAIJ;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,KAAKA,GAAU;AAAA,IACf,MAAM;AAAA,IACN,aAAa,OAG0C;AAAA,MACnD,IAHS92B,GAAA;AAAA,MAIT,MAAM82B,GAAU;AAAA,MAChB,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,MAAM,CAAA;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,EAInB;AAAA,EAEF;AAAA,IACE,KAAKA,GAAU;AAAA,IACf,MAAM;AAAA,IACN,aAAa,MAAM;AACjB,YAAMxkB,IAAKtS,GAAA;AASX,aAPuC;AAAA,QACrC,IAAAsS;AAAA,QACA,MAAMwkB,GAAU;AAAA,QAChB,MAAM,YAAYxkB,CAAE;AAAA,QACpB,OAAO;AAAA,MAAA;AAAA,IAIX;AAAA,EAAA;AAEJ,GCjGa0kB,KAAqB,CAAChyB,MAM7B;AACJ,QAAM,EAAE,OAAAsd,IAAQ,YAAA,IAAgBtd,GAE1B,CAACyU,GAAMiL,CAAO,IAAI1V,EAAS,EAAK,GAEhCioB,IAAmB,CAACC,MAAqB;AAC7C,IAAAxS,EAAQwS,CAAO;AAAA,EACjB,GAEMhoB,IAAW2nB,GAAkB,IAAI,CAACp2B,MAEpC,gBAAAiH;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;;AACb,QAAAgd,EAAQ,EAAK,IACb/jB,IAAAqE,EAAM,iBAAN,QAAArE,EAAA,KAAAqE,GAAqBvE,EAAG;MAC1B;AAAA,MAEA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,MAAA;AAAA,MAGT,UAAAA,EAAG;AAAA,IAAA;AAAA,IAVCA,EAAG;AAAA,EAAA,CAab;AAGD,SAAIuE,EAAM,WACDA,EAAM,WAIb,gBAAA0C;AAAA,IAACwC;AAAA,IAAA;AAAA,MACC,cAAc+sB;AAAA,MACd,MAAAxd;AAAA,MACA,SAAS;AAAA,MACT,SACE,gBAAA/R;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,SAAS;AAAA,YACT,UAAU;AAAA,YACV,OAAO;AAAA,YACP,KAAK;AAAA,YACL,gBAAgB;AAAA,UAAA;AAAA,UAGjB,UAAAwH,EAAS,IAAI,CAACzO,MACb,gBAAAiH;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,OAAO;AAAA,gBACL,MAAM;AAAA,cAAA;AAAA,cAGP,UAAAjH;AAAA,YAAA;AAAA,YALIA,EAAG;AAAA,UAAA,CAOX;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,OAAA6hB;AAAA,MAEC,UAAAtd,EAAM;AAAA,IAAA;AAAA,EAAA;AAGb,GC5EamyB,KAAc,CAACnyB,MACnB,gBAAA0C,EAAC0vB,IAAA,EAAO,MAAK,UAAS,IAAIla,IAAiB,UAAUma,GAAS,KAAM,GAAGryB,EAAA,CAAO,GCD1EsyB,KAAe,CAACtyB,MACpB,gBAAA0C,EAAC0vB,IAAA,EAAO,MAAK,UAAS,UAAUC,GAAS,QAAQ,IAAIla,IAAmB,GAAGnY,EAAA,CAAO,GCO9EuyB,KAAW,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,kBAAkBC;AAAA,EAClB,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAG7yB;AACL,MAOM;AACJ,QAAM,EAAE,MAAA0Y,GAAM,eAAAoa,GAAe,UAAAne,EAAA,IAAa6d,GACpCO,IAAoBC,GAAA,GACpBC,IAAyBC,GAAoBxa,GAAMP,EAAgB,GAEnEgb,IAAmB,CAACC,MAAqB;AAC7C,UAAM7oB,IAAcwoB,EAAkB,QAAQ,OAAOra,EAAK,EAAE,CAAC;AAC7D,QAAI,CAACnO,GAAa;AAChB,cAAQ,MAAM,wBAAwBmO,EAAK,EAAE,EAAE;AAC/C;AAAA,IACF;AACA,UAAM,EAAE,SAAA2a,GAAS,SAAAjsB,EAAA,IAAYksB,GAAkB/oB,GAAa6oB,CAAW;AAEvE,IAAAL,EAAkB,SAAS3rB,CAAO,GAClC2rB,EAAkB,SAASM,CAAO;AAAA,EACpC;AAEA,MAAIE,IACF,gBAAA/wB,EAAAiH,GAAA,EACG,UAAA;AAAA,IAAAopB,MAAgB,MAAS,gBAAAnwB,EAACyvB,IAAA,EAAY,eAAAW,EAAA,CAA8B;AAAA,IACpEF,MAAiB,MAChB,gBAAAlwB;AAAA,MAACsvB;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,MAAM;AAAA,UACN,QAAQ;AAAA,QAAA;AAAA,QAEV,cAAc,CAACtZ,MAAS;AAEtB,UAAI+Z,MAGAC,IACFA,EAAoBha,CAAI,IAExBya,EAAiBza,CAAI;AAAA,QAEzB;AAAA,QACA,UAAUua;AAAA,QAEV,UAAA,gBAAAvwB;AAAA,UAAC4vB;AAAA,UAAA;AAAA,YACC,eAAAQ;AAAA,YACA,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,YAAA;AAAA,UACV;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GAEJ;AAOF,SAJIL,MACFc,IAAmBd,IAGjBE,MAAiB,KAEjB,gBAAAnwB,EAAC,OAAA,EAAI,WAAWG,EAAK,CAACgS,IAAWlS,GAAO,eAAe,EAAE,CAAC,GACxD,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWuV,IAA6B,UAAAjY,EAAM,UAAS;AAAA,IAC3DuzB;AAAA,EAAA,GACH,IAKF,gBAAA/wB;AAAA,IAACipB;AAAA,IAAA;AAAA,MACE,GAAGzrB;AAAA,MACJ,YAAY;AAAA,QACV,QAAQiY;AAAA,MAAA;AAAA,MAEV,WAAWtV,EAAK,CAACgS,IAAWlS,GAAO,eAAe,EAAE,CAAC;AAAA,MACrD,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,MAEF,OACE,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,SAAS;AAAA,UAAA;AAAA,UAGV,UAAA;AAAA,YAAAxC,EAAM;AAAA,8BACN,OAAA,EAAI,WAAWyC,GAAO,SACrB,UAAA,gBAAAC,EAAC8wB,MAAe,EAAA,CAClB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAIH,UAAA;AAAA,QAAAxzB,EAAM;AAAA,QACP,gBAAA0C,EAAC,SAAI,WAAWC,EAAK,CAACsV,IAA4BxV,GAAO,CAAC,CAAC,GAAG;AAAA,QAC9D,gBAAAC,EAAC,SAAI,WAAWC,EAAK,CAACsV,IAA4BxV,GAAO,CAAC,CAAC,GAAG;AAAA,QAC9D,gBAAAC,EAAC,SAAI,WAAWC,EAAK,CAACsV,IAA4BxV,GAAO,CAAC,CAAC,GAAG;AAAA,QAC7D8wB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GC9GaE,KAAoBC,GAAqC;AAAA,EACpE,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,WAAW;AACb,CAAC,GAEYC,KAAgB,MAAM;AACjC,QAAMC,IAAU1f,GAAWuf,EAAiB;AAC5C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,sDAAsD;AAExE,SAAOA;AACT;;;GChBaC,KAAyB,CACpC7zB,MAKG;AACH,QAAM,EAAE,YAAYsZ,GAAS,mBAAAwa,GAAmB,GAAGpR,MAAc1iB,GAE3D2Z,IAAa3U,EAAQ,MAClBqU,GAAcC,CAAO,GAC3B,CAACA,CAAO,CAAC,GAEN,EAAE,gBAAA0V,GAAgB,qBAAAV,GAAqB,WAAAjqB,GAAW,QAAAgJ,GAAQ,iBAAAmL,EAAA,IAC9DtE,GAAW+Z,EAAwB,GAC/BlU,IAAW,CAAC/Z,EAAM,IAAI,GAEtB,CAACmuB,GAAeC,CAAgB,IAAIpkB,EAAwB,MAAM;;AACtE,UAAMykB,MAAoB9yB,IAAA2yB,EAAoBvU,EAAS,KAAK,GAAG,CAAC,MAAtC,gBAAApe,EAAyC,WAAUm4B,KAAqB;AAClG,WAAO,CAAC,GAAGna,CAAU,EAAE,KAAK,CAACle,MAAOA,EAAG,kBAAkBgzB,CAAiB,KAAK9U,EAAW,CAAC;AAAA,EAC7F,CAAC,GAEKuV,IAAYvV,EAAW,IAAI,CAACJ,MAAW;AAC3C,UAAMM,KAAaN,KAAA,gBAAAA,EAAQ,kBAAiB,IACtC4V,IAAiB,CAAA,EAAWtV,CAAU;AAC5C,WAAO;AAAA,MACL,KAAKN,EAAO;AAAA,MACZ,QAAO4V,KAAA,gBAAAA,EAAe,eAAc5V,EAAO;AAAA,IAAA;AAAA,EAE/C,CAAC,GAEK8V,IAAuC,CAAC,EAAE,KAAAr1B,QAAU;;AACxD,UAAMs1B,IAAe3V,EAAW,KAAK,CAACJ,MAAWA,EAAO,kBAAkBvf,CAAG;AAC7E,IAAIs1B,MACFlB,EAAiBkB,CAAY,GAC7BN,KAAA,QAAAA,EAAiBjV,GAAUuV,EAAa,iBACxC3zB,IAAAqE,EAAM,mBAAN,QAAArE,EAAA,KAAAqE,GAAuBsvB,EAAa;AAAA,EAExC;AAEA,MAAIF,IACF,gBAAA1sB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,CAACwG,MAAM;AACd,QAAAA,EAAE,eAAA,GACFA,EAAE,gBAAA;AAAA,MACJ;AAAA,MACA,WAAWzG,GAAO;AAAA,MAElB,UAAA,gBAAAC;AAAA,QAAC6sB;AAAA,QAAA;AAAA,UACC,SAAS,CAAC,OAAO;AAAA,UACjB,MAAM;AAAA,YACJ,YAAY;AAAA,YACZ,OAAOL;AAAA,YACP,SAASG;AAAA,YACT,qBAAqB,EAAClB,KAAA,gBAAAA,EAAe,kBAAiB,EAAE;AAAA,UAAA;AAAA,UAG1D,4BAACqB,IAAA,CAAA,CAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA;AAIJ,EAAIN,EAAU,WAAW,MACvBE,IAAW;AAGb,QAAMK,IAAczqB,EAAQ,MAAM;AAChC,QAAI0qB,IAAW;AAAA,MACb,IAAIvB,KAAA,gBAAAA,EAAe,UAAS,CAAA;AAAA,MAC5B,cAAcA,KAAA,gBAAAA,EAAe;AAAA,IAAA;AAE/B,UAAM1X,IAASkD,EAAW,KAAK,CAACle,MAAOA,EAAG,mBAAkB0yB,KAAA,gBAAAA,EAAe,cAAa;AACxF,WAAI1X,MACFiZ,IAAW;AAAA,MACT,GAAGA;AAAA,MACH,GAAGjZ,EAAO;AAAA,IAAA,IAGPiZ;AAAA,EACT,GAAG,CAAC/V,GAAYwU,CAAa,CAAC;AAE9B,SACE,gBAAA3rB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,GAAO;AAAA,MAClB,OAAO;AAAA,QACL,YAAYzC,EAAM,cAAc;AAAA,MAAA;AAAA,MAGlC,UAAA;AAAA,QAAA,gBAAA0C,EAACiqB,IAAA,EAAQ,GAAGjK,GACV,UAAA,gBAAAhgB;AAAA,UAACwrB;AAAA,UAAA;AAAA,YACE,GAAGuB;AAAA,YACJ,SAAS9V;AAAA,YACT,UAAAI;AAAA,YACA,eAAAoU;AAAA,YACA,iBAAA3V;AAAA,YACA,kBAAA4V;AAAA,YACA,eAAe;AAAA,cACb,WAAA/pB;AAAA,cACA,UAAU,CAACrE,EAAM,IAAI;AAAA,cACrB,OAAOA,EAAM;AAAA,cACb,WAAWqE,KAAA,gBAAAA,EAAW,UAAU,QAAQgJ;AAAA,YAAM;AAAA,UAChD;AAAA,QAAA,GAEJ;AAAA,QACC+hB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GCjGa2E,KAAkB,CAAC/zB,MAAuC;AACrE,QAAM,EAAE,MAAA0Y,MAAS1Y,GACX,EAAE,cAAAg0B,GAAc,WAAA/1B,GAAW,WAAAoG,GAAW,WAAA2M,EAAA,IAAc2iB,GAAA;AAC1D,EAAAl0B,GAAeiZ,GAAMub,IAAgB,EAAE;AACvC,QAAMC,IAAexb,EAAKub,EAAc,GAClC,CAACE,GAASC,CAAU,IAAIpqB,EAAS,EAAK,GACtCkQ,IAAUxG,EAAiC,IAAI,GAC/C,CAAC2gB,GAAWC,CAAY,IAAItqB,EAAA;AAClC,SAAAuL,EAAU,MAAM;;AACd,UAAMoC,IAAS;AAAA,MACb,IAAIe,EAAK;AAAA,MACT,MAAMA,EAAK;AAAA,MACX,WAAWA,EAAK;AAAA,MAChB,cAAcA,EAAK;AAAA,MACnB,iBAAiBA,EAAK,mBAAmB;AAAA,IAAA;AAE3C,KAAA/c,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAUgc,IAC3B2c,EAAa3c,CAAM,GACnByc,EAAW,EAAI;AAAA,EAEjB,GAAG,CAAA,CAAE,GAGH,gBAAA1xB;AAAA,IAACurB,GAAyB;AAAA,IAAzB;AAAA,MACC,OAAO;AAAA,QACL,qBAAqBiG,EAAa,oBAAoB,CAAA;AAAA,QACtD,SAAAha;AAAA,QACA,gBAAgB,CAACH,GAAUF,MAAe;AACxC,UAAKqa,EAAa,qBAChBA,EAAa,mBAAmB,CAAA,IAElCA,EAAa,iBAAiBna,EAAS,KAAK,GAAG,CAAC,IAAI;AAAA,YAClD,MAAMA,EAAS,KAAK,GAAG;AAAA,YACvB,QAAQF;AAAA,UAAA;AAAA,QAEZ;AAAA,QACA,WAAAxV;AAAA,QACA,QAAQ2M,KAAA,gBAAAA,EAAW;AAAA,QACnB,iBAAiB,CAAA;AAAA,MAAC;AAAA,MAGpB,UAAA,gBAAAtO;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,WAAW;AAAA,YACX,UAAU;AAAA,UAAA;AAAA,UAGZ,UAAA,gBAAAA,EAAC6vB,IAAA,EAAS,OAAM,gBAAe,WAAWvyB,GACxC,UAAA,gBAAA0C;AAAA,YAAC+V;AAAA,YAAA;AAAA,cACC,KAAKyB;AAAA,cACL,MAAK;AAAA,cACL,iBAAiBwS;AAAA,cACjB,eAAe,CAAC/U,MAAW;AACzB,uBAAO,OAAOe,GAAMf,CAAM,GAC1B2c,EAAa3c,CAAa,GAC1Bqc,EAAA;AAAA,cACF;AAAA,cAEC,eACC,gBAAAxxB,EAAAiH,GAAA,EACE,UAAA;AAAA,gBAAA,gBAAA/G,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,UAAA,gBAAAC;AAAA,kBAACiqB;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,OAAM;AAAA,oBACN,sBAAqB;AAAA,oBACrB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,OAAAvT,EAAA,QACtBA;AAAA,oBAGT,UAAA,gBAAA1W;AAAA,sBAACqgB,EAAM;AAAA,sBAAN;AAAA,wBACC,YAAW;AAAA,wBACX,aAAY;AAAA,wBACZ,SAAS;AAAA,0BACP,EAAE,OAAO,UAAU,OAAOgP,GAAgB,OAAA;AAAA,0BAC1C,EAAE,OAAO,QAAQ,OAAOA,GAAgB,MAAA;AAAA,wBAAM;AAAA,sBAChD;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA,GAEJ;AAAA,gBACA,gBAAAvvB,EAAC,OAAA,EAAI,WAAWC,GAAO,MACpB,UAAA;AAAA,mBAAA4xB,KAAA,gBAAAA,EAAW,eAAc,WACxB,gBAAA3xB,EAACiqB,IAAA,EAAO,MAAM,mBAAmB,OAAM,YAAW,sBAAqB,YACrE,UAAA,gBAAAjqB,EAACgvB,IAAA,EAAgB,WAAAzzB,GAAsB,GACzC;AAAA,mBAGDo2B,KAAA,gBAAAA,EAAW,eAAc,YACxB,gBAAA3xB;AAAA,oBAACmxB;AAAA,oBAAA;AAAA,sBACC,MAAM;AAAA,sBACN,OAAM;AAAA,sBACN,YAAW;AAAA,sBACX,YAAY;AAAA,sBACZ,MACE;AAAA,sBAEF,YAAY;AAAA,wBACV;AAAA,0BACE,eAAe;AAAA,0BACf,OAAO;AAAA,4BACL,gBAAgBjC;AAAAA,0BAAA;AAAA,wBAClB;AAAA,sBACF;AAAA,oBACF;AAAA,kBAAA;AAAA,gBACD,GAEL;AAAA,gBACA,gBAAAlvB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWD,GAAO;AAAA,oBAClB,OAAO;AAAA,sBACL,UAAU;AAAA,oBAAA;AAAA,oBAGZ,UAAA,gBAAAC;AAAA,sBAACmxB;AAAA,sBAAA;AAAA,wBACC,MAAM;AAAA,wBACN,OAAM;AAAA,wBACN,YAAW;AAAA,wBACX,YAAY;AAAA,wBACZ,YAAYU;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACb;AAAA,gBAAA;AAAA,cACH,EAAA,CACF;AAAA,YAAA;AAAA,UAAA,EAEJ,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GC9IaC,KAAY,CAACx0B,wBAErBuyB,IAAA,EAAS,WAAWvyB,GAAO,cAAc,IAAO,aAAa,IAC5D,UAAA,gBAAA0C;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,WAAW;AAAA,IAAA;AAAA,IAEd,UAAA;AAAA,EAAA;AAAA,GAGH;;;AChBG,SAASkvB,GAAsBrtB,GAAc;AAGlD,MAAI,CADoB,6BACH,KAAKA,CAAI;AAC5B,WAAO;AAIT,MAAI;AACF,eAAI,SAAS,OAAOA,CAAI,GAAG,GACpB;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,MAAMkwB,KAAc,SAOPC,KAAuB,CAAC35B,GAAiB45B,MAAuB;;AAC3E,SAAIrpB,GAAYvQ,CAAI,MAGCoL,KAAAD,OAFAvK,IAAAZ,KAAA,gBAAAA,EAAM,aAAN,gBAAAY,EAAgB,MAAM,YAAW,CAAA,GAGjD,KAAK,CAACF,MAAOA,EAAG,SAASk5B,CAAU,MADnB,gBAAAzuB,EAEf,WAFe,gBAAAC,EAEP,IAAI,CAAC1K,GAAIsV,OACV;AAAA,IACL,MAAM,GAAG0jB,EAAW,GAAG1jB,CAAK;AAAA,IAC5B,OAAO;AAAA,MACL,OAAOtV,EAAG,QAAQ,OAAOsV,CAAK;AAAA,MAC9B,KAAKtV,EAAG;AAAA,IAAA;AAAA,IAEV,WAAW;AAAA,IACX,SAAS84B;AAAA,EAAA,QAIM,CAAA,IAEhB,CAAA;AACT,GAEaK,KAAuB,CAACl7B,MACvB,OAAO,KAAKA,CAAG,EACxB,IAAI,CAACM,MAAQ,SAASA,EAAI,QAAQy6B,IAAa,EAAE,CAAC,CAAC,EACnD,OACA,IAAI,CAAC1jB,MAAUrX,EAAI,GAAG+6B,EAAW,GAAG1jB,CAAK,EAAE,CAAC,GAIpC8jB,KAAqB,CAACC,MAAkB;AACnD,QAAMn7B,IAAW,CAAA;AACjB,SAAAm7B,EAAO,QAAQ,CAACl7B,GAAMmX,MAAU;AAC9B,IAAApX,EAAI,GAAG86B,EAAW,GAAG1jB,CAAK,EAAE,IAAInX;AAAA,EAClC,CAAC,GACMD;AACT,GC9Cao7B,KAAqB,CAAC/0B,MAA0C;AAC3E,QAAM,EAAE,MAAA0Y,MAAS1Y,GACX,EAAE,WAAA/B,GAAW,cAAA+1B,GAAc,WAAA3vB,GAAW,WAAA2M,EAAA,IAAc2iB,GAAA;AAC1D,EAAAl0B,GAAeiZ,GAAMub,IAAgB,EAAE;AACvC,QAAMC,IAAexb,EAAKub,EAAc,GAElC/Z,IAAUxG,EAAiC,IAAI,GAC/C,CAAC2gB,GAAWC,CAAY,IAAItqB,EAAA;AAClC,EAAAuL,EAAU,MAAM;;AACd,UAAMoC,IAAS;AAAA,MACb,IAAIe,EAAK,MAAM;AAAA,MACf,MAAMA,EAAK;AAAA,MACX,QAAQA,EAAK;AAAA,MACb,YAAYA,EAAK;AAAA,MACjB,MAAMA,EAAK;AAAA,MACX,eAAeA,EAAK;AAAA,IAAA;AAEtB,KAAA/c,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAUgc,IAE3B2c,EAAa3c,CAAM;AAAA,EAErB,GAAG,CAAA,CAAE;AAEL,QAAMqd,IAAahwB,EAAQ,MAAM;;AAC/B,UAAM4R,IAAa3Y,EAAU,QAAQya,EAAK,MAAM;AAEhD,aADa/c,IAAAib,KAAA,gBAAAA,EAAY,aAAZ,gBAAAjb,EAAsB,MAAM,YAAW,CAAA;AAAA,EAEtD,GAAG,CAAC+c,EAAK,QAAQza,CAAS,CAAC,GAErBg3B,IAAoBjwB,EAAQ,MACzBgwB,KAAA,gBAAAA,EAAY,IAAI,CAACv5B,OACf;AAAA,IACL,OAAOA,EAAG;AAAA,IACV,OAAOA,EAAG;AAAA,EAAA,KAGb,CAACu5B,CAAU,CAAC,GAETE,IAAiBlwB,EAAQ,MACtB0vB,GAAqBz2B,EAAU,QAAQo2B,KAAA,gBAAAA,EAAW,MAAM,IAAIA,KAAA,gBAAAA,EAAW,eAAc,EAAE,GAC7F,CAACp2B,GAAWo2B,KAAA,gBAAAA,EAAW,QAAQA,KAAA,gBAAAA,EAAW,UAAU,CAAC,GAElDc,IAAwB,CAACpb,GAAoBF,MAAuB;AACxE,IAAKqa,EAAa,qBAChBA,EAAa,mBAAmB,CAAA,IAElCA,EAAa,iBAAiBna,EAAS,KAAK,GAAG,CAAC,IAAI;AAAA,MAClD,MAAMA,EAAS,KAAK,GAAG;AAAA,MACvB,QAAQF;AAAA,IAAA;AAAA,EAEZ;AAEA,SACE,gBAAAnX;AAAA,IAACurB,GAAyB;AAAA,IAAzB;AAAA,MACC,OAAO;AAAA,QACL,qBAAqBiG,EAAa,oBAAoB,CAAA;AAAA,QACtD,SAAAha;AAAA,QACA,gBAAgBib;AAAA,QAChB,iBAAiB,EAAE,GAAGzI,GAAA;AAAA,MAAoB;AAAA,MAG5C,UAAA,gBAAAhqB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,WAAW;AAAA,YACX,UAAU;AAAA,UAAA;AAAA,UAGZ,UAAA,gBAAAA,EAAC6vB,IAAA,EAAS,OAAM,oBAAmB,WAAWvyB,GAC5C,UAAA,gBAAAwC;AAAA,YAACiW;AAAA,YAAA;AAAA,cACC,KAAKyB;AAAA,cACL,MAAK;AAAA,cACL,iBAAiBwS;AAAA,cACjB,eAAe,CAAC/U,GAAQiB,MAAe;AACrC,gBAAIA,KAAA,QAAAA,EAAY,SAAS,cACvBjB,IAAS;AAAA,kBACP,GAAGA;AAAA,kBACH,YAAY;AAAA,kBACZ,MAAM,CAAA;AAAA,gBAAC,GAET,WAAW,MAAM;;AACf,mBAAAhc,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAU;AAAA,oBACzB,GAAG04B;AAAA,oBACH,GAAG1c;AAAA,kBAAA;AAAA,gBAEP,CAAC,IAEH,OAAO,OAAOe,GAAMf,CAAM,GAC1B2c,EAAa3c,CAAa,GAC1Bqc,EAAA;AAAA,cACF;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAtxB,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,UAAA,gBAAAC;AAAA,kBAACiqB;AAAA,kBAAA;AAAA,oBACC,OAAO;AAAA,oBACP,MAAK;AAAA,oBACL,sBAAqB;AAAA,oBACrB,kBAAkB,CAAClxB,MACVA,EAAG;AAAA,oBAGZ,UAAA,gBAAAiH,EAAC2uB,MAAiB,WAAApzB,EAAA,CAAsB;AAAA,kBAAA;AAAA,gBAAA,GAE5C;AAAA,gBAEA,gBAAAyE,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,4BAACkqB,IAAA,EAAO,MAAK,cAAa,OAAM,MAAK,sBAAqB,YACxD,UAAA,gBAAAjqB,EAAC2d,IAAA,EAAO,OAAO,EAAE,OAAO,IAAA,GAAO,YAAU,IAAC,SAAS4U,EAAA,CAAmB,EAAA,CACxE,EAAA,CACF;AAAA,gBACA,gBAAAvyB,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,UAAA,gBAAAC;AAAA,kBAACiqB;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,OAAM;AAAA,oBACN,YAAW;AAAA,oBACX,YAAY;AAAA,oBACZ,WAAW,MAAM,EAAQuI,EAAe;AAAA,oBACxC,SAAO;AAAA,oBACP,kBAAkB,CAACx7B,MACFk7B,GAAqBl7B,CAAG;AAAA,oBAIzC,UAAA,gBAAAgJ;AAAA,sBAACguB;AAAA,sBAAA;AAAA,wBACC,cAAcmE,GAAmBnc,EAAK,QAAQ,CAAA,CAAE;AAAA,wBAChD,WAAArU;AAAA,wBACA,QAAQ2M,KAAA,gBAAAA,EAAW;AAAA,wBACnB,YAAYkkB;AAAA,wBACZ,gBAAgBC;AAAA,wBAChB,qBAAqBjB,EAAa,oBAAoB,CAAA;AAAA,sBAAC;AAAA,oBAAA;AAAA,kBACxD;AAAA,gBAAA,GAEL;AAAA,gBAEA,gBAAAxxB,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,UAAA,gBAAAC;AAAA,kBAACiqB;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,OAAM;AAAA,oBACN,YAAW;AAAA,oBACX,MACE;AAAA,oBAEF,OAAO;AAAA,sBACL;AAAA,wBACE,WAAW,OAAOjzB,MACZA,MAAQ,KACH,KAEFk4B,GAAsBl4B,CAAG;AAAA,sBAClC;AAAA,oBACF;AAAA,oBAEF,sBAAqB;AAAA,oBACrB,kBAAkB,CAACwP,MAAMA,EAAE,OAAO;AAAA,oBAElC,UAAA,gBAAAxG,EAACsG,IAAA,EAAM,YAAU,GAAA,CAAC;AAAA,kBAAA;AAAA,gBAAA,EACpB,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,EACF,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GCvKaosB,KAAe,CAACp1B,MAAoC;AAC/D,QAAM,EAAE,MAAA0Y,MAAS1Y,GACX,EAAE,cAAAg0B,EAAA,IAAiBL,GAAA,GAEnBzZ,IAAUxG,EAAiC,IAAI,GAC/C,CAACygB,GAASC,CAAU,IAAIpqB,EAAS,EAAK;AAE5C,EAAAuL,EAAU,MAAM;;AACd,KAAA5Z,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAU;AAAA,MACzB,MAAM+c,EAAK;AAAA,IAAA,IAEb0b,EAAW,EAAI;AAAA,EAEjB,GAAG,CAAA,CAAE;AAEL,QAAMiB,IAAoBrwB,EAAQ,MAC5BswB,GAAW5c,EAAK,IAAI,IACf,mBACEje,GAAaie,EAAK,IAAI,IACxB,qBAEA,kBAER,CAACA,EAAK,IAAI,CAAC;AAEd,SACE,gBAAAhW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,WAAW;AAAA,QACX,UAAU;AAAA,MAAA;AAAA,MAGZ,UAAA,gBAAAA,EAAC6vB,IAAA,EAAS,OAAM,aAAY,WAAWvyB,GACrC,UAAA,gBAAA0C;AAAA,QAAC+V;AAAA,QAAA;AAAA,UACC,KAAKyB;AAAA,UACL,MAAK;AAAA,UACL,iBAAiBwS;AAAA,UACjB,eAAe,CAAC/U,MAAW;AACzB,mBAAO,OAAOe,GAAMf,CAAM,GAC1Bqc,EAAA;AAAA,UACF;AAAA,UAEC,eACC,gBAAAtxB,EAAA+G,GAAA,EACE,UAAA,gBAAA/G;AAAA,YAACmxB;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,OAAM;AAAA,cACN,YAAW;AAAA,cACX,YAAY;AAAA,cACZ,mBAAmBwB;AAAA,cACnB,YAAYd;AAAA,YAAA;AAAA,UAAA,EACb,CACH;AAAA,QAAA;AAAA,MAAA,EAEJ,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GCpEagB,KAA8C;AAAA,EACzD;AAAA,IACE,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa;AAAA,MACb,eAAe;AAAA,QACb,aAAa;AAAA,QACb,sBAAsB;AAAA,QACtB,qBAAqB;AAAA,QACrB,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,EACF;AAAA,EAEF;AAAA,IACE,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,gBAAgB;AAAA,QACd,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAEV,YAAY;AAAA,IAAA;AAAA,EACd;AAEJ,GAEaC,KAAgB;AAAA,EAC3B,EAAE,OAAO,OAAO,OAAO,MAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,EACxB,EAAE,OAAO,OAAO,OAAO,MAAA;AAAA,EACvB,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,EACzB,EAAE,OAAO,UAAU,OAAO,SAAA;AAC5B;;GCXaC,KAAiB,CAACz1B,MAAsC;;AACnE,QAAM,EAAE,MAAA0Y,GAAM,eAAAoa,EAAA,IAAkB9yB,GAC1B,EAAE,cAAAg0B,GAAc,WAAA3vB,EAAA,IAAcsvB,GAAA,GAC9B+B,IAAiCrxB,EAAU,UAAU,CAAA,GAErDsxB,IAA4B3wB,EAAQ,MAAM;;AAC9C,YAAIrJ,IAAA+5B,EAAa,mBAAb,QAAA/5B,EAA6B,kBACxBuK,IAAAwvB,EAAa,mBAAb,gBAAAxvB,EAA6B,iBAE/B8C;AAAA,EACT,GAAG,EAACrN,IAAA+5B,EAAa,mBAAb,gBAAA/5B,EAA6B,cAAc,CAAC,GAE1Co3B,IAAoBC,GAAA;AAC1B,EAAAvzB,GAAeiZ,GAAMub,IAAgB,EAAE;AACvC,QAAMC,IAAexb,EAAKub,EAAc,GAClC/Z,IAAUxG,EAAiC,IAAI,GAC/C,CAAC2gB,GAAWC,CAAY,IAAItqB,EAAA,GAC5B4rB,IAAwB,CAACC,MACf9C,EAAkB,SAAA,EACnB;AAAA,IACX,CAAC+C,MAASA,EAAK,WAAW,OAAOpd,EAAK,EAAE,MAAMod,EAAK,gBAAgB3d,QAAsB0d;AAAA,EAAA,GAIvFE,IAA0BH,EAAsBzd,EAAgB,GAEhE6d,IAAuCJ,EAAsBxd,EAA4B;AAE/F,EAAA7C,EAAU,MAAM;;AACd,UAAMoC,IAAS;AAAA,MACb,IAAIe,EAAK;AAAA,MACT,MAAMA,EAAK;AAAA,MACX,SAASA,EAAK;AAAA,MACd,MAAMA,EAAK;AAAA,MACX,OAAOA,EAAK;AAAA,MACZ,QAAQA,EAAK;AAAA,MACb,QAAQA,EAAK,UAAU;AAAA,MACvB,iBAAiBA,EAAK,mBAAmB;AAAA,MACzC,sBAAsBA,EAAK,wBAAwB,CAAA;AAAA,MACnD,qBAAqBA,EAAK,uBAAuB,CAAA;AAAA,IAAC;AAEpD,KAAA/c,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAUgc,IAC3B2c,EAAa3c,CAAM;AAAA,EAErB,GAAG,CAAA,CAAE;AAEL,QAAMse,IAAcjxB,EAAQ,OACnB;AAAA,IACL,cAAc,CAACsc,MAAkB;;AAC/B,YAAM4U,IAAc;AAAA,QAClB,GAAG7B;AAAA,QACH,GAAG/S;AAAA,MAAA;AAEL,OAAA3lB,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAU;AAAA,QACzB,GAAGu6B;AAAA,MAAA,IAEL5B,EAAa4B,CAAW;AAAA,IAC1B;AAAA,IACA,WAAW,MAAM;;AACf,cAAOv6B,IAAAue,EAAQ,YAAR,gBAAAve,EAAiB;AAAA,IAC1B;AAAA,EAAA,IAED,CAAC04B,CAAS,CAAC,GAERc,IAAwB,CAACpb,GAAoBF,MAAuB;AACxE,IAAKqa,EAAa,qBAChBA,EAAa,mBAAmB,CAAA,IAElCA,EAAa,iBAAiBna,EAAS,KAAK,GAAG,CAAC,IAAI;AAAA,MAClD,MAAMA,EAAS,KAAK,GAAG;AAAA,MACvB,QAAQF;AAAA,IAAA;AAAA,EAEZ,GAEMsc,IAAWnxB,EAAQ,MACJ;AAAA,IACjB,EAAE,KAAK,UAAU,OAAO,SAAA;AAAA,IACxB,EAAE,KAAK,SAAS,OAAO,QAAA;AAAA,IACvB,EAAE,KAAK,QAAQ,OAAO,OAAA;AAAA,EAAO,EAEc,IAAI,CAACvJ,OACzC;AAAA,IACL,GAAGA;AAAA,IACH,UAAUA,EAAG,QAAQ,WAAU44B,KAAA,gBAAAA,EAAW,YAAW;AAAA,IACrD,UACE,gBAAA3xB,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,UAAA,gBAAAC;AAAA,MAACmxB;AAAA,MAAA;AAAA,QACC,MAAMp4B,EAAG;AAAA,QACT,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,YAAY85B;AAAA,MAAA;AAAA,IAAA,EACb,CACH;AAAA,EAAA,EAGL,GAGA,CAAClB,CAAS,CAAC,GAERlB,IAAmB,CAACC,GAAkBgD,MAAuB;;AACjE,UAAM7rB,IAAcwoB,EAAkB,QAAQ,OAAOra,EAAK,EAAE,CAAC;AAC7D,QAAI,CAACnO,EAAa;AAElB,QAAI8rB,IAAU;AACd,IAAID,MAAeje,OACjBke,OAAW16B,IAAA4O,EAAY,aAAZ,gBAAA5O,EAAsB,UAAS,KAAK;AAGjD,UAAM26B,IAAkB;AAAA,MACtB,GAAG/rB,EAAY,SAAS,IAAI8rB;AAAA,MAC5B,GAAG9rB,EAAY,SAAS,OAAKrE,KAAAqE,EAAY,aAAZ,gBAAArE,GAAsB,WAAU,KAAK;AAAA,IAAA,GAI9DkB,IAAU;AAAA,MACd,IAAIgsB,EAAY;AAAA,MAChB,MAAMA,EAAY;AAAA,MAClB,UAAUkD;AAAA;AAAA,MAEV,YAAY,IAAIre,EAA0B;AAAA,MAC1C,MAAM;AAAA,QACJ,GAAGmb;AAAA,MAAA;AAAA,IACL,GAIIC,IAAU;AAAA,MACd,IAAI,GAAG3a,EAAK,EAAE,IAAItR,EAAQ,EAAE;AAAA,MAC5B,QAAQ,OAAOsR,EAAK,EAAE;AAAA,MACtB,cAAc0d;AAAA,MACd,QAAQhvB,EAAQ;AAAA,MAChB,cAAc8Q;AAAA,IAAA;AAIhB,IAAA6a,EAAkB,SAAS3rB,CAAO,GAClC2rB,EAAkB,SAASM,CAAO,GAC9B+C,MAAeje,MAEZO,EAAK,yBACRA,EAAK,uBAAuB,CAAA,IAE9BA,EAAK,qBAAqB,KAAK0a,CAAW,MAGrC1a,EAAK,wBACRA,EAAK,sBAAsB,CAAA,IAE7BA,EAAK,oBAAoB,KAAK0a,CAAW;AAAA,EAE7C;AAEA,SACE,gBAAA1wB;AAAA,IAACurB,GAAyB;AAAA,IAAzB;AAAA,MACC,OAAO;AAAA,QACL,qBAAqBiG,EAAa,oBAAoB,CAAA;AAAA,QACtD,SAAAha;AAAA,QACA,gBAAgBib;AAAA,QAChB,iBAAiB,EAAE,GAAGzI,GAAA;AAAA,MAAoB;AAAA,MAG5C,UAAA,gBAAAhqB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,WAAW;AAAA,YACX,UAAU;AAAA,UAAA;AAAA,UAGZ,UAAA,gBAAAA;AAAA,YAAC6vB;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,cACE,gBAAA/vB,EAAAiH,GAAA,EACE,UAAA;AAAA,gBAAA,gBAAA/G,EAACyvB,IAAA,EAAY,MAAK,UAAS,eAAAW,EAAA,CAA8B;AAAA,gBACzD,gBAAApwB;AAAA,kBAACsvB;AAAA,kBAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,MAAM;AAAA,sBACN,QAAQ;AAAA,oBAAA;AAAA,oBAEV,OAAM;AAAA,oBACN,cAAc,CAACtZ,MAASya,EAAiBza,GAAMP,EAAgB;AAAA,oBAC/D,UAAU4d;AAAA,oBAEV,UAAA,gBAAArzB;AAAA,sBAAC4vB;AAAA,sBAAA;AAAA,wBACC,eAAAQ;AAAA,wBACA,OAAO;AAAA,0BACL,OAAO;AAAA,0BACP,QAAQ;AAAA,0BACR,YAAY;AAAA,wBAAA;AAAA,sBACd;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,gBAEF,gBAAApwB;AAAA,kBAACsvB;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,cAAc,CAACtZ,MAASya,EAAiBza,GAAMN,EAA4B;AAAA,oBAC3E,UAAU4d;AAAA,oBAEV,UAAA,gBAAAtzB;AAAA,sBAAC4vB;AAAA,sBAAA;AAAA,wBACC,OAAO;AAAA,0BACL,MAAM;AAAA,0BACN,QAAQ;AAAA,0BACR,OAAO;AAAA,0BACP,QAAQ;AAAA,0BACR,YAAY;AAAA,wBAAA;AAAA,wBAEd,IAAIla;AAAA,wBACJ,eAAA0a;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,cACF,GACF;AAAA,cAEF,WAAW9yB;AAAA,cACX,kBAAkB,MAAM;AAAA,cAAC;AAAA,cAEzB,UAAA,gBAAA0C;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,OAAO;AAAA,kBAAA;AAAA,kBAGT,UAAA,gBAAAF;AAAA,oBAACiW;AAAA,oBAAA;AAAA,sBACC,MAAM;AAAA,sBACN,KAAKyB;AAAA,sBACL,iBAAiBwS;AAAA,sBACjB,eAAe,CAAC6J,MAAgB;AAC9B,wBAAAjC,EAAaiC,CAAkB,GAC/B,OAAO,OAAO7d,GAAM6d,CAAW,GAC/BvC,EAAA;AAAA,sBACF;AAAA,sBAEA,UAAA;AAAA,wBAAA,gBAAAtxB,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,UAAA,gBAAAC;AAAA,0BAACiqB;AAAA,0BAAA;AAAA,4BACC,OAAO;AAAA,4BACP,MAAK;AAAA,4BACL,sBAAqB;AAAA,4BACrB,kBAAkB,CAAClxB,MAAOA,EAAG,OAAO;AAAA,4BAEpC,UAAA,gBAAAiH,EAACizB,GAAA,EAAqB,MAAMM,EAAA,CAAa;AAAA,0BAAA;AAAA,wBAAA,GAE7C;AAAA,wBACA,gBAAAvzB,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,4BAACkqB,IAAA,EAAO,OAAO,QAAQ,MAAK,UAAS,sBAAqB,YACxD,UAAA,gBAAAjqB,EAAC2d,IAAA,EAAO,cAAa,OAAM,OAAO,EAAE,OAAO,IAAA,GAAO,SAASmV,GAAA,CAAe,EAAA,CAC5E,EAAA,CACF;AAAA,wBACA,gBAAA9yB,EAAC,OAAA,EAAI,WAAWD,GAAO,MACrB,UAAA,gBAAAC;AAAA,0BAACiqB;AAAA,0BAAA;AAAA,4BACC,OAAO;AAAA,4BACP,MAAK;AAAA,4BACL,MACE;AAAA,4BAEF,sBAAqB;AAAA,4BACrB,kBAAkB,CAAClxB,MAAOA,EAAG,OAAO;AAAA,4BAEpC,4BAACuN,IAAA,CAAA,CAAM;AAAA,0BAAA;AAAA,wBAAA,GAEX;AAAA,wBACA,gBAAAtG,EAACyG,MAAK,mBAAkBkrB,KAAA,gBAAAA,EAAW,YAAW,SAAS,SAAS,SAAS,OAAO8B,EAAA,CAAU;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAC5F;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GC1RaK,KAAc,CAACx2B,MAAmC;AAC7D,QAAM,EAAE,MAAA0Y,MAAS1Y;AACjB,EAAAP,GAAeiZ,GAAMub,IAAgB,EAAE;AAEvC,QAAM,EAAE,cAAAD,GAAc,WAAA3vB,GAAW,WAAA2M,EAAA,IAAc2iB,GAAA;AAE/C,SACE,gBAAAjxB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,WAAW;AAAA,QACX,UAAU;AAAA,MAAA;AAAA,MAGZ,UAAA,gBAAAA,EAAC6vB,IAAA,EAAS,OAAM,YAAW,WAAWvyB,GACpC,UAAA,gBAAA0C;AAAA,QAACue;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAcvI,EAAK;AAAA,UACnB,gBAAgB;AAAA,YACd,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,UAAA;AAAA,UAEV,eAAe,CAACf,MAAgB;AAC9B,YAAAe,EAAK,QAAQf,EAAO,OACpBqc,EAAA;AAAA,UACF;AAAA,UACA,eAAe;AAAA,YACb,WAAA3vB;AAAA,YACA,sBAAsB;AAAA,YACtB,gBAAgB,WAAY;AAAA,YAAC;AAAA,YAC7B,UAAU,CAAA;AAAA,YACV,OAAO;AAAA,YACP,WAAA2M;AAAA,UAAA;AAAA,QACF;AAAA,MAAA,EACF,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACxCO,IAAKylB,MAAL,CAAKA,OACVA,EAAA,aAAa,cACbA,EAAAA,EAAA,YAAY3E,GAAU,SAAA,IAAtB,aACA2E,EAAAA,EAAA,eAAe3E,GAAU,YAAA,IAAzB,gBACA2E,EAAAA,EAAA,mBAAmB3E,GAAU,gBAAA,IAA7B,oBACA2E,EAAAA,EAAA,WAAW3E,GAAU,QAAA,IAArB,YACA2E,EAAAA,EAAA,cAAc3E,GAAU,WAAA,IAAxB,eANU2E,IAAAA,MAAA,CAAA,CAAA;AASL,MAAMC,KAAW;AAAA,EACrB,YAAuBlC;AAAA,EACxB,CAACiC,GAAU,SAAS,GAAGrB;AAAA,EACvB,CAACqB,GAAU,YAAY,GAAG1C;AAAA,EAC1B,CAAC0C,GAAU,gBAAgB,GAAG1B;AAAA,EAC9B,CAAC0B,GAAU,QAAQ,GAAGD;AAAA,EACtB,CAACC,GAAU,WAAW,GAAGhB;AAC3B,GChBakB,KAAyB,CACpC9F,GACA+F,GACA94B,MAGqC;AACrC,QAAM+4B,IAAI,IAAIC,GAAM,SAAS,QAAQ,oBAAoB,OAAO,CAAA,EAAG;AACnE,SAAAD,EAAE,SAAS,EAAE,SAAS/4B,EAAQ,WAAW,GAEzC84B,EAAM,QAAQ,CAACd,MAASe,EAAE,QAAQf,EAAK,QAAQA,EAAK,MAAM,CAAC,GAC3DjF,EAAM;AAAA,IAAQ,CAAC91B,MAAA;;AACb,aAAA87B,EAAE,QAAQ97B,EAAK,IAAI;AAAA,QACjB,GAAGA;AAAA,QACH,SAAOY,IAAAZ,EAAK,aAAL,gBAAAY,EAAe,UAAS;AAAA,QAC/B,UAAQuK,IAAAnL,EAAK,aAAL,gBAAAmL,EAAe,WAAU;AAAA,MAAA,CAClC;AAAA;AAAA,EAAA,GAGH4wB,GAAM,OAAOD,CAAC,GAEP;AAAA,IACL,OAAOhG,EAAM,IAAI,CAAC91B,MAAS;;AACzB,YAAMg8B,IAAWF,EAAE,KAAK97B,EAAK,EAAE,GAGzBi8B,IAAID,EAAS,OAAKp7B,IAAAZ,EAAK,aAAL,gBAAAY,EAAe,UAAS,KAAK,GAC/Cs7B,IAAIF,EAAS,OAAK7wB,IAAAnL,EAAK,aAAL,gBAAAmL,EAAe,WAAU,KAAK;AAEtD,aAAO,EAAE,GAAGnL,GAAM,UAAU,EAAE,GAAAi8B,GAAG,GAAAC,IAAE;AAAA,IACrC,CAAC;AAAA,IACD,OAAAL;AAAA,EAAA;AAEJ,GAEMM,KAAiB,CAACC,MAAkC;AACxD,QAAM9pB,IAAS8pB,EAAS,MAAMn8B,GAAA;AAC9B,SAAO;AAAA,IACL,IAAIqS;AAAA,IACJ,MAAM8pB,EAAS;AAAA,IACf,UAAU,EAAE,GAAG,GAAG,GAAG,EAAA;AAAA,IACrB,YAAY,IAAIlf,EAA0B;AAAA,IAC1C,YAAYkf,EAAS,SAASV,GAAU;AAAA,IACxC,MAAM;AAAA,MACJ,GAAGU;AAAA,MACH,IAAI9pB;AAAA,IAAA;AAAA,EACN;AAEJ,GAGM+pB,KAAiB,CAACC,GAAgB5gB,GAAgB6gB,IAAenf,QAC9D;AAAA,EACL,IAAI,GAAGkf,CAAM,IAAI5gB,CAAM;AAAA,EACvB,QAAA4gB;AAAA,EACA,cAAAC;AAAA,EACA,QAAA7gB;AAAA,EACA,cAAcyB;AAAA,IAKLqf,KAA6B,CAACne,MAA4B;;AACrE,QAAMyX,IAAgB;AAAA,IACpBqG,GAAe;AAAA,MACb,IAAIT,GAAU;AAAA,MACd,MAAMA,GAAU;AAAA,IAAA,CACjB;AAAA,EAAA,GAEGG,IAAgB,CAAA;AAEtB,MAAI,GAACj7B,IAAAyd,KAAA,gBAAAA,EAAO,YAAP,QAAAzd,EAAgB;AACnB,WAAO,EAAE,OAAAk1B,GAAc,OAAA+F,EAAA;AAGzB,QAAMY,IAAe,CACnBlyB,GACAxH,MAMG;AACH,IAAAwH,EAAM,QAAQ,CAAC1L,MAAS;;AACtB,YAAM2Q,IAAc2sB,GAAet9B,CAAI;AACvC,MAAAi3B,EAAM,KAAKtmB,CAAW,GAClB3Q,EAAK,QACPg9B,EAAM,KAAKQ,GAAex9B,EAAK,IAAI,OAAOA,EAAK,IAAI,GAAGkE,KAAA,gBAAAA,EAAS,aAAa,CAAC,GAG3ElE,EAAK,SAAS,mBAEZ+B,IAAA/B,EAAK,yBAAL,QAAA+B,EAA2B,WAC7Bi7B,EAAM,KAAKQ,GAAex9B,EAAK,IAAI,OAAOA,EAAK,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,GAC3E49B,EAAa59B,EAAK,oBAAoB,KAIpCsM,IAAAtM,EAAK,wBAAL,QAAAsM,EAA0B,WAC5B0wB,EAAM,KAAKQ,GAAex9B,EAAK,IAAI,OAAOA,EAAK,oBAAoB,CAAC,EAAE,EAAE,GAAGwe,EAA4B,CAAC,GAExGof,EAAa59B,EAAK,qBAAqB;AAAA,QACrC,eAAewe;AAAA,MAAA,CAChB;AAAA,IAGP,CAAC;AAAA,EACH,GAEMqf,IAAWre,EAAM,QAAQ,CAAC;AAChC,SAAAwd,EAAM,KAAKQ,GAAeX,GAAU,YAAYgB,EAAS,EAAE,CAAC,GAE5DD,EAAape,EAAM,OAAO,GACnB,EAAE,OAAAyX,GAAO,OAAA+F,EAAA;AAClB,GAGac,KAA0B,CAACzlB,MAA+D;AACrG,QAAM,EAAE,OAAA4e,GAAO,OAAA+F,EAAA,IAAU3kB,GACnB0X,IAA2B;AAAA,IAC/B,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EAAC,GAIN1S,IAAY4Z,EAAM,KAAK,CAAC91B,MAASA,EAAK,SAAS07B,GAAU,UAAU;AACzE,MAAI,CAACxf,EAAW,QAAO0S;AACvB,QAAMgO,IAAU,IAAI,IAAI9G,EAAM,IAAI,CAAC91B,MAAS,CAACA,EAAK,IAAIA,CAAI,CAAC,CAAC,GACtD68B,wBAAc,IAAA,GAEdC,IAAgB,CAACC,MAA0B;AAC/C,QAAIF,EAAQ,IAAIE,CAAa,UAAU,CAAA;AACvC,IAAAF,EAAQ,IAAIE,CAAa;AAEzB,UAAMvtB,IAAcotB,EAAQ,IAAIG,CAAa;AAC7C,QAAI,CAACvtB,EAAa,QAAO,CAAA;AAEzB,UAAMwtB,IAAW,CAAA,GACXZ,IAAgB,EAAE,GAAG5sB,EAAY,MAAM,IAAIutB,EAAA;AAEjD,QAAIvtB,EAAY,SAAS,eAAe;AAEtC,YAAMytB,IAAiBpB,EACpB,OAAO,CAAC1tB,MAAMA,EAAE,WAAW4uB,KAAiB5uB,EAAE,iBAAiBiP,EAAgB,EAC/E,IAAI,CAACjP,MAAM2uB,EAAc3uB,EAAE,MAAM,CAAC,EAClC,KAAA,GAGG+uB,IAAgBrB,EACnB,OAAO,CAAC1tB,MAAMA,EAAE,WAAW4uB,KAAiB5uB,EAAE,iBAAiBkP,EAA4B,EAC3F,IAAI,CAAClP,MAAM2uB,EAAc3uB,EAAE,MAAM,CAAC,EAClC,KAAA;AAEH,aAAAiuB,EAAS,uBAAuBa,GAChCb,EAAS,sBAAsBc,GAC/BF,EAAS,KAAKZ,CAAQ,GAEfY;AAAA,IACT;AAEA,IAAAA,EAAS,KAAKZ,CAAQ;AAGtB,UAAMe,IAAYtB,EAAM,OAAO,CAAC1tB,MAAMA,EAAE,WAAW4uB,KAAiB5uB,EAAE,iBAAiBiP,EAAgB;AACvG,QAAI+f,EAAU,SAAS;AACrB,YAAAtgB,GAAQ,MAAM,iBAAiB,GACzB,IAAI,MAAM,iBAAiB;AAEnC,WAAIsgB,EAAU,WAAW,KAEvBA,EAAU,QAAQ,CAACpC,MAAS;;AAC1B,YAAMqC,IAAeN,EAAc/B,EAAK,MAAM;AAC9C,MAAAiC,EAAS,KAAK,GAAGI,CAAY,GAC7BhB,EAAS,SAAOx7B,IAAAw8B,EAAa,CAAC,MAAd,gBAAAx8B,EAAiB,OAAM;AAAA,IACzC,CAAC,GAGIo8B;AAAA,EACT,GACMpmB,IAAUkmB,EAAc5gB,EAAU,EAAE;AAE1C,SAAAtF,EAAQ,MAAA,GACRgY,EAAO,UAAUhY,GACVgY;AACT,GAGa4K,KAAyC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,IACE,eAAe;AAAA,IACf,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,QACd,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,EACF;AAEJ,GAEarB,KAAsB,SAAUxa,GAAWmd,GAAkB;AAGxE,SAF0B7C,GAAA,EACM,SAAA,EACnB,KAAK,CAAC8C,MAASA,EAAK,WAAW,OAAOpd,EAAK,EAAE,MAAMod,EAAK,gBAAgB3d,QAAsB0d,CAAQ;AACrH,GAEavC,KAAoB,SAAU/oB,GAAmB6oB,GAAkBkE,GAAuB;;AAErG,QAAMhB,IAAkB;AAAA,IACtB,GAAG/rB,EAAY,SAAS;AAAA,IACxB,GAAGA,EAAY,SAAS,OAAK5O,IAAA4O,EAAY,aAAZ,gBAAA5O,EAAsB,WAAU,KAAK;AAAA,EAAA,GAI9DyL,IAAU;AAAA,IACd,IAAIgsB,EAAY;AAAA,IAChB,MAAMA,EAAY;AAAA,IAClB,UAAUkD;AAAA;AAAA,IAEV,YAAY,IAAIre,EAA0B;AAAA,IAC1C,MAAM;AAAA,MACJ,GAAGmb;AAAA,IAAA;AAAA,EACL;AAYF,SAAO;AAAA,IACL,SATc;AAAA,MACd,IAAI,GAAG7oB,EAAY,KAAK,EAAE,IAAInD,EAAQ,EAAE;AAAA,MACxC,QAAQ,OAAOmD,EAAY,KAAK,EAAE;AAAA,MAClC,cAA8B4N;AAAA,MAC9B,QAAQ/Q,EAAQ;AAAA,MAChB,cAAc8Q;AAAA,IAAA;AAAA,IAKd,SAAA9Q;AAAA,EAAA;AAEJ,GC/NagxB,KAAuB,CAACp4B,MAAiC;;AACpE,QAAM,EAAE,SAAAq4B,EAAA,IAAYrF,GAAA,GACd,CAACsF,GAAWC,CAAY,IAAIvuB,EAAS,EAAK,GAC1C,CAAC6mB,GAAO2H,GAAUC,CAAa,IAAIC,GAAmB;AAAA,IAC1D;AAAA,MACE,IAAIjC,GAAU;AAAA,MACd,MAAM,EAAE,IAAIA,GAAU,WAAA;AAAA,MACtB,UAAU,EAAE,GAAG,GAAG,GAAG,EAAA;AAAA,MACrB,MAAMA,GAAU;AAAA,MAChB,YAAY,IAAIxe,EAA0B;AAAA,MAC1C,YAAY;AAAA,IAAA;AAAA,EACd,CACD,GACK,CAAC2e,GAAO+B,GAAUC,CAAa,IAAIC,GAAmB,CAAA,CAAE,GAExDC,IAAgBplB,EAAc,EAAE;AACtC,EAAAolB,EAAc,UAAUlC;AAExB,QAAMmC,IAAYjV,EAAuB,CAAC7R,MAAW0mB,EAAS,CAACK,MAAQC,GAAQ,EAAE,GAAGhnB,KAAU+mB,CAAG,CAAC,GAAG,CAACL,CAAQ,CAAC,GAEzGO,IAAgBxlB,EAAe,EAAE;AACvC,EAAAwlB,EAAc,UAAUrI;AAExB,QAAM,CAACsI,GAAWC,CAAY,IAAIpvB,EAAS,EAAK,GAG1CqvB,IAAcvV;AAAA,IAClB,CAAChmB,MAAmC;AAClC,YAAMw7B,IAAa3C,GAAuBuC,EAAc,SAAStC,GAAO,EAAE,WAAW,MAAM;AAC3F,MAAA4B,EAAS,CAAC,GAAGc,EAAW,KAAK,CAAC,GAC9BX,EAAS,CAAC,GAAGW,EAAW,KAAK,CAAC,GAC9B,WAAW,MAAM;AACf,QAAAf,EAAa,EAAI,IACbz6B,KAAA,gBAAAA,EAAS,aAAY,MACvBu6B,EAAQ,CAAA,CAAE;AAAA,MAEd,CAAC;AAAA,IACH;AAAA,IACA,CAACzB,GAAOyB,GAASM,GAAUH,CAAQ;AAAA,EAAA;AAGrC,EAAAjjB,EAAU,MAAM;AAEd,UAAM,EAAE,OAAAsb,GAAO,OAAA+F,MAAUW,GAA2Bv3B,EAAM,KAAK;AAC/D,IAAAw4B,EAAS3H,CAAK,GACd8H,EAAS/B,CAAK,GACd,WAAW,MAAM;AACf,MAAAwC,EAAa,EAAI;AAAA,IACnB,GAAG,GAAG;AAAA,EACR,GAAG,CAACp5B,EAAM,OAAO24B,GAAUH,CAAQ,CAAC;AAEpC,QAAMe,IAAWzV,EAAY,MAAM;AACjC,eAAW,MAAM;;AACf,YAAM0V,IAAiB9B,GAAwB,EAAE,OAAOwB,EAAc,SAAS,OAAOJ,EAAc,SAAS;AAC7G,OAAAn9B,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsBw5B;AAAA,IACxB,CAAC;AAAA,EACH,GAAG,CAACx5B,CAAK,CAAC;AAEV,SACE,gBAAA0C;AAAA,IAAC+wB,GAAkB;AAAA,IAAlB;AAAA,MACC,OAAO;AAAA,QACL,YAAW93B,IAAAqE,EAAM,kBAAN,gBAAArE,EAAqB;AAAA,QAChC,YAAWwK,KAAAD,IAAAlG,EAAM,kBAAN,gBAAAkG,EAAqB,cAArB,gBAAAC,EAAgC;AAAA,QAC3C,cAAcozB;AAAA,QACd,WAAWv5B,EAAM,cAAc;AAAA,MAAA;AAAA,MAGjC,UAAA,gBAAA0C;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,UAAU;AAAA,UAAA;AAAA,UAGZ,UAAA,gBAAAF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,MAAM;AAAA,gBACN,UAAU;AAAA,cAAA;AAAA,cAGZ,UAAA;AAAA,gBAAA,gBAAAE;AAAA,kBAACI;AAAA,kBAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,KAAK;AAAA,sBACL,OAAO;AAAA,sBACP,QAAQ;AAAA,oBAAA;AAAA,oBAEV,SAAS,MAAMu2B,EAAY,EAAE,SAAS,IAAO;AAAA,oBAC9C,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAIA,CAACf,KACA,gBAAA51B;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,MAAM;AAAA,sBACN,KAAK;AAAA,sBACL,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,iBAAiB;AAAA,sBACjB,QAAQ;AAAA,oBAAA;AAAA,kBACV;AAAA,gBAAA;AAAA,gBAGHy2B,KACC,gBAAA32B;AAAA,kBAACi3B;AAAA,kBAAA;AAAA,oBACC,OAAA5I;AAAA,oBACA,OAAA+F;AAAA,oBACA,eAAe,CAAC8C,MAAY;AAC1B,sBAAAjB,EAAciB,CAAO,GACrBH,EAAA;AAAA,oBACF;AAAA,oBACA,eAAe,CAACG,MAAY;AAC1B,sBAAAd,EAAcc,CAAO,GACrBH,EAAA;AAAA,oBACF;AAAA,oBACA,WAAW,CAACI,MAAe;AACzB,sBAAAZ,EAAUY,CAAU,GACpBJ,EAAA;AAAA,oBACF;AAAA,oBACA,oBAAoB;AAAA,sBAClB,MAAM;AAAA,oBAAA;AAAA,oBAER,SAAS;AAAA,oBACT,SAAS;AAAA,oBACT,QAAQ,MAAM;AACZ,sBAAAF,EAAA;AAAA,oBACF;AAAA,oBACA,SAAO;AAAA,oBACP,WAAW3C;AAAA,oBAEX,UAAA;AAAA,sBAAA,gBAAAh0B,EAACk3B,IAAA,EAAW;AAAA,wCACXC,IAAA,EAAS;AAAA,wCACTC,IAAA,CAAA,CAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GAEaC,KAAmB,CAAC/5B,MAAiC;AAChE,QAAM,CAACyU,GAAMiL,CAAO,IAAI1V,EAAS,EAAK,GAEhCgwB,IAActmB,EAAO1T,EAAM,KAAK,GAEhCi6B,IAAuB,OAAOC,MAAoB;;AAEtD,UAAMC,IAAS,QAAMh0B,KAAAD,KAAAvK,IAAAqE,EAAM,kBAAN,gBAAArE,EAAqB,cAArB,gBAAAuK,EAAgC,kBAAhC,gBAAAC,EAA+C,IAA2B;AAC/F,IAAAg0B,KAAA,QAAAA,EAAQ,OAAO,QAAQD;AAAA,EACzB,GAEME,IAAcp6B,EAAM,YACxB,gBAAA0C;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAO;AAAA,QACL,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,MAEb,UAAA;AAAA,IAAA;AAAA,EAAA;AAKH,SACE,gBAAAN,EAAAiH,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA/G;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,YAAY;AAEnB,gBAAMu3B,EAAqB,EAAI,GAC/Bva,EAAQ,EAAI;AAAA,QACd;AAAA,QAEC,UAAA0a;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH,gBAAA13B;AAAA,MAAC6d;AAAA,MAAA;AAAA,QACC,gBAAc;AAAA,QACd,MAAA9L;AAAA,QACA,UAAQ;AAAA,QACR,OAAM;AAAA,QACN,OAAM;AAAA,QACN,UAAU,MAAM;AACd,UAAAiL,EAAQ,EAAK,GACbua,EAAqB,EAAK;AAAA,QAC5B;AAAA,QACA,MAAM,YAAY;;AAChB,WAAAt+B,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsBg6B,EAAY,UAClC,MAAMC,EAAqB,EAAK,GAChCva,EAAQ,EAAK;AAAA,QACf;AAAA,QAEA,UAAA,gBAAAhd;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,YAAA;AAAA,YAGV,4BAAC23B,IAAA,EACC,UAAA,gBAAA33B;AAAA,cAAC01B;AAAA,cAAA;AAAA,gBACE,GAAGp4B;AAAA,gBACJ,eAAe,CAAC2X,MAAW;AACzB,kBAAAqiB,EAAY,UAAUriB;AAAA,gBACxB;AAAA,cAAA;AAAA,YAAA,EACD,CACH;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAEAoiB,GAAiB,aAAa;ACnPvB,MAAMO,KAA8B;AAAA,EACzC,kBAAAP;AACF;;GCEaQ,KAAgB,CAACv6B,MAAqE;;AACjG,QAAM,EAAE,MAAAjF,MAASiF,GACXwwB,MAAa70B,IAAAZ,KAAA,gBAAAA,EAAM,aAAN,gBAAAY,EAAgB,MAAM,UAAS,CAAA,GAC5Cue,IAAUxG,EAAiC,IAAI;AAErD,EAAA6B,EAAU,MAAM;AACd,UAAMilB,IAAS,MAAM;;AACnB,YAAM7iB,MAAShc,IAAAZ,KAAA,gBAAAA,EAAM,kBAAN,gBAAAY,EAAA,KAAAZ,OAA2B,CAAA;AAC1C,OAAAmL,IAAAgU,EAAQ,YAAR,QAAAhU,EAAiB,UAAUyR;AAAA,IAC7B;AACA,WAAA6iB,EAAA,GACAz/B,KAAA,QAAAA,EAAM,QAAQ,GAAG,gBAAgBy/B,IAC1B,MAAM;AACX,MAAAz/B,KAAA,QAAAA,EAAM,QAAQ,IAAI,gBAAgBy/B;AAAA,IACpC;AAAA,EACF,GAAG,CAACz/B,CAAI,CAAC;AAET,QAAMqe,MAAQlT,IAAAnL,KAAA,gBAAAA,EAAM,kBAAN,gBAAAmL,EAAA,KAAAnL,OAA2B,CAAA,GAEnC+d,IAAwD,CAACpf,MAAQ;AACrE,IAAAqB,KAAA,QAAAA,EAAM,YAAY;AAAA,MAChB,OAAOrB;AAAA,IAAA;AAAA,EAEX,GAEMs1B,IAA0D,CAACjV,GAAUF,MAAe;AACxF,IAAK9e,MAGLA,EAAK,MAAM,YAAYA,EAAK,MAAM,aAAa,CAAA,GAC/CA,EAAK,MAAM,UAAU,cAAcA,EAAK,MAAM,UAAU,eAAe,CAAA,GACvEA,EAAK,MAAM,UAAU,YAAYgf,EAAS,KAAK,GAAG,CAAC,IAAI;AAAA,MACrD,MAAMA,EAAS,KAAK,GAAG;AAAA,MACvB,QAAQF;AAAA,IAAA;AAAA,EAEZ,GAEMrB,KAAkBrS,IAAAnG,EAAM,UAAU,WAAhB,gBAAAmG,EAAwB;AAEhD,SACE,gBAAAzD,EAAC,OAAA,EAAI,WAAWD,GAAO,gBACrB,UAAA,gBAAAC;AAAA,IAACguB;AAAA,IAAA;AAAA,MACC,WAAW1wB,EAAM;AAAA,MAEjB,QAAQjF,KAAA,gBAAAA,EAAM;AAAA,MACd,sBAAqBA,KAAA,gBAAAA,EAAM,MAAM,UAAU,gBAAe,CAAA;AAAA,MAC1D,gBAAAi0B;AAAA,MACA,YAAAwB;AAAA,MACA,cAAcpX;AAAA,MACd,KAAKc;AAAA,MACL,iBAAiB;AAAA,QACf,GAAGogB;AAAA,QACH,GAAG9hB;AAAA,MAAA;AAAA,MAEL,eAAAM;AAAA,IAAA;AAAA,IAXK/d,KAAA,gBAAAA,EAAM;AAAA,EAAA,GAaf;AAEJ,GC/Da0/B,KAAuC;AAAA,EAClD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM,CAAC,EAAE,MAAA1/B,GAAM,WAAAsJ,QAAgB,gBAAA3B,EAAC63B,IAAA,EAAc,MAAAx/B,GAAY,WAAAsJ,GAAsB;AAAA,EAChF,MAAM,CAACrE,MAAU;;AACf,aAAOoG,KAAAD,KAAAD,KAAAvK,IAAAqE,EAAM,SAAN,gBAAArE,EAAY,aAAZ,gBAAAuK,EAAsB,MAAM,kBAA5B,gBAAAC,EAA2C,eAA3C,gBAAAC,EAAuD,cAAa;AAAA,EAC7E;AACF,GCEas0B,KAAsB,CAAC16B,MAAoC;AACtE,QAAMjF,IAAOiF,EAAM,MAEb26B,IAAY5/B,EAAK,MAAM,SAAS,CAAA,GAChC0kB,IAAY/L,EAAoC,IAAI;AAC1D,EAAA6B,EAAU,MAAM;;AACd,UAAMqlB,IAAe7/B,EAAK,MAAM,SAAS,CAAA;AACzC,KAAAY,IAAA8jB,KAAA,gBAAAA,EAAW,YAAX,QAAA9jB,EAAoB,SAAS,KAAK,UAAUi/B,GAAc,MAAM,CAAC;AAAA,EACnE,GAAG,CAAC7/B,CAAI,CAAC;AAET,QAAM+d,IAAgB,CAAC8G,MAAuB;AAC5C,QAAI;AACF,YAAMjI,IAAS,KAAK,MAAMiI,KAAa,IAAI;AAC3C,MAAA7kB,EAAK,MAAM,QAAQ4c,GACnB5c,EAAK,YAAA;AAAA,IACP,SAASmO,GAAG;AACV,cAAQ,KAAKA,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,SACE,gBAAAxG,EAAA+G,GAAA,EACE,UAAA,gBAAA/G;AAAA,IAAC+a;AAAA,IAAA;AAAA,MACC,cAAc,KAAK,UAAUkd,GAAW,MAAM,CAAC;AAAA,MAC/C,UAAU;AAAA,MACV,SAAS;AAAA,QACP,iBAAiB;AAAA;AAAA,QAEjB,SAAS;AAAA,QACT,SAAS,EAAE,SAAS,GAAA;AAAA,QACpB,kBAAkB;AAAA;AAAA,QAElB,4BAA4B;AAAA,QAC5B,SAAS;AAAA,MAAA;AAAA,MAEX,YAAY,CAAC9c,MAAW;AACtB,QAAA4B,EAAU,UAAU5B;AAAA,MACtB;AAAA,MACA,UAAU/E;AAAA,IAAA;AAAA,EAAA,GAEd;AAEJ,GAEa+hB,KAA6C;AAAA,EACxD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM,CAAC,EAAE,MAAA9/B,GAAM,WAAAsJ,QACRtJ,IAGE,gBAAA2H,EAACg4B,IAAA,EAAoB,MAAA3/B,GAAY,WAAAsJ,EAAA,CAAsB,IAFrD,gBAAA3B,EAAA+G,GAAA,EAAE;AAAA,EAIb,MAAM,CAACzJ,MAAU;;AACf,aAAOoG,KAAAD,KAAAD,KAAAvK,IAAAqE,EAAM,SAAN,gBAAArE,EAAY,aAAZ,gBAAAuK,EAAsB,MAAM,kBAA5B,gBAAAC,EAA2C,eAA3C,gBAAAC,EAAuD,WAAU;AAAA,EAC1E;AACF;;GCvDMoqB,KAAiC;AAAA,EACrC;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,IAAA;AAAA,IAEP,WAAW;AAAA,IACX,SAAS;AAAA,MACP;AAAA,QACE,eAAe;AAAA,QACf,OAAO;AAAA,UACL,UAAU;AAAA,UACV,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,IAAA;AAAA,IAEP,WAAW;AAAA,IACX,SAAS,CAAC,iBAAiB,kBAAkB;AAAA,EAAA;AAAA,EAE/C;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,MACP;AAAA,QACE,eAAe;AAAA,QACf,OAAO;AAAA,UACL,UAAU;AAAA,YACR,MAAM;AAAA,UAAA;AAAA,UAER,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,OAAO;AAAA,cACP,WAAW;AAAA,cACX,SAAS,CAAC,iBAAiB,kBAAkB;AAAA,YAAA;AAAA,YAE/C;AAAA,cACE,MAAM;AAAA,cACN,OAAO;AAAA,cACP,WAAW;AAAA,cACX,SAAS;AAAA,gBACP;AAAA,kBACE,eAAe;AAAA,kBACf,cAAc,CAAA;AAAA,kBACd,OAAO;AAAA,oBACL,MAAM;AAAA,sBACJ,SAAS,CAAC,cAAc,kBAAkB;AAAA,sBAC1C,cAAc,CAAA;AAAA,oBAAC;AAAA,kBACjB;AAAA,gBACF;AAAA,gBAEF;AAAA,gBACA;AAAA,cAAA;AAAA,YACF;AAAA,YAEF;AAAA,cACE,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,KAAK;AAAA,cAAA;AAAA,cAEP,WAAW;AAAA,cACX,SAAS,CAAC,cAAc;AAAA,YAAA;AAAA,YAE1B;AAAA,cACE,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,KAAK;AAAA,cAAA;AAAA,cAEP,WAAW;AAAA,cACX,SAAS,CAAC,cAAc;AAAA,YAAA;AAAA,YAE1B;AAAA,cACE,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,KAAK;AAAA,cAAA;AAAA,cAEP,WAAW;AAAA,cACX,SAAS,CAAC,kBAAkB;AAAA,YAAA;AAAA,YAE9B;AAAA,cACE,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,OAAO;AAAA;AAAA,gBACP,KAAK;AAAA,cAAA;AAAA,cAEP,WAAW;AAAA,cACX,SAAS;AAAA,gBACP;AAAA,kBACE,eAAe;AAAA,kBACf,OAAO;AAAA,oBACL,QAAQ;AAAA,kBAAA;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QAEF,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,MAAM,CAAA;AAAA,QAAC;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,IAAA;AAAA,IAEP,WAAW;AAAA,IACX,SAAS,CAAC,cAAc;AAAA,EAAA;AAAA,EAE1B;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OACE,gBAAAhuB,EAAAiH,GAAA,EAAE,UAAA;AAAA,QAAA;AAAA,0BACM,MAAA,EAAG;AAAA,QAAK;AAAA,MAAA,GAChB;AAAA,MAEF,KAAK;AAAA,IAAA;AAAA,IAEP,WAAW;AAAA,IACX,SAAS,CAAC,cAAc;AAAA,EAAA;AAE5B,GAEaqxB,KAAe,CAAC96B,MAA6B;;AACxD,QAAM,EAAE,MAAAjF,MAASiF,GAEX+6B,IAAkB/1B,EAAQ,MAAM;;AACpC,QAAIzH,IAAUizB;AAMd,WAFE,IAACpqB,KAAAD,KAAAD,KAAAvK,IAAAZ,KAAA,gBAAAA,EAAM,aAAN,gBAAAY,EAAgB,MAAM,kBAAtB,gBAAAuK,EAAqC,eAArC,gBAAAC,EAAiD,mBAAjD,QAAAC,EAAiE,SAClE,GAACvF,IAAA9F,KAAA,gBAAAA,EAAM,aAAN,QAAA8F,EAAgB,MAAM,iBAEvBtD,IAAUA,EAAQ,OAAO,CAAC9B,OAAQA,KAAA,gBAAAA,EAAY,UAAS,MAAM,IAI7C,IAACkR,MAAAD,KAAAD,KAAAD,IAAAzR,KAAA,gBAAAA,EAAM,aAAN,gBAAAyR,EAAgB,MAAM,kBAAtB,gBAAAC,EAAqC,eAArC,gBAAAC,EAAiD,mBAAjD,QAAAC,GAAiE,YAGlFpP,IAAUA,EAAQ,OAAO,CAAC9B,OAAQA,KAAA,gBAAAA,EAAY,UAAS,WAAW,IAG7D8B;AAAA,EACT,GAAG;AAAA,KACD6I,KAAAD,KAAAD,KAAAvK,IAAAZ,KAAA,gBAAAA,EAAM,aAAN,gBAAAY,EAAgB,MAAM,kBAAtB,gBAAAuK,EAAqC,eAArC,gBAAAC,EAAiD,mBAAjD,gBAAAC,EAAiE;AAAA,KACjEsG,KAAAD,KAAAD,KAAA3L,IAAA9F,KAAA,gBAAAA,EAAM,aAAN,gBAAA8F,EAAgB,MAAM,kBAAtB,gBAAA2L,EAAqC,eAArC,gBAAAC,EAAiD,mBAAjD,gBAAAC,EAAiE;AAAA,KACjEC,IAAA5R,KAAA,gBAAAA,EAAM,aAAN,gBAAA4R,EAAgB,MAAM;AAAA,EAAA,CACvB,GAEKqiB,IAA0D,CAACjV,GAAUF,MAAe;AACxF,IAAK9e,MAGLA,EAAK,MAAM,YAAYA,EAAK,MAAM,aAAa,CAAA,GAC/CA,EAAK,MAAM,UAAU,gBAAgBA,EAAK,MAAM,UAAU,iBAAiB,CAAA,GAC3EA,EAAK,MAAM,UAAU,cAAcgf,EAAS,KAAK,GAAG,CAAC,IAAI;AAAA,MACvD,MAAMA,EAAS,KAAK,GAAG;AAAA,MACvB,QAAQF;AAAA,IAAA;AAAA,EAEZ,GAEMK,IAAUxG,EAAiC,IAAI;AAErD,EAAA6B,EAAU,MAAM;;AACd,UAAMylB,IAAUjgC,KAAA,gBAAAA,EAAM,MAAM,MACtBumB,IAAW;AAAA,MACf,IAAIvmB,KAAA,gBAAAA,EAAM;AAAA,MACV,YAAWA,KAAA,gBAAAA,EAAM,MAAM,cAAa;AAAA,MACpC,MAAM;AAAA,QACJ,OAAMigC,KAAA,gBAAAA,EAAS,SAAQ;AAAA,QACvB,OAAMA,KAAA,gBAAAA,EAAS,SAAQ,CAAA;AAAA,QACvB,UAASA,KAAA,gBAAAA,EAAS,YAAW;AAAA,QAC7B,WAAUA,KAAA,gBAAAA,EAAS,aAAY;AAAA,QAC/B,MAAKA,KAAA,gBAAAA,EAAS,QAAO;AAAA,QACrB,OAAMA,KAAA,gBAAAA,EAAS,SAAQ;AAAA,MAAA;AAAA,MAEzB,OAAOjgC,KAAA,gBAAAA,EAAM,MAAM;AAAA,MACnB,UAAUA,KAAA,gBAAAA,EAAM,MAAM;AAAA,IAAA;AAExB,KAAAY,IAAAue,EAAQ,YAAR,QAAAve,EAAiB,UAAU2lB;AAAA,EAC7B,GAAG,CAACvmB,CAAI,CAAC;AAET,QAAM+d,IAAgB,CAACnB,MAAwE;AAC7F,IAAK5c,MAGLA,EAAK,MAAM,OAAO4c,EAAO,MACzB5c,EAAK,MAAM,YAAY4c,EAAO,WAC9B5c,EAAK,MAAM,QAAQ4c,EAAO,OAC1B5c,EAAK,MAAM,WAAW4c,EAAO,UAC7B5c,EAAK,YAAA;AAAA,EACP;AACA,SAAKA,IAKH,gBAAA2H,EAAC,OAAA,EAAI,WAAWD,GAAO,YACrB,UAAA,gBAAAC;AAAA,IAACguB;AAAA,IAAA;AAAA,MACC,SAAQ9jB,IAAA5M,EAAM,SAAN,gBAAA4M,EAAY;AAAA,MAEpB,WAAW5M,EAAM;AAAA,MACjB,uBAAqB6M,IAAA9R,EAAK,MAAM,cAAX,gBAAA8R,EAAsB,kBAAiB,CAAA;AAAA,MAC5D,gBAAAmiB;AAAA,MACA,YAAY+L;AAAA,MACZ,cAAc,CAAA;AAAA,MACd,KAAK7gB;AAAA,MACL,eAAApB;AAAA,IAAA;AAAA,IAPK/d,EAAK;AAAA,EAAA,GASd,IAhBO,gBAAA2H,EAAA+G,GAAA,EAAE;AAkBb,GAEawxB,KAAsC;AAAA,EACjD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM,CAAC,EAAE,MAAAlgC,GAAM,WAAAsJ,QACRtJ,IAGE,gBAAA2H,EAACo4B,IAAA,EAAa,MAAA//B,GAAY,WAAAsJ,EAAA,CAAsB,IAF9C,gBAAA3B,EAAA+G,GAAA,EAAE;AAAA,EAIb,MAAM,CAACzJ,MAAU;;AACf,aAAOoG,KAAAD,KAAAD,KAAAvK,IAAAqE,EAAM,SAAN,gBAAArE,EAAY,aAAZ,gBAAAuK,EAAsB,MAAM,kBAA5B,gBAAAC,EAA2C,eAA3C,gBAAAC,EAAuD,aAAY;AAAA,EAC5E;AACF;;;;;;;;;;;;;GCjQMmb,KAAgB;AAAA,EAuJpB,aAAa;AAAA,IACX,iBAAiB;AAAA,MACf,QAAQ,CAAC,UAAU,YAAY,cAAc,gBAAgB,iBAAiB,SAAS;AAAA,IAAA;AAAA,IAEzF,eAAe;AAAA,MACb,QAAQ,CAAC,YAAY,UAAU,YAAY,cAAc,SAAS;AAAA,IAAA;AAAA,IAEpE,cAAc;AAAA,MACZ,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,KAAK,EAAE,QAAQ,GAAC;AAAA,IAChB,WAAW,EAAE,QAAQ,GAAC;AAAA,IACtB,mBAAmB,EAAE,QAAQ,GAAC;AAAA,IAC9B,uBAAuB;AAAA,MACrB,QAAQ,CAAC,aAAa,qBAAqB,UAAU,SAAS;AAAA,IAAA;AAAA,IAEhE,sBAAsB,EAAE,QAAQ,GAAC;AAAA,IACjC,uBAAuB;AAAA,MACrB,QAAQ,CAAC,aAAa,QAAQ,YAAY,MAAM;AAAA,IAAA;AAAA,IAElD,6BAA6B,EAAE,QAAQ,CAAC,UAAU,EAAA;AAAA,IAClD,kBAAkB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACnC,wBAAwB,EAAE,QAAQ,CAAC,UAAU,SAAS,EAAA;AAAA,IACtD,6BAA6B;AAAA,MAC3B,QAAQ,CAAC,kBAAkB,QAAQ,WAAW,eAAe,YAAY,UAAU,YAAY,cAAc,SAAS;AAAA,IAAA;AAAA,IAExH,uBAAuB,EAAE,QAAQ,CAAC,UAAU,SAAS,EAAA;AAAA,IACrD,YAAY,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAChC,yBAAyB,EAAE,QAAQ,CAAC,SAAS,SAAS,QAAQ,EAAA;AAAA,IAC9D,yBAAyB;AAAA,MACvB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,mBAAmB,EAAE,QAAQ,CAAC,cAAc,eAAe,aAAa,EAAA;AAAA,IACxE,oBAAoB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACxC,oBAAoB;AAAA,MAClB,QAAQ,CAAC,WAAW,qBAAqB,qBAAqB,+BAA+B,+BAA+B,OAAO;AAAA,IAAA;AAAA,IAErI,qBAAqB;AAAA,MACnB,QAAQ,CAAC,cAAc,eAAe,aAAa;AAAA,IAAA;AAAA,IAErD,uBAAuB;AAAA,MACrB,QAAQ,CAAC,QAAQ,UAAU,SAAS,UAAU,KAAK;AAAA,IAAA;AAAA,IAErD,qBAAqB;AAAA,MACnB,QAAQ,CAAC,aAAa,UAAU,YAAY,YAAY,SAAS,OAAO;AAAA,IAAA;AAAA,IAE1E,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,WAAW,OAAO,EAAA;AAAA,IACxD,QAAQ,EAAE,QAAQ,GAAC;AAAA,IACnB,mBAAmB,EAAE,QAAQ,CAAC,YAAY,UAAU,EAAA;AAAA,IACpD,gBAAgB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACpC,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,gBAAgB;AAAA,MACd,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO;AAAA,IAAA;AAAA,IAExG,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,uBAAuB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC3C,6BAA6B,EAAE,QAAQ,GAAC;AAAA,IACxC,8BAA8B,EAAE,QAAQ,GAAC;AAAA,IACzC,uBAAuB;AAAA,MACrB,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO;AAAA,IAAA;AAAA,IAExG,uBAAuB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IAC3D,gBAAgB,EAAE,QAAQ,CAAC,OAAO,EAAA;AAAA,IAClC,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,sBAAsB,EAAE,QAAQ,GAAC;AAAA,IACjC,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,uBAAuB,EAAE,QAAQ,CAAC,UAAU,SAAS,SAAS,SAAS,EAAA;AAAA,IACvE,sBAAsB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvC,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,qBAAqB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACzC,qBAAqB;AAAA,MACnB,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO;AAAA,IAAA;AAAA,IAExG,qBAAqB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACzD,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,sBAAsB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC1C,sBAAsB;AAAA,MACpB,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO;AAAA,IAAA;AAAA,IAExG,sBAAsB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IAC1D,cAAc,EAAE,QAAQ,GAAC;AAAA,IACzB,oBAAoB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACxC,0BAA0B,EAAE,QAAQ,GAAC;AAAA,IACrC,2BAA2B,EAAE,QAAQ,GAAC;AAAA,IACtC,oBAAoB;AAAA,MAClB,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO;AAAA,IAAA;AAAA,IAExG,oBAAoB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACxD,gBAAgB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACpD,wBAAwB,EAAE,QAAQ,CAAC,SAAS,OAAO,EAAA;AAAA,IACnD,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc,aAAa,EAAA;AAAA,IACpD,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACzB,eAAe;AAAA,MACb,QAAQ,CAAC,UAAU,QAAQ,SAAS,gBAAgB,cAAc,gBAAgB,UAAU,QAAQ,QAAQ,UAAU,OAAO;AAAA,IAAA;AAAA,IAE/H,gBAAgB;AAAA,MACd,QAAQ,CAAC,UAAU,QAAQ,SAAS,gBAAgB,cAAc,gBAAgB,UAAU,QAAQ,QAAQ,UAAU,OAAO;AAAA,IAAA;AAAA,IAE/H,gBAAgB;AAAA,MACd,QAAQ,CAAC,QAAQ,SAAS,gBAAgB,cAAc,cAAc;AAAA,IAAA;AAAA,IAExE,gBAAgB,EAAE,QAAQ,CAAC,UAAU,KAAK,EAAA;AAAA,IAC1C,eAAe,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,QAAA;AAAA,IACzC,OAAO,EAAE,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,OAAO,EAAA;AAAA,IACjD,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvB,OAAO,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC3B,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,eAAe,EAAE,QAAQ,CAAC,QAAQ,SAAS,EAAA;AAAA,IAC3C,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IACjC,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,qBAAqB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IACzC,qBAAqB;AAAA,MACnB,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO;AAAA,IAAA;AAAA,IAExG,qBAAqB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACzD,eAAe,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAA;AAAA,IACvC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACjC,SAAS;AAAA,MACP,QAAQ,CAAC,UAAU,eAAe,kBAAkB,iBAAiB,UAAU,QAAQ,YAAY;AAAA,IAAA;AAAA,IAErG,qBAAqB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACtC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAClC,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,WAAW,EAAE,QAAQ,CAAC,OAAO,KAAK,EAAA;AAAA,IAClC,SAAS;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,eAAe,EAAE,QAAQ,CAAC,QAAQ,MAAM,EAAA;AAAA,IACxC,MAAM,EAAE,QAAQ,GAAC;AAAA,IACjB,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,MAAM,EAAE,QAAQ,CAAC,QAAQ,MAAM,EAAA;AAAA,IAC/B,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,kBAAkB;AAAA,MAChB,QAAQ,CAAC,UAAU,kBAAkB,OAAO,aAAa;AAAA,IAAA;AAAA,IAE3D,aAAa;AAAA,MACX,QAAQ,CAAC,UAAU,kBAAkB,UAAU,OAAO,eAAe,QAAQ,cAAc;AAAA,IAAA;AAAA,IAE7F,aAAa,EAAE,QAAQ,GAAC;AAAA,IACxB,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,aAAa,EAAE,QAAQ,CAAC,UAAU,QAAQ,cAAc,EAAA;AAAA,IACxD,OAAO,EAAE,QAAQ,CAAC,QAAQ,SAAS,QAAQ,gBAAgB,YAAY,EAAA;AAAA,IACvE,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,aAAA;AAAA,IACvC,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,aAAA;AAAA,IACvC,MAAM,EAAE,QAAQ,GAAC;AAAA,IACjB,gBAAgB;AAAA,MACd,QAAQ,CAAC,QAAQ,SAAS,QAAQ,YAAY,UAAU;AAAA,IAAA;AAAA,IAE1D,eAAe;AAAA,MACb,QAAQ,CAAC,QAAQ,WAAW,WAAW,aAAa,cAAc,OAAO;AAAA,IAAA;AAAA,IAE3E,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC5C,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,EAAA;AAAA,IACnD,0BAA0B,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC7C,aAAa;AAAA,MACX,QAAQ,CAAC,YAAY,WAAW,SAAS,UAAU,SAAS,WAAW,YAAY,aAAa,UAAU,SAAS;AAAA,IAAA;AAAA,IAErH,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,MAAM,EAAA;AAAA,IAC7C,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,cAAc,EAAE,QAAQ,CAAC,UAAU,UAAU,SAAS,EAAA;AAAA,IACtD,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,SAAS,QAAQ,EAAA;AAAA,IACtD,gBAAgB,EAAE,QAAQ,CAAC,UAAU,YAAY,EAAA;AAAA,IACjD,2BAA2B,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC9C,qBAAqB;AAAA,MACnB,QAAQ,CAAC,UAAU,cAAc,kBAAkB,eAAe,mBAAmB,WAAW,cAAc;AAAA,IAAA;AAAA,IAEhH,2BAA2B,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC9C,0BAA0B,EAAE,QAAQ,CAAC,UAAU,MAAM,EAAA;AAAA,IACrD,wBAAwB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAC3C,yBAAyB,EAAE,QAAQ,CAAC,UAAU,OAAO,OAAO,EAAA;AAAA,IAC5D,eAAe;AAAA,MACb,QAAQ,CAAC,QAAQ,UAAU,WAAW,UAAU,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IAAA;AAAA,IAE/G,KAAK,EAAE,QAAQ,CAAC,cAAc,EAAA;AAAA,IAC9B,MAAM,EAAE,QAAQ,GAAC;AAAA,IACjB,aAAa,EAAE,QAAQ,GAAC;AAAA,IACxB,qBAAqB,EAAE,QAAQ,GAAC;AAAA,IAChC,kBAAkB,EAAE,QAAQ,CAAC,OAAO,UAAU,OAAO,EAAA;AAAA,IACrD,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAChC,mBAAmB,EAAE,QAAQ,GAAC;AAAA,IAC9B,mBAAmB,EAAE,QAAQ,GAAC;AAAA,IAC9B,qBAAqB,EAAE,QAAQ,GAAC;AAAA,IAChC,YAAY,EAAE,QAAQ,GAAC;AAAA,IACvB,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC7B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAClC,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,yBAAyB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC1C,sBAAsB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvC,uBAAuB;AAAA,MACrB,QAAQ,CAAC,aAAa,SAAS,aAAa,QAAQ,MAAM;AAAA,IAAA;AAAA,IAE5D,QAAQ,EAAE,QAAQ,CAAC,QAAQ,eAAe,eAAe,aAAa,EAAA;AAAA,IACtE,SAAS,EAAE,QAAQ,CAAC,QAAQ,UAAU,MAAM,EAAA;AAAA,IAC5C,qBAAqB,EAAE,QAAQ,GAAC;AAAA,IAChC,oBAAoB,EAAE,QAAQ,CAAC,cAAc,MAAM,EAAA;AAAA,IACnD,WAAW,EAAE,QAAQ,CAAC,QAAQ,SAAS,EAAA;AAAA,IACvC,mBAAmB;AAAA,MACjB,QAAQ,CAAC,UAAU,YAAY,cAAc,gBAAgB,eAAe;AAAA,IAAA;AAAA,IAE9E,iBAAiB;AAAA,MACf,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACvB,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IACrC,eAAe,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IAClC,cAAc;AAAA,MACZ,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC9C,uBAAuB,EAAE,QAAQ,CAAC,UAAU,SAAS,EAAA;AAAA,IACrD,mBAAmB;AAAA,MACjB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACzB,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAClC,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAChC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACjC,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC/B,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC9B,cAAc,EAAE,QAAQ,GAAC;AAAA,IACzB,aAAa,EAAE,QAAQ,GAAC;AAAA,IACxB,kBAAkB;AAAA,MAChB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,cAAc;AAAA,MACZ,QAAQ,CAAC,WAAW,SAAS,QAAQ,QAAQ,YAAY;AAAA,IAAA;AAAA,IAE3D,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,UAAU,SAAS,UAAU,KAAK,EAAA;AAAA,IACxE,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,GAAC;AAAA,IAClB,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,QAAA;AAAA,IAC7C,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,iBAAiB;AAAA,MACf,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO;AAAA,IAAA;AAAA,IAExG,iBAAiB,EAAE,QAAQ,CAAC,UAAU,QAAQ,OAAO,EAAA;AAAA,IACrD,UAAU,EAAE,QAAQ,CAAC,QAAQ,UAAU,UAAU,SAAS,EAAA;AAAA,IAC1D,cAAc,EAAE,QAAQ,CAAC,QAAQ,UAAU,UAAU,SAAS,EAAA;AAAA,IAC9D,cAAc,EAAE,QAAQ,CAAC,QAAQ,UAAU,UAAU,SAAS,EAAA;AAAA,IAC9D,iBAAiB,EAAE,QAAQ,CAAC,UAAU,YAAY,YAAY,EAAA;AAAA,IAC9D,SAAS,EAAE,QAAQ,GAAC;AAAA,IACpB,kBAAkB,EAAE,QAAQ,GAAC;AAAA,IAC7B,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,oBAAoB;AAAA,MAClB,QAAQ,CAAC,UAAU,QAAQ,SAAS,QAAQ,OAAO;AAAA,IAAA;AAAA,IAErD,qBAAqB;AAAA,MACnB,QAAQ,CAAC,UAAU,QAAQ,SAAS,QAAQ,OAAO;AAAA,IAAA;AAAA,IAErD,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC/C,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IAC9B,sBAAsB;AAAA,MACpB,QAAQ,CAAC,UAAU,UAAU,QAAQ,SAAS,KAAK;AAAA,IAAA;AAAA,IAErD,kBAAkB;AAAA,MAChB,QAAQ,CAAC,OAAO,QAAQ,QAAQ,QAAQ,WAAW,UAAU,WAAW,eAAe,kBAAkB,eAAe;AAAA,IAAA;AAAA,IAE1H,UAAU,EAAE,QAAQ,CAAC,YAAY,SAAS,YAAY,UAAU,QAAQ,EAAA;AAAA,IACxE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACzB,sBAAsB;AAAA,MACpB,QAAQ,CAAC,UAAU,QAAQ,SAAS,gBAAgB,cAAc,gBAAgB,UAAU,QAAQ,QAAQ,UAAU,OAAO;AAAA,IAAA;AAAA,IAE/H,uBAAuB;AAAA,MACrB,QAAQ,CAAC,UAAU,QAAQ,SAAS,gBAAgB,cAAc,gBAAgB,UAAU,QAAQ,QAAQ,UAAU,OAAO;AAAA,IAAA;AAAA,IAE/H,uBAAuB;AAAA,MACrB,QAAQ,CAAC,QAAQ,SAAS,gBAAgB,cAAc,cAAc;AAAA,IAAA;AAAA,IAExE,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,cAAc,QAAQ,UAAU,EAAA;AAAA,IAC3D,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACxB,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,QAAQ,EAAA;AAAA,IAC9C,oBAAoB;AAAA,MAClB,QAAQ,CAAC,QAAQ,KAAK,KAAK,SAAS,UAAU,QAAQ,aAAa,WAAW;AAAA,IAAA;AAAA,IAEhF,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAA;AAAA,IACvB,yBAAyB,EAAE,QAAQ,GAAC;AAAA,IACpC,gBAAgB;AAAA,MACd,QAAQ,CAAC,QAAQ,YAAY,aAAa,iBAAiB,aAAa,aAAa;AAAA,IAAA;AAAA,IAEvF,gBAAgB,EAAE,QAAQ,GAAC;AAAA,IAC3B,iBAAiB;AAAA,MACf,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,YAAY,EAAE,QAAQ,GAAC;AAAA,IACvB,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,OAAO,EAAA;AAAA,IAC1C,cAAc;AAAA,MACZ,QAAQ,CAAC,SAAS,OAAO,UAAU,QAAQ,WAAW,SAAS,gBAAgB,aAAa;AAAA,IAAA;AAAA,IAE9F,mBAAmB,EAAE,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,EAAA;AAAA,IAClE,mBAAmB;AAAA,MACjB,QAAQ,CAAC,gBAAgB,QAAQ,YAAY,WAAW;AAAA,IAAA;AAAA,IAE1D,yBAAyB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC7C,wBAAwB;AAAA,MACtB,QAAQ,CAAC,gBAAgB,QAAQ,YAAY,WAAW;AAAA,IAAA;AAAA,IAE1D,wBAAwB;AAAA,MACtB,QAAQ,CAAC,SAAS,OAAO,QAAQ,WAAW,QAAQ;AAAA,IAAA;AAAA,IAEtD,yBAAyB;AAAA,MACvB,QAAQ,CAAC,UAAU,UAAU,UAAU,SAAS,MAAM;AAAA,IAAA;AAAA,IAExD,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,uBAAuB,EAAE,QAAQ,IAAI,MAAM,QAAA;AAAA,IAC3C,0BAA0B,EAAE,QAAQ,CAAC,SAAS,SAAS,QAAQ,OAAO,EAAA;AAAA,IACtE,uBAAuB;AAAA,MACrB,QAAQ,CAAC,UAAU,OAAO,iBAAiB,UAAU,QAAQ,QAAQ,UAAU,UAAU;AAAA,IAAA;AAAA,IAE3F,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,gBAAgB;AAAA,MACd,QAAQ,CAAC,QAAQ,QAAQ,cAAc,iBAAiB;AAAA,IAAA;AAAA,IAE1D,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,UAAU,EAAA;AAAA,IAC9C,eAAe,EAAE,QAAQ,GAAC;AAAA,IAC1B,kBAAkB;AAAA,MAChB,QAAQ,CAAC,QAAQ,sBAAsB,sBAAsB,eAAe;AAAA,IAAA;AAAA,IAE9E,kBAAkB;AAAA,MAChB,QAAQ,CAAC,cAAc,cAAc,aAAa,QAAQ,WAAW;AAAA,IAAA;AAAA,IAEvE,2BAA2B;AAAA,MACzB,QAAQ,CAAC,cAAc,QAAQ,SAAS,QAAQ,OAAO;AAAA,IAAA;AAAA,IAEzD,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,IACtB,WAAW;AAAA,MACT,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,oBAAoB;AAAA,MAClB,QAAQ,CAAC,UAAU,UAAU,QAAQ,SAAS,KAAK;AAAA,IAAA;AAAA,IAErD,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,aAAa,EAAA;AAAA,IACnD,YAAY,EAAE,QAAQ,GAAC;AAAA,IACvB,oBAAoB,EAAE,QAAQ,GAAC;AAAA,IAC/B,uBAAuB,EAAE,QAAQ,GAAC;AAAA,IAClC,uBAAuB,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAA;AAAA,IAC/C,8BAA8B;AAAA,MAC5B,QAAQ,CAAC,kBAAkB,QAAQ,WAAW,eAAe,YAAY,UAAU,YAAY,cAAc,SAAS;AAAA,IAAA;AAAA,IAExH,gBAAgB,EAAE,QAAQ,CAAC,iBAAiB,SAAS,QAAQ,EAAA;AAAA,IAC7D,iBAAiB,EAAE,QAAQ,GAAC;AAAA,IAC5B,eAAe,EAAE,QAAQ,CAAC,OAAO,QAAQ,WAAW,QAAQ,MAAM,EAAA;AAAA,IAClE,kBAAkB;AAAA,MAChB,QAAQ,CAAC,YAAY,UAAU,UAAU,OAAO,SAAS,eAAe,YAAY,KAAK;AAAA,IAAA;AAAA,IAE3F,YAAY,EAAE,QAAQ,CAAC,YAAY,UAAU,SAAS,EAAA;AAAA,IACtD,eAAe;AAAA,MACb,QAAQ,CAAC,UAAU,UAAU,OAAO,YAAY,UAAU;AAAA,IAAA;AAAA,IAE5D,QAAQ,EAAE,QAAQ,GAAC;AAAA,IACnB,OAAO,EAAE,QAAQ,CAAC,QAAQ,eAAe,eAAe,aAAa,EAAA;AAAA,IACrE,eAAe;AAAA,MACb,QAAQ,CAAC,QAAQ,YAAY,WAAW,iBAAiB;AAAA,IAAA;AAAA,IAE3D,cAAc,EAAE,QAAQ,CAAC,UAAU,aAAa,UAAU,EAAA;AAAA,IAC1D,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAA;AAAA,IACnC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAA;AAAA,EAAE;AAElC,GAQaE,KAAkB,OAAO,KAAKF,GAAc,WAAW,GC3vBvD2Z,KAAqBn7B,EAAM,cAA+B;AAAA,EACrE,qBAAqB,CAAA;AAAA,EACrB,iBAAiB,CAAA;AACnB,CAAC,GAEYo7B,KAAwB,MAC5BjnB,GAAWgnB,EAAkB,GCZhCE,KAAyB3Z,GAAgB,IAAI,CAAChmB,OAC3C;AAAA,EACL,OAAOA;AAAA,EAEV,GAmBY4/B,KAAuBhV;AAAA,EAClC,SAAkCrmB,GAAOsmB,GAAK;;AAC5C,UAAM,CAACgV,GAAiBC,CAAkB,IAAIvxB,EAAsB,EAAE,GAChEwxB,IAAoBL,GAAA,GACpB,EAAE,KAAAM,IAAM,SAAA,IAAaz7B,GAErB,CAAC6hB,GAAYC,CAAW,IAAI9X,EAG/B;AAAA,MACD,YAAUrO,IAAAqE,EAAM,UAAN,gBAAArE,EAAa,aAAY;AAAA,MACnC,SAAOuK,IAAAlG,EAAM,UAAN,gBAAAkG,EAAa,UAAS;AAAA,IAAA,CAC9B;AAED,IAAAqP,EAAU,MAAM;AACd,MAAIvV,EAAM,SACR8hB,EAAY9hB,EAAM,KAAK;AAAA,IAE3B,GAAG,CAACA,EAAM,KAAK,CAAC;AAEhB,UAAM,CAAC07B,GAAiBC,CAAkB,IAAI3xB,EAASoxB,EAAsB,GAEvEQ,IAAW,CAACC,MAAuB;AACvC,YAAMC,IAAaV,GAAuB,OAAO,CAAC3/B,MAAOA,EAAG,MAAM,SAASogC,CAAU,CAAC;AACtF,MAGEF,EAHGE,IAGgBC,IAFAV,EAEU;AAAA,IAEjC,GAEMnZ,IAAmB,CAACX,MAAgC;AACxD,MAAAthB,EAAM,cAAc;AAAA,QAClB,GAAGshB;AAAA,MAAA,CACJ;AAAA,IACH,GAEMya,IAAiBroB,EAA6B,IAAI;AAExD,IAAAiT;AAAA,MACEL;AAAA,MACA,OACS;AAAA,QACL,OAAO,MAAM;;AACX,UAAAxE,EAAY;AAAA,YACV,UAAU;AAAA,YACV,OAAO;AAAA,cACL,MAAMjC,GAAmB;AAAA,cACzB,OAAO;AAAA,YAAA;AAAA,UACT,CACD,IACDlkB,IAAAogC,EAAe,YAAf,QAAApgC,EAAwB;AAAA,QAC1B;AAAA,MAAA;AAAA,MAGJ,CAAA;AAAA,IAAC;AAIH,UAAMqgC,IAAgB,MAAM;;AAC1B,UAAIna,EAAW,aAAa,IAAI;AAC9B,QAAA0Z,EAAmB,OAAO;AAC1B;AAAA,MACF;AAEA,MAAAA,EAAmB,EAAE;AACrB,YAAM5hC,KAAMgC,IAAAqE,EAAM,aAAN,gBAAArE,EAAA,KAAAqE,GAAiB6hB;AAC7B,OAAI3b,IAAAvM,KAAA,gBAAAA,EAAK,aAAL,QAAAuM,EAAe,SAAS,UAC1Bq1B,EAAmB,OAAO;AAAA,IAE9B;AAEA,WACE,gBAAA74B,EAAA+G,GAAA,EACE,UAAA,gBAAAjH,EAAC,OAAA,EAAI,WAAWC,GAAO,aACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,GAAO,SACrB,UAAA;AAAA,QAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,GAAO,KACrB,UAAA;AAAA,UAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,GAAO,YAAY,UAAA,QAAI;AAAA,UACxC,gBAAAC;AAAA,YAACyf;AAAA,YAAA;AAAA,cACC,QAAQmZ;AAAA,cACR,UAAUG,MAAQ;AAAA,cAClB,KAAKM;AAAA,cACL,UAAAH;AAAA,cACA,uBAAuB;AAAA,cACvB,OAAO/Z,EAAW;AAAA,cAClB,UAAU,CAACnoB,MAAQ;AACjB,gBAAA6hC,EAAmB,EAAE;AACrB,sBAAM5jB,IAAS;AAAA,kBACb,GAAGkK;AAAA,kBACH,UAAUnoB;AAAA,gBAAA;AAEZ,gBAAAooB,EAAYnK,CAAM,GAClBsK,EAAiBtK,CAAM;AAAA,cACzB;AAAA,cACA,WAAWhV,EAAK,CAACF,GAAO,QAAQ,CAAC;AAAA,cACjC,QAAQ,MAAM;AACZ,gBAAAwf,EAAiBJ,CAAU;AAAA,cAC7B;AAAA,cACA,aAAY;AAAA,cACZ,SAAS6Z;AAAA,YAAA;AAAA,UAAA;AAAA,QACX,GACF;AAAA,QACCD,MAAQ,YACP,gBAAA/4B,EAAC,OAAA,EACC,UAAA,gBAAAA;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAK;AAAA,YACL,MACE,gBAAAJ;AAAA,cAACu5B;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,SAAS;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,YAGJ,SAASD;AAAA,UAAA;AAAA,QAAA,GAEb;AAAA,QAEDP,MAAQ,YACP,gBAAAj5B,EAAC,OAAA,EAAI,WAAWC,GAAO,KACrB,UAAA;AAAA,UAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,GAAO,YAAY,UAAA,SAAK;AAAA,UACzC,gBAAAC;AAAA,YAACuW;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,OAAO;AAAA,kBACL,cAAc;AAAA,gBAAA;AAAA,cAChB;AAAA,cAGF,UAAA,gBAAAvW;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,OAAO;AAAA,kBAAA;AAAA,kBAGT,UAAA,gBAAAA;AAAA,oBAAC4c;AAAA,oBAAA;AAAA,sBACC,OAAOuC,EAAW;AAAA,sBAClB,eAAe;AAAA,wBACb,WAAW2Z,EAAkB;AAAA,wBAC7B,sBAAsB;AAAA,wBACtB,gBAAgB,WAAY;AAAA,wBAAC;AAAA,wBAC7B,UAAU,CAAA;AAAA,wBACV,OAAO;AAAA,wBACP,WAAWA,EAAkB;AAAA,sBAAA;AAAA,sBAE/B,eAAe,SAAU9hC,GAAK;AAC5B,8BAAMie,IAAS;AAAA,0BACb,GAAGkK;AAAA,0BACH,OAAOnoB;AAAA,wBAAA;AAET,gCAAQ,IAAI,UAAUie,CAAM,GAC5BmK,EAAYnK,CAAM,GAClBsK,EAAiBtK,CAAM;AAAA,sBACzB;AAAA,sBACA,MAAM;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACR;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAjV,EAAC,OAAA,EAAI,WAAWD,GAAO,UACrB,UAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,QAAQ;AAAA,UAAA;AAAA,UAGT,UAAA1C,EAAM,YAAYy7B,MAAQ,UACzB,gBAAA/4B;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,SAAS,MAAM;;AACb,iBAAAnH,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE;AAAA,cACF;AAAA,cAEA,UAAA,gBAAA0C;AAAA,gBAACw5B;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,UAAU;AAAA,kBAAA;AAAA,gBACZ;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QACF;AAAA,MAAA,EAEJ,CACF;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAEJ;AACF,GChNaC,KAAkC9V,GAG7C,SAA6CrmB,GAAOsmB,GAAK;AACzD,QAAM,CAAC8V,GAAcC,CAAe,IAAIryB,EAA6C,CAAA,CAAE;AACvF,EAAA2c;AAAA,IACEL;AAAA,IACA,OACS;AAAA,MACL,UAAU,CAAC5sB,MAAQ;AACjB,QAAA2iC,EAAgB3iC,CAAG;AAAA,MACrB;AAAA,IAAA;AAAA,IAGJ,CAAA;AAAA,EAAC,GAGH6b,EAAU,MAAM;AACd,IAAIvV,EAAM,gBACRq8B,EAAgBr8B,EAAM,YAAY;AAAA,EAGtC,GAAG,CAAA,CAAE;AAEL,QAAM,CAACs8B,GAAaC,CAAc,IAAIvyB,EAGnC;AAAA,IACD,UAAU;AAAA,IACV,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,IAAA;AAAA,EACT,CACD,GAEKwyB,IAAqB,CAAC9iC,MAA6B;;AACvD,KAAAiC,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsBtG;AAAA,EACxB,GAEM+iC,IAAoB/oB,EAAqC,IAAI;AACnE,SACE,gBAAAhR;AAAA,IAACuW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,UAAA,gBAAAzW,EAAC,OAAA,EAAI,WAAWC,GAAO,QACpB,UAAA;AAAA,QAAA25B,EAAa,IAAI,CAAC3gC,GAAIsV,wBAElB,OAAA,EACC,UAAA,gBAAArO;AAAA,UAAC24B;AAAAA,UAAA;AAAA,YACC,OAAO5/B;AAAA,YACP,KAAK;AAAA,YACL,eAAe,CAACkc,MAAW;AACzB,kBAAIA,EAAO,aAAa,IAAI;AAC1B,gBAAAykB,EAAa,OAAOrrB,GAAO,CAAC,GAC5BsrB,EAAgB,CAAC,GAAGD,CAAY,CAAC;AACjC;AAAA,cACF;AACA,cAAAA,EAAarrB,CAAK,IAAI4G,GACtB0kB,EAAgB,CAAC,GAAGD,CAAY,CAAC,GACjCI,EAAmBJ,CAAY;AAAA,YACjC;AAAA,YACA,UAAU,MAAM;AACd,cAAAA,EAAa,OAAOrrB,GAAO,CAAC,GAC5BsrB,EAAgB,CAAC,GAAGD,CAAY,CAAC,GACjCI,EAAmBJ,CAAY;AAAA,YACjC;AAAA,UAAA;AAAA,QAAA,KAlBMrrB,CAoBV,CAEH;AAAA,QAED,gBAAArO;AAAA,UAAC24B;AAAAA,UAAA;AAAA,YACC,OAAOiB;AAAA,YACP,KAAKG;AAAA,YACL,KAAI;AAAA,YACJ,eAAe,CAAC9kB,MAAW;AACzB,cAAA4kB,EAAe5kB,CAAM;AAAA,YACvB;AAAA,YACA,UAAU,CAACje,MAAQ;AAEjB,kBADiB0iC,EAAa,KAAK,CAAC3gC,MAAOA,EAAG,aAAa/B,EAAI,QAAQ;AAErE,uBAAAke,GAAQ,MAAM,mDAAmD,GAC1D;AAAA,kBACL,UAAU,CAACle,EAAI,QAAQ;AAAA,gBAAA;AAG3B,cAAA0iC,EAAa,KAAK1iC,CAAG,GACrB2iC,EAAgB,CAAC,GAAGD,CAAY,CAAC,GACjCI,EAAmBJ,CAAY,GAC/BG,EAAe;AAAA,gBACb,UAAU;AAAA,gBACV,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO;AAAA,gBAAA;AAAA,cACT,CACD;AAAA,YACH;AAAA,UAAA;AAAA,QAAA;AAAA,MACF,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC,GCxGK/L,KAAiC;AAAA,EACrC;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,IAEX,SAAS;AAAA,MACP;AAAA,QACE,eAAe;AAAA,QACf,OAAO;AAAA,UACL,cAAc;AAAA,UACd,UAAU;AAAA,YACR,MAAM;AAAA,UAAA;AAAA,UAER,MAAM;AAAA,YACJ,SAAS;AAAA,cACP;AAAA,gBACE,eAAe;AAAA,gBACf,OAAO;AAAA,kBACL,UAAU;AAAA,oBACR;AAAA,sBACE,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,WAAW;AAAA,sBACX,SAAS,CAAC,cAAc;AAAA,oBAAA;AAAA,oBAE1B;AAAA,sBACE,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,WAAW;AAAA,sBACX,SAAS,CAAC,iBAAiB,kBAAkB;AAAA,oBAAA;AAAA,kBAC/C;AAAA,gBACF;AAAA,gBAEF,cAAc,CAAA;AAAA,cAAC;AAAA,YACjB;AAAA,YAEF,cAAc;AAAA,cACZ,MAAM;AAAA,cACN,QAAQ;AAAA,YAAA;AAAA,UACV;AAAA,QACF;AAAA,QAEF,cAAc,CAAA;AAAA,MAAC;AAAA,IACjB;AAAA,EACF;AAEJ,GAEakM,KAAkBrW,GAAqD,SAClFrmB,GACAsmB,GACA;AACA,QAAMpM,IAAUxG,EAAiC,IAAI;AACrD,SAAAiT,GAAoBL,GAAK,OAChB;AAAA,IACL,SAAShF,GAAU;;AACjB,OAAA3lB,IAAAue,KAAA,gBAAAA,EAAS,YAAT,QAAAve,EAAkB,UAAU;AAAA,QAC1B,WAAW2lB,KAAY,CAAA;AAAA,MAAC;AAAA,IAE5B;AAAA,EAAA,EAEH,GAEC,gBAAA5e;AAAA,IAACuW;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAGF,4BAAC,OAAA,EACC,UAAA,gBAAAvW;AAAA,QAACguB;AAAA,QAAA;AAAA,UACC,KAAKxW;AAAA,UACL,cAAc,CAAA;AAAA,UACd,QAAQla,EAAM,UAAU;AAAA,UACxB,WAAWA,EAAM;AAAA,UACjB,YAAAwwB;AAAA,UACA,gBAAgB,WAAY;AAAA,UAAC;AAAA,UAC7B,eAAe,CAAC7Y,MAAW;;AACzB,aAAAhc,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsB2X,EAAO,aAAa,CAAA;AAAA,UAC5C;AAAA,UACA,qBAAqB,CAAA;AAAA,QAAC;AAAA,MAAA,EACvB,CACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;;;;;;;;GC1EY0jB,KAAuBhV;AAAA,EAClC,SAAkCrmB,GAAOsmB,GAAK;AAC5C,UAAM,CAACgV,CAAe,IAAItxB,EAAsB,EAAE,GAC5C,CAAC2yB,CAAiB,IAAI3yB,EAAsB,EAAE,GAC9C,EAAE,MAAAwV,IAAO,OAAA,IAAWxf,GACpB48B,IAAW53B,EAAQ,MAChBwa,MAAS,UACf,CAACA,CAAI,CAAC,GACHqC,IAAa7hB,EAAM,OACnB,CAAC07B,GAAiBC,CAAkB,IAAI3xB,EAASoxB,EAAsB,GAEvE,CAACyB,GAAcC,CAAe,IAAI9yB,EAA8B,CAAA,CAAE,GAClE,CAAC+yB,GAAiBC,CAAkB,IAAIhzB,EAA8B,CAAA,CAAE,GAExE4xB,IAAW,CAACC,MAAuB;AACvC,YAAMC,IAAaV,GAAuB,OAAO,CAAC3/B,MAAOA,EAAG,MAAM,SAASogC,CAAU,CAAC;AACtF,MAGEF,EAHGE,IAGgBC,IAFAV,EAEU;AAAA,IAEjC,GAEM6B,IAAqB,MAAM;;AAC/B,UAAItjC,IAAa,CAAA;AACjB,YAAMujC,IAAe1b,GAAcK,KAAA,gBAAAA,EAAY,QAAuC;AAEtF,MAAIqb,MACFvjC,MACEgC,IAAAuhC,EAAa,WAAb,gBAAAvhC,EAAqB,IAAI,CAACjC,OACjB;AAAA,QACL,OAAOA;AAAA,MAAA,QAEL,CAAA,IAGVojC,EAAgBnjC,CAAG,GACnBqjC,EAAmBrjC,CAAG;AAAA,IACxB,GAEMwjC,IAAgB,CAACtB,MAAuB;AAC5C,YAAMC,IAAaiB,EAAgB,OAAO,CAACthC,MAAOA,EAAG,MAAM,SAASogC,CAAU,CAAC;AAC/E,MAGEiB,EAHGjB,IAGaC,IAFAiB,CAEU;AAAA,IAE9B,GAEMK,IAAiB,CAACC,MAAmB;;AACzC,cAAA1hC,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsB;AAAA,QACpB,UAAUq9B;AAAA,QACV,QAAOxb,KAAA,gBAAAA,EAAY,UAAS;AAAA,MAAA,IAEvB;AAAA,IACT,GAEMD,IAAmBlO,EAA6B,IAAI,GACpDqoB,IAAiBroB,EAA6B,IAAI,GAClD,CAACqO,GAAYC,CAAa,IAAIhY,EAAS;AAAA,MAC3C,KAAK;AAAA,MACL,OAAO;AAAA,IAAA,CACR;AACD,WAAA2c;AAAA,MACEL;AAAA,MACA,OACS;AAAA,QACL,OAAO,MAAM;;AACX,WAAA3qB,IAAAogC,EAAe,YAAf,QAAApgC,EAAwB;AAAA,QAC1B;AAAA,MAAA;AAAA,MAGJ,CAAA;AAAA,IAAC,GAID,gBAAA6G,EAAC,OAAA,EAAI,WAAWC,GAAO,aACrB,UAAA;AAAA,MAAA,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWG,EAAK;AAAA,YACdF,GAAO;AAAA,YACPm6B,KAAYn6B,GAAO;AAAA,YACnBm6B,KAAY7a,EAAW,OAAOtf,GAAO;AAAA,YACrC64B,MAAoB,WAAW74B,GAAO;AAAA,YACtC,CAACm6B,KAAYn6B,GAAO;AAAA,UAAA,CACrB;AAAA,UAED,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAACyf;AAAA,cAAA;AAAA,gBACC,KAAK4Z;AAAA,gBACL,SAAS;AAAA,gBACT,UAAU,CAACa;AAAA,gBACX,UAAAhB;AAAA,gBACA,QAAQN;AAAA,gBACR,uBAAuB;AAAA,gBACvB,OAAOzZ,KAAA,gBAAAA,EAAY;AAAA,gBACnB,UAAU,CAACnoB,MAAQ;AACjB,kBAAA0jC,EAAe1jC,CAAG;AAAA,gBACpB;AAAA,gBACA,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,UAAU;AAAA,kBACV,MAAM;AAAA,kBACN,KAAK;AAAA,gBAAA;AAAA,gBAEP,SAAS,MAAM;AACb,kBAAAsoB,EAAc;AAAA,oBACZ,KAAK;AAAA,oBACL,OAAO;AAAA,kBAAA,CACR;AAAA,gBACH;AAAA,gBACA,QAAQ,MAAM;AACZ,kBAAAA,EAAc;AAAA,oBACZ,KAAK;AAAA,oBACL,OAAO;AAAA,kBAAA,CACR;AAAA,gBACH;AAAA,gBACA,WAAW,CAAC9Y,MAAM;;AAChB,kBAAIA,EAAE,SAAS,YACRoyB,MACH3/B,IAAAimB,EAAiB,YAAjB,QAAAjmB,EAA0B;AAAA,gBAGhC;AAAA,gBACA,aAAY;AAAA,gBACZ,SAAS+/B;AAAA,cAAA;AAAA,YAAA;AAAA,YAEX,gBAAAh5B;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,SAAS;AAAA,gBAAA;AAAA,gBAGV,UAAAmf,KAAA,gBAAAA,EAAY;AAAA,cAAA;AAAA,YAAA;AAAA,UACf;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAnf;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,SAAS;AAAA,UAAA;AAAA,UAEZ,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD,gBAAAA;AAAA,QAACyf;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,KAAKP;AAAA,UACL,QAAQ+a;AAAA,UACR,uBAAuB;AAAA,UACvB,OAAO9a,KAAA,gBAAAA,EAAY;AAAA,UACnB,UAAU,CAACnoB,MAAQ;;AACjB,YAAAujC,EAAA,IACAthC,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsB;AAAA,cACpB,WAAU6hB,KAAA,gBAAAA,EAAY,aAAY;AAAA,cAClC,OAAOnoB,KAAO;AAAA,YAAA;AAAA,UAElB;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,UAAA;AAAA,UAER,SAAS,MAAM;AACb,YAAAsoB,EAAc;AAAA,cACZ,KAAK;AAAA,cACL,OAAO;AAAA,YAAA,CACR;AAAA,UACH;AAAA,UACA,QAAQ,MAAM;AACZ,YAAAA,EAAc;AAAA,cACZ,KAAK;AAAA,cACL,OAAO;AAAA,YAAA,CACR;AAAA,UACH;AAAA,UACA,WAAWrf,EAAK,CAACF,GAAO,WAAWsf,EAAW,SAAStf,GAAO,MAAM,CAAC;AAAA,UACrE,aAAY;AAAA,UACZ,UAAU06B;AAAA,UACV,SAASN;AAAA,UACT,WAAW,CAAC3zB,MAAM;;AAChB,YAAIA,EAAE,SAAS,WACT0zB,OACFjhC,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiB;AAAA,cACf,WAAU6hB,KAAA,gBAAAA,EAAY,aAAY;AAAA,cAClC,QAAOA,KAAA,gBAAAA,EAAY,UAAS;AAAA,YAAA;AAAA,UAIpC;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD7hB,EAAM,YAAYwf,MAAS,UAC1B,gBAAA9c;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,SAAS,MAAM;;AACb,aAAAnH,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE;AAAA,UACF;AAAA,UAEA,UAAA,gBAAA0C;AAAA,YAACw5B;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,UAAU;AAAA,cAAA;AAAA,YACZ;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,MAGHl8B,EAAM,YAAYwf,MAAS,8BACzB,OAAA,EACC,UAAA,gBAAA9c;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MACE,gBAAAJ;AAAA,YAACu5B;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,UAAA;AAAA,UAGJ,SAAS,MAAM;;AACb,aAAAtgC,IAAAqE,EAAM,aAAN,QAAArE,EAAA,KAAAqE,GAAiB;AAAA,cACf,WAAU6hB,KAAA,gBAAAA,EAAY,aAAY;AAAA,cAClC,QAAOA,KAAA,gBAAAA,EAAY,UAAS;AAAA,YAAA;AAAA,UAEhC;AAAA,QAAA;AAAA,MAAA,EACD,CACH;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF,GCzPauZ,KAAyB3Z,GAAgB,IAAI,CAAChmB,OAClD;AAAA,EACL,OAAOA;AAAA,EAEV,GAWY6hC,KAAsBjX;AAAA,EACjC,SAAiCrmB,GAAOsmB,GAAK;AAC3C,UAAM,CAAC8V,GAAcC,CAAe,IAAIryB,EAA0D,CAAA,CAAE,GAC9F,CAACuzB,GAAWC,CAAY,IAAIxzB,EAAS;AAAA,MACzC,UAAU;AAAA,MACV,OAAO;AAAA,IAAA,CACR;AACD,IAAA2c;AAAA,MACEL;AAAA,MACA,OACS;AAAA,QACL,UAAU,CAAC5sB,MAAQ;AACjB,UAAA2iC,EAAgB3iC,CAAG;AAAA,QACrB;AAAA,MAAA;AAAA,MAGJ,CAAA;AAAA,IAAC,GAGH6b,EAAU,MAAM;AACd,MAAIvV,EAAM,gBACRq8B,EAAgB,CAAC,GAAGr8B,EAAM,YAAY,CAAC;AAAA,IAG3C,GAAG,CAAA,CAAE;AAEL,UAAMw8B,IAAqB,CAAC9iC,MAA6B;;AACvD,OAAAiC,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsBtG;AAAA,IACxB,GAEM+iC,IAAoB/oB,EAAgC,IAAI;AAC9D,WACE,gBAAAhR;AAAA,MAACuW;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,YACL,cAAc;AAAA,UAAA;AAAA,QAChB;AAAA,QAGF,UAAA,gBAAAzW,EAAC,OAAA,EAAI,WAAWC,GAAO,QACpB,UAAA;AAAA,UAAA25B,EAAa,IAAI,CAAC3gC,GAAIsV,wBAElB,OAAA,EACC,UAAA,gBAAArO;AAAA,YAAC24B;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWe;AAAA,cACX,OAAO3gC;AAAA,cACP,eAAe,CAACkc,MAAW;AACzB,gBAAAykB,EAAarrB,CAAK,IAAI4G;AACtB,sBAAMpa,IAAU,KAAK,MAAM,KAAK,UAAU6+B,CAAY,CAAC;AACvD,gBAAAC,EAAgB9+B,CAAO,GACvBi/B,EAAmBj/B,CAAO;AAAA,cAC5B;AAAA,cACA,UAAU,MAAM;AACd,gBAAA6+B,EAAa,OAAOrrB,GAAO,CAAC;AAC5B,sBAAMxT,IAAU,KAAK,MAAM,KAAK,UAAU6+B,CAAY,CAAC;AACvD,gBAAAC,EAAgB9+B,CAAO,GACvBi/B,EAAmBj/B,CAAO;AAAA,cAC5B;AAAA,YAAA;AAAA,UAAA,KAhBMwT,CAkBV,CAEH;AAAA,UACD,gBAAArO;AAAA,YAAC24B;AAAA,YAAA;AAAA,cAEC,WAAWe;AAAA,cACX,MAAK;AAAA,cACL,OAAOmB;AAAA,cACP,KAAKd;AAAA,cACL,eAAe,CAACgB,MAAc;AAC5B,gBAAAD,EAAa;AAAA,kBACX,GAAGC;AAAA,gBAAA,CACJ;AAAA,cACH;AAAA,cACA,UAAU,CAAC9lB,MAAW;;AACpB,oBAAIA,EAAO,YAAYA,EAAO,OAAO;AACnC,wBAAMpa,IAAU,CAAC,GAAG6+B,CAAY;AAChC,kBAAA7+B,EAAQ,KAAKoa,CAAM,GACnB0kB,EAAgB9+B,CAAO,GACvBigC,EAAa;AAAA,oBACX,UAAU;AAAA,oBACV,OAAO;AAAA,kBAAA,CACR,GACDhB,EAAmBj/B,CAAO,IAC1B5B,IAAA8gC,EAAkB,YAAlB,QAAA9gC,EAA2B;AAAA,gBAC7B;AAAA,cACF;AAAA,YAAA;AAAA,YAtBI;AAAA,UAAA;AAAA,QAuBN,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;;;GCxGM+hC,KAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAIMC,KAAsBD,GAAe,IAAI,CAACjiC,OACvC;AAAA,EACL,KAAKA;AAAA,EACL,OAAOA;AAAA,EAEV,GA6BYmiC,KAAY,CAAC59B,MAA0B;AAClD,QAAM,CAAC69B,GAAkBC,CAAmB,IAAI9zB,EAA2B,QAAQ,GAC7E,CAAC+zB,CAAc,IAAI/zB,EAA2B;AAAA,IAClD;AAAA,MACE,KAAK;AAAA,MACL,UAAU;AAAA,MACV,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,MACE,KAAK;AAAA,MACL,UAAU;AAAA,MACV,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,MACE,KAAK;AAAA,MACL,UAAU;AAAA,MACV,OAAO;AAAA,IAAA;AAAA,EACT,CACD,GACKg0B,IAAoBtqB,EAAsD,EAAE,GAC5EuqB,IAAe,CAACC,MAA0B;AAC9C,IAAAJ,EAAoBI,CAAG;AAAA,EACzB,GACM,CAACC,GAAeC,CAAgB,IAAIp0B,EAAmB,CAAA,CAAE,GACzDq0B,IAAgBr5B,EAAQ,MACrB24B,GAAoB,OAAO,CAACliC,MAC1B,CAAC0iC,EAAc,SAAS1iC,EAAG,GAAG,CACtC,GACA,CAAC0iC,CAAa,CAAC,GAEZG,IAAsBt5B,EAAQ,MAC3B24B,GAAoB,OAAO,CAACliC,MAC1B0iC,EAAc,SAAS1iC,EAAG,GAAG,CACrC,GACA,CAAC0iC,CAAa,CAAC,GAEZ,CAACI,GAAQC,CAAS,IAAIx0B,EAAiBhK,EAAM,gBAAgB,EAAE;AAErE,EAAAuV,EAAU,MAAM;AACd,UAAM/Z,IAAO,OAAO,KAAK+iC,CAAM;AAC/B,IAAAH,EAAiB5iC,CAAI;AAAA,EACvB,GAAG,CAAC+iC,CAAM,CAAC;AAEX,QAAME,IAAqBz5B,EAAQ,MAAM;AACvC,UAAMrL,IAAM4kC,KAAA,gBAAAA,EAASV;AACrB,QAAI,CAAClkC;AACH,aAAO,CAAA;AAET,UAAMge,IAAmE,CAAA;AACzE,kBAAO,KAAKhe,CAAG,EAAE,QAAQ,CAACK,MAAQ;AAChC,MAAA2d,EAAO3d,CAAG,IAAIU,GAAsBf,EAAIK,CAAG,KAAK,EAAE;AAAA,IACpD,CAAC,GAEM2d;AAAA,EACT,GAAG,CAACkmB,GAAkBU,CAAM,CAAC,GAEvBG,IAAU5a,EAAY,MAAM;AAChC,WAAO,KAAKka,EAAkB,OAAO,EAAE,QAAQ,CAAChkC,MAAQ;;AACtD,YAAMssB,KAAM3qB,IAAAqiC,EAAkB,YAAlB,gBAAAriC,EAA4B3B,IAClCukC,IAASE,EAAmBzkC,CAAG,KAAK,CAAA;AAC1C,MAAIssB,KACFA,EAAI,SAASiY,CAAM;AAAA,IAEvB,CAAC;AAAA,EACH,GAAG,CAACE,CAAkB,CAAC,GACjBE,IAAUjrB,EAAA;AAChB,EAAAirB,EAAQ,UAAUD,GAEd1+B,EAAM,YACRA,EAAM,QAAQ,UAAU;AAAA,IACtB,UAAU,OAAO2X,MAAW;;AAC1B,MAAIinB,GAAQjnB,CAAM,IAChB6mB,EAAU;AAAA,QACR,QAAQ;AAAA,UACN,QAAQ;AAAA,QAAA;AAAA,MACV,CACD,IAEDA,EAAU7mB,CAAM,GAElB,MAAMtY,GAAA,IACN1D,IAAAgjC,EAAQ,YAAR,QAAAhjC,EAAA,KAAAgjC;AAAA,IACF;AAAA,EAAA,IAKJppB,EAAU,MAAM;;AACd,KAAA5Z,IAAAgjC,EAAQ,YAAR,QAAAhjC,EAAA,KAAAgjC;AAAA,EACF,GAAG,CAACd,CAAgB,CAAC;AAErB,QAAMgB,IAAY/a;AAAA,IAChB,CAACxoB,GAAkB5B,MAAkB;;AACnC,YAAMie,IAAS;AAAA,QACb,GAAG4mB;AAAA,QACH,CAACV,CAAgB,GAAG;AAAA,UAClB,GAAIU,EAAOV,CAAgB,KAAK,CAAA;AAAA,UAChC,CAACviC,CAAQ,GAAGrB,GAAeP,CAAG;AAAA,QAAA;AAAA,MAChC;AAEF,OAAAiC,IAAAqE,EAAM,kBAAN,QAAArE,EAAA,KAAAqE,GAAsB2X;AAAA,IACxB;AAAA,IACA,CAAC4mB,GAAQv+B,GAAO69B,CAAgB;AAAA,EAAA;AAGlC,SACE,gBAAAn7B,EAAA+G,GAAA,EACE,UAAA,gBAAAjH;AAAA,IAACipB;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAK;AAAA,MACL,yBAAQ,QAAA,EAAK,OAAO,EAAE,UAAU,OAAA,GAAU,UAAA,OAAG;AAAA,MAC7C,OACE,gBAAA/oB;AAAA,QAAC6sB;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,YACJ,OAAO8O;AAAA,YACP,SAAS,CAAC5iC,MAAO;AACf,cAAA2iC,EAAiB,CAACtd,MACT,CAAC,GAAGA,GAAQrlB,EAAG,GAAG,CAC1B;AAAA,YACH;AAAA,UAAA;AAAA,UAGF,4BAACwgC,IAAA,CAAA,CAAa;AAAA,QAAA;AAAA,MAAA;AAAA,MAIlB,UAAA;AAAA,QAAA,gBAAAv5B;AAAA,UAACivB;AAAA,UAAA;AAAA,YACC,MAAM,CAAC,GAAG,CAAC;AAAA,YACX,MAAI;AAAA,YACJ,OAAO;AAAA,cACL,eAAe;AAAA,YAAA;AAAA,YAGhB,UAAA2M,EAAoB,IAAI,CAACJ,MAAQ;AAChC,oBAAMY,IAAUjB,EAAiB,SAASK,EAAI,GAAG;AACjD,qBACE,gBAAA17B;AAAA,gBAACu8B;AAAA,gBAAA;AAAA,kBAEC,OAAO;AAAA,oBACL,QAASD,IAA+C,6BAArC;AAAA,kBAAqC;AAAA,kBAE1D,SAAAA;AAAA,kBACA,UAAU,MAAMb,EAAaC,EAAI,GAAG;AAAA,kBACpC,WAAWz7B,GAAO;AAAA,kBAEjB,UAAA;AAAA,oBAAAy7B,EAAI;AAAA,oBACJA,EAAI,QAAQ,YACX,gBAAAx7B;AAAA,sBAACs8B;AAAA,sBAAA;AAAA,wBACC,WAAWv8B,GAAO;AAAA,wBAClB,SAAS,CAACyG,MAAM;AACd,0BAAAA,EAAE,gBAAA,GACFA,EAAE,eAAA,GACFk1B,EAAiB,CAACtd,MACTA,EAAO,OAAO,CAACrlB,MACbA,MAAOyiC,EAAI,GACnB,CACF,GACDJ,EAAoB,QAAQ;AAAA,wBAC9B;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,gBAtBGI,EAAI;AAAA,cAAA;AAAA,YA0Bf,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAGH,gBAAAx7B;AAAA,UAAC8C;AAAA,UAAA;AAAA,YACC,kBAAkB,CAAC,QAAQ;AAAA,YAC3B,UAAU;AAAA,YACV,OAAO;AAAA,cACL,cAAc;AAAA,YAAA;AAAA,YAEhB,UAAU,YAAY;;AACpB,oBAAMnG,GAAA,IACN1D,IAAAgjC,EAAQ,YAAR,QAAAhjC,EAAA,KAAAgjC;AAAA,YACF;AAAA,YACA,OAAO;AAAA,cACL;AAAA,gBACE,KAAK;AAAA,gBACL,OAAO,gBAAAj8B,EAAC,QAAA,EAAK,UAAA,UAAA,CAAO;AAAA,gBACpB,UACE,gBAAAA;AAAA,kBAAC46B;AAAA,kBAAA;AAAA,oBACC,KAAK,CAAChX,MAAQ;AACZ,sBAAA0X,EAAkB,QAAQ,SAAY1X;AAAA,oBACxC;AAAA,oBACA,eAAe,CAAC5sB,MAAQmlC,EAAU,UAAUnlC,CAAG;AAAA,oBAC/C,cAAc+kC,EAAmB;AAAA,kBAAQ;AAAA,gBAAA;AAAA,cAC3C;AAAA,cAGJ,GAAGV,EAAe,IAAI,CAACtiC,OACd;AAAA,gBACL,KAAKA,EAAG;AAAA,gBACR,OAAO,gBAAAiH,EAAC,QAAA,EAAM,UAAAjH,EAAG,OAAM;AAAA,gBACvB,UACE,gBAAAiH;AAAA,kBAAC46B;AAAA,kBAAA;AAAA,oBACC,KAAK,CAAChX,MAAQ;AACZ,sBAAA0X,EAAkB,QAAQviC,EAAG,GAAG,IAAI6qB;AAAA,oBACtC;AAAA,oBACA,eAAe,CAAC5sB,MAAQmlC,EAAUpjC,EAAG,KAAK/B,CAAG;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC/C,EAGL;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MACD;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ,GCpPaulC,KAAkB,CAACj/B,MAA6B;AAC3D,QAAMk/B,IAAmBxrB,EAA2C,IAAI,GAElE3Y,IAAOiF,EAAM,MACbm/B,IAAgBn6B,EAAQ,MACXjK,EAAK,MAAM,cAAc,CAAA,GAEzC,CAACA,CAAI,CAAC,GACHqkC,IAAe1rB,EAAqB,IAAI,GACxCoY,IAAWpY,EAAwB,IAAI,GACvC2rB,IAAqB3rB,EAA2B,IAAI,GACpD4rB,IAAct6B,EAAQ,MACnB9K,GAAoBa,EAAK,MAAM,SAAS,CAAA,CAAE,GAChD,CAACA,EAAK,MAAM,KAAK,CAAC,GAEfgxB,IAAWrY,EAAA,GAEXwY,IAAmBpI,EAAY,MAAM;;AACzC,IAAAiI,EAAS,UAAUhxB;AACnB,UAAMkxB,IAAWlxB,EAAK,MAAM,SAAS,CAAA,GAC/B,EAAE,oBAAAT,GAAoB,gBAAAD,MAAmBH,GAAoB+xB,CAAQ,GACrEsT,IAAOhkC,GAAsBR,EAAK,MAAM,GAAG;AACjD,KAAAY,IAAAujC,EAAiB,YAAjB,QAAAvjC,EAA0B,SAAS,CAAC,GAAGrB,CAAkB,KACzD4L,IAAAk5B,EAAa,YAAb,QAAAl5B,EAAsB,SAASq5B,KAC/Bp5B,IAAAk5B,EAAmB,YAAnB,QAAAl5B,EAA4B,SAASpL,EAAK,MAAM,cAAc,MAC9DqL,IAAA0lB,EAAS,YAAT,QAAA1lB,EAAkB,SAAS3M,GAAaY,CAAc,KAAK,CAAA;AAAA,EAC7D,GAAG,CAACU,CAAI,CAAC;AAET,EAAAwa,EAAU,OACR2W,EAAA,GACAnxB,EAAK,QAAQ,GAAG,gBAAgBmxB,CAAgB,GAChDnxB,EAAK,QAAQ,GAAG,gBAAgBmxB,CAAgB,GACzC,MAAM;AACX,IAAAnxB,EAAK,QAAQ,IAAI,gBAAgBmxB,CAAgB,GACjDnxB,EAAK,QAAQ,IAAI,gBAAgBmxB,CAAgB;AAAA,EACnD,IACC,CAACnxB,EAAK,SAASA,EAAK,IAAIiF,EAAM,WAAWksB,CAAgB,CAAC;AAE7D,QAAMsT,IAAwB,CAACC,MAAuB;AAEpD,UAAMrT,IAAe,CAAC,GAAGkT,EAAY,gBAAgB,GAAGG,CAAQ;AAChE,IAAA1kC,EAAK,MAAM,QAAQqxB,GACnBrxB,EAAK,YAAA;AAAA,EACP,GAEM2kC,IAAgB,CAACD,MAAuB;AAE5C,UAAMrT,IAAe,CAAC,GAAGqT,GAAU,GAAGH,EAAY,kBAAkB;AACpE,IAAAvkC,EAAK,MAAM,QAAQqxB,GACnBrxB,EAAK,YAAA;AAAA,EACP,GAEM4kC,IAAc,CAACjmC,MAAgB;AAEnC,IAAAqB,EAAK,MAAM,MAAME,GAAmB,KAAKF,EAAK,EAAE,IAAIrB,CAAG,GACvDqB,EAAK,YAAA;AAAA,EACP;AAEA,SACE,gBAAA2H,EAAC,OAAA,EAAI,WAAWD,GAAO,gBACrB,UAAA,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,MAGhB,UAAA;AAAA,QAAA,gBAAAE;AAAA,UAAC4nB;AAAA,UAAA;AAAA,YACC,KAAKwB;AAAA,YACL,eAAe,CAACK,MAAgB;AAC9B,cAAAuT,EAAc7lC,GAAcsyB,CAAW,CAAC;AAAA,YAC1C;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,gBAAAzpB;AAAA,UAAC8C;AAAA,UAAA;AAAA,YACC,UAAU;AAAA,YACV,OAAO;AAAA,cACL,cAAc;AAAA,YAAA;AAAA,YAEhB,kBAAkB,CAAC,iBAAiB;AAAA,YACpC,UAAU,CAAC9L,MAAQ;AACjB,cAAIA,EAAI,UACNwyB,EAAA;AAAA,YAEJ;AAAA,YACA,OAAO;AAAA,cACL;AAAA,gBACE,KAAK;AAAA,gBACL,OAAO,gBAAAxpB,EAAC,QAAA,EAAK,WAAWD,GAAO,QAAQ,UAAA,kBAAc;AAAA,gBACrD,UACE,gBAAAC;AAAA,kBAACy5B;AAAA,kBAAA;AAAA,oBACC,KAAK+C;AAAA,oBACL,cAAcI,EAAY;AAAA,oBAC1B,eAAe,CAAC5lC,MAAQ;AACtB,sBAAA8lC,EAAsB9lC,CAAG;AAAA,oBAC3B;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAEJ;AAAA,UACF;AAAA,QAAA;AAAA,QAEF,gBAAAgJ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,YAAY;AAAA,YAAA;AAAA,YAGd,UAAA,gBAAAA;AAAA,cAACg6B;AAAA,cAAA;AAAA,gBACC,WAAW18B,EAAM;AAAA,gBACjB,cAAcm/B;AAAA,gBACd,KAAKE;AAAA,gBACL,eAAer/B,EAAM;AAAA,gBACrB,eAAe,CAAC2X,MAAW;AACzB,kBAAA5c,EAAK,MAAM,aAAa4c,GACxB5c,EAAK,YAAA;AAAA,gBACP;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAEF,gBAAA2H,EAACk7B,IAAA,EAAU,SAASwB,GAAc,eAAeO,EAAA,CAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAElE;AAEJ,GAEaC,KAAyC;AAAA,EACpD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM,CAAC,EAAE,MAAA7kC,GAAM,WAAAsJ,GAAW,WAAAw7B,QACpB9kC,IACK,gBAAA2H,EAACu8B,IAAA,EAAgB,MAAAlkC,GAAY,WAAAsJ,GAAsB,WAAAw7B,EAAA,CAAsB,IAEzE,gBAAAn9B,EAAA+G,GAAA,EAAE;AAAA,EAGb,MAAM,CAACzJ,MAAU;;AACf,aAAOoG,KAAAD,KAAAD,KAAAvK,IAAAqE,EAAM,SAAN,gBAAArE,EAAY,aAAZ,gBAAAuK,EAAsB,MAAM,kBAA5B,gBAAAC,EAA2C,eAA3C,gBAAAC,EAAuD,YAAW;AAAA,EAC3E;AACF;;GC9IM05B,KAAuB;AAAA,EAC3B;AAAA,IACE,OAAO;AAAA,IACP,OAAOC;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAOC;AAAA,EAAA;AAEX,GAEaC,KAAa,CAACjgC,MAA2B;;AACpD,QAAM,EAAE,MAAAjF,MAASiF,GACX,CAACkgC,GAAWC,CAAe,IAAIn2B,EAKnC,CAAA,CAAE,GAEEo2B,IAAgBrlC,KAAA,gBAAAA,EAAM,MAAM;AAElC,EAAAwa,EAAU,MAAM;;AACd,UAAM/Z,MACJ0K,KAAAvK,IAAAZ,KAAA,gBAAAA,EAAM,aAAN,gBAAAY,EAAgB,MAAM,WAAtB,gBAAAuK,EAA8B,IAAI,CAACm6B,MAC7B,OAAOA,KAAQ,WACV;AAAA,MACL,OAAOA;AAAA,MACP,OAAOA;AAAA,IAAA,IAGJ;AAAA,MACL,OAAOA,EAAI,QAAQA,EAAI;AAAA,MACvB,OAAOA,EAAI;AAAA,IAAA,OAET,CAAA;AACR,IAAAF,EAAgB,CAAC,GAAGL,IAAsB,GAAGtkC,CAAI,CAAC;AAAA,EACpD,GAAG,CAACT,KAAA,gBAAAA,EAAM,KAAIY,IAAAZ,KAAA,gBAAAA,EAAM,aAAN,gBAAAY,EAAgB,MAAM,MAAM,CAAC;AAC3C,QAAM,CAAC2kC,GAAcC,CAAkB,IAAIv2B,EAAA,GAErC2W,IAAW,CAACvH,MAAkB;AAClC,IAAAmnB,EAAmBnnB,CAAK;AAAA,EAC1B;AAEA,SAAKre,IAKH,gBAAAyH,EAAC,OAAA,EAAI,WAAWC,GAAO,UACrB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,UACrB,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC2d;AAAA,QAAA;AAAA,UACC,OAAOigB;AAAA,UACP,YAAU;AAAA,UACV,aAAY;AAAA,UACZ,kBAAiB;AAAA,UACjB,UAAA3f;AAAA,UACA,YAAU;AAAA,UACV,OAAO,EAAE,OAAO,OAAA;AAAA,UAChB,SAASuf;AAAA,QAAA;AAAA,MAAA;AAAA,MAEX,gBAAAx9B;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAO,EAAE,YAAY,OAAA;AAAA,UACrB,SAAS,MAAM;AACb,kBAAM09B,IAAWF;AACjB,YAAKE,MAGLzlC,EAAK,MAAM,gBAAgB;AAAA,cACzB,GAAIA,EAAK,MAAM,iBAAiB,CAAA;AAAA,cAChC;AAAA,gBACE,MAAMylC;AAAA,gBACN,MAAM;AAAA,kBACJ,MAAM;AAAA,kBACN,SAAS,CAAA;AAAA;AAAA,kBAET,QAAQ,CAAA;AAAA,gBAAC;AAAA,cACX;AAAA,YACF,GAEFzlC,EAAK,YAAA,GACLwlC,EAAmB,MAAS;AAAA,UAC9B;AAAA,UACD,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,GACF;AAAA,IACA,gBAAA79B,EAAC,OAAA,EAAI,OAAO,EAAE,WAAW,UACtB,UAAA09B,KAAA,gBAAAA,EAAe,IAAI,CAAC54B,GAAYuJ,MAAkB;AACjD,YAAM0vB,IAAaP,EAAU,KAAK,CAACzkC,MAAOA,EAAG,UAAU+L,EAAM,IAAI;AACjE,aACE,gBAAAhF;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,OAAO;AAAA,YACL,SAAS;AAAA,YACT,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,SAAS;AAAA,YACT,gBAAgB;AAAA,YAChB,YAAY;AAAA,YACZ,QAAQ;AAAA,UAAA;AAAA,UAGV,UAAA;AAAA,YAAA,gBAAAE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,gBAAA;AAAA,gBAGT,UAAA,gBAAAA;AAAA,kBAACq3B;AAAA,kBAAA;AAAA,oBACC,OAAOvyB,EAAM;AAAA,oBACb,eAAe,CAAC9N,MAA0B;AACxC,sBAAA8N,EAAM,KAAK,UAAU9N,EAAI,SACzBqB,KAAA,QAAAA,EAAM;AAAA,oBACR;AAAA,oBACA,eAAe;AAAA,sBACb,WAAWiF,EAAM;AAAA,sBACjB,gBAAgB,MAAM;AAAA,sBAAC;AAAA,sBACvB,UAAU,CAAC,EAAE;AAAA,sBACb,OAAO;AAAA,sBACP,WAAWjF;AAAA,oBAAA;AAAA,oBAGb,UAAA,gBAAA2H,EAAC,QAAA,EAAM,WAAA+9B,KAAA,gBAAAA,EAAY,UAASj5B,EAAM,KAAA,CAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACzC;AAAA,YAAA;AAAA,YAEF,gBAAA9E;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,QAAM;AAAA,gBACN,wBAAOgI,IAAA,EAAe;AAAA,gBACtB,SAAS,CAAC5B,MAAM;AACd,kBAAAA,EAAE,gBAAA;AACF,wBAAMw3B,IAAe,CAAC,IAAI3lC,KAAA,gBAAAA,EAAM,MAAM,kBAAiB,CAAA,CAAG;AAC1D,kBAAA2lC,EAAa,OAAO3vB,GAAO,CAAC,GAC5BhW,EAAM,MAAM,gBAAgB2lC,GAC5B3lC,KAAA,QAAAA,EAAM;AAAA,gBACR;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QA9CKgW;AAAA,MAAA;AAAA,IAiDX,GAAC,CACH;AAAA,EAAA,GACF,IAnGO,gBAAArO,EAAA+G,GAAA,EAAE;AAqGb,GC7Jak3B,KAAoC;AAAA,EAC/C,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM,CAAC,EAAE,MAAA5lC,GAAM,WAAAsJ,QACRtJ,IAGE,gBAAA2H,EAACu9B,IAAA,EAAW,MAAAllC,GAAY,WAAAsJ,EAAA,CAAsB,IAF5C,gBAAA3B,EAAA+G,GAAA,EAAE;AAAA,EAIb,MAAM,CAACzJ,MAAU;;AACf,aAAOoG,KAAAD,KAAAD,KAAAvK,IAAAqE,EAAM,SAAN,gBAAArE,EAAY,aAAZ,gBAAAuK,EAAsB,MAAM,kBAA5B,gBAAAC,EAA2C,eAA3C,gBAAAC,EAAuD,aAAY;AAAA,EAC5E;AACF;ACiBO,MAAMw6B,WAAmB7gC,EAAM,UAA4C;AAAA,EAChF,YAAYC,GAAwB;AAClC,UAAMA,CAAK;AAgBb,IAAA5C,EAAA,kBAAW,CAAC6C,MAA2B;AACrC,YAAMI,IAAY,CAAC,GAAG,KAAK,MAAM,QAAQJ,CAAK;AAC9C,WAAK,SAAS;AAAA,QACZ,QAAQI;AAAA,MAAA,CACT,GACD,KAAK,aAAA;AAAA,IACP;AAEA,IAAAjD,EAAA,qBAAc,CAAC8C,MAAsB;AACnC,YAAMG,IAAY,KAAK,MAAM,OAAO,OAAO,CAAC5E,MAAOA,EAAG,SAASyE,CAAS;AACxE,WAAK,SAAS;AAAA,QACZ,QAAQG;AAAA,MAAA,CACT,GACD,KAAK,aAAA;AAAA,IACP;AAEA,IAAAjD,EAAA,sBAAe,CAAC8C,GAAmBC,MAA8B;AAC/D,YAAMC,IAAc,KAAK,MAAM,OAAO,UAAU,CAAC3E,MAAOA,EAAG,SAASyE,CAAS,GACvEG,IAAY,CAAC,GAAG,KAAK,MAAM,MAAM;AACvC,MAAID,IAAc,OAChBC,EAAUD,CAAW,IAAID,IAE3B,KAAK,SAAS;AAAA,QACZ,QAAQE;AAAA,MAAA,CACT,GACD,KAAK,aAAA;AAAA,IACP;AAEA,IAAAjD,EAAA,qBAAc,CAAC8C,MAAsB;AACnC,WAAK,SAAS;AAAA,QACZ,WAAWA;AAAA,MAAA,CACZ,GACD,KAAK,aAAA;AAAA,IACP;AAGA;AAAA,IAAA9C,EAAA,sBAAe,MAAM;;AACnB,YAAM,EAAE,WAAAiH,MAAc,KAAK,OACrB,EAAE,MAAAtJ,GAAM,QAAA8lC,EAAA,IAAW,KAAK,OACxBxgC,IAAYwgC;AAClB,UAAInnC,IAGA,EAAE,QAAQ,CAAA,GAAI,eAAe,CAAA,EAAC;AAClC,UAAIqB,GAAM;AACR,cAAM+lC,IAAiC,EAAE,MAAA/lC,GAAY,WAAAsJ,GAAW,WAAW,KAAK,MAAM,UAAA,GAChF08B,IAAgB1gC,EAAU,OAAO,CAACJ,MAClCA,EAAM,SAAS,SACV,KAEAA,EAAM,KAAK6gC,CAAW,CAEhC,GAEKE,MAAa76B,KAAAD,KAAAvK,IAAAZ,EAAK,aAAL,gBAAAY,EAAe,MAAM,kBAArB,gBAAAuK,EAAoC,eAApC,gBAAAC,EAAgD,eAAc,CAAA;AACjF,QAAA46B,EAAc,OAAOC,CAAU,GAC/BtnC,IAAM;AAAA,UACJ,QAAQ2G;AAAA,UACR,eAAA0gC;AAAA,QAAA;AAAA,MAEJ;AACE,QAAArnC,IAAM;AAAA,UACJ,QAAQ2G;AAAA,UACR,eAAe,CAAA;AAAA,QAAC;AAGpB,kBAAK,SAAS3G,CAAG,GACVA;AAAA,IACT;AAEA,IAAA0D,EAAA,sBAAe,CAAC,EAAE,MAAArC,QAAgB;;AAChC,YAAM,EAAE,WAAAsJ,MAAc,KAAK,OACrB,EAAE,QAAAw8B,GAAQ,WAAAI,EAAA,IAAc,KAAK,OAC7BH,IAAiC,EAAE,MAAA/lC,GAAY,WAAAsJ,GAAW,WAAW,KAAK,MAAM,UAAA,GAChF08B,IAAgBF,EAAO,OAAO,CAAC5gC,MAC/BA,EAAM,SAAS,SACV,KAEAA,EAAM,KAAK6gC,CAAW,CAEhC,GACKI,MAAgBvlC,IAAAolC,EAAc,KAAK,CAACI,GAAGpwB,MAAUA,MAAU,CAAC,MAA5C,gBAAApV,EAA+C,QAAO;AAE5E,MADuBolC,EAAc,KAAK,CAACtlC,MAAOA,EAAG,QAAQwlC,CAAS,IAQpE,KAAK,SAAS;AAAA,QACZ,MAAAlmC;AAAA,QACA,eAAAgmC;AAAA,MAAA,CACD,IATD,KAAK,SAAS;AAAA,QACZ,WAAWG;AAAA,QACX,MAAAnmC;AAAA,QACA,eAAAgmC;AAAA,MAAA,CACD;AAAA,IAOL;AA9GE,SAAK,QAAQ;AAAA,MACX,MAAM/gC,EAAM,UAAU,OAAO,cAAA;AAAA,MAC7B,WAAW;AAAA,MACX,QAAQ;AAAA;AAAA,QAENy6B;AAAA,QACAmF;AAAA,QACAe;AAAA,QACA9F;AAAA,QACAI;AAAA,MAAA;AAAA,MAEF,eAAe,CAAA;AAAA,IAAC;AAAA,EAEpB;AAAA,EAmGA,oBAA0B;;AACxB,UAAM,EAAE,WAAA52B,MAAc,KAAK;AAC3B,IAAAA,EAAU,cAAc,GAAG,sBAAsB,CAAC+8B,MAAS;AACzD,iBAAW,MAAM;AACf,aAAK,aAAaA,CAAI;AAAA,MACxB,GAAG,EAAE;AAAA,IACP,CAAC,GACD/8B,EAAU,UAAU,QAAQ,GAAG,KAAK,MAAM;AACxC,YAAMkT,IAAoBlT,EAAU,OAAO,cAAA;AAC3C,WAAK,aAAa,EAAE,MAAMkT,EAAA,CAAmB;AAAA,IAC/C,CAAC;AACD,UAAM,EAAE,eAAAwpB,EAAA,IAAkB,KAAK,aAAA,GACzBG,MAAgBvlC,IAAAolC,EAAc,KAAK,CAACI,GAAGpwB,MAAUA,MAAU,CAAC,MAA5C,gBAAApV,EAA+C,QAAO;AAG5E,IAFuBolC,EAAc,KAAK,CAACtlC,MAAOA,EAAG,QAAQ,KAAK,MAAM,SAAS,KAG/E,KAAK,SAAS;AAAA,MACZ,WAAWylC;AAAA,IAAA,CACZ,GAGH78B,EAAU,cAAA;AAAA,EACZ;AAAA,EAEA,SAAS;;AACP,UAAM,EAAE,eAAA08B,GAAe,MAAAhmC,GAAM,WAAAkmC,EAAA,IAAc,KAAK,OAC1C,EAAE,WAAA58B,MAAc,KAAK;AAC3B,QAAI,CAACtJ;AACH,+BACG,OAAA,EAAI,OAAO,EAAE,UAAU,YACtB,4BAACsmC,IAAA,EAAM,OAAOA,GAAM,wBAAwB,aAAa,sCAAA,CAAuC,GAClG;AAGJ,UAAMP,IAAc,EAAE,MAAA/lC,GAAY,WAAAsJ,GAAW,WAAW,KAAK,MAAM,UAAA,GAC7DmU,KAAkB7c,IAAA0I,EAAU,WAAV,gBAAA1I,EAAkB;AAE1C,WACE,gBAAA+G;AAAA,MAACw4B,GAAmB;AAAA,MAAnB;AAAA,QACC,OAAO;AAAA,UACL,iBAAiB,EAAE,GAAG1iB,EAAA;AAAA,UACtB,qBAAqB,CAAA;AAAA,UACrB,SAAQtS,IAAA,KAAK,MAAM,SAAX,gBAAAA,EAAiB;AAAA,UACzB,WAAW,KAAK,MAAM;AAAA,UACtB,WAAW,KAAK,MAAM;AAAA,QAAA;AAAA,QAGxB,UAAA,gBAAAxD,EAAC,OAAA,EAAI,WAAWD,GAAO,qBACrB,UAAA,gBAAAC;AAAA,UAACyG;AAAA,UAAA;AAAA,YACC,WAAA83B;AAAA,YACA,aAAY;AAAA,YACZ,OAAO;AAAA,cACL,MAAM;AAAA,cACN,QAAQ;AAAA,YAAA;AAAA,YAEV,UAAU,CAACA,MAAc;AACvB,mBAAK,SAAS;AAAA,gBACZ,WAAAA;AAAAA,cAAAA,CACD;AAAA,YACH;AAAA,YACA,OAAOF,EAAc,IAAI,CAACv8B,MAAM;;AAC9B,qBAAO;AAAA,gBACL,yBACG,OAAA,EAAI,OAAO,EAAE,SAAS,YAAa,UAAA,OAAOA,EAAE,QAAS,WAAWA,EAAE,QAAO7I,IAAA6I,EAAE,SAAF,gBAAA7I,EAAA,KAAA6I,GAASs8B,IAAa;AAAA,gBAElG,KAAKt8B,EAAE;AAAA,gBACP,UAAUA,EAAE,KAAKs8B,CAAW;AAAA,cAAA;AAAA,YAEhC,CAAC;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;ACxNA,MAAMz6B,KAAc,cACPi7B,KAA8C,MAAM;AAC/D,QAAMC,IAAWxhC,EAAM,UAAA;AACvB,SAAO;AAAA,IACL,MAAMsG;AAAAA,IAAA,aACNA;AAAAA,IACA,MAAM,KAAKlC,GAAK;AAEd,MADkBA,EAAI,aAAA,EACZ,iBAAiB,gBAAAzB,EAACk+B,IAAA,EAAW,KAAKW,GAAU,WAAWp9B,GAAK,CAAE;AAAA,IAC1E;AAAA,IACA,MAAM,UAAU;AAAA,IAAC;AAAA,IACjB,QAAQ,MACCo9B,KAAA,gBAAAA,EAAU;AAAA,IAEnB,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAEJ;AAEAD,GAAiB,cAAcj7B;AC3BxB,MAAMlD,KAA6B;AAAA,EACxC,YAAY;AACd,GCFaC,KAA6B;AAAA,EACxC,YAAY;AACd,GCAAo+B,KAAe,EAAA,OAAEr+B,WAAOC,GAAA;;GCOlBiD,KAAc,eACdC,KAAgB,UAAUD,EAAW;AAM3C,IAAIo7B,KAAsB;AAE1B,MAAMC,KAAmB,CAAC1hC,MAAiC;AACzD,QAAM,EAAE,WAAAqE,MAAcrE,GAChB2hC,IAAYt9B,EAAU,UAAU,MAAM,eAAe,MAAM,SAAS,CAAA,GAEpEob,IAAY/L,EAAoC,IAAI;AAC1D,EAAA6B,EAAU,MAAM;;AACd,KAAA5Z,IAAA8jB,KAAA,gBAAAA,EAAW,YAAX,QAAA9jB,EAAoB,SAAS,KAAK,UAAUgmC,GAAW,MAAM,CAAC,IAE9Dt9B,EAAU,UAAU,QAAQ,GAAG,gBAAgB,MAAM;;AACnD,UAAIo9B,IAAqB;AACvB,QAAAA,KAAsB;AACtB;AAAA,MACF;AACA,OAAA9lC,IAAA8jB,EAAU,YAAV,QAAA9jB,EAAmB,SAAS,KAAK,UAAU0I,EAAU,UAAU,MAAM,eAAe,MAAM,OAAO,MAAM,CAAC;AAAA,IAC1G,CAAC;AAAA,EAEH,GAAG,CAAA,CAAE;AAEL,QAAMyU,IAAgB,CAAC8G,MAAuB;AAC5C,QAAI;AACF,YAAMjI,IAAS,KAAK,MAAMiI,KAAa,IAAI;AAC3C,MAAAvb,EAAU,UAAU,MAAM,eAAe,MAAM,QAAQsT,GACvD8pB,KAAsB,IACtBp9B,EAAU,UAAU,MAAM,eAAe,YAAA;AAAA,IAC3C,SAAS6E,GAAG;AACV,cAAQ,KAAKA,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,SACE,gBAAAxG,EAAC,OAAA,EAAI,WAAWD,GAAO,KACrB,UAAA,gBAAAC;AAAA,IAAC+a;AAAA,IAAA;AAAA,MACC,cAAc,KAAK,UAAUpZ,EAAU,UAAU,MAAM,eAAe,MAAM,OAAO,MAAM,CAAC;AAAA,MAC1F,UAAU;AAAA,MACV,SAAS;AAAA,QACP,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,SAAS,EAAE,SAAS,GAAA;AAAA,QACpB,kBAAkB;AAAA,QAClB,4BAA4B;AAAA,QAC5B,SAAS;AAAA,QACT,UAAU,CAAA;AAAA,MAAC;AAAA,MAEb,YAAY,CAACwZ,MAAW;AACtB,QAAA4B,EAAU,UAAU5B;AAAA,MACtB;AAAA,MACA,aAAa,MAAM;AAAA,MAKnB;AAAA,MACA,UAAU/E;AAAA,IAAA;AAAA,EAAA,GAEd;AAEJ,GAEa8oB,KAAkC;AAAA,EAC7C,MAAMv7B;AAAAA,EACN,MAAM,KAAKlC,GAAK;AACd,UAAM,EAAE,MAAAb,MAASa;AACjB,WAAO,KAAKoE,EAAQ,EAAE,QAAQ,CAACC,MAAQ;AACrC,MAAAlF,EAAK,kBAAkBkF,GAAKlC,IAAeiC,GAASC,CAAG,GAAG,IAAM,EAAI;AAAA,IACtE,CAAC;AAED,UAAMq5B,IAA+Bv4B,GAAgBhD,EAAa,EAAEo7B,EAAgB,GAC9En4B,IAAQD,GAAgBhD,EAAa,EAAE,CAAC,EAAE,GAAAkD,EAAA,MAAQ,gBAAA9G,EAAA+G,GAAA,EAAG,UAAAD,EAAE,YAAY,EAAA,CAAE,CAAG;AAE9E,IADkBrF,EAAI,aAAA,EACZ,aAAa;AAAA,MACrB,yBAAQoF,GAAA,EAAM;AAAA,MACd,MAAMlD;AAAAA,MACN,wBAAOy7B,IAAA,EAAiB;AAAA,MACxB,QAAQ,gBAAAp/B,EAACm/B,GAAA,EAA6B,WAAW19B,EAAA,CAAK;AAAA,IAAA,CACvD;AAAA,EACH;AAAA,EACA,MAAM,UAAU;AAAA,EAAC;AAAA,EACjB,QAAQ,OACC,CAAA;AAAA,EAET,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEAy9B,GAAuB,cAAcv7B;AC3F9B,MAAM07B,KAAsB,CAAC/hC,MAAoC;AACtE,QAAMgZ,IAAehZ,EAAM,UAAU,OAAA,GAC/B,EAAE,WAAAgiC,MAAchiC,GAChB,CAACyU,GAAMiL,CAAO,IAAI1V,EAAS,EAAK,GAChCyV,IAAY/L,EAAoC,IAAI;AAC1D,SACE,gBAAAlR,EAAAiH,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA/G;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,MAAM;AACb,UAAAgd,EAAQ,EAAI;AAAA,QACd;AAAA,QAEC,UAAA1f,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAET,gBAAA0C;AAAA,MAAC+Y;AAAA,MAAA;AAAA,QACC,MAAAhH;AAAA,QACA,OAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU,MAAMiL,EAAQ,EAAK;AAAA,QAC7B,MAAM,YAAY;;AAChB,UAAAA,EAAQ,EAAK;AACb,gBAAMuiB,KAAUtmC,IAAA8jB,EAAU,YAAV,gBAAA9jB,EAAmB;AACnC,cAAI,CAACsmC;AACH;AAEF,gBAAMC,IAAc,KAAK,MAAMD,CAAO;AACtC,UAAAjiC,EAAM,UAAU,WAAWkiC,CAAW,GACtC,MAAM7iC,GAAA;AACN,gBAAMkY,IAAoByqB,EAAU,OAAO,cAAA,GACrCrsB,IAAyB,MAAMqsB,EAAU,cAAc,IAA4B,UAAU,GAC7F30B,KAASkK,KAAA,gBAAAA,EAAmB,OAAM;AACxC,UAAA5B,KAAA,QAAAA,EAAwB,IAAI,QAAQ,GAAG,SAAS,MAAM;AAEpD,YADuBA,EAAuB,OAC/B,WAAWtI,CAAM;AAAA,UAClC,IACIsI,KACqBA,EAAuB,OAC/B,WAAWtI,CAAM;AAAA,QAEpC;AAAA,QACA,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,KAAK;AAAA,QAAA;AAAA,QAEP,gBAAc;AAAA,QAEd,UAAA,gBAAA3K,EAAC,SAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,yBACnC,UAAA,gBAAAA;AAAA,UAAC+a;AAAA,UAAA;AAAA,YACC,cAAc,KAAK,UAAUzE,GAAc,MAAM,CAAC;AAAA,YAClD,UAAU;AAAA,YACV,SAAS;AAAA,cACP,iBAAiB;AAAA,YAAA;AAAA,YAEnB,YAAY,CAAC6E,MAAW;AACtB,cAAA4B,EAAU,UAAU5B;AAAA,YACtB;AAAA,UAAA;AAAA,QAAA,EACF,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ,GCrEMxX,KAAc,WAEP87B,KAAmC,CAACh+B,MAAQ;AACvD,QAAMi+B,IAAyBj+B,GACzBk+B,IAAY;AAAA,IAChB,gBAAgB,CAAA;AAAA,IAChB,kBAAkB;AAAA,EAAA;AAGpB,MAAIC,IAA2C;AAC/C,QAAM/wB,IAAapN,EAAI,UAAU,OAAA;AACjC,EAAAm+B,IAAqB/wB,GACrB8wB,EAAU,eAAe,KAAK9wB,CAAU;AAExC,QAAMgxB,IAAW,OAAOvkC,MAAwB;AAC9C,IAAKokC,MAGLA,EAAI,UAAU,WAAWpkC,CAAI,GAC7B,MAAMqB,GAAA;AAAA,EACR,GAEMmjC,IAAS;AAAA,IACb,SAAS,MAAM;AACb,YAAM,EAAE,kBAAAC,GAAkB,gBAAAC,EAAA,IAAmBL,GACvCJ,IAAU99B,EAAI,UAAU,OAAA;AAC9B,MAAIs+B,MAAqBC,EAAe,SAAS,MAC/CL,EAAU,iBAAiBK,EAAe,MAAM,GAAGD,IAAmB,CAAC,IAEzEJ,EAAU,eAAe,KAAKJ,CAAO,GACrCI,EAAU,mBAAmBK,EAAe,SAAS;AAAA,IACvD;AAAA,IACA,OAAO,YAAY;AAEjB,UAAI,CADQN,GACF;AACR,gBAAQ,KAAK,kCAAkC;AAC/C;AAAA,MACF;AACA,MAAKE,MAGLD,EAAU,iBAAiB,CAAA,GAC3BE,EAASD,CAAkB;AAAA,IAC7B;AAAA,IACA,SAAS,MAAM;AACb,YAAM,EAAE,kBAAAG,GAAkB,gBAAAC,EAAA,IAAmBL;AAC7C,UAAI,CAACG,EAAO;AACV;AAEF,YAAMpnB,IAAWqnB,IAAmB;AACpC,MAAAJ,EAAU,mBAAmBjnB;AAC7B,YAAMpd,IAAO2kC,GAAUD,EAAetnB,CAAQ,CAAC;AAC/C,MAAAmnB,EAASvkC,CAAI;AAAA,IACf;AAAA,IACA,UAAU,MAAM;AACd,UAAI,CAACwkC,EAAO;AACV;AAEF,YAAM,EAAE,kBAAAC,GAAkB,gBAAAC,EAAA,IAAmBL,GACvCjnB,IAAWqnB,IAAmB;AACpC,MAAAJ,EAAU,mBAAmBjnB;AAC7B,YAAMpd,IAAO2kC,GAAUD,EAAetnB,CAAQ,CAAC;AAC/C,aAAOmnB,EAASvkC,CAAI;AAAA,IACtB;AAAA,IACA,cAAc,MAAM;AAClB,YAAM,EAAE,kBAAAykC,MAAqBJ;AAC7B,aAAI,EAAAI,KAAoB;AAAA,IAI1B;AAAA,IACA,eAAe,MAAM;AACnB,YAAM,EAAE,kBAAAA,GAAkB,gBAAAC,EAAA,IAAmBL;AAC7C,aAAI,EAAAI,KAAoBC,EAAe,SAAS;AAAA,IAIlD;AAAA,EAAA,GAGIE,IAAkBC,GAAS,MAAM;AACrC,IAAAL,EAAO,QAAA;AAAA,EACT,GAAG,GAAG;AAEN,SAAO;AAAA,IACL,MAAMn8B;AAAAA,IAAA,aACNA;AAAAA,IACA,MAAM,KAAKlC,GAAK;AACdA,MAAAA,EAAI,UAAU,QAAQ,GAAG,gBAAgB,MAAM;AAC7C,QAAAy+B,EAAA;AAAA,MACF,CAAC,GACDz+B,EAAI,UAAU,QAAQ,GAAG,gBAAgB,MAAM;AAC7C,QAAAq+B,EAAO,QAAA;AAAA,MACT,CAAC,GACDr+B,EAAI,cAAA;AAAA,IACN;AAAA,IACA,MAAM,QAAQA,GAAK;AACjB,cAAQ,IAAI,WAAWA,CAAG;AAAA,IAC5B;AAAA,IACA,QAAQ,MACCq+B;AAAA,IAET,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAEJ;AAEAL,GAAc,cAAc97B;ACpHrB,MAAMy8B,KAAO,OAAO,YAAc,MAAc,UAAU,UAAU,YAAA,EAAc,QAAQ,SAAS,IAAI,IAAI,IAGrGC,KAAkC;AAAA,EAC7C,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAAA,EACd,SAAS;AAAA,EACT,WAAW;AAAA,EACX,cAAc;AAAA,EACd,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAKD,KAAO,MAAM;AAAA,EAClB,KAAKA,KAAO,KAAK;AAAA,EACjB,KAAKA,KAAO,KAAK;AAAA,EACjB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AACR,GAGaE,KAAiB;AAAA;AAAA,EAE5B,KAAK;AAAA,EACL,OAAO;AAAA;AAAA,EAEP,KAAK;AAAA,EACL,KAAK;AAAA,EACL,QAAQ;AAAA;AAAA,EAER,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA;AAAA,EAET,KAAK;AAAA,EACL,KAAK;AAAA,EACL,SAAS;AACX;AAsBA,SAAShkB,IAAI,GAAGA,IAAI,IAAIA;AACtB,EAAA+jB,GAAQ,IAAI/jB,CAAC,EAAE,IAAI,MAAMA;AAIpB,MAAMikB,KAAiB,CAACjM,MAC7B+L,GAAQ/L,EAAE,aAAa,KAAKgM,GAAUhM,EAAE,aAAa,KAAKA,EAAE,YAAA,EAAc,WAAW,CAAC,GAElFkM,KAAS,CAAClM,MAAc,OAAO,KAAK+L,EAAO,EAAE,KAAK,CAAC/jB,MAAM+jB,GAAQ/jB,CAAC,MAAMgY,CAAC,GACzEmM,KAAc,CAACnM,MAAc,OAAO,KAAKgM,EAAS,EAAE,KAAK,CAAChkB,MAAMgkB,GAAUhkB,CAAC,MAAMgY,CAAC,GAE3EoM,KAAe,CAAC3mC,MACpBymC,GAAOzmC,CAAC,KAAK0mC,GAAY1mC,CAAC,KAAK,OAAO,aAAaA,CAAC;AC1GtD,MAAM4mC,GAAe;AAAA,EAa1B,YAAYvlC,GAAkG;AAZtG,IAAAV,EAAA,kBAAW;AAEX;AAAA,IAAAA,EAAA,yBAA4B,CAAA;AAC5B,IAAAA,EAAA;AACA,IAAAA,EAAA,4BAAqC,CAAA;AAGrC;AAAA,IAAAA,EAAA,iBAAmB;AAGnB;AAAA,IAAAA,EAAA,sBAA2C,CAAA;AAGjD,SAAK,WAAWU,EAAQ,UACxB,KAAK,KAAA;AAAA,EACP;AAAA,EAEA,WAAWo8B,GAAiB;AAC1B,SAAK,UAAUA;AAAA,EACjB;AAAA,EAEA,OAAO;AAEL,UAAMoJ,IAAgB,KAAK,SAAS,IAAI,CAAC7nC,MAAO,KAAK,iBAAiBA,CAAE,CAAC;AACzE,SAAK,qBAAqB,CAAC,GAAG6nC,CAAa;AAAA,EAC7C;AAAA,EAEA,WAAW7nC,GAAiB;AAC1B,UAAM8nC,IAAY,KAAK,iBAAiB9nC,CAAE;AAC1C,SAAK,mBAAmB,KAAK8nC,CAAS;AAAA,EACxC;AAAA,EAEA,iBAAiB9nC,GAAiB;AAChC,UAAM+nC,IAAgB,KAAK,yBAAA,GAErBC,IAAY,CAACj8B,MAAyB;AAE1C,UAAI,KAAK,mBAAmBA,CAAK,EAAG;AAEpC,YAAMxN,IAAMwN,EAAM,WAAWA,EAAM,SAASA,EAAM;AAClD,MAAK,KAAK,gBAAgB,SAASxN,CAAG,KACpC,KAAK,gBAAgB,KAAKA,CAAG,GAE/BwpC,EAAA;AAAA,IACF;AACA,IAAA/nC,KAAA,QAAAA,EAAI,iBAAiB,WAAWgoC;AAEhC,UAAMC,IAAU,CAACl8B,MAAyB;AACxC,iBAAW,MAAM;AAEf,YAAI,KAAK,mBAAmBA,CAAK,EAAG;AAEpC,cAAMxN,IAAMwN,EAAM,WAAWA,EAAM,SAASA,EAAM,UAE5Cm8B,IAAe,KAAK,gBAAgB,UAAU,CAACloC,MAAOA,MAAOzB,CAAG;AACtE,QAAI2pC,KAAgB,KAClB,KAAK,gBAAgB,OAAOA,GAAc,CAAC;AAAA,MAI/C,GAAG,CAAC;AAAA,IACN;AACA,IAAAloC,KAAA,QAAAA,EAAI,iBAAiB,SAASioC;AAE9B,UAAME,IAAmB,MAAM;AAC7B,WAAK,kBAAkB,CAAA;AAAA,IACzB;AAEA,oCAAQ,iBAAiB,QAAQA,IAE1B,MAAM;AACX,MAAAnoC,EAAG,oBAAoB,WAAWgoC,CAAS,GAC3ChoC,EAAG,oBAAoB,SAASioC,CAAO,GACvC,yBAAQ,oBAAoB,QAAQE;AAAA,IACtC;AAAA,EACF;AAAA;AAAA,EAGA,aAAaxzB,GAA2B7Q,GAAgB;AACtD,UAAMskC,IAAczzB,EAAK,IAAI,CAAC3U,MACxB,OAAOA,KAAO,WACT,KAAK,kBAAkBA,CAAE,IAEzBA,CAEV;AACD,SAAK,aAAaooC,EAAY,KAAK,KAAK,QAAQ,CAAC,IAAI,MAAM;AAEzD,MAAI,KAAK,WAGTtkC,EAAA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB;AACd,UAAMukC,IAAc,KAAK,gBAAgB,KAAK,KAAK,QAAQ,GAErDvkC,IAAK,KAAK,aAAaukC,CAAW;AAExC,IAAAvkC,KAAA,QAAAA;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,2BAA2B;AACzB,WAAO,KAAK,cAAc,KAAK,IAAI;AAAA,EACrC;AAAA;AAAA,EAGA,kBAAkBmL,GAAe;AAC/B,WAAOu4B,GAAev4B,CAAK;AAAA,EAC7B;AAAA,EAEA,aAAaq5B,GAAc;AACzB,WAAOX,GAAaW,CAAI;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,mBAAmBv8B,GAAsB;AACvC,UAAMiP,IAAcjP,EAAM,UAAUA,EAAM;AAC1C,QAAI,CAACiP;AACH,aAAO;AAET,UAAM,EAAE,SAAAutB,MAAYvtB;AACpB,QAAI3J,IAAO;AACX,UAAMm3B,IACJD,MAAY,WACZ,CAAC,CAAC,YAAY,SAAS,SAAS,UAAU,QAAQ,SAAS,UAAU,OAAO,EAAE,SAASvtB,EAAO,IAAI;AAEpG,YACGA,EAA0B,sBACzBwtB,KAAWD,MAAY,cAAcA,MAAY,aAAa,CAACvtB,EAAO,cAExE3J,IAAO,KAEFA;AAAA,EACT;AAAA,EAEA,UAAU;AACR,SAAK,mBAAmB,QAAQ,CAACrR,MAAOA,GAAI;AAAA,EAC9C;AACF;ACzJO,MAAM0H,KAA6B;AAAA,EACxC,YAAY;AACd,GCFaC,KAA6B;AAAA,EACxC,YAAY;AACd,GCAAmF,KAAe,EAAE,OAAApF,IAAO,OAAAC,GAAA,GCIX8gC,KAAY;AAAA,EACvB,YAAY,OAAO//B,MAAoB;;AACrC,UAAMuT,IAAW,MAAMvT,EAAI,cAAc,IAA4B,UAAU,GACzEggC,IAAahgC,EAAI,OAAO,cAAA;AAC9B,QAAIggC,GAAY;AACd,YAAMr3B,IAAO,QAAMnR,IAAA+b,KAAA,gBAAAA,EAAU,WAAV,gBAAA/b,EAAkB,WAAWwoC,EAAW;AAC3D,aAAKr3B,KACH8K,GAAQ,MAAM,SAAS,GAElB9K;AAAA,IACT;AAAA,EACF;AAAA,EACA,UAAU,OAAO3I,MAAoB;;AACnC,UAAMuT,IAAW,MAAMvT,EAAI,cAAc,IAA4B,UAAU,GACzEggC,IAAahgC,EAAI,OAAO,cAAA;AAC9B,QAAIggC;AAEF,aADa,QAAMxoC,IAAA+b,KAAA,gBAAAA,EAAU,WAAV,gBAAA/b,EAAkB,SAASwoC,EAAW;AAAA,EAG7D;AAAA,EACA,UAAU,OAAOhgC,MAAoB;;AAEnC,QADY,MAAM+/B,GAAU,gBAAgB//B,CAAG;AAE7C;AAEF,UAAMuT,IAAW,MAAMvT,EAAI,cAAc,IAA4B,UAAU,GACzEggC,IAAahgC,EAAI,OAAO,cAAA,GACxBwS,IAAawtB,KAAA,gBAAAA,EAAY;AAC/B,QAAIxtB,KAAcA,EAAW,aAAa;AAExC,aADa,QAAMhb,IAAA+b,KAAA,gBAAAA,EAAU,WAAV,gBAAA/b,EAAkB,WAAWgb,EAAW;AAAA,EAG/D;AAAA,EACA,iBAAiB,OAAOxS,MAAoB;;AAC1C,UAAMuT,IAAW,MAAMvT,EAAI,cAAc,IAA4B,UAAU,GACzEggC,IAAahgC,EAAI,OAAO,cAAA,GACxBwS,IAAawtB,KAAA,gBAAAA,EAAY;AAC/B,SAAIxtB,KAAA,gBAAAA,EAAY,cAAa,UAAU,CAACwtB;AACtC;AAEF,UAAMC,IAAkBztB,KAAA,gBAAAA,EAAY,OAC9BnQ,IAAoB49B,EAAgB,YAAYA,EAAgB,OAEhEC,IADc79B,EAAS,UAAU,CAAC/K,MAAOA,EAAG,OAAO0oC,EAAW,EAAE,IACtC;AAChC,QAAIE,IAAY;AACd;AAEF,UAAM5yB,IAAQjL,KAAA,gBAAAA,EAAW69B;AACzB,QAAI5yB,KAAUA,EAAc;AAC1B,aAAO,QAAM9V,IAAA+b,KAAA,gBAAAA,EAAU,WAAV,gBAAA/b,EAAkB,WAAW8V,EAAM;AAAA,EAEpD;AAAA,EACA,YAAY,OAAOtN,MAAoB;;AACrC,UAAMuT,IAAW,MAAMvT,EAAI,cAAc,IAA4B,UAAU,GACzEggC,IAAahgC,EAAI,OAAO,cAAA,GACxBqC,IAAW29B,KAAA,gBAAAA,EAAY,MAAM,UAC7B1yB,IAAQjL,KAAA,gBAAAA,EAAW;AACzB,WAAIiL,KAAUA,EAAc,KACnB,QAAM9V,IAAA+b,KAAA,gBAAAA,EAAU,WAAV,gBAAA/b,EAAkB,WAAW8V,EAAM,OAG3C,MAAMyyB,GAAU,kBAAkB//B,CAAG;AAAA,EAC9C;AAAA,EACA,mBAAmB,OAAOA,MAAoB;;AAC5C,UAAMuT,IAAW,MAAMvT,EAAI,cAAc,IAA4B,UAAU,GAEzEggC,IAAahgC,EAAI,OAAO,cAAA,GACxBwS,IAAawtB,KAAA,gBAAAA,EAAY;AAC/B,SAAIxtB,KAAA,gBAAAA,EAAY,cAAa,UAAU,CAACwtB;AACtC;AAEF,UAAMC,IAAkBztB,KAAA,gBAAAA,EAAY,OAC9BnQ,IAAoB49B,EAAgB,YAAYA,EAAgB,OAEhEC,IADc79B,EAAS,UAAU,CAAC/K,MAAOA,EAAG,OAAO0oC,EAAW,EAAE,IACtC;AAChC,QAAIE,KAAa79B,EAAS;AACxB;AAEF,UAAMiL,IAAQjL,KAAA,gBAAAA,EAAW69B;AACzB,QAAI5yB,KAAUA,EAAc;AAC1B,aAAO,QAAM9V,IAAA+b,KAAA,gBAAAA,EAAU,WAAV,gBAAA/b,EAAkB,WAAW8V,EAAM;AAAA,EAEpD;AAAA,EACA,MAAM,OAAOtN,MAAoB;AAC/B,UAAMmgC,IAAe,MAAMngC,EAAI,cAAc,IAA2B,SAAS;AACjF,QAAImgC,KAAA,QAAAA,EAAc,OAAO;AACvB,aAAAA,KAAA,QAAAA,EAAc,OAAO,YACd;AAAA,EAEX;AAAA,EACA,MAAM,OAAOngC,MAAoB;AAC/B,UAAMmgC,IAAe,MAAMngC,EAAI,cAAc,IAA2B,SAAS;AACjF,QAAImgC,KAAA,QAAAA,EAAc,OAAO;AACvB,aAAAA,KAAA,QAAAA,EAAc,OAAO,WACd;AAAA,EAEX;AACF,GCjGMj+B,KAAc,WACdC,KAAgB,UAAUD,EAAW,IAE9Bk+B,KAAmC;AAAA,EAC9C,MAAMl+B;AAAA,EACN,aAAAA;AAAA,EACA,MAAM,KAAKlC,GAAK;AACd,UAAM,EAAE,MAAAb,MAASa;AACjB,WAAO,KAAKoE,EAAQ,EAAE,QAAQ,CAACC,MAAQ;AACrC,MAAAlF,EAAK,kBAAkBkF,GAAKlC,IAAeiC,GAASC,CAAG,GAAG,IAAM,EAAI;AAAA,IACtE,CAAC;AAED,UAAMkP,IAAW,MAAMvT,EAAI,cAAc,IAA4B,UAAU,GAEzEvG,IAAS8Z,KAAA,gBAAAA,EAAU,OAAO,qBAE1B8sB,IAAgB,IAAInB,GAAe;AAAA,MACvC,UAAU,CAAC,OAAO,SAAS,MAAMzlC,EAAQ,SAAS,IAAI;AAAA,IAAA,CACvD;AAED,IAAAuG,EAAI,OAAO,UAAU,QAAQ,GAAG,gBAAgB,MAAM;AACpD,YAAMvG,IAAS8Z,KAAA,gBAAAA,EAAU,OAAO;AAChC,iBAAW,MAAM;AACf,QAAA8sB,EAAc,WAAW5mC,EAAQ,SAAS,IAAI;AAAA,MAChD,GAAG,GAAI;AAAA,IACT,CAAC,GAED4mC,EAAc,aAAa,CAAC,QAAQ,GAAG,GAAG,MAAM;AAC9C,MAAAN,GAAU,SAAS//B,CAAG;AAAA,IACxB,CAAC,GAEDqgC,EAAc,aAAa,CAAC,QAAQ,GAAG,GAAG,MAAM;AAC9C,MAAAN,GAAU,KAAK//B,CAAG;AAAA,IACpB,CAAC,GAEDqgC,EAAc,aAAa,CAAC,QAAQ,SAAS,GAAG,GAAG,MAAM;AACvD,MAAAN,GAAU,KAAK//B,CAAG;AAAA,IACpB,CAAC,GAEDqgC,EAAc,aAAa,CAAC,IAAI,GAAG,MAAM;AACvC,MAAAN,GAAU,SAAS//B,CAAG;AAAA,IACxB,CAAC,GAEDqgC,EAAc,aAAa,CAAC,GAAG,GAAG,MAAM;AACtC,MAAAN,GAAU,SAAS//B,CAAG;AAAA,IACxB,CAAC,GAEDqgC,EAAc,aAAa,CAAC,SAAS,GAAG,GAAG,MAAM;AAC/C,MAAAN,GAAU,gBAAgB//B,CAAG;AAAA,IAC/B,CAAC,GAEDqgC,EAAc,aAAa,CAAC,MAAM,GAAG,MAAM;AACzC,MAAAN,GAAU,WAAW//B,CAAG;AAAA,IAC1B,CAAC,GAEDqgC,EAAc,aAAa,CAAC,GAAG,GAAG,MAAM;AACtC,MAAAN,GAAU,WAAW//B,CAAG;AAAA,IAC1B,CAAC,GAEDqgC,EAAc,aAAa,CAAC,SAAS,GAAG,GAAG,MAAM;AAC/C,MAAAN,GAAU,kBAAkB//B,CAAG;AAAA,IACjC,CAAC,GAEDqgC,EAAc,aAAa,CAAC,WAAW,GAAG,MAAM;AAC9C,MAAAN,GAAU,WAAW//B,CAAG;AAAA,IAC1B,CAAC,GACAA,EAAY,gBAAgBqgC,GAC7BrgC,EAAI,cAAA;AAAA,EACN;AAAA,EACA,MAAM,QAAQA,GAAK;AACjB,UAAMqgC,IAAiCrgC,EAAY;AACnD,IAAAqgC,KAAA,QAAAA,EAAe;AAAA,EACjB;AAAA,EACA,QAAQ,CAACrgC,OACA;AAAA;AAAA,IAEL,cAAc,CAACsgC,GAAgCllC,MAAmB;AAEhE,MADuC4E,EAAY,cACrC,aAAasgC,GAAWllC,CAAE;AAAA,IAC1C;AAAA,IACA,SAAS,CAAC26B,MAAoB;AAE5B,MADuC/1B,EAAY,cACrC,WAAW+1B,CAAM;AAAA,IACjC;AAAA,EAAA;AAAA,EAGJ,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAGAqK,GAAc,cAAcl+B;ACzFrB,MAAMq+B,KAAiC;AAAA,EAC5Ct1B;AAAA,EACA0I;AAAA,EACA1O;AAAA,EACAw4B;AAAA,EACAN;AAAA,EACAa;AAAA,EACAoC;AACF,GAcaI,KAA0B;AAAA,EACrC,eAAeJ,GAAc;AAAA,EAC7B,oBAAoBn7B,GAAmB;AAAA,EACvC,kBAAkBk4B,GAAiB;AAAA,EACnC,wBAAwBM,GAAuB;AAAA,EAC/C,eAAeO,GAAc;AAAA,EAC7B,gBAAgB/yB,GAAe;AAAA,EAC/B,mBAAmB0I,GAAkB;AACvC;;;;;;;;;;;;;;;;;;;;8CClCa8sB,KAAgB,CAAC5kC,MAAiC;AAC7D,QAAMqP,IAAcqE,EAAA,GAEd,CAACmxB,GAAaC,CAAc,IAAI96B,EAAS,MAAM,GAC/C,CAACwF,GAAOu1B,CAAO,IAAI/6B,EAAS,IAAI,GAChCg7B,IAAoBlhB,EAAY,MAAM;AAC1C,UAAMpM,IAAWrI,EAAY,SACvBzR,IAAS8Z,KAAA,gBAAAA,EAAU,OAAO,qBAC1ButB,IAAIrnC,KAAA,gBAAAA,EAAQ;AAClB,IAAAmnC,EAAQ,OAAOE,CAAC,CAAC;AAAA,EACnB,GAAG,CAAA,CAAE;AAEL,EAAA1vB,EAAU,MAAM;AACd,QAAI2vB,GACAtnC;AACJ,WAAAoC,EAAM,IAAI,cAAc,gBAAgB,UAAU,EAAE,KAAK,CAAC0X,MAAqC;AAC7F,MAAArI,EAAY,UAAUqI,GACtB9Z,IAAS8Z,KAAA,gBAAAA,EAAU,OAAO,qBAC1BwtB,IAAgB,MAAM;AACpB,QAAAH,EAAQ,OAAOnnC,KAAA,gBAAAA,EAAQ,UAAU,CAAC;AAAA,MACpC,GACAA,KAAA,QAAAA,EAAQ,iBAAiB,UAAUsnC,IACnCF,EAAA;AAAA,IACF,CAAC,GAEM,MAAM;AACX,MAAApnC,KAAA,QAAAA,EAAQ,oBAAoB,UAAUsnC;AAAA,IACxC;AAAA,EAEF,GAAG,CAAA,CAAE;AAGL,QAAMC,IAAiBrhB;AAAA,IACrB+e,GAAS,CAACoC,MAAc;AACtB,YAAMvtB,IAAWrI,EAAY;AAC7B,MAAAqI,KAAA,QAAAA,EAAU,OAAO,eAAeutB;AAAA,IAClC,GAAG,GAAG;AAAA,IACN,CAAA;AAAA,EAAC;AAEH,2BACGtT,IAAA,EACC,UAAA,gBAAAjvB;AAAA,IAAC0iC;AAAA,IAAA;AAAA,MACC,cAAcP;AAAA,MACd,UAAU,CAACzrB,MAAU;AACnB,cAAM1B,IAAWrI,EAAY;AAC7B,QAAKqI,MAGD0B,MAAU,UACZ1B,EAAS,OAAO,eAAe,MAAM,GACrCstB,EAAA,KACS5rB,MAAU,SACnB1B,EAAS,OAAO,eAAe,GAAG,IAElCA,EAAS,OAAO,eAAe,GAAG,GAEpCotB,EAAe1rB,CAAK;AAAA,MACtB;AAAA,MACA,SAAS;AAAA,QACP;AAAA,UACE,yBACG,QAAA,EACC,UAAA;AAAA,YAAA,gBAAA1W;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAS,MAAM;AACb,wBAAMgV,IAAWrI,EAAY;AAC7B,kBAAAqI,KAAA,QAAAA,EAAU,OAAO,eAAe,SAChCstB,EAAA;AAAA,gBACF;AAAA,gBACD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGAH,MAAgB,UACf,gBAAAniC;AAAA,cAACyW;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAO;AAAA,kBACL,YAAY;AAAA,gBAAA;AAAA,gBAEd,UAAU;AAAA,gBACV,eAAa;AAAA,gBACb,QAAO;AAAA,gBACP,OAAO3J;AAAA,gBACP,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,UAAU,CAAC9V,MAAQ;AACjB,kBAAAqrC,EAAQ,OAAOrrC,CAAG,CAAC,GACnByrC,EAAe,OAAOzrC,CAAG,CAAC;AAAA,gBAC5B;AAAA,cAAA;AAAA,YAAA;AAAA,UACD,GAEL;AAAA,UAEF,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,yBAAQ2rC,IAAA,EAAe;AAAA,UACvB,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,yBAAQC,IAAA,EAAe;AAAA,UACvB,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IACF;AAAA,EAAA,GAEJ;AAEJ,GC9GaC,KAAyD;AAAA,EACpE;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,MACP;AAAA,QACE,eAAe;AAAA,QACf,cAAc,CAAA;AAAA,QACd,aAAa;AAAA,QACb,OAAO,CAAA;AAAA,MAAC;AAAA,IACV;AAAA,EACF;AAEJ,GCZMC,KAAmD;AAAA,EACvD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,SAAS;AAAA,IACP;AAAA,MACE,eAAe;AAAA,MACf,OAAO;AAAA,QACL,UAAU;AAAA,UACR,MAAM;AAAA,QAAA;AAAA,QAER,cAAc;AAAA,QACd,MAAM;AAAA,UACJ,SAAS;AAAA,YACP;AAAA,cACE,eAAe;AAAA,cACf,OAAO;AAAA,gBACL,UAAU;AAAA,kBACR;AAAA,oBACE,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,WAAW;AAAA,oBACX,SAAS,CAAC,cAAc;AAAA,kBAAA;AAAA,kBAE1B;AAAA,oBACE,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,WAAW;AAAA,oBACX,SAAS,CAAC,gBAAgB,gBAAgB,cAAc,kBAAkB,kBAAkB;AAAA,kBAAA;AAAA,gBAC9F;AAAA,cACF;AAAA,cAEF,cAAc,CAAA;AAAA,YAAC;AAAA,UACjB;AAAA,UAEF,cAAc,CAAA;AAAA,QAAC;AAAA,MACjB;AAAA,MAEF,cAAc,CAAA;AAAA,IAAC;AAAA,EACjB;AAEJ,GAEMC,KAAY,QACZC,KAAe,QAEfC,KAAqB,SACrBC,KAAW,uBAEXC,KAA0BC,GAAU,IAAI,CAAC5H,OACd;AAAA,EAC7B,OAAOp1B,GAAWo1B,CAAG;AAAA,EACrB,eAAeA;AAAA,EACf,OAAO,CAACsH,EAAoB;AAAA,EAC5B,UAAU,CAAA;AAAA,EACV,KAAK;AAAA,IACH,MAAMtH;AAAA,IACN,SAAS0H;AAAA,IACT,SAASD;AAAA,EAAA;AACX,EAIH,GAEKI,KAAqC;AAAA,EACzC;AAAA,IACE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,gBAAgB,kBAAkB;AAAA,MAAA;AAAA,MAE9CP;AAAA,IAAA;AAAA,IAEF,WAAAC;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAUC;AAAA,QACV,QAAQ;AAAA,UACN,OAAO,CAAA;AAAA,UACP,KAAK;AAAA,YACH,OAAO;AAAA,cACL;AAAA,gBACE,OAAO;AAAA,gBACP,OAAO,CAAA;AAAA,gBACP,MAAM;AAAA,cAAA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,aAAa;AAAA,IACb,OAAO,CAAC,GAAIH,IAAwBC,EAAoB;AAAA,IACxD,WAAAC;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAUC;AAAA,QACV,QAAQ;AAAA,UACN,KAAK;AAAA,YACH,OAAO;AAAA,cACL;AAAA,gBACE,OAAO;AAAA,gBACP,OAAO,CAAA;AAAA,gBACP,MAAM;AAAA,cAAA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,gBAAgB,kBAAkB;AAAA,MAAA;AAAA,MAE9CF;AAAA,IAAA;AAAA,IAEF,eAAe;AAAA,MACb,eAAe,CAACQ,MACP,CAAChmC,MAEC,gBAAA0C,EADMsjC,GACL,EAAM,GAAGhmC,GAAO,OAAO,EAAE,GAAIA,EAAM,SAAS,CAAA,GAAK,YAAY,QAAQ,gBAAgB,SAAO,CAAG;AAAA,IAE3G;AAAA,IAGF,WAAAylC;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAUC;AAAA,QACV,QAAQ;AAAA,UACN,KAAK;AAAA,YACH,OAAO;AAAA,cACL;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO,CAAA;AAAA,gBACP,OAAO;AAAA,cAAA;AAAA,YACT;AAAA,UACF;AAAA,UAEF,OAAO;AAAA,YACL,KAAK;AAAA,UAAA;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,gBAAgB,kBAAkB;AAAA,MAAA;AAAA,MAE9C;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,iBAAiB,kBAAkB;AAAA,MAAA;AAAA,MAE/C;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,iBAAiB,kBAAkB;AAAA,MAAA;AAAA,MAE/CF;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA,MACV,UAAU;AAAA,IAAA;AAAA,IAEZ,eAAe;AAAA,MACb,eAAe,CAACx3B,MACP,CAAChO,MAGJ,gBAAA0C;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,GAAG1C,EAAM;AAAA,YACT,SAAS;AAAA,UAAA;AAAA,UAGX,UAAA,gBAAA0C;AAAA,YAACsL;AAAA,YAAA;AAAA,cACE,GAAGhO;AAAA,cACJ,OAAO;AAAA,gBACL,GAAGA,EAAM;AAAA,gBACT,eAAe;AAAA,cAAA;AAAA,YACjB;AAAA,UAAA;AAAA,QACD;AAAA,MAAA;AAAA,IAIT;AAAA,IAEF,WAAAylC;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAUC;AAAA,QACV,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,KAAK;AAAA,UAAA;AAAA,UAEP,KAAK;AAAA,YACH,OAAO;AAAA,cACL;AAAA,gBACE,OAAO;AAAA,gBACP,OAAO,CAAA;AAAA,gBACP,MAAM;AAAA,cAAA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,WAAAD;AAAA,IACA,eAAe;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,gBAAgB,kBAAkB;AAAA,MAAA;AAAA,MAE9C;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,iBAAiB,kBAAkB;AAAA,MAAA;AAAA,MAE/C;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,iBAAiB,kBAAkB;AAAA,MAAA;AAAA,MAE/CD;AAAA,IAAA;AAAA,IAEF,eAAe;AAAA,MACb,eAAe,MACN,CAACxlC,MAEJ,gBAAA0C;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,SAAS;AAAA,YACT,UAAU;AAAA,UAAA;AAAA,UAGZ,UAAA,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAG1C;AAAA,cACJ,OAAO;AAAA,gBACL,eAAe;AAAA,gBACf,GAAGA,EAAM;AAAA,cAAA;AAAA,YACX;AAAA,UAAA;AAAA,QACD;AAAA,MAAA;AAAA,IAIT;AAAA,IAEF,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAU0lC;AAAA,QACV,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,KAAK;AAAA,YACL,UAAU;AAAA,UAAA;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,WAAAD;AAAA,IACA,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,kBAAkB,kBAAkB;AAAA,MAAA;AAAA,MAEhDD;AAAA,IAAA;AAAA,IAEF,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAUE;AAAA,QACV,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,kBAAkB,oBAAoB,kBAAyB;AAAA,MAAA;AAAA,MAE3E;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS,CAAC,kBAAkB,kBAAkB;AAAA,MAAA;AAAA,MAEhDF;AAAA,IAAA;AAAA,IAEF,WAAAC;AAAA,IACA,eAAe;AAAA,MACb,UAAU,OAAO1qC,MAAS;AACxB,cAAMiF,IAAQjF,EAAK,cAAA,GACbuS,IAAK,KAAK,SAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC;AAChD,eAAAtN,EAAM,eAAe;AAAA,UACnB;AAAA,YACE,KAAK;AAAA,YACL,OAAOsN;AAAA,UAAA;AAAA,UAET;AAAA,YACE,KAAK;AAAA,YACL,OAAO;AAAA,cACL,SAAS;AAAA,cACT,QAAQ;AAAA,YAAA;AAAA,UACV;AAAA,QACF,GAEFtN,EAAM,WAAW,QAAQA,EAAM,WAAW,MAAM,QAAQ,SAASsN,CAAE,GACnEvS,EAAK,mBAAmB;AAAA,UACtB,OAAAiF;AAAA,QAAA,CACD,GACM;AAAA,UACL,SAASjF;AAAA,QAAA;AAAA,MAEb;AAAA,IAAA;AAAA,IAEF,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAU2qC;AAAA,QACV,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,cACL,QAAQ;AAAA,YAAA;AAAA,YAEV,YAAY;AAAA,cACV,MAAM;AAAA,cACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAA;AAAA,UAOT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,UACP;AAAA,YACE,eAAe;AAAA,YACf,OAAO;AAAA,cACL,SAASI,GAAU,IAAI,CAAC5H,OACf;AAAA,gBACL,MAAMA;AAAA,gBACN,OAAOA;AAAA,cAAA,EAEV;AAAA,YAAA;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,MAEFsH;AAAA,IAAA;AAAA,IAEF,aAAa;AAAA,IACb,WAAAC;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAUC;AAAA,QACV,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEJ;AACAK,GAAkB,QAAQ,CAACtqC,MAAO;AAChC,EAAAA,EAAG,SAASwqC;AACd,CAAC;AAED,MAAMC,KAA+BH,GAAkB,IAAI,CAACtqC,OACnD;AAAA,EACL,GAAGA;AAAA,EACH,KAAK;AAAA,IACH,MAAMA,EAAG;AAAA,IACT,SAASmqC;AAAA,IACT,SAASD;AAAA,EAAA;AACX,EAEH,GAEYQ,KAAqB,CAAC,GAAGD,IAA8B,GAAGL,EAAuB;ACxbvF,MAAMO,WAAermC,EAAM,UAAuB;AAAA,EAiBvD,YAAYC,GAAoB;;AAC9B,UAAMA,CAAK;AAhBb,IAAA5C,EAAA;AAEA,IAAAA,EAAA;AACA,IAAAA,EAAA,sBAAe2C,EAAM,UAAA;AACrB,IAAA3C,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEA,IAAAA,EAAA,yBAAmD,CAAA;AACnD,IAAAA,EAAA;AAsGA,IAAAA,EAAA,oBAAa,CAACY,MAAwB;AACpC,WAAK,UAAU,WAAWA,CAAI;AAAA,IAChC;AAEA,IAAAZ,EAAA,yBAAkB,OAChBipC,GACAC,GACAxoC,MAGG;AACH,YAAMyoC,IAAiB,MAAM,KAAK,cAAc,IAA4B,UAAU,GAChFC,IAAuBD,KAAA,gBAAAA,EAAgB;AAE7C,WAAK,cAAc,yBAAyB,QAAQD,CAAiB,GACrE,KAAK,UAAU,oBAAoB,KAAK,cAAc,yBAAyB,QAAA;AAE/E,YAAM1oC,IAAS4oC,KAAA,gBAAAA,EAAsB;AAErC,UAAI,CAAC5oC,GAAQ;AACX,gBAAQ,KAAK,kBAAkB;AAC/B;AAAA,MACF;AAIA,YADoB,IAAI6oC,GAAYH,GAAmB1oC,CAAM,EAC3C,KAAA;AAClB,YAAM8oC,IAAsB9nC,GAAgB0nC,GAAmB1oC,CAAM;AAErE,UAAI2Q,IAAgBzP,GAAW4nC,CAAmB;AAClD,MAAI5oC,KAAA,QAAAA,EAAS,qBACXyQ,IAAgBzQ,EAAQ,iBAAiByQ,CAAa,IAGxDi4B,KAAA,QAAAA,EAAsB,uBAAuBj4B,IAC7C,KAAK,UAAU,eAAe,aAAa83B,CAAS,GACpD,KAAK,QAAQ,KAAK,iBAAiB;AAAA,IACrC;AAEA,IAAAjpC,EAAA,iBAAU,YAAY;AACpB,WAAK,UAAU,WAAW,KAAK,UAAU,OAAO,QAAQ,CAAC;AAAA,IAC3D;AAEA,IAAAA,EAAA,sBAAe,MACN,KAAK,aAAa;AA5IzB,SAAK,aAAa4C,EAAM,QACxB,KAAK,WAAWA,EAAM,UACtB,KAAK,oBAAoB,MACxB,OAAe,oBAAoB,MACpC,KAAK,2BAA2B,IAAI9C,GAAyB8C,EAAM,qBAAqB,CAAA,CAAE,GAC1F,KAAK,kBAAkBA,EAAM,mBAAmB,CAAA,IAE5CrE,IAAAqE,EAAM,iBAAN,QAAArE,EAAoB,UACtBgrC,GAAO,OAAO;AAAA,MACZ,OAAO;AAAA,QACL,KAAIzgC,IAAAlG,EAAM,iBAAN,gBAAAkG,EAAoB;AAAA,MAAA;AAAA,IAC1B,CACD;AAGH,QAAI;AACF,WAAK,YAAY,IAAI0gC,GAAM,KAAK,YAAY;AAAA,QAC1C,WAAW,KAAK,YAAY,CAAA;AAAA,QAC5B,mBAAmB5mC,EAAM,qBAAqB,CAAA;AAAA,MAAC,CAChD;AAAA,IACH,SAASkJ,GAAG;AACV,cAAQ,MAAMA,CAAC,GACf,KAAK,YAAY,IAAI09B,GAAMC,EAAS;AAAA,IACtC;AACA,SAAK,UAAU3lC,GAAA;AAAA,EACjB;AAAA,EAEA,wBAAwBnG,GAAgC;AACtD,SAAK,oBAAoBA,GACzB,KAAK,QAAQ,KAAK,sBAAsB;AAAA,MACtC,MAAAA;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAEA,MAAM,oBAAoB;;AACvB,WAAe,eAAe;AAC/B,UAAM+rC,IAAU,KAAK,MAAM,SACrBC,IAAgB,IAAItjC,GAAc;AAAA,MACtC,QAAQ;AAAA,MACR,cAAc,MAAM,KAAK,aAAa;AAAA,MACtC,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAAA,MAChBH;AAAAA,MACA,0BAA0B,KAAK;AAAA,IAAA,CAChC;AACD,SAAK,gBAAgByjC,GAErBA,EAAc,aAAqC,YAAY,CAACziC,OAC9DA,EAAe,IAAI,OAAO,mBAAmB5G,IAC7C4G,EAAe,IAAI,OAAO,eAAezG,GAAiB;AAAA,MACxD,YAAY,KAAK,MAAM,cAAc,CAAA;AAAA,MACrC,aAAa,KAAK,MAAM,eAAe,CAAA;AAAA,IAAC,CACzC,GACDyG,EAAe,IAAI,OAAO,aAAa,KAAK,MAAM,YAC3CA,EACR,IACD4B,KAAAvK,IAAA,KAAK,OAAM,oBAAX,QAAAuK,EAAA,KAAAvK,GAA6B;AAAA,MAC3B,eAAe,KAAK;AAAA,IAAA;AAGtB,UAAM+iB,IAAQooB,EAAQ,IAAI,CAAC,MAClB,KAAK,cAAc,IAAI,CAAC,CAChC;AAED,KAAA1gC,KAAAD,IAAA,KAAK,OAAM,YAAX,QAAAC,EAAA,KAAAD,GAAqB;AAAA,MACnB,eAAe,KAAK;AAAA,MACpB,QAAQ;AAAA,IAAA,IAGV,MAAM,QAAQ,IAAIuY,CAAK,GAEvB,KAAK,UAAU,QAAQ,GAAG,gBAAgB,MAAM;;AAC9C,UAAI,CAAC,KAAK;AACR;AAEF,YAAMsoB,IAAgB,KAAK,UAAU,SAAQrrC,IAAA,KAAK,sBAAL,gBAAAA,EAAwB,EAAE;AACvE,MAAIqrC,KACF,KAAK,wBAAwBA,CAAa;AAAA,IAE9C,CAAC,IAEDx6B,KAAA3L,IAAA,KAAK,OAAM,YAAX,QAAA2L,EAAA,KAAA3L,GAAqB;AAAA,MACnB,eAAe,KAAK;AAAA,MACpB,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EAEA,gBAAgB;;AACd,QAAI,GAAClF,IAAA,KAAK,sBAAL,QAAAA,EAAwB;AAC3B,aAAO;AAET,UAAMZ,IAAO,KAAK,UAAU,QAAQ,KAAK,kBAAkB,EAAE,KAAK;AAClE,gBAAK,oBAAoBA,GAClBA;AAAA,EACT;AAAA;AAAA,EAkDA,UAAU;AACR,WAAOyI;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,UAAU;;AACd,UAAMyjC,KAAwBtrC,IAAA,KAAK,aAAa,YAAlB,gBAAAA,EAA2B;AACzD,SAAK,yBAAyBsrC,IAC9B/gC,IAAA,KAAK,aAAa,YAAlB,QAAAA,EAA2B,aAAa;AAAA,MACtC,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,YAAY;AAAA,IAAA;AAGd,UAAMqgC,IAAiB,MAAM,KAAK,cAAc,IAA4B,UAAU,GAChFC,IAAuBD,KAAA,gBAAAA,EAAgB;AAC7C,IAAAC,KAAA,QAAAA,EAAsB;AAAA,EACxB;AAAA,EAEA,MAAM,eAAe;;AACnB,KAAA7qC,IAAA,KAAK,aAAa,YAAlB,QAAAA,EAA2B,aAAa;AAAA,MACtC,GAAI,KAAK,0BAA0B,CAAA;AAAA,MACnC,YAAY;AAAA,IAAA;AAEd,UAAM4qC,IAAiB,MAAM,KAAK,cAAc,IAA4B,UAAU,GAChFC,IAAuBD,KAAA,gBAAAA,EAAgB;AAC7C,IAAAC,KAAA,QAAAA,EAAsB;AAAA,EACxB;AAAA,EAEA,aAAarlC,GAAiC;;AAC5C,KAAAxF,IAAA,KAAK,aAAa,YAAlB,QAAAA,EAA2B,aAAawF,KAAU,CAAA;AAAA,EACpD;AAAA,EAEA,SAAS;AACP,WACE,gBAAAuB,EAAC,OAAA,EAAI,WAAWC,EAAK,CAACF,GAAO,iBAAiB,KAAK,MAAM,SAAS,CAAC,GAAG,OAAO,KAAK,MAAM,OACtF,UAAA,gBAAAC,EAAC5C,IAAA,EAAU,KAAK,KAAK,cAAc,SAAS,KAAK,SAAU,GAAG,KAAK,gBAAA,CAAiB,GACtF;AAAA,EAEJ;AACF;AA3ME1C,EADWgpC,IACJ,WAAU;"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/utils/css.ts","../src/core/assetPackagesListManage.ts","../src/utils/defaultEngineConfig.tsx","../src/utils/logger.ts","../src/utils/index.ts","../src/component/Workbench/index.tsx","../src/i18n/zh_CN/index.ts","../src/i18n/en_US/index.ts","../src/i18n/index.ts","../src/core/pluginManager.ts","../src/plugins/ComponentLibrary/localize/zh_CN/index.ts","../src/plugins/ComponentLibrary/localize/en_US/index.ts","../src/plugins/ComponentLibrary/localize/index.ts","../src/plugins/ComponentLibrary/components/DragItem/index.tsx","../src/plugins/ComponentLibrary/components/ListView/index.tsx","../src/plugins/ComponentLibrary/util.ts","../src/plugins/ComponentLibrary/index.tsx","../src/plugins/Designer/config.ts","../src/plugins/Designer/localize/zh_CN/index.ts","../src/plugins/Designer/localize/en_US/index.ts","../src/plugins/Designer/localize/index.ts","../src/plugins/Designer/components/DefaultSelectToolBar/index.tsx","../src/plugins/Designer/util.ts","../src/plugins/Designer/components/GhostView/index.tsx","../src/plugins/Designer/components/Canvas/advanceCustomHook.ts","../src/plugins/Designer/components/Canvas/index.tsx","../src/plugins/Designer/index.tsx","../src/plugins/OutlineTree/util.tsx","../src/plugins/OutlineTree/components/TreeView/context.ts","../src/plugins/OutlineTree/components/TreeView/treeNode.tsx","../src/plugins/OutlineTree/components/TreeView/index.tsx","../src/plugins/OutlineTree/localize/zh_CN/index.ts","../src/plugins/OutlineTree/localize/en_US/index.ts","../src/plugins/OutlineTree/localize/index.ts","../src/plugins/OutlineTree/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/config.ts","../src/component/CustomSchemaForm/components/Form/context.ts","../src/component/CustomSchemaForm/components/Form/index.tsx","../src/component/CustomSchemaForm/components/Setters/StringSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/NumberSetter/index.tsx","../src/component/CustomSchemaForm/utils.ts","../src/component/CustomSchemaForm/components/Setters/ArraySetter/ArrayItem.tsx","../src/component/CustomSchemaForm/components/Setters/ArraySetter/SortItemOrderModal.tsx","../src/component/CustomSchemaForm/components/Setters/ArraySetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/ShapeSetter/index.tsx","../src/component/MonacoEditor/index.tsx","../src/component/CustomSchemaForm/components/Setters/FunctionSetter/defaultDts.ts?raw","../src/component/CustomSchemaForm/components/Setters/FunctionSetter/helper.ts","../src/component/CustomSchemaForm/components/Setters/ExpressionSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/BooleanSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/SelectSetter/index.tsx","../src/component/MoveableModal/index.tsx","../src/component/CustomSchemaForm/components/Setters/JSONSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/FunctionSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/TextAreaSetter/index.tsx","../src/component/CSSPropertiesEditor/cssProperties.ts","../src/component/CustomSchemaForm/components/Setters/CSSValueSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/ColorSetter/index.tsx","../src/config/colorPickerColorList.ts","../src/component/CustomSchemaForm/components/Setters/AntDColorSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/SliderSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/RadioGroupSetter/index.tsx","../src/component/InputNumberPlus/index.tsx","../src/component/CSSSizeInput/index.tsx","../src/component/CustomSchemaForm/components/Setters/CSSSizeSetter/index.tsx","../src/component/StylePanel/DimensionInput/index.tsx","../src/component/StylePanel/MarginAndPaddingInput/index.tsx","../src/component/CustomColorPicker/index.tsx","../src/component/StylePanel/FontInput/index.tsx","../src/component/StylePanel/BorderInput/index.tsx","../src/component/StylePanel/BackgroundInput/index.tsx","../src/component/StylePanel/ShadowInput/index.tsx","../src/component/CSSCodeEditor/helper.ts","../src/component/CSSCodeEditor/index.tsx","../src/component/StylePanel/index.tsx","../src/component/CustomSchemaForm/components/Setters/FastLayoutSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/EmptyValueSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/index.ts","../src/component/CustomSchemaForm/components/Form/Field/index.tsx","../src/component/CustomSchemaForm/context.ts","../src/component/CustomSchemaForm/components/SetterSwitcher/core.tsx","../src/component/CustomSchemaForm/components/SetterSwitcher/index.tsx","../src/component/CustomSchemaForm/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeByTree/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeByTree/modal.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeByTree/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/SelectNodeState/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/AssignValueNode/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/CreateNewNodePopup/initData.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/CreateNewNodePopup/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/InputHandle/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/OutputHandle/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/component/NodeCard/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/context.ts","../src/component/CustomSchemaForm/components/CFiledWithSwitchSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/AssignValueNode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/StartNode.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/CallNodeMethodNode/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/CallNodeMethodNode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/JumpLinkNode.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/RequestAPINode/helper.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/RequestAPINode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/RunCodeNode/index.tsx","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/node/index.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/util.ts","../src/component/CustomSchemaForm/components/Setters/ActionFlowSetter/index.tsx","../src/component/CustomSchemaForm/components/Setters/AdvanceSetterList.ts","../src/plugins/PropertyPanel/view.tsx","../src/plugins/PropertyPanel/index.tsx","../src/plugins/ComponentStatePanel/index.tsx","../src/plugins/AdvancePanel/index.tsx","../src/component/CSSPropertiesVariableBindEditor/cssProperties.ts","../src/plugins/RightPanel/context.ts","../src/component/CSSPropertiesVariableBindEditor/SingleProperty.tsx","../src/component/CSSPropertiesVariableBindEditor/index.tsx","../src/component/ClassNameEditor/index.tsx","../src/component/CSSPropertiesEditor/signleProperty.tsx","../src/component/CSSPropertiesEditor/index.tsx","../src/component/CSSEditor/index.tsx","../src/plugins/VisualPanelPlus/index.tsx","../src/plugins/EventPanel/panel.tsx","../src/plugins/EventPanel/index.tsx","../src/plugins/RightPanel/view.tsx","../src/plugins/RightPanel/index.tsx","../src/plugins/GlobalStatePanel/localize/zh_CN/index.ts","../src/plugins/GlobalStatePanel/localize/en_US/index.ts","../src/plugins/GlobalStatePanel/localize/index.ts","../src/plugins/GlobalStatePanel/index.tsx","../src/plugins/DisplaySourceSchema/index.tsx","../src/plugins/History/index.tsx","../src/plugins/Hotkeys/keymap.ts","../src/plugins/Hotkeys/hotKeyManager.ts","../src/plugins/Hotkeys/localize/zh_CN/index.ts","../src/plugins/Hotkeys/localize/en_US/index.ts","../src/plugins/Hotkeys/localize/index.ts","../src/plugins/Hotkeys/action.ts","../src/plugins/Hotkeys/index.ts","../src/plugins/index.tsx","../src/component/DesignerSizer/index.tsx","../src/material/container.meta.ts","../src/material/innerMaterial.tsx","../src/index.tsx"],"sourcesContent":["import { CSSVal } from '@/component/CSSEditor';\nimport { CNodeModelDataType, CSSType, CSSValue, JSExpressionPropType, getRandomStr, isExpression } from '@chamn/model';\nimport Color from 'color';\nimport { isPlainObject } from 'lodash-es';\nimport * as csstree from 'css-tree';\n\nexport type StyleArr = {\n property: string;\n value: any;\n}[];\n\nexport const styleArr2Obj = (val: StyleArr) => {\n const res: Record<string, any> = {};\n val.forEach((item) => {\n res[item.property] = item.value;\n });\n return res;\n};\n\nexport const styleObjToArr = (obj: Record<string, any> = {}) => {\n const res: StyleArr = Object.keys(obj).reduce((tempRes, key) => {\n return [\n ...tempRes,\n {\n property: key,\n value: obj[key],\n },\n ];\n }, [] as StyleArr);\n\n return res;\n};\n\nexport const styleList2Text = (val: StyleArr) => {\n let res = '';\n val.forEach((item) => {\n res += `${item.property}:${item.value};`;\n });\n return res;\n};\n\nexport const formatStyleProperty = (styleList: CNodeModelDataType['style'] = []) => {\n // 遗留数据结构兼容, 正式版本会移除\n if (isPlainObject(styleList)) {\n styleList = Object.keys(styleList).map((key) => {\n return {\n property: key,\n value: (styleList as any)[key],\n };\n });\n }\n const normalProperty: { property: string; value: string }[] = [];\n const expressionProperty: { property: string; value: JSExpressionPropType }[] = [];\n const allProperty: { property: string; value: any }[] = [];\n styleList.forEach((it) => {\n const val = it.value;\n const obj = {\n property: it.property,\n value: val,\n };\n\n allProperty.push(obj);\n if (isExpression(val)) {\n expressionProperty.push({\n ...obj,\n value: val as unknown as JSExpressionPropType,\n });\n } else {\n normalProperty.push({\n ...obj,\n value: val as unknown as string,\n });\n }\n });\n const res = {\n normalProperty,\n expressionProperty,\n allProperty,\n };\n return res;\n};\n\nexport const formatCSSTextProperty = (cssText: string) => {\n // 解析 CSS 代码\n const ast = csstree.parse(`.node {${cssText}}`);\n\n const cssList: { id: string; property: string; value: string }[] = [];\n\n // 遍历 AST 获取属性\n csstree.walk(ast, function (node) {\n if (node.type === 'Declaration') {\n cssList.push({\n id: getRandomStr(),\n property: node.property,\n value: csstree.generate(node.value),\n });\n }\n });\n\n return cssList;\n};\n\nexport const formatCssToNodeVal = (className: string, val: CSSVal): CSSType => {\n type StateType = keyof CSSVal;\n const res: CSSType = {\n class: className,\n value: [],\n };\n const cssList: CSSValue[] = [];\n Object.keys(val).forEach((state) => {\n const currentStateCss = val[state as StateType];\n const tempVal: CSSValue = {\n state: state,\n media: [],\n text: currentStateCss?.['normal'] || '',\n };\n Object.keys(currentStateCss || ({} as any)).forEach((mediaKey) => {\n tempVal.media = tempVal.media || [];\n if (mediaKey !== 'normal') {\n tempVal.media.push({\n type: 'max-width',\n value: mediaKey,\n text: currentStateCss?.[mediaKey] || '',\n });\n }\n });\n cssList.push(tempVal);\n });\n res.value = cssList;\n return res;\n};\n\nexport const formatNodeValToEditor = (val?: CSSType): CSSVal => {\n if (!val) {\n return {};\n }\n const list = val.value;\n const res: CSSVal = {};\n\n list.forEach((el) => {\n const tempStyle = (el as any).style;\n // 遗留数据兼容,正式版本会移除\n if (!el.text && tempStyle) {\n el.text = Object.keys(tempStyle).reduce((cssText, key) => {\n cssText += `${key}: ${tempStyle[key]};`;\n return cssText;\n }, '');\n }\n\n const currentStateCss: Record<string, string> = {\n normal: el.text || '',\n };\n el.media?.forEach((it) => {\n currentStateCss[it.value] = it.text || '';\n });\n res[el.state as keyof CSSVal] = currentStateCss;\n });\n\n return res;\n};\n\nexport const getColorFromStr = (str: string) => {\n // 匹配16进制颜色(包括#号)\n const hexColorPattern = /#(?:[0-9a-fA-F]{3}){1,2}\\b/g;\n\n // 匹配RGBA颜色\n const rgbaColorPattern = /rgba?\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*(?:\\d*\\.\\d+|\\d+\\.\\d*|\\d+)\\s*\\)/g;\n\n // 匹配RGB颜色\n const rgbColorPattern = /rgb?\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)/g;\n\n // 匹配HSB颜色\n const hsbColorPattern = /hsb?\\(\\s*\\d+\\s*,\\s*\\d+%\\s*,\\s*\\d+%\\s*\\)/g;\n const hexColors = str.match(hexColorPattern) || [];\n const rgbaColors = str.match(rgbaColorPattern) || [];\n const rgbColors = str.match(rgbColorPattern) || [];\n const hsbColors = str.match(hsbColorPattern) || [];\n\n return [...hexColors, ...rgbaColors, ...rgbColors, ...hsbColors];\n};\n\nexport type BoxShadowObjType = {\n offsetX: string | undefined;\n offsetY: string | undefined;\n blur: string | undefined;\n spread: string | undefined;\n color: string | undefined;\n type?: 'inset' | '';\n};\n\nexport const parseBoxShadowString = (str: string) => {\n // 先匹配所有的 rgb(a), 转换为对应的 16 进制,\n const colorsList = getColorFromStr(str);\n const color16Map = colorsList.reduce((res, c) => {\n res[c] = Color(c).hexa();\n return res;\n }, {} as any);\n // 替换字符串中所有的颜色为 16 进制,避免逗号影响分隔\n let tempStr = str;\n colorsList.forEach((c) => {\n tempStr = tempStr.replaceAll(c, color16Map[c]);\n });\n\n // 分割逗号\n const res = tempStr.split(',').map((el) => {\n const shadowItem: BoxShadowObjType = {\n offsetX: undefined,\n offsetY: undefined,\n blur: undefined,\n spread: undefined,\n color: undefined,\n type: undefined,\n };\n let newStr = el;\n if (newStr.includes('inset')) {\n shadowItem.type = 'inset';\n newStr = newStr.replace('inset', '').trim();\n }\n\n const color = getColorFromStr(newStr);\n if (color.length) {\n shadowItem.color = color[0];\n newStr = newStr.replace(shadowItem.color, '').trim();\n }\n\n const newStrArr = newStr.split(' ');\n const sizeArr = [];\n for (let i = 0; i < newStrArr.length; i++) {\n if (!isNaN(parseInt(newStrArr[i]))) {\n sizeArr.push(newStrArr[i]);\n } else {\n break;\n }\n }\n shadowItem.offsetX = sizeArr[0];\n shadowItem.offsetY = sizeArr[1];\n shadowItem.blur = sizeArr[2] || '';\n shadowItem.spread = sizeArr[3] || '';\n // 获取单词颜色\n if (!shadowItem.color) {\n shadowItem.color = newStrArr[sizeArr.length];\n }\n return shadowItem;\n });\n\n return res;\n};\n","import { AssetPackage } from '@chamn/model';\n\nexport class AssetsPackageListManager {\n private _assets: AssetPackage[];\n constructor(assets: AssetPackage[]) {\n this._assets = assets;\n }\n\n getList() {\n return this._assets;\n }\n\n setList(newAssets: AssetPackage[]) {\n const tempList = [...newAssets, ...this._assets];\n const newList = getUniqueAssetsList(tempList);\n // 去重复\n this._assets = newList;\n }\n}\n\nexport const getUniqueAssetsList = (tempList: AssetPackage[]) => {\n const newList: AssetPackage[] = [];\n const idMap: Record<string, any> = {};\n tempList.forEach((el) => {\n if (!idMap[el.package]) {\n idMap[el.package] = el;\n newList.push(el);\n }\n });\n\n return newList;\n};\n","import { getUniqueAssetsList } from '@/core/assetPackagesListManage';\nimport { LayoutPropsType } from '@chamn/layout';\nimport { collectVariable, flatObject, getThirdLibs, RenderPropsType } from '@chamn/render';\n\n/** 默认使用 react 18 模式渲染 */\nexport const beforeInitRender: LayoutPropsType['beforeInitRender'] = async ({ iframe }) => {\n const subWin = iframe.getWindow();\n if (!subWin) {\n return;\n }\n (subWin as any).React = window.React;\n (subWin as any).ReactDOM = window.ReactDOM;\n (subWin as any).ReactDOMClient = (window as any).ReactDOMClient;\n};\n\n/** 默认使用 react 18 模式渲染 */\nexport const getDefaultRender = (options: {\n components: Record<string, any>;\n renderProps: Partial<RenderPropsType>;\n}) => {\n const defaultRender: LayoutPropsType['customRender'] = async ({\n iframe: iframeContainer,\n assets,\n page,\n pageModel,\n ready,\n renderJSUrl,\n }) => {\n await iframeContainer.injectJS(renderJSUrl || '');\n const iframeWindow = iframeContainer.getWindow()!;\n const iframeDoc = iframeContainer.getDocument()!;\n const IframeReact = iframeWindow.React!;\n const IframeReactDOM = iframeWindow.ReactDOMClient!;\n const CRender = iframeWindow.CRender!;\n\n // 从子窗口获取物料对象\n const pageInfo = page || pageModel?.export();\n if (!pageInfo) {\n console.log('page schema is empty');\n return;\n }\n const allAssets = getUniqueAssetsList([...assets, ...(pageInfo.assets || [])]);\n // 注入组件物料资源\n const assetLoader = new CRender.AssetLoader(allAssets, {\n window: iframeContainer.getWindow()!,\n });\n assetLoader\n .onSuccess(() => {\n const allLibs = collectVariable(allAssets, iframeWindow);\n const componentsLibs = flatObject(allLibs);\n const thirdLibs = getThirdLibs(allLibs, pageInfo.thirdLibs || []);\n const App = IframeReact?.createElement(CRender.DesignRender, {\n adapter: CRender?.ReactAdapter,\n page: page,\n pageModel: pageModel,\n components: { ...componentsLibs, ...(options.components || {}) },\n $$context: {\n thirdLibs,\n },\n onMount: (designRenderInstance) => {\n ready(designRenderInstance);\n },\n ...((options?.renderProps as any) || {}),\n });\n IframeReactDOM.createRoot(iframeDoc.getElementById('app')!).render(App);\n })\n .onError(() => {\n console.log('资源加载出错');\n })\n .load();\n };\n\n return defaultRender;\n};\n","import { consola } from 'consola';\nexport const LOGGER = consola.create({\n level: 1,\n});\n","/**\n *\n * @param time 毫秒\n * @returns\n */\nexport const waitReactUpdate = ({ time = 1000 / 60, cb }: { time?: number; cb?: (...args: any[]) => void } = {}) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve('ok');\n cb?.();\n }, time);\n });\n};\n/** 确保 key 一定存在 */\nexport const ensureKeyExist = (obj: any, key: string, defaultValue: any) => {\n if (obj[key] !== undefined) {\n return;\n }\n obj[key] = defaultValue;\n};\n\nexport const sageJSONParse = function (jsonStr: string, errorValue: any) {\n try {\n const res = JSON.parse(jsonStr);\n return res;\n } catch (_e) {\n return errorValue ?? null;\n }\n};\n\nexport * from './css';\nexport * from './defaultEngineConfig';\nexport * from './logger';\n","import React from 'react';\nimport { Resizable, ResizeCallback } from 're-resizable';\nimport styles from './style.module.scss';\nimport { Button } from 'antd';\nimport { CloseOutlined, DoubleRightOutlined, PushpinOutlined } from '@ant-design/icons';\nimport clsx from 'clsx';\nimport mitt, { Emitter } from 'mitt';\nimport { waitReactUpdate } from '../../utils';\nimport { createPortal } from 'react-dom';\n\nexport interface PluginContext {\n openPanel: () => void;\n closePanel: () => void;\n getPlugin: (pluginName: string) => any;\n emitter: Emitter<any>;\n}\n\ntype PanelItem = {\n name: string;\n title: string | React.ReactNode;\n icon: React.ReactNode;\n render: React.ReactNode;\n};\n\nexport type WorkbenchCustomView = {\n key: string;\n view: React.ReactNode;\n};\n\nexport type TWidgetVisible = {\n hiddenTopBar?: boolean;\n hiddenLeftPanel?: boolean;\n hiddenRightPanel?: boolean;\n /** canvas 区域不添加任何 padding margining */\n canvasFull?: boolean;\n};\n\ntype WorkbenchStateType = {\n leftBoxVisible: boolean;\n leftBoxSize: {\n width: number;\n height: number | string;\n };\n leftBoxFixed: boolean;\n rightBoxSize: {\n width: number;\n height: number | string;\n };\n rightBoxVisible: boolean;\n currentActiveLeftPanel: string;\n leftPanels: PanelItem[];\n bodyView: React.ReactNode | null;\n rightView: React.ReactNode | null;\n topToolBarView: React.ReactNode | null;\n subTopToolBarView: React.ReactNode | null;\n customViewList: WorkbenchCustomView[];\n} & TWidgetVisible;\n\nexport type WorkbenchPropsType = {\n emitter: Emitter<any>;\n} & TWidgetVisible;\n\nexport class Workbench extends React.Component<WorkbenchPropsType, WorkbenchStateType> {\n emitter: Emitter<any>;\n leftPanelContentRef: React.RefObject<HTMLDivElement>;\n constructor(props: WorkbenchPropsType) {\n super(props);\n this.emitter = props.emitter || mitt();\n this.leftPanelContentRef = React.createRef<HTMLDivElement>();\n this.state = {\n leftBoxVisible: true,\n leftBoxSize: {\n width: 300,\n height: '100%',\n },\n leftBoxFixed: true,\n rightBoxVisible: true,\n rightBoxSize: {\n width: 350,\n height: '100%',\n },\n currentActiveLeftPanel: 'ComponentLib',\n leftPanels: [],\n bodyView: null,\n rightView: null,\n topToolBarView: null,\n subTopToolBarView: null,\n customViewList: [],\n hiddenTopBar: props.hiddenTopBar ?? false,\n hiddenLeftPanel: props.hiddenLeftPanel ?? false,\n hiddenRightPanel: props.hiddenRightPanel ?? false,\n canvasFull: props.canvasFull ?? false,\n };\n }\n\n getHiddenWidgetConfig() {\n return {\n hiddenTopBar: this.state.hiddenTopBar,\n hiddenLeftPanel: this.state.hiddenLeftPanel,\n hiddenRightPanel: this.state.hiddenRightPanel,\n };\n }\n\n /** 隐藏编辑器的小部件 */\n hiddenWidget(config: Partial<TWidgetVisible>) {\n this.setState({\n ...(config || {}),\n });\n }\n\n addLeftPanel = (panel: PanelItem) => {\n this.state.leftPanels.push(panel);\n this.setState({\n leftPanels: [...this.state.leftPanels],\n });\n };\n\n /** 替换对应的 panel */\n replaceLeftPanel = (panelName: string, newPanel: PanelItem) => {\n const targetIndex = this.state.leftPanels.findIndex((el) => el.name === panelName);\n if (targetIndex > -1) {\n const newPanels = [...this.state.leftPanels];\n newPanels[targetIndex] = newPanel;\n this.setState({\n leftPanels: newPanels,\n });\n }\n };\n\n /**\n * 添加属于插件的自定义视图\n * @param view\n * @returns dispose: 调用后移除 view\n */\n addCustomView(view: WorkbenchCustomView) {\n const newViewList = this.state.customViewList;\n newViewList.push(view);\n\n this.setState({\n customViewList: [...newViewList],\n });\n\n return () => {\n const newViewList = this.state.customViewList.filter((el) => el !== view);\n this.setState({\n customViewList: [...newViewList],\n });\n };\n }\n\n openLeftPanel = async (currentActiveLeftPanel?: string) => {\n const newActive = currentActiveLeftPanel || this.state.currentActiveLeftPanel;\n this.setState({\n leftBoxVisible: true,\n leftBoxSize: {\n width: 350,\n height: '100%',\n },\n currentActiveLeftPanel: newActive,\n });\n\n await waitReactUpdate();\n this.emitter.emit('leftPanelVisible', {\n visible: true,\n panelName: newActive,\n });\n };\n\n closeLeftPanel = async () => {\n this.setState({\n leftBoxVisible: false,\n leftBoxSize: {\n width: 0,\n height: '100%',\n },\n });\n await waitReactUpdate();\n this.emitter.emit('leftPanelVisible', {\n visible: false,\n panelName: this.state.currentActiveLeftPanel,\n });\n };\n\n toggleLeftPanel = () => {\n const { leftBoxVisible } = this.state;\n const newVisible = !leftBoxVisible;\n if (newVisible) {\n this.openLeftPanel();\n } else {\n this.closeLeftPanel();\n }\n };\n\n onPluginIconClick = (panel: PanelItem) => {\n const { currentActiveLeftPanel } = this.state;\n if (currentActiveLeftPanel === panel.name && this.state.leftBoxVisible) {\n this.closeLeftPanel();\n } else {\n this.openLeftPanel(panel.name);\n }\n };\n\n openRightPanel = () => {\n const { rightBoxSize } = this.state;\n this.setState({\n rightBoxVisible: true,\n rightBoxSize: {\n width: 400,\n height: rightBoxSize.height,\n },\n });\n };\n\n closeRightPanel = () => {\n const { rightBoxSize } = this.state;\n this.setState({\n rightBoxVisible: false,\n rightBoxSize: {\n width: 0,\n height: rightBoxSize.height,\n },\n });\n };\n\n replaceBodyView = (newView: React.ReactNode) => {\n this.setState({\n bodyView: newView,\n });\n };\n\n replaceRightView = (newView: React.ReactNode) => {\n this.setState({\n rightView: newView,\n });\n };\n\n replaceTopBarView = (newView: React.ReactNode) => {\n this.setState({\n topToolBarView: newView,\n });\n };\n\n replaceSubTopBarView = (newView: React.ReactNode) => {\n this.setState({\n subTopToolBarView: newView,\n });\n };\n\n toggleRightPanel = () => {\n const { rightBoxVisible, rightBoxSize } = this.state;\n const newVisible = !rightBoxVisible;\n this.setState({\n rightBoxVisible: newVisible,\n rightBoxSize: {\n width: newVisible ? 400 : 0,\n height: rightBoxSize.height,\n },\n });\n };\n\n onLeftBoxResizeStop: ResizeCallback = (_e, _direction, _ref, d) => {\n const newW = this.state.leftBoxSize.width + d.width;\n this.setState({\n leftBoxSize: {\n width: newW,\n height: this.state.leftBoxSize.height,\n },\n });\n };\n\n onGlobalClick = (e: MouseEvent) => {\n if (e.target && this.leftPanelContentRef.current?.contains(e.target as any)) {\n return;\n }\n\n if (!this.state.leftBoxFixed && this.state.leftBoxVisible) {\n this.closeLeftPanel();\n }\n };\n\n componentDidMount() {\n document.addEventListener('click', this.onGlobalClick);\n }\n\n render() {\n const {\n leftBoxVisible,\n leftBoxSize,\n leftBoxFixed,\n rightBoxSize,\n rightBoxVisible,\n leftPanels,\n currentActiveLeftPanel,\n bodyView,\n rightView,\n topToolBarView,\n subTopToolBarView,\n customViewList,\n hiddenTopBar,\n hiddenLeftPanel,\n hiddenRightPanel,\n } = this.state;\n const leftBoContentStyle: React.CSSProperties = {};\n if (!leftBoxFixed) {\n leftBoContentStyle.position = 'absolute';\n leftBoContentStyle.left = '50px';\n leftBoContentStyle.top = 0;\n }\n\n const currentActivePluginObj = leftPanels.find((el) => el.name === currentActiveLeftPanel);\n\n const CurrentPluginRenderView = currentActivePluginObj?.render || null;\n const { onPluginIconClick, toggleRightPanel, toggleLeftPanel, onLeftBoxResizeStop } = this;\n return (\n <div className={styles.workbenchContainer}>\n {!hiddenTopBar && (\n <div className={styles.topToolBarBox}>\n <div className={styles.topToolBarView}>{topToolBarView}</div>\n </div>\n )}\n\n <div className={styles.bodyContent}>\n {!hiddenLeftPanel && (\n <div\n className={clsx([styles.leftBox, hiddenLeftPanel ?? styles.hiddenLeftPanel])}\n ref={this.leftPanelContentRef}\n >\n <div className={styles.pluginIconBar}>\n {leftPanels.map((pl) => {\n return (\n <div\n key={pl.name}\n onClick={() => onPluginIconClick(pl)}\n className={clsx([\n styles.pluginIconItem,\n currentActivePluginObj?.name === pl.name && styles.active,\n ])}\n >\n {pl.icon}\n </div>\n );\n })}\n </div>\n {leftBoxVisible && (\n <Resizable\n className={styles.pluginPanelBoxResizeBox}\n size={leftBoxSize}\n style={leftBoContentStyle}\n minWidth={300}\n maxWidth={600}\n enable={{\n right: leftBoxVisible,\n }}\n onResizeStop={onLeftBoxResizeStop}\n >\n <div className={styles.pluginHeader}>\n <span className={styles.pluginNameText}>\n {currentActivePluginObj?.title || currentActivePluginObj?.name}\n </span>\n <Button\n className={clsx([styles.fixedBtn])}\n type=\"text\"\n size=\"small\"\n onClick={() => {\n this.setState({\n leftBoxFixed: !this.state.leftBoxFixed,\n });\n }}\n >\n <PushpinOutlined className={clsx([leftBoxFixed && styles.active])} />\n </Button>\n <Button className={styles.closeBtn} type=\"text\" size=\"small\" onClick={toggleLeftPanel}>\n <CloseOutlined />\n </Button>\n </div>\n <div className={styles.pluginPanelBox}>{CurrentPluginRenderView}</div>\n </Resizable>\n )}\n </div>\n )}\n\n <div className={styles.centerBox}>\n {subTopToolBarView && <div className={styles.subTopToolbarBox}>{subTopToolBarView}</div>}\n <div className={clsx([styles.canvasBox, this.state.canvasFull !== true && styles.canvasBoxPadding])}>\n <div className={styles.scrollBox}>{bodyView}</div>\n </div>\n </div>\n\n <div className={clsx([styles.rightResizeBox, hiddenRightPanel && styles.hiddenRightPanel])}>\n <div className={styles.arrowCursor} onClick={toggleRightPanel}>\n <DoubleRightOutlined className={clsx([!rightBoxVisible && styles.active])} />\n </div>\n <div\n style={{\n display: rightBoxVisible ? 'block' : 'none',\n height: '100%',\n }}\n >\n <Resizable\n minWidth={400}\n maxWidth={600}\n enable={{\n left: rightBoxVisible,\n }}\n size={rightBoxSize}\n onResizeStop={(_e, _direction, _ref, d) => {\n this.setState({\n rightBoxSize: {\n width: this.state.rightBoxSize.width + d.width,\n height: this.state.rightBoxSize.height,\n },\n });\n }}\n >\n <div className={styles.rightBox}>{rightView}</div>\n </Resizable>\n </div>\n </div>\n </div>\n {createPortal(\n <div className={styles.customViewBox}>\n {customViewList.map((el) => {\n return (\n <div\n key={el.key}\n style={{\n pointerEvents: 'auto',\n display: 'inline-block',\n }}\n >\n {el.view}\n </div>\n );\n })}\n </div>,\n document.body\n )}\n </div>\n );\n }\n}\n","export const zh_CN = {\n translation: {\n 'Welcome to React': '欢迎使用 React',\n },\n};\n","export const en_US = {\n translation: {\n 'Welcome to React': 'Welcome to React and react-i18next',\n },\n};\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\n\n// the translations\n// (tip move them in a JSON file and import them,\n// or even better, manage them separated from your code: https://react.i18next.com/guides/multiple-translation-files)\nconst resources = {\n zh_CN,\n en_US,\n};\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources,\n lng: 'zh_CN', // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources\n // you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage\n // if you're using a language detector, do not define the lng option\n react: {\n bindI18n: 'added languageChanged',\n bindI18nStore: 'added',\n },\n });\n\nexport type CustomI18n = typeof i18n & {\n update: () => void;\n};\n\nconst customI18n: CustomI18n = i18n as any;\n\ncustomI18n.update = () => {\n setTimeout(() => {\n i18n.emit('added');\n }, 0);\n};\n\ncustomI18n.changeLanguage('en_US');\n\nexport default customI18n;\n","import { Engine } from '@/index';\nimport { CPage } from '@chamn/model';\nimport mitt, { Emitter } from 'mitt';\nimport { Workbench } from '../component/Workbench';\nimport { CustomI18n } from '../i18n';\nimport { AssetsPackageListManager } from './assetPackagesListManage';\n\nexport type PluginObj<C, E = any> = {\n name: string;\n PLUGIN_NAME?: string;\n init: (ctx: CPluginCtx<C>) => Promise<void>;\n destroy: (ctx: CPluginCtx<C>) => Promise<void>;\n /** 用于暴露给外部重载插件 */\n reload?: (ctx: CPluginCtx<C>) => Promise<void>;\n /** 插件暴露给外部可以调用的方法 */\n export: (ctx: CPluginCtx<C>) => E;\n meta: {\n engine: {\n version: string;\n };\n };\n};\n\ninterface PluginFunction<C, E> {\n (ctx: CPluginCtx<C>): PluginObj<C, E>;\n ['PLUGIN_NAME']?: string;\n}\n\nexport type CPlugin<C = Record<string, any>, E = any> = PluginObj<C, E> | PluginFunction<C, E>;\n\ntype PluginManagerOptions = {\n getWorkbench: () => Workbench;\n emitter: Emitter<any>;\n pageModel: CPage;\n i18n: CustomI18n;\n assetsPackageListManager: AssetsPackageListManager;\n engine: Engine;\n};\n\nexport type CPluginCtx<C = any> = {\n name?: string;\n globalEmitter: Emitter<any>;\n /** 当前插件外部传入的配置 **/\n config: C;\n pluginManager: PluginManager;\n pluginReadyOk: () => void;\n} & PluginManagerOptions;\n\nexport type PluginInstance<C = any, E = any> = {\n ctx: CPluginCtx<C>;\n export: E;\n source: PluginObj<C, E>;\n ready: boolean;\n};\n\nexport type CustomPluginHook<P extends PluginInstance<any, any> = any> = (pluginInstance: P) => P;\n\nexport class PluginManager {\n plugins: Map<string, PluginInstance> = new Map();\n emitter: Emitter<any> = mitt();\n getWorkbench!: () => Workbench;\n pageModel!: CPage;\n i18n: CustomI18n;\n assetsPackageListManager: AssetsPackageListManager;\n engine: Engine;\n customPluginHooks: Record<string, CustomPluginHook[]> = {};\n\n constructor({ getWorkbench, emitter, pageModel, i18n, assetsPackageListManager, engine }: PluginManagerOptions) {\n this.getWorkbench = getWorkbench;\n this.emitter = emitter;\n this.pageModel = pageModel;\n this.i18n = i18n;\n this.assetsPackageListManager = assetsPackageListManager;\n this.engine = engine;\n }\n\n /** 自定义插件, 可以修改插件的配置 */\n customPlugin = <P extends PluginInstance<any, any>>(pluginName: string, customPluginHook: CustomPluginHook<P>) => {\n const customPluginHooks = this.customPluginHooks;\n const hookList = customPluginHooks[pluginName] || [];\n hookList.push(customPluginHook);\n customPluginHooks[pluginName] = hookList;\n this.customPluginHooks = customPluginHooks;\n };\n\n createPluginCtx = () => {\n const ctx: CPluginCtx = {\n globalEmitter: this.emitter,\n emitter: mitt(),\n config: {},\n getWorkbench: this.getWorkbench,\n pluginManager: this,\n pageModel: this.pageModel,\n i18n: this.i18n,\n assetsPackageListManager: this.assetsPackageListManager,\n engine: this.engine,\n pluginReadyOk: () => {},\n };\n return ctx;\n };\n\n async add(plugin: CPlugin) {\n const ctx = this.createPluginCtx();\n\n let innerPlugin: PluginObj<any, any>;\n if (typeof plugin === 'function') {\n innerPlugin = plugin(ctx);\n } else {\n innerPlugin = plugin;\n }\n let pluginCtx: PluginInstance = {\n source: innerPlugin,\n ctx: ctx,\n export: innerPlugin.export?.(ctx) || {},\n ready: false,\n };\n const customHookList = this.customPluginHooks[innerPlugin.name] || [];\n customHookList.forEach((cb) => {\n pluginCtx = cb(pluginCtx);\n });\n ctx.pluginReadyOk = () => {\n this.emitter.emit(`${innerPlugin.name}:ready`);\n pluginCtx.ready = true;\n };\n this.plugins.set(innerPlugin.name, pluginCtx);\n await innerPlugin.init(ctx);\n }\n\n async get<P extends PluginInstance<any, any>>(pluginName: string): Promise<P | undefined> {\n const pluginInstance = this.plugins.get(pluginName);\n if (pluginInstance?.ready) {\n return pluginInstance as any;\n } else {\n await this.onPluginReadyOk(pluginName);\n return pluginInstance as any;\n }\n }\n\n async remove(name: string) {\n const p = this.plugins.get(name);\n await p?.source.destroy(p.ctx);\n this.plugins.delete(name);\n }\n\n onPluginReadyOk(pluginName: string, cb?: (pluginHandle: PluginInstance) => void) {\n return new Promise<PluginInstance>((resolve) => {\n const pluginObj = this.plugins.get(pluginName);\n if (pluginObj?.ready) {\n resolve(pluginObj);\n } else if (pluginObj === undefined) {\n console.warn(`plugin: ${pluginName} not found.`);\n }\n this.emitter.on(`${pluginName}:ready`, () => {\n const newPluginObj = this.plugins.get(pluginName);\n if (newPluginObj) {\n newPluginObj.ready = true;\n cb?.(newPluginObj);\n resolve(newPluginObj);\n }\n });\n });\n }\n}\n","export const zh_CN: Record<string, any> = {\n pluginName: '组件库',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Components',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","import { Popover } from 'antd';\nimport clsx from 'clsx';\nimport React, { useMemo } from 'react';\nimport styles from './style.module.scss';\n\nexport type DragComponentItemProps = {\n id: string;\n name: string;\n description?: any;\n icon: React.ReactNode | string;\n iconText?: string;\n style?: React.CSSProperties;\n containerClassName?: string;\n};\n\nexport const DragComponentItem = (props: DragComponentItemProps) => {\n const dragInfo = {\n [DRAG_ITEM_KEY]: props.id,\n };\n\n const icon = useMemo(() => {\n if (props.iconText) {\n return <div className={styles.iconText}>{String(props.iconText).toUpperCase()}</div>;\n }\n if (typeof props.icon === 'string') {\n return <img className={styles.iconImg} src={props.icon} draggable={false} />;\n } else {\n return props.icon;\n }\n }, [props.icon, props.iconText]);\n\n const contentView = (\n <div className={clsx([styles.square, props.containerClassName])}>\n <div {...dragInfo} className={styles.componentItem} style={props.style}>\n <div className={styles.iconBox}>{icon}</div>\n <span>{props.name}</span>\n </div>\n </div>\n );\n\n if (props.description) {\n return (\n <Popover\n overlayInnerStyle={{\n maxWidth: '300px',\n maxHeight: '200px',\n overflow: 'auto',\n }}\n content={props.description || ''}\n zIndex={1000}\n placement=\"right\"\n >\n {contentView}\n </Popover>\n );\n } else {\n return contentView;\n }\n};\n\nexport const DRAG_ITEM_KEY = 'data-drag-key';\n","import { useMemo } from 'react';\nimport { SnippetsType } from '@chamn/model';\nimport { Collapse } from 'antd';\nimport { DragComponentItem } from '../DragItem';\nimport styles from './style.module.scss';\n\nexport type ListViewProps = {\n dataSource: {\n name: string;\n list: SnippetsType[];\n }[];\n};\nexport const ListView = (props: ListViewProps) => {\n const { dataSource } = props;\n const defaultActiveKey = dataSource.map((el) => el.name || '');\n\n const items = useMemo(() => {\n return dataSource.map((el) => {\n const category = el.name || '';\n const contentView = (\n <div className={styles.collapsePanel}>\n {el.list.map((it) => {\n return (\n <DragComponentItem\n id={it.id!}\n key={it.id!}\n name={it.title}\n icon={it.snapshot || it.snapshotText}\n iconText={it.snapshotText}\n description={it.description || ''}\n />\n );\n })}\n </div>\n );\n\n return {\n key: category,\n label: category,\n children: contentView,\n };\n });\n }, [dataSource]);\n\n if (!dataSource.length) {\n return null;\n }\n\n return (\n <div className={styles.ListBox}>\n <Collapse style={{ width: '100%' }} defaultActiveKey={defaultActiveKey} items={items}></Collapse>\n </div>\n );\n};\n","import { SnippetsCollection, SnippetsType } from '@chamn/model';\n\nexport const getTargetMNodeKeyVal = (dom: HTMLElement | null, key: string): null | string => {\n if (!dom) {\n return null;\n }\n const val = dom.getAttribute(key);\n if (!val) {\n return getTargetMNodeKeyVal(dom.parentElement, key);\n } else {\n return val;\n }\n};\n\nexport const searchComponentSnippets = (componentList: SnippetsCollection, searchKeyWords: string) => {\n const newResList: {\n name: string;\n list: SnippetsType[];\n }[] = [];\n const searchString = searchKeyWords?.toLowerCase();\n componentList.forEach((el) => {\n // category\n const tempList = [...el.list];\n tempList.forEach((it) => {\n const snippets = it.list.filter((i) => {\n let hit: boolean | undefined = false;\n if (typeof i.description === 'string') {\n hit = i.description?.includes(searchString);\n }\n hit = hit || i.title?.toLowerCase().includes(searchString);\n hit = hit || i.snapshotText?.toLowerCase().includes(searchString);\n hit = hit || i.category?.toLowerCase().includes(searchString);\n return hit;\n });\n if (snippets.length) {\n newResList.push({\n name: it.name,\n list: snippets,\n });\n }\n });\n });\n\n return newResList;\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { DOMAttributes } from 'react';\nimport { AppstoreAddOutlined, SearchOutlined } from '@ant-design/icons';\nimport { LayoutDragAndDropExtraDataType, Sensor } from '@chamn/layout';\nimport { Input, Tabs } from 'antd';\nimport { CPlugin, CPluginCtx } from '../../core/pluginManager';\nimport localize from './localize';\nimport styles from './style.module.scss';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { ListView } from './components/ListView';\nimport { getTargetMNodeKeyVal, searchComponentSnippets } from './util';\nimport { DRAG_ITEM_KEY } from './components/DragItem';\nimport {\n CNode,\n CRootNode,\n CSlot,\n DragAndDropEventExtraData,\n findContainerNode,\n isPageModel,\n SnippetsCollection,\n SnippetsType,\n} from '@chamn/model';\nimport { capitalize } from 'lodash-es';\nimport { InsertNodePosType } from '@chamn/model/src';\nimport { DesignerPluginInstance } from '../Designer/type';\n\ninterface ComponentLibViewProps extends WithTranslation {\n pluginCtx: CPluginCtx<ComponentLibPluginConfig>;\n}\n\nexport const PLUGIN_NAME = 'ComponentLib';\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\nconst TabTitle = ({ children }: { children: any }) => {\n return <div className={styles.tabTitle}>{children}</div>;\n};\n\ntype ComponentLibViewState = {\n componentsList: SnippetsCollection;\n searchString: string;\n searchMode: boolean;\n searchResultList: {\n name: string;\n list: SnippetsType[];\n }[];\n};\n\nexport type ComponentLibPluginConfig = {\n customSearchBar?: (props: {\n defaultInputView: React.ReactNode;\n updateState: (newState: Partial<ComponentLibViewState>) => string;\n }) => React.ReactNode;\n};\n\nclass ComponentLibView extends React.Component<ComponentLibViewProps, ComponentLibViewState> {\n containerRef: React.RefObject<HTMLDivElement>;\n disposeList: (() => void)[] = [];\n boxSensor!: Sensor<DragAndDropEventExtraData>;\n\n constructor(props: ComponentLibViewProps) {\n super(props);\n this.containerRef = React.createRef<HTMLDivElement>();\n this.state = {\n componentsList: [],\n searchString: '',\n searchMode: false,\n searchResultList: [],\n };\n }\n\n leftPanelVisibleCb = async ({ visible, panelName }: { visible: boolean; panelName: string }) => {\n await this.props.pluginCtx.pluginManager.onPluginReadyOk('Designer');\n if (panelName === PLUGIN_NAME && visible) {\n this.registerDragEvent();\n }\n };\n\n updateComponentsList() {\n const { pluginCtx } = this.props;\n const { pageModel } = pluginCtx;\n const { materialsModel } = pageModel;\n const allSnippets = materialsModel.getAllSnippets();\n\n if (allSnippets.length && allSnippets[0].name === 'default') {\n const df = allSnippets.shift();\n if (df) {\n allSnippets.push(df);\n }\n }\n\n this.setState({\n componentsList: allSnippets,\n });\n }\n\n async componentDidMount() {\n await this.props.pluginCtx.pluginManager.onPluginReadyOk('Designer');\n this.registerDragEvent();\n const { pluginCtx } = this.props;\n const { i18n } = pluginCtx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n i18n.update();\n this.updateComponentsList();\n pluginCtx.globalEmitter.on('updateMaterials', () => {\n this.updateComponentsList();\n });\n }\n\n componentWillUnmount(): void {\n this.disposeList.map((el) => el());\n }\n\n getNewNode = (targetDom: HTMLElement | null) => {\n const { pluginCtx } = this.props;\n const pageModel = pluginCtx.pageModel;\n\n if (!targetDom) {\n return;\n }\n const targetNodeId = getTargetMNodeKeyVal(targetDom as HTMLElement, DRAG_ITEM_KEY);\n\n if (!targetNodeId) {\n return;\n }\n\n const meta = pageModel.materialsModel.findSnippetById(targetNodeId);\n if (!meta) {\n return;\n }\n return pageModel?.createNode(meta.schema);\n };\n\n registerDragEvent = async () => {\n const { containerRef } = this;\n const { pluginCtx } = this.props;\n const designerHandle = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n\n if (!designerHandle) {\n return;\n }\n if (!containerRef.current) {\n return;\n }\n const designerExport = designerHandle.export;\n const dnd = designerExport.getDnd()!;\n const boxSensor = new Sensor<LayoutDragAndDropExtraDataType>({\n name: 'ComponentListBox',\n container: containerRef.current,\n mainDocument: document,\n });\n\n this.boxSensor = boxSensor;\n\n boxSensor.setCanDrag(async (eventObj) => {\n const newNode = this.getNewNode(eventObj.event.target as any);\n\n this.props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer').then((designerHandle) => {\n const designerExport = designerHandle?.export;\n designerExport?.selectNode('');\n });\n\n return {\n ...eventObj,\n extraData: {\n dropType: 'NEW_ADD',\n dragNode: newNode,\n },\n };\n });\n dnd.registerSensor(boxSensor);\n\n const dragStart = () => {\n const { getWorkbench } = this.props.pluginCtx;\n const workbench = getWorkbench();\n if (!workbench.state.leftBoxFixed) {\n workbench.closeLeftPanel();\n }\n };\n\n this.disposeList.push(() => {\n dnd.emitter.off('dragStart', dragStart);\n });\n dnd.emitter.on('dragStart', dragStart);\n };\n\n toAddNewNode: DOMAttributes<HTMLDivElement>['onClick'] = async (event) => {\n const newNode = this.getNewNode(event.nativeEvent.target as HTMLElement);\n if (!newNode) {\n return;\n }\n\n const { pageModel } = this.props.pluginCtx;\n\n return this.props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer').then(async (designerHandle) => {\n const designerExport = designerHandle?.export;\n // 获取当前选中,如果存在,就插入到当前选中的下面,否则就插入到根节点下面\n const selectedNodeId = designerExport?.getSelectedNodeId();\n const selectedNode = pageModel.getNode(selectedNodeId);\n const containerNode = findContainerNode(selectedNode);\n let pos: InsertNodePosType = 'CHILD_END';\n let dropNode: CNode | CRootNode | CSlot | null = selectedNode ?? null;\n if (selectedNode) {\n // 当前节点的父级节点是容器时\n if (containerNode === selectedNode.parent) {\n if (selectedNode.isContainer()) {\n pos = 'CHILD_END';\n dropNode = selectedNode;\n } else {\n pos = 'AFTER';\n dropNode = selectedNode;\n }\n } else if (containerNode && !isPageModel(containerNode)) {\n pos = 'CHILD_END';\n dropNode = containerNode;\n }\n } else {\n const rootNode = pageModel.getRootNode();\n if (rootNode) {\n pos = 'CHILD_END';\n dropNode = rootNode;\n }\n }\n const designerInstance = designerExport?.getInstance();\n\n const addFlag = await designerInstance?.customAdvanceHook.onNewAdd({\n dragNode: newNode,\n dropNode: dropNode as any,\n eventObj: {\n from: event.nativeEvent,\n fromSensor: this.boxSensor,\n pointer: null as any,\n fromPointer: null as any,\n extraData: {},\n },\n });\n if (addFlag === false) {\n return;\n }\n let addNodeInfo = {\n dragNode: newNode,\n dropNode: dropNode,\n pos: pos,\n };\n if (typeof addFlag === 'object') {\n addNodeInfo = {\n ...addNodeInfo,\n dragNode: (addFlag.addNode as any) ?? addNodeInfo.dragNode,\n dropNode: (addFlag.dropNode as any) ?? addNodeInfo.dropNode,\n pos: (addFlag.dropPosInfo?.pos as any) ?? addNodeInfo.pos,\n };\n }\n pageModel.addNode(addNodeInfo.dragNode, addNodeInfo.dropNode as CNode, addNodeInfo.pos);\n setTimeout(() => {\n designerExport?.selectNode(addNodeInfo.dragNode.id);\n }, 16);\n });\n };\n\n onSearch = () => {\n if (!this.state.searchString.length) {\n this.setState({\n searchResultList: [],\n searchMode: false,\n });\n return;\n }\n const newList = searchComponentSnippets(this.state.componentsList, this.state.searchString);\n this.setState({\n searchResultList: newList,\n searchMode: true,\n });\n };\n\n render(): React.ReactNode {\n const { componentsList, searchString, searchResultList, searchMode } = this.state;\n const { toAddNewNode } = this;\n const CustomSearchBar = this.props.pluginCtx.config.customSearchBar;\n const items = componentsList.map((el) => {\n return {\n label: <TabTitle>{capitalize(el.name)}</TabTitle>,\n key: el.name,\n children: <ListView dataSource={el.list} />,\n };\n });\n\n const defaultSearchValue = (\n <Input\n value={searchString}\n placeholder=\"input search text\"\n suffix={<SearchOutlined style={{ color: 'rgba(0,0,0,.25)' }} />}\n onPressEnter={this.onSearch}\n allowClear\n onClear={() => {\n this.setState({\n searchMode: false,\n searchResultList: [],\n });\n }}\n onChange={(e) => {\n this.setState({\n searchString: e.target.value,\n });\n }}\n />\n );\n return (\n <div ref={this.containerRef} className={styles.container} onClick={toAddNewNode}>\n <div className={styles.header}>\n {CustomSearchBar ? (\n <CustomSearchBar defaultInputView={defaultSearchValue} updateState={this.setState.bind(this) as any} />\n ) : (\n defaultSearchValue\n )}\n </div>\n {searchMode && (\n <div>\n {!searchResultList.length && <div className={styles.notFoundComponent}>暂无相关组件</div>}\n <ListView dataSource={searchResultList} />\n </div>\n )}\n {!searchResultList.length && !searchMode && (\n <Tabs\n defaultActiveKey=\"BaseComponent\"\n items={items}\n style={{\n width: '100%',\n }}\n />\n )}\n </div>\n );\n }\n}\n\nexport const ComponentLibPlugin: CPlugin<ComponentLibPluginConfig> = {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const ComponentLibViewWithLocalize = withTranslation(i18nNamespace)(ComponentLibView);\n const Title = withTranslation(i18nNamespace)(({ t }) => {\n return <>{t('pluginName')}</>;\n });\n const workbench = ctx.getWorkbench();\n workbench.addLeftPanel({\n title: <Title />,\n name: 'ComponentLib',\n icon: <AppstoreAddOutlined />,\n render: <ComponentLibViewWithLocalize pluginCtx={ctx} />,\n });\n ctx.pluginReadyOk();\n },\n reload: async () => {\n console.log(PLUGIN_NAME, 'not suooprt reload');\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return {};\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\nComponentLibPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const PLUGIN_NAME = 'Designer';\n","export const zh_CN: Record<string, any> = {\n pluginName: '组件库',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Designer Canvas',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { useMemo, useState } from 'react';\nimport { CopyOutlined, DeleteOutlined, EyeInvisibleOutlined } from '@ant-design/icons';\nimport styles from './style.module.scss';\nimport { CNode } from '@chamn/model';\nimport clsx from 'clsx';\n\nexport type DefaultSelectToolBarProps = {\n nodeList: CNode[];\n toSelectNode: (id: string) => void;\n toDelete: (id: string) => void;\n toCopy: (idd: string) => void;\n toHidden: (idd: string) => void;\n};\n\nconst LayoutSelect = ({\n dataSource,\n children,\n onSelect,\n}: {\n dataSource: { key: string; label: string }[];\n children: React.ReactNode;\n onSelect: (key: string) => void;\n}) => {\n const [hover, setHover] = useState(false);\n return (\n <div className={styles.layoutSelectBox}>\n <div className={clsx([styles.hoverBox, hover && styles.hoverBoxActive])}>\n {dataSource.map((el) => {\n return (\n <div className={styles.hoverItem} key={el.key} onClick={() => onSelect(el.key)}>\n {el.label}\n </div>\n );\n })}\n </div>\n <div className={styles.placeholder} onMouseOver={() => setHover(true)} onMouseOut={() => setHover(false)}>\n {children}\n </div>\n </div>\n );\n};\n\nexport const getDefaultToolbarItem = (props: DefaultSelectToolBarProps) => {\n const { nodeList, toSelectNode, toDelete, toCopy, toHidden } = props;\n const tempList = [...nodeList];\n const currentNode = tempList.shift();\n const parentNodeItems = tempList.map((el) => {\n const node = el;\n const nodeMeta = node.materialsModel.findByComponentName(node.value.componentName)?.value.title;\n const label = node.value.title || nodeMeta || node.value.componentName || '';\n return {\n key: el.id,\n label: label || 'Empty',\n };\n });\n\n const copyItem = (\n <div className={styles.item} onClick={() => toCopy(currentNode?.id || '')} key={'CopyOutlined'}>\n <CopyOutlined />\n </div>\n );\n\n const deleteItem = (\n <div className={styles.item} onClick={() => toDelete(currentNode?.id || '')} key={'DeleteOutlined'}>\n <DeleteOutlined />\n </div>\n );\n\n const visibleItem = (\n <div className={styles.item} onClick={() => toHidden(currentNode?.id || '')} key={'EyeInvisibleOutlined'}>\n <EyeInvisibleOutlined />\n </div>\n );\n\n const nodeLayout = (\n <LayoutSelect dataSource={parentNodeItems.reverse()} onSelect={toSelectNode} key={'LayoutSelect'}>\n <div>{currentNode?.value.title || currentNode?.material?.value.title || 'Empty'}</div>\n </LayoutSelect>\n );\n\n return {\n map: { copyItem, deleteItem, visibleItem, nodeLayout },\n list: [nodeLayout, visibleItem, copyItem, deleteItem],\n };\n};\n\nexport const DefaultSelectToolBar = (props: DefaultSelectToolBarProps) => {\n const { copyItem, deleteItem, visibleItem, nodeLayout } = useMemo(() => {\n return getDefaultToolbarItem(props).map;\n }, [props]);\n\n return (\n <div className={styles.toolBarBox}>\n {nodeLayout}\n {visibleItem}\n {copyItem}\n {deleteItem}\n </div>\n );\n};\n","import { CNode, CPage, CProp, CRootNode, CSlot, isNodeModel } from '@chamn/model';\n\nexport const getClosestNodeList = (node: CNode | CRootNode, level = 5) => {\n const res = [];\n let count = 0;\n let currentNode: CNode | CRootNode | CSlot | CProp | CPage | null = node;\n\n while (count < level && currentNode) {\n if (isNodeModel(currentNode)) {\n res.push(currentNode);\n count++;\n }\n\n currentNode = currentNode.parent || null;\n }\n\n return res;\n};\n","import React from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\n\nexport const GhostView = ({ node }: { node: CNode | CRootNode }) => {\n return (\n <div\n style={{\n backgroundColor: 'rgba(100,100,100)',\n padding: '3px 10px 3px 15px',\n borderRadius: '2px',\n opacity: 0.9,\n color: 'rgba(220,220,220)',\n }}\n >\n {node.value.componentName}\n </div>\n );\n};\n","import { CPluginCtx } from '@/core/pluginManager';\nimport { Layout, LayoutDragAndDropExtraDataType, LayoutDragEvent } from '@/index';\nimport { waitReactUpdate } from '@/utils';\nimport { AdvanceCustom, CNode, CRootNode } from '@chamn/model';\n\nexport interface AdvanceCustomHookOptions {\n getPortalViewCtx: () => {\n setView: (view: React.ReactNode) => void;\n clearView: () => void;\n };\n ctx: CPluginCtx;\n layoutRef: React.RefObject<Layout>;\n}\n\nexport type HookParameter = {\n dragNode?: CNode | CRootNode;\n dropNode?: CNode | CRootNode;\n eventObj: LayoutDragEvent<LayoutDragAndDropExtraDataType>;\n};\n\nexport class AdvanceCustomHook {\n getPortalViewCtx!: AdvanceCustomHookOptions['getPortalViewCtx'];\n ctx: CPluginCtx;\n layoutRef: AdvanceCustomHookOptions['layoutRef'];\n constructor(options: AdvanceCustomHookOptions) {\n this.getPortalViewCtx = options.getPortalViewCtx;\n this.ctx = options.ctx;\n this.layoutRef = options.layoutRef;\n }\n\n async canDrag({ dragNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['canDragNode']> {\n const nodeAdvanceCustom = dragNode?.material?.value.advanceCustom;\n if (nodeAdvanceCustom?.canDragNode) {\n const res = nodeAdvanceCustom?.canDragNode(dragNode!, {\n context: this.ctx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: eventObj.extraData,\n });\n return res;\n }\n\n return true;\n }\n\n async canDrop({ dragNode, dropNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['canDropNode']> {\n const nodeAdvanceCustom = dragNode?.material?.value.advanceCustom;\n const dropNodeAdvanceCustom = dropNode!.material?.value.advanceCustom;\n let res: Awaited<ReturnType<Required<AdvanceCustom>['canDropNode']>> = {} as any;\n const commonParams = {\n dropNode,\n context: this.ctx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: eventObj.extraData!,\n };\n if (nodeAdvanceCustom?.canDropNode) {\n res = await nodeAdvanceCustom.canDropNode(dragNode!, commonParams)!;\n\n // 判断 dropNode 是否可以接受 dragNode\n if (dropNodeAdvanceCustom?.canAcceptNode) {\n let canAcceptFlag: Awaited<ReturnType<Required<AdvanceCustom>['canAcceptNode']>>;\n if (typeof res === 'object') {\n canAcceptFlag = await dropNodeAdvanceCustom?.canAcceptNode(res.dragNode!, {\n ...commonParams,\n ...res,\n });\n } else {\n canAcceptFlag = await dropNodeAdvanceCustom?.canAcceptNode(dragNode!, {\n ...commonParams,\n });\n }\n return canAcceptFlag;\n } else {\n return res;\n }\n } else if (dropNodeAdvanceCustom?.canAcceptNode) {\n const canAcceptFlag = await dropNodeAdvanceCustom?.canAcceptNode(dragNode!, {\n ...commonParams,\n });\n return canAcceptFlag;\n }\n return true;\n }\n\n async onNewAdd({ dragNode, dropNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['onNewAdd']> {\n const res = await dragNode!.material?.value.advanceCustom?.onNewAdd?.(dragNode!, {\n dropNode: dropNode,\n context: this.ctx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: eventObj.extraData!,\n });\n if (res === false) {\n return false;\n }\n return res;\n }\n\n getSelectRectViewRender(node: CNode | CRootNode) {\n const material = node.material;\n return material?.value.advanceCustom?.selectRectViewRender;\n }\n\n getHoverRectViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.hoverRectViewRender;\n }\n\n getDropViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.dropViewRender;\n }\n\n getGhostViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.ghostViewRender;\n }\n getToolbarViewRender(node?: CNode | CRootNode | null) {\n if (!node) {\n return null;\n }\n const material = node.material;\n return material?.value.advanceCustom?.toolbarViewRender;\n }\n\n async onCopy(node: CNode | CRootNode) {\n let resNode = node;\n const ctx = this.ctx;\n const material = node.material;\n const onCopy = material?.value.advanceCustom?.onCopy;\n if (onCopy) {\n const newRes = await onCopy(node, {\n viewPortal: this.getPortalViewCtx(),\n context: ctx,\n extra: {},\n });\n if (newRes === false) {\n return false;\n }\n if (typeof newRes === 'object') {\n resNode = newRes.copyNode ?? resNode;\n }\n }\n\n if (resNode) {\n const newNode = ctx.pageModel.copyNode(resNode as CNode);\n if (newNode) {\n await waitReactUpdate();\n }\n }\n\n return resNode;\n }\n\n async onDelete(node: CNode | CRootNode) {\n let resNode = node;\n const ctx = this.ctx;\n const material = node.material;\n const onDelete = material?.value.advanceCustom?.onDelete;\n\n if (onDelete) {\n const newRes = await onDelete(node, {\n viewPortal: this.getPortalViewCtx(),\n context: ctx,\n extra: {},\n });\n if (newRes === false) {\n return false;\n }\n if (typeof newRes === 'object') {\n resNode = newRes.deleteNode ?? resNode;\n }\n }\n\n if (resNode) {\n const newNode = ctx.pageModel.deleteNode(resNode as CNode);\n if (newNode) {\n await waitReactUpdate();\n }\n }\n\n return resNode;\n }\n}\n","import React from 'react';\nimport { Layout, LayoutPropsType } from '@chamn/layout';\nimport { AdvanceCustom, CNode, CPage, CRootNode, InsertNodePosType } from '@chamn/model';\nimport localize from '../../localize';\nimport { PLUGIN_NAME } from '../../config';\nimport { DefaultSelectToolBar, DefaultSelectToolBarProps, getDefaultToolbarItem } from '../DefaultSelectToolBar';\nimport { getClosestNodeList } from '../../util';\nimport { GhostView } from '../GhostView';\n\nimport styles from './style.module.scss';\nimport '@chamn/layout/dist/style.css';\nimport { AssetPackage } from '@chamn/model';\nimport { createPortal } from 'react-dom';\nimport { CPluginCtx } from '@/core/pluginManager';\nimport { AdvanceCustomHook } from './advanceCustomHook';\nimport { DesignerPluginConfig } from '../../type';\nimport { AdvanceCustomFuncParam } from '@chamn/model';\n\nexport type DesignerCtx = CPluginCtx<DesignerPluginConfig>;\nexport type DesignerPropsType = {\n pluginCtx: DesignerCtx;\n};\n\nexport type WrapComponentOptionsType = {\n ctx: DesignerCtx;\n node: CNode | CRootNode;\n};\n\ntype DesignerStateType = {\n pageModel: CPage;\n hoverToolbarView: React.ReactNode;\n selectToolbarView: React.ReactNode;\n selectRectViewRender: AdvanceCustom['selectRectViewRender'] | null;\n hoverRectViewRender: AdvanceCustom['hoverRectViewRender'] | null;\n dropViewRender: AdvanceCustom['dropViewRender'] | null;\n ghostView: React.ReactNode;\n portalView: React.ReactNode;\n};\n\nexport class Designer extends React.Component<DesignerPropsType, DesignerStateType> {\n layoutRef: React.RefObject<Layout>;\n customAdvanceHook: AdvanceCustomHook;\n constructor(props: DesignerPropsType) {\n super(props);\n\n this.state = {\n pageModel: props.pluginCtx.pageModel,\n hoverToolbarView: null,\n selectToolbarView: null,\n ghostView: null,\n portalView: null,\n selectRectViewRender: null,\n hoverRectViewRender: null,\n dropViewRender: null,\n };\n this.layoutRef = React.createRef<Layout>();\n this.customAdvanceHook = new AdvanceCustomHook({\n getPortalViewCtx: this.getPortalViewCtx,\n ctx: this.props.pluginCtx,\n layoutRef: this.layoutRef,\n });\n }\n\n getPortalViewCtx = () => {\n return {\n setView: (view: React.ReactNode) => {\n this.setState({\n portalView: view,\n });\n },\n clearView: () => {\n this.setState({\n portalView: null,\n });\n },\n };\n };\n\n /**\n * 更新 render 中的 components ;\n */\n async updateRenderComponents(newComponentMap: Record<string, any> = {}) {\n const oldComponents = this.props.pluginCtx.config.components || {};\n const newComponents = {\n ...oldComponents,\n ...newComponentMap,\n };\n this.props.pluginCtx.config.components = newComponents;\n const { layoutRef } = this;\n if (!layoutRef.current) {\n console.warn('layout not ready ok');\n return;\n }\n\n await layoutRef.current.ready();\n\n const layoutInstance = layoutRef.current;\n // 直接修改到 render 中去\n layoutInstance?.designRenderRef?.current?.updateComponents(newComponents);\n }\n\n componentDidMount(): void {\n const { i18n } = this.props.pluginCtx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, `plugin:${PLUGIN_NAME}`, localize[lng], true, true);\n });\n this.init();\n }\n\n getIframeDom() {\n return this.layoutRef.current?.iframeContainer;\n }\n\n reloadRender() {\n this.layoutRef.current?.reload();\n this.props.pluginCtx.pageModel.reloadPage();\n }\n\n async init() {\n const { layoutRef } = this;\n const { pluginCtx } = this.props;\n if (!layoutRef.current) {\n console.warn('layout not ready ok');\n return;\n }\n\n await layoutRef.current.ready();\n const layoutInstance = layoutRef.current;\n\n pluginCtx.emitter.emit('ready', {\n UIInstance: this,\n });\n\n layoutInstance.dnd.emitter.on('click', ({ event }: { event: MouseEvent }) => {\n const workbench = pluginCtx.getWorkbench();\n workbench.onGlobalClick(event);\n });\n\n this.props.pluginCtx.pageModel.emitter.on('onPageChange', ({ node }) => {\n layoutRef.current?.designRenderRef?.current?.rerender(node);\n });\n\n this.props.pluginCtx.pageModel.emitter.on('onReloadPage', ({ node }) => {\n layoutRef.current?.designRenderRef?.current?.rerender(node);\n });\n\n pluginCtx.pluginReadyOk();\n }\n\n onNodeDragging: LayoutPropsType['onNodeDragging'] = async (eventObj) => {\n const extraData = eventObj.extraData;\n const dragNode = extraData?.dragNode;\n if (dragNode) {\n const res = dragNode.material?.value.advanceCustom?.onDragging?.(dragNode, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: extraData,\n });\n return res;\n }\n };\n\n onNodeDragEnd: LayoutPropsType['onNodeDraEnd'] = async () => {\n this.setState({\n ...this.state,\n dropViewRender: this.props.pluginCtx.config.dropViewRender,\n });\n };\n\n onNodeDrop: LayoutPropsType['onNodeDrop'] = async (eventObj) => {\n const { layoutRef } = this;\n const pageModel = this.props.pluginCtx.pageModel;\n const extraData = eventObj.extraData;\n const dropPosInfo = extraData?.dropPosInfo;\n const posFlag = {\n before: 'BEFORE',\n after: 'AFTER',\n current: 'CHILD_START',\n }[dropPosInfo?.pos || 'after'] as InsertNodePosType;\n const dragNode = extraData?.dragNode;\n if (dragNode) {\n const res = await dragNode.material?.value.advanceCustom?.onDrop?.(dragNode, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: extraData,\n });\n if (res === false) {\n return false;\n }\n }\n if (!extraData?.dropNode) {\n console.warn('cancel drop, because drop node is null');\n return false;\n }\n if (extraData.dropType === 'NEW_ADD') {\n if (dragNode) {\n const res = await dragNode.material?.value.advanceCustom?.onNewAdd?.(dragNode, {\n dropNode: extraData.dropNode,\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: eventObj,\n extra: extraData,\n });\n if (res === false) {\n return false;\n }\n }\n // 说明是根节点,直接插入到 第一个 child\n if (extraData.dropNode?.nodeType !== 'NODE') {\n pageModel?.addNode(extraData.dragNode as CNode, extraData.dropNode!, 'CHILD_START');\n } else {\n pageModel?.addNode(extraData.dragNode as CNode, extraData.dropNode!, posFlag);\n }\n } else {\n if (extraData.dropNode?.id === extraData.dragNode?.id) {\n console.warn('dragNode and dropNode id is the same');\n return false;\n }\n const res = pageModel.moveNodeById(extraData.dragNode?.id || '', extraData?.dropNode?.id || '', posFlag);\n if (!res) {\n console.warn('drop failed');\n return false;\n }\n }\n\n this.props.pluginCtx.emitter.emit('onDrop', eventObj);\n return new Promise((resolve) => {\n // 延迟去选中,因为节点放置下去,可能还没有渲染\n setTimeout(async () => {\n if (dragNode) {\n const flag = await this.onSelectNode(dragNode, null);\n if (flag === false) {\n layoutRef.current?.selectNode('');\n return resolve(false);\n }\n }\n layoutRef.current?.selectNode(extraData.dragNode?.id || '');\n resolve(true);\n }, 16);\n });\n };\n\n onSelectNode: Required<LayoutPropsType>['onSelectNode'] = async (node: CNode | CRootNode | null, event) => {\n const { pluginCtx } = this.props;\n const { layoutRef } = this;\n\n if (!node) {\n pluginCtx.engine.updateCurrentSelectNode(null);\n layoutRef.current?.selectNode('');\n this.setState({\n selectToolbarView: null,\n });\n return false;\n }\n const flag = await node.material?.value.advanceCustom?.onSelect?.(node, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: event,\n extra: {},\n });\n if (flag === false) {\n return flag;\n }\n\n const toolbarView = this.getToolbarView(node);\n this.setState({\n selectToolbarView: toolbarView,\n selectRectViewRender:\n this.customAdvanceHook.getSelectRectViewRender(node) || this.props.pluginCtx.config.selectRectViewRender,\n });\n\n // 延迟发送选中事件\n setTimeout(() => {\n pluginCtx.engine.updateCurrentSelectNode(node);\n }, 16.66);\n\n return true;\n };\n\n onDragStart: LayoutPropsType['onNodeDragStart'] = async (e) => {\n const extraData = e.extraData;\n const dragNode = extraData?.dragNode;\n if (!dragNode) {\n return false;\n }\n\n const commonParam = {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: e,\n extra: extraData,\n };\n\n const canDragFlag = await dragNode.material?.value.advanceCustom?.canDragNode?.(dragNode, {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: e,\n extra: {},\n });\n\n if (canDragFlag === false) {\n return canDragFlag;\n }\n\n const dragFlag = await dragNode.material?.value.advanceCustom?.onDragStart?.(dragNode, { ...commonParam });\n if (dragFlag === false) {\n return dragFlag;\n }\n\n const ghostView = this.getGhostView(dragNode, commonParam);\n this.setState({\n ...this.state,\n ghostView: ghostView,\n dropViewRender: this.customAdvanceHook.getDropViewRender(dragNode) || this.props.pluginCtx.config.dropViewRender,\n });\n return true;\n };\n\n getGhostView = (dragNode: CNode | CRootNode, commonParam: AdvanceCustomFuncParam) => {\n let ghostView: React.ReactElement = <GhostView node={dragNode} />;\n const nodeGhostView = this.customAdvanceHook.getGhostViewRender(dragNode);\n const CustomGhostView = nodeGhostView || this.props.pluginCtx.config.ghostViewRender;\n\n if (CustomGhostView) {\n ghostView = <CustomGhostView node={dragNode} params={commonParam} />;\n }\n return ghostView;\n };\n\n toSelectNode = async (nodeId: string) => {\n const ctx = this.props.pluginCtx;\n const node = ctx.pageModel.getNode(nodeId);\n const flag = await this.onSelectNode(node || null, null);\n if (flag === false) {\n return false;\n } else {\n this.layoutRef.current?.selectNode(nodeId);\n return true;\n }\n };\n\n toCopyNode = async (id: string) => {\n const ctx = this.props.pluginCtx;\n const cpNode = ctx.pageModel.getNode(id);\n const newNode = await this.customAdvanceHook.onCopy(cpNode as CNode);\n if (newNode) {\n this.toSelectNode(newNode.id);\n return true;\n }\n };\n\n toDeleteNode = async (nodeId: string) => {\n const ctx = this.props.pluginCtx;\n const node = ctx.pageModel.getNode(nodeId);\n if (!node) {\n return;\n }\n const delRes = await this.customAdvanceHook.onDelete(node);\n if (delRes === false) {\n return false;\n }\n this.toSelectNode('');\n return true;\n };\n\n toHidden = (id: string) => {\n const targetNodeModel = this.props.pluginCtx.pageModel.getNode(id) as CNode;\n if (!targetNodeModel) {\n return;\n }\n const devState = targetNodeModel.value.configure.devState ?? {};\n devState.condition = false;\n targetNodeModel.value.configure.devState = devState;\n targetNodeModel.updateValue();\n return true;\n };\n\n getToolbarView = (node: CNode | CRootNode) => {\n const list = getClosestNodeList(node, 5);\n const toolbarProps: DefaultSelectToolBarProps = {\n nodeList: list,\n toSelectNode: this.toSelectNode,\n toCopy: this.toCopyNode,\n toDelete: this.toDeleteNode,\n toHidden: this.toHidden,\n };\n const defaultToolbarItem = getDefaultToolbarItem(toolbarProps);\n let toolbarView = <DefaultSelectToolBar {...toolbarProps} />;\n const ToolbarView =\n this.customAdvanceHook.getToolbarViewRender(node) || this.props.pluginCtx.config.toolbarViewRender;\n if (ToolbarView) {\n toolbarView = (\n <ToolbarView\n node={node}\n context={this.props.pluginCtx}\n toolBarItems={defaultToolbarItem.map}\n toolBarItemList={defaultToolbarItem.list}\n />\n );\n }\n return toolbarView;\n };\n\n onHoverNode: LayoutPropsType['onHoverNode'] = (node, dragNode, e) => {\n this.props.pluginCtx.emitter.emit('onHover', node);\n const material = node?.material;\n if (!material) {\n console.warn('material not found', node);\n }\n const commonParam = {\n context: this.props.pluginCtx,\n viewPortal: this.getPortalViewCtx(),\n event: e,\n extra: {},\n };\n const ghostView = this.getGhostView(dragNode, commonParam);\n\n const newState = {\n hoverToolbarView: <div className={styles.hoverTips}>{material?.value.title || material?.componentName}</div>,\n ghostView: ghostView,\n hoverRectViewRender:\n this.customAdvanceHook.getHoverRectViewRender(node) || this.props.pluginCtx.config.hoverRectViewRender,\n };\n if (!dragNode) {\n newState.ghostView = null as any;\n }\n this.setState({\n ...newState,\n });\n };\n\n nodeCanDrag: LayoutPropsType['nodeCanDrag'] = async (e) => {\n const extraData = e.extraData;\n const dragNode = extraData?.dragNode;\n const res = await this.customAdvanceHook.canDrag({\n dragNode,\n eventObj: e,\n });\n return res;\n };\n\n nodeCanDrop: LayoutPropsType['nodeCanDrop'] = async (e) => {\n const extraData = e.extraData;\n const dragNode = extraData?.dragNode;\n const res = await this.customAdvanceHook.canDrop({\n dragNode,\n eventObj: e,\n ...extraData,\n });\n return res;\n };\n\n innerSelectRectViewRender: LayoutPropsType['selectRectViewRender'] = (selectViewProps) => {\n const { selectRectViewRender } = this.state;\n const { pluginCtx } = this.props;\n\n const Comp = selectRectViewRender;\n const selectNode = pluginCtx.engine.getActiveNode();\n\n if (!Comp || !selectNode) {\n return <></>;\n }\n return (\n <Comp\n node={selectNode}\n componentInstance={selectViewProps.instance}\n componentInstanceIndex={selectViewProps.index}\n params={{\n viewPortal: this.getPortalViewCtx(),\n context: this.props.pluginCtx,\n extra: {},\n }}\n />\n );\n };\n\n innerHoverRectViewRender: LayoutPropsType['hoverRectViewRender'] = (hoverViewProps) => {\n const { hoverRectViewRender } = this.state;\n\n const Comp = hoverRectViewRender;\n\n if (!Comp) {\n return <></>;\n }\n return (\n <Comp\n node={hoverViewProps.instance._NODE_MODEL}\n componentInstance={hoverViewProps.instance}\n componentInstanceIndex={hoverViewProps.index}\n params={{\n viewPortal: this.getPortalViewCtx(),\n context: this.props.pluginCtx,\n extra: {},\n }}\n />\n );\n };\n\n innerDropViewRender: LayoutPropsType['dropViewRender'] = (dropViewProps) => {\n const { dropViewRender } = this.state;\n\n const Comp = dropViewRender;\n\n if (!Comp) {\n return <></>;\n }\n return (\n <Comp\n {...(dropViewProps as any)}\n node={dropViewProps.instance._NODE_MODEL}\n componentInstance={dropViewProps.instance}\n componentInstanceIndex={dropViewProps.index}\n params={{\n viewPortal: this.getPortalViewCtx(),\n context: this.props.pluginCtx,\n extra: {},\n }}\n />\n );\n };\n\n render() {\n const { layoutRef, props, onSelectNode, onDragStart, onHoverNode, onNodeDrop, onNodeDragging, onNodeDragEnd } =\n this;\n const {\n pageModel,\n hoverToolbarView,\n selectToolbarView,\n ghostView,\n portalView,\n selectRectViewRender,\n hoverRectViewRender,\n dropViewRender,\n } = this.state;\n\n const { pluginCtx } = props;\n const assets = pluginCtx.assetsPackageListManager.getList() || ([] as AssetPackage[]);\n\n const renderJSUrl = pluginCtx.engine.props.renderJSUrl || './render.umd.js';\n const advanceCustomProps: LayoutPropsType = {};\n\n if (selectRectViewRender) {\n advanceCustomProps.selectRectViewRender = this.innerSelectRectViewRender;\n }\n\n if (hoverRectViewRender) {\n advanceCustomProps.hoverRectViewRender = this.innerHoverRectViewRender;\n }\n\n if (dropViewRender) {\n advanceCustomProps.dropViewRender = this.innerDropViewRender;\n }\n if (selectToolbarView) {\n advanceCustomProps.selectToolbarView = this.state.selectToolbarView;\n }\n\n return (\n <>\n <Layout\n beforeInitRender={props.pluginCtx.config.beforeInitRender}\n customRender={props.pluginCtx.config.customRender}\n ref={layoutRef}\n pageModel={pageModel}\n renderJSUrl={renderJSUrl}\n {...props}\n hoverToolBarView={hoverToolbarView}\n selectBoxStyle={{}}\n hoverBoxStyle={{}}\n nodeCanDrag={this.nodeCanDrag}\n nodeCanDrop={this.nodeCanDrop}\n onSelectNode={onSelectNode}\n onNodeDragStart={onDragStart}\n onHoverNode={onHoverNode}\n onNodeDrop={onNodeDrop}\n onNodeDragging={onNodeDragging}\n onNodeDraEnd={onNodeDragEnd}\n {...advanceCustomProps}\n ghostView={ghostView}\n assets={assets}\n pluginCtx={this.props.pluginCtx}\n />\n {portalView && createPortal(portalView, document.body)}\n </>\n );\n }\n}\n","import React from 'react';\nimport { CPage, CPageDataType } from '@chamn/model';\n\nimport { PLUGIN_NAME } from './config';\nimport { Designer } from './components/Canvas';\nimport { DesignerPluginType } from './type';\nimport { LayoutMode } from '@chamn/layout';\n\nexport const DesignerPlugin: DesignerPluginType = () => {\n const designerRef = React.createRef<Designer>();\n return {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n ctx.name = PLUGIN_NAME;\n const workbench = ctx.getWorkbench();\n workbench.replaceBodyView(<Designer ref={designerRef} pluginCtx={ctx} />);\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return {\n /** 设置 canvas 的渲染模式 */\n setMode(newMode) {\n return designerRef.current?.layoutRef.current?.setMode(newMode);\n },\n setPreviewMode() {\n return designerRef.current?.layoutRef.current?.setMode(LayoutMode.PREVIEW);\n },\n setEditMode() {\n return designerRef.current?.layoutRef.current?.setMode(LayoutMode.EDIT);\n },\n setCanvasWidth(width: number | string) {\n const iframeContainer = designerRef.current?.getIframeDom();\n\n if (iframeContainer?.containerDom) {\n let newW = width;\n if (typeof width === 'number') {\n newW = `${width}px`;\n }\n iframeContainer.containerDom.style.width = String(newW);\n iframeContainer.containerDom.style.margin = '0 auto';\n }\n },\n getIframeDom() {\n return designerRef.current?.getIframeDom();\n },\n getInstance: () => {\n return designerRef.current;\n },\n getDnd: () => {\n return designerRef.current?.layoutRef.current?.dnd;\n },\n selectNode: async (nodeId) => {\n return await designerRef.current?.toSelectNode(nodeId);\n },\n copyNode: async (nodeId) => {\n return await designerRef.current?.toCopyNode(nodeId);\n },\n deleteNode: async (nodeId) => {\n return await designerRef.current?.toDeleteNode(nodeId);\n },\n getSelectedNodeId: () => {\n return designerRef.current?.layoutRef.current?.state.currentSelectId;\n },\n updatePage: (page: CPageDataType | CPage) => {\n designerRef.current?.layoutRef.current?.designRenderRef?.current?.rerender(page);\n },\n reload: () => {\n designerRef.current?.reloadRender();\n },\n getComponentInstances: (id: string) => {\n return designerRef.current?.layoutRef.current?.designRenderRef.current?.getInstancesById(id) || [];\n },\n getDynamicComponentInstances: (id: string) => {\n const map =\n designerRef.current?.layoutRef.current?.designRenderRef.current?.renderRef.current\n ?.dynamicComponentInstanceMap;\n return map?.get(id) || ([] as any);\n },\n getLayoutRef: () => {\n return designerRef.current?.layoutRef as any;\n },\n getDesignerWindow: () => {\n return designerRef.current?.layoutRef.current?.iframeContainer.getWindow() as any;\n },\n updateRenderComponents: (newComponents: Record<string, string>) => {\n return designerRef.current?.updateRenderComponents(newComponents);\n },\n };\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n };\n};\n\nDesignerPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","import {\n ArraySetterObjType,\n CNode,\n CNodeDataType,\n CPage,\n CPageDataType,\n DropPosType,\n getMTitle,\n isJSSlotPropNode,\n isSpecialMaterialPropType,\n MaterialPropType,\n MTitle,\n RenderPropType,\n SetterObjType,\n SetterType,\n ShapeSetterObjType,\n} from '@chamn/model';\nimport { isPlainObject } from 'lodash-es';\nimport { TreeNodeData } from './components/TreeView/dataStruct';\n\nexport const getTargetMNodeKeyVal = (dom: HTMLElement | null, key: string): null | string => {\n if (!dom) {\n return null;\n }\n const val = dom.getAttribute(key);\n if (!val) {\n return getTargetMNodeKeyVal(dom.parentElement, key);\n } else {\n return val;\n }\n};\n\nexport const transformNodeSchemaToTreeData = (\n nodeSchema: CNodeDataType | CNodeDataType[],\n parent: TreeNodeData,\n pageModel: CPage\n): TreeNodeData | TreeNodeData[] => {\n const tb = (node: CNodeDataType, parent?: TreeNodeData | null): TreeNodeData => {\n let nodeChild: any[] = node.children || [];\n if (!Array.isArray(nodeChild)) {\n // TODO: 暂时不处理字符串的情况\n nodeChild = [];\n }\n // 过滤掉字符串的情况\n nodeChild = nodeChild.filter((el) => typeof el !== 'string');\n const nodeMeta = pageModel.materialsModel.findByComponentName(node.componentName)?.value.title;\n const newCurrentNode: TreeNodeData = {\n title: node.title || nodeMeta || node.componentName,\n key: node.id,\n children: [],\n parent: parent,\n canDropPos: pageModel.getNode(node.id || '')?.isContainer() ? undefined : ['after', 'before'],\n };\n // 还需要处理 props 中的节点\n const propsNodeList: TreeNodeData[] = [];\n const slotNode: TreeNodeData = {\n title: 'SLOT',\n key: `${node.id}-SLOT`,\n children: propsNodeList,\n canBeSelected: false,\n canDropPos: false,\n parent: null,\n containerRender: ({ treeNodeView }) => {\n return (\n <div\n style={{\n border: '1px solid #a97cf8',\n borderTopWidth: '6px',\n marginRight: '2px',\n marginTop: '5px',\n }}\n >\n {treeNodeView}\n </div>\n );\n },\n };\n const props = node.props || {};\n\n const processProps = (val: unknown, key: string, keys: string[]) => {\n const flag = isJSSlotPropNode(val);\n\n if (flag) {\n const tempVal = val as RenderPropType;\n const pageModeNode = pageModel.getNode(node.id!);\n let propsTitle = '';\n if (pageModeNode) {\n const tempTitle = getPropsLabel(pageModeNode as CNode, [...keys, key]);\n propsTitle = getMTitle(tempTitle);\n }\n let plainTitle = key;\n if (propsTitle) {\n plainTitle = getMTitle(propsTitle) || key;\n }\n const tempNode: TreeNodeData = {\n title: plainTitle,\n key: `${node.id}-${keys.join('_')}`,\n children: [],\n canBeSelected: false,\n canDrag: false,\n canDropPos: ['current'],\n parent: slotNode,\n };\n\n let propValue: CNodeDataType[] = [];\n if (tempVal.value && !Array.isArray(tempVal.value)) {\n propValue = [tempVal.value];\n } else {\n propValue = tempVal.value;\n }\n\n tempNode.children = transformNodeSchemaToTreeData(propValue, tempNode, pageModel) as TreeNodeData[];\n propsNodeList.push(tempNode);\n return;\n }\n if (isPlainObject(val)) {\n const tempVal = val as any;\n Object.keys(tempVal).forEach((newKey) => {\n processProps(tempVal[newKey], newKey, [...keys, key]);\n });\n }\n if (Array.isArray(val)) {\n const tempVal = val as any[];\n tempVal.forEach((item, index) => {\n processProps(item, String(index), [...keys, key]);\n });\n }\n };\n\n const getPropsLabel = (nodeModel: CNode, keyPath: string[]) => {\n const propsLabelMap = getNodePropsLabelMap(nodeModel);\n const newKeyPath = keyPath.map((el) => {\n if (String(parseInt(el, 10)) === el) {\n return '$NUM';\n } else {\n return el;\n }\n });\n return propsLabelMap[newKeyPath.join('.')] || '';\n };\n\n Object.keys(props).forEach((key) => {\n processProps(props[key], key, []);\n });\n\n if (propsNodeList.length > 0) {\n newCurrentNode.children?.push(slotNode);\n slotNode.parent = newCurrentNode;\n }\n const childNodeList = nodeChild.map((el) => tb(el, newCurrentNode)) || [];\n newCurrentNode.children = [...newCurrentNode.children!, ...childNodeList];\n return newCurrentNode;\n };\n\n if (Array.isArray(nodeSchema)) {\n return nodeSchema.map((el) => {\n return tb(el, parent);\n });\n } else {\n return tb(nodeSchema, parent);\n }\n};\n\nexport const transformPageSchemaToTreeData = (pageSchema: CPageDataType, pageModel: CPage): TreeNodeData[] => {\n const tree = pageSchema.componentsTree;\n let child = (tree.children || []) as CNodeDataType[];\n if (!Array.isArray(child)) {\n child = [];\n }\n\n const rootNode: TreeNodeData = {\n title: 'Page',\n key: tree.id || 'globalState',\n rootNode: true,\n children: [],\n };\n rootNode.children = transformNodeSchemaToTreeData(child, rootNode, pageModel) as TreeNodeData[];\n return [rootNode];\n};\n\nexport const traverseTree = (\n tree: TreeNodeData | TreeNodeData[],\n handler: (node: TreeNodeData) => boolean | undefined\n) => {\n let tempTree: TreeNodeData[] = [];\n if (Array.isArray(tree)) {\n tempTree = tree;\n } else {\n tempTree = [tree];\n }\n\n let stop = false;\n\n const traverseCb = (node: TreeNodeData, conditionCb: (node: TreeNodeData) => boolean | undefined) => {\n if (stop) {\n return;\n }\n const res = conditionCb(node);\n if (res) {\n stop = true;\n } else {\n node.children?.forEach((el) => {\n traverseCb(el, conditionCb);\n });\n }\n };\n tempTree.forEach((el) => {\n traverseCb(el, handler);\n });\n};\n\nexport function calculateDropPosInfo(params: { point: { x: number; y: number }; dom: HTMLElement }): DropPosType {\n const { point, dom } = params;\n let pos: DropPosType['pos'];\n\n const mousePos = point;\n const targetRect = dom.getBoundingClientRect();\n const targetDomH = targetRect.height;\n const xCenter = targetRect.x + 50;\n const yCenter = targetRect.y + Math.round(targetDomH / 2);\n\n if (mousePos.y > yCenter) {\n pos = 'after';\n } else {\n pos = 'before';\n }\n\n if (mousePos.x > xCenter && pos === 'after') {\n pos = 'current';\n }\n\n return {\n pos,\n direction: 'vertical',\n };\n}\n\n//TODO: 移动到 model 包中去\nexport const getNodePropsLabelMap = (node: CNode) => {\n const resMap: Record<string, MTitle> = {};\n const props = node.material?.value.props;\n if (!props) {\n return resMap;\n }\n const singleProcessUnit = (val: SetterType, paths: string[]) => {\n if (isPlainObject(val)) {\n const newPaths = [...paths];\n const objSetter = val as SetterObjType;\n const componentName = objSetter.componentName;\n if (componentName === 'ArraySetter') {\n const setter = objSetter as ArraySetterObjType;\n const arrItemSetter = setter.props?.item.setters || [];\n const parentTitle = resMap[paths.join('.')];\n let currentTitle = '';\n if (typeof parentTitle === 'string') {\n currentTitle = parentTitle;\n } else {\n currentTitle = parentTitle.label;\n }\n newPaths.push('$NUM');\n arrItemSetter.forEach((el) => {\n currentTitle = `${currentTitle}`;\n resMap[newPaths.join('.')] = currentTitle;\n singleProcessUnit(el, newPaths);\n });\n } else if (componentName === 'ShapeSetter') {\n const setter = objSetter as ShapeSetterObjType;\n const elements = setter.props?.elements || [];\n elements.forEach((it) => {\n const newObjPaths = [...newPaths];\n newObjPaths.push(it.name);\n resMap[newObjPaths.join('.')] = it.title;\n const subSetter = it.setters || [];\n subSetter.forEach((it2) => {\n singleProcessUnit(it2, [...newObjPaths]);\n });\n });\n }\n }\n };\n\n props.forEach((item) => {\n let targetItem: MaterialPropType | MaterialPropType[] | null = null;\n if (isSpecialMaterialPropType(item)) {\n targetItem = item.content;\n } else {\n targetItem = item;\n }\n let itemArr: MaterialPropType[] = [];\n if (Array.isArray(targetItem)) {\n itemArr = targetItem;\n } else {\n itemArr = [targetItem];\n }\n\n itemArr.forEach((it) => {\n const newPaths: string[] = [it.name];\n resMap[newPaths.join('.')] = it.title;\n it.setters?.forEach((it2) => {\n singleProcessUnit(it2, newPaths);\n });\n });\n });\n\n return resMap;\n};\n","import { Sensor } from '@chamn/layout';\nimport { CPage } from '@chamn/model';\nimport React from 'react';\nimport { TreeNodeData } from './dataStruct';\nimport { DesignerExport } from '@/plugins/Designer/type';\nexport enum DragState {\n DRAGGING = 'DRAGGING',\n NORMAL = 'NORMAL',\n}\nexport type ContextState = {\n treeData: TreeNodeData[];\n currentSelectNodeKeys: string[];\n expandKeys: string[];\n multiSelect: boolean;\n dragState: DragState;\n pageModel: CPage | null;\n};\n\nexport type CTreeContextData = {\n sensor?: Sensor;\n state: ContextState;\n updateState: (state: Partial<ContextState>) => void;\n onSelectNode: (params: { keys: string[]; node: TreeNodeData }) => Promise<boolean | undefined>;\n onDeleteNode: (id: string) => Promise<boolean | undefined>;\n onCopyNode: (id: string) => Promise<boolean | undefined>;\n getDesignerHandler?: () => Promise<DesignerExport>;\n};\n\nexport const CTreeContext = React.createContext<CTreeContextData>({\n state: {\n treeData: [],\n currentSelectNodeKeys: [],\n expandKeys: [],\n multiSelect: false,\n dragState: DragState.NORMAL,\n pageModel: null,\n },\n updateState: () => {},\n onSelectNode: async () => {\n return true;\n },\n onDeleteNode: async () => {\n return true;\n },\n onCopyNode: async () => {\n return true;\n },\n});\n","import { useContext, useEffect, useRef, useState } from 'react';\nimport { CopyOutlined, DeleteOutlined, EyeInvisibleOutlined, EyeOutlined, RightOutlined } from '@ant-design/icons';\nimport clsx from 'clsx';\nimport { CTreeContext, DragState } from './context';\nimport { TreeNodeData } from './dataStruct';\nimport styles from './style.module.scss';\nimport { CNode } from '@chamn/model';\nimport { Input, InputRef } from 'antd';\nimport { CPluginCtx } from '@/core/pluginManager';\nimport { DesignerPluginInstance } from '@/plugins/Designer/type';\n\nexport const DRAG_ITEM_KEY = 'data-drag-key';\n\nexport type TreeNodeProps = {\n item: TreeNodeData;\n level?: number;\n paths?: (string | number)[];\n pluginCtx: CPluginCtx;\n};\nexport const TreeNode = (props: TreeNodeProps) => {\n const allStateRef = useRef<{ titleEditable: boolean }>({\n titleEditable: false,\n });\n const { level = 0, item, paths = ['0'] } = props;\n const [nodeVisible, setNodeVisible] = useState(true);\n const {\n state: ctxState,\n updateState,\n onSelectNode,\n onDeleteNode,\n getDesignerHandler,\n onCopyNode,\n } = useContext(CTreeContext);\n\n const [titleEditable, setTitleEditable] = useState(allStateRef.current?.titleEditable);\n const [editInputValue, setEditInputValue] = useState('');\n allStateRef.current.titleEditable = titleEditable;\n const expanded = ctxState.expandKeys.find((el) => el === item.key);\n const toggleExpandNode = (open?: boolean) => {\n let newExpandKeys = ctxState.expandKeys;\n if (open !== undefined) {\n if (open === true) {\n if (!expanded) {\n newExpandKeys.push(item.key || '');\n }\n } else {\n if (expanded) {\n newExpandKeys = newExpandKeys.filter((el) => el !== item.key);\n }\n }\n } else {\n if (expanded) {\n newExpandKeys = newExpandKeys.filter((el) => el !== item.key);\n } else {\n newExpandKeys.push(item.key || '');\n }\n }\n\n updateState({\n expandKeys: newExpandKeys,\n });\n };\n const selected = ctxState.currentSelectNodeKeys.find((el) => el === item.key);\n const titleEditInputRef = useRef<InputRef>(null);\n const toggleSelectNode = async () => {\n toggleExpandNode(true);\n if (titleEditable) {\n titleEditInputRef?.current?.focus();\n return;\n }\n if (item.canBeSelected !== undefined && item.canBeSelected === false) {\n return;\n }\n let newKeys = ctxState.currentSelectNodeKeys;\n if (!ctxState.multiSelect) {\n if (item.key) {\n const flag = await onSelectNode?.({ keys: [item.key], node: item });\n if (flag) {\n updateState({\n currentSelectNodeKeys: [String(item.key)],\n });\n }\n } else {\n onSelectNode?.({ keys: [], node: item });\n }\n\n return;\n }\n if (selected) {\n newKeys = newKeys.filter((el) => el !== item.key);\n } else {\n newKeys.push(String(item.key));\n }\n onSelectNode?.({ keys: newKeys, node: item });\n updateState({\n currentSelectNodeKeys: newKeys,\n });\n };\n const singPadding = 20;\n const indent = singPadding * level;\n const canBeSelected = item.canBeSelected ?? true;\n\n const dragKeyProps = {\n [DRAG_ITEM_KEY]: item.key,\n };\n const updateExpandKeyRef = useRef<(key: string) => void>();\n const ctxStateRef = useRef<typeof ctxState>();\n ctxStateRef.current = ctxState;\n updateExpandKeyRef.current = (key) => {\n const oldExpandKeys = ctxState.expandKeys;\n const newExpandKeys = Array.from(new Set([...oldExpandKeys, key]));\n updateState({\n expandKeys: newExpandKeys,\n });\n };\n const domRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n // auto expand on dragging\n let timerHandler = 0;\n domRef.current?.addEventListener('mouseenter', () => {\n timerHandler = window.setTimeout(() => {\n if (ctxStateRef.current?.dragState === DragState.DRAGGING) {\n updateExpandKeyRef.current?.(item.key || '');\n }\n }, 0.8 * 1000);\n });\n domRef.current?.addEventListener('mouseleave', () => {\n clearTimeout(timerHandler);\n });\n\n const clickHandle = (e: MouseEvent) => {\n if (allStateRef.current.titleEditable) {\n if (e.target === titleEditInputRef.current?.input) {\n return;\n }\n setTitleEditable(false);\n targetNodeModel.updateValue();\n }\n };\n let sunWin: Window | null;\n const registerDesignerClick = async () => {\n const designerPluginInstance = await props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerHandler = designerPluginInstance?.export;\n const win = designerHandler?.getDesignerWindow();\n win?.addEventListener('click', clickHandle);\n sunWin = win || null;\n };\n\n registerDesignerClick();\n document.addEventListener('click', clickHandle);\n\n return () => {\n if (timerHandler) {\n clearTimeout(timerHandler);\n }\n document.removeEventListener('click', clickHandle);\n sunWin?.removeEventListener('click', clickHandle);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const targetNodeModel = ctxState.pageModel?.getNode(item.key || '') as CNode;\n\n const toggleNodeVisible = () => {\n const newVisible = !nodeVisible;\n\n if (!targetNodeModel) {\n return;\n }\n const devState = targetNodeModel.value.configure.devState ?? {};\n devState.condition = newVisible;\n targetNodeModel.value.configure.devState = devState;\n targetNodeModel.updateValue();\n setNodeVisible(newVisible);\n };\n\n let titleView = item.title;\n if (item.titleViewRender) {\n titleView = item.titleViewRender({\n item,\n titleView: item.title,\n });\n }\n\n const bodyView = (\n <div className={styles.nodeBox}>\n <div\n className={clsx([styles.nodeContent, selected && canBeSelected && styles.selected])}\n style={{ marginLeft: `${-indent}px`, paddingLeft: `${indent + 8}px` }}\n onMouseMove={async () => {\n if (!item.key) {\n return;\n }\n const designerHandler = await getDesignerHandler?.();\n const compInstances = designerHandler?.getDynamicComponentInstances(item.key);\n if (typeof compInstances?._CONDITION !== 'undefined') {\n setNodeVisible(compInstances?._CONDITION);\n }\n }}\n >\n {item.children?.length ? (\n <span style={{ paddingRight: '5px' }} className={styles.arrowSpan} onClickCapture={() => toggleExpandNode()}>\n <RightOutlined className={clsx([styles.nodeArrow, expanded && styles.expanded])} />\n </span>\n ) : null}\n <div\n className={styles.nodeRenderView}\n {...dragKeyProps}\n ref={domRef}\n onClick={toggleSelectNode}\n onDoubleClick={() => {\n // slot 节点,属性节点不能编辑 title\n if (!targetNodeModel) {\n return;\n }\n const node = targetNodeModel;\n const nodeMeta = node.materialsModel.findByComponentName(node.value.componentName)?.value.title;\n const inputValue = node.value.title || nodeMeta || node.value.componentName || '';\n setEditInputValue(inputValue);\n setTitleEditable(true);\n setTimeout(() => {\n titleEditInputRef.current?.focus();\n }, 16.66);\n }}\n >\n {!titleEditable && titleView}\n {titleEditable && (\n <div\n style={{\n paddingRight: '10px',\n }}\n >\n <Input\n size=\"small\"\n maxLength={20}\n style={{}}\n ref={titleEditInputRef}\n value={editInputValue}\n onPressEnter={() => {\n setTitleEditable(false);\n targetNodeModel.updateValue();\n }}\n onChange={(e) => {\n targetNodeModel.value.title = e.target.value;\n setEditInputValue(e.target.value);\n }}\n />\n </div>\n )}\n </div>\n\n {!titleEditable && !item.rootNode && (\n <div className={styles.toolbarBox}>\n <div className={styles.iconItem}>\n {!nodeVisible && <EyeOutlined onClick={toggleNodeVisible} />}\n {nodeVisible && <EyeInvisibleOutlined onClick={toggleNodeVisible} />}\n </div>\n <div\n className={styles.iconItem}\n onClick={() => {\n onCopyNode(item.key || '');\n }}\n >\n <CopyOutlined />\n </div>\n <div\n className={styles.iconItem}\n onClick={() => {\n onDeleteNode(item.key || '');\n }}\n >\n <DeleteOutlined />\n </div>\n </div>\n )}\n </div>\n <div\n className={clsx([styles.nodeChildren, selected && styles.selected])}\n style={{\n paddingLeft: `${singPadding}px`,\n height: expanded ? 'auto' : '0',\n }}\n >\n {expanded &&\n item.children?.map((el, index) => {\n const key = `${el.key}-${index}`;\n return (\n <TreeNode key={key} item={el} paths={[...paths, index]} level={level + 1} pluginCtx={props.pluginCtx} />\n );\n })}\n </div>\n </div>\n );\n if (item.containerRender) {\n const containerView = item.containerRender({\n item: item,\n treeNodeView: bodyView,\n });\n return containerView;\n }\n return bodyView;\n};\n","import { LayoutDragAndDropExtraDataType, Sensor } from '@chamn/layout';\nimport { CNode, CRootNode, DropPosType } from '@chamn/model';\nimport React from 'react';\nimport { WithTranslation } from 'react-i18next';\nimport { CPluginCtx } from '../../../../core/pluginManager';\nimport { LOGGER } from '../../../../utils/logger';\nimport { calculateDropPosInfo, getTargetMNodeKeyVal, transformPageSchemaToTreeData, traverseTree } from '../../util';\nimport { ContextState, CTreeContext, DragState } from './context';\nimport { TreeNodeData } from './dataStruct';\nimport styles from './style.module.scss';\nimport { DRAG_ITEM_KEY, TreeNode } from './treeNode';\nimport { DesignerPluginInstance } from '@/plugins/Designer/type';\nimport { message } from 'antd';\n\ninterface TreeViewProps extends WithTranslation {\n pluginCtx: CPluginCtx;\n multiSelect?: boolean;\n}\n\nexport class TreeView extends React.Component<\n TreeViewProps,\n ContextState & {\n dropPosInfo: { x: number; y: number } | null;\n }\n> {\n domRef: React.RefObject<HTMLDivElement>;\n disposeCbList: (() => void)[] = [];\n sensor?: Sensor;\n constructor(props: TreeViewProps) {\n super(props);\n this.domRef = React.createRef<HTMLDivElement>();\n\n this.state = {\n treeData: [],\n currentSelectNodeKeys: [],\n expandKeys: [],\n multiSelect: props.multiSelect || false,\n dropPosInfo: {\n x: 0,\n y: 0,\n },\n pageModel: props.pluginCtx.pageModel,\n dragState: DragState.NORMAL,\n };\n }\n\n getDesignerHandler = async () => {\n const designerPluginInstance = await this.props.pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerHandler = designerPluginInstance?.export;\n return designerHandler!;\n };\n\n updateTreeDataFromNode = () => {\n const { pluginCtx } = this.props;\n const { pageModel } = pluginCtx;\n const plainTreeData = pageModel.export();\n const tempTreeData = transformPageSchemaToTreeData(plainTreeData, pageModel);\n this.setState({\n treeData: tempTreeData,\n });\n };\n\n getParentKeyPaths = (targetKey: string) => {\n const { treeData } = this.state;\n let target: TreeNodeData = null as any;\n traverseTree(treeData, (node) => {\n if (node.key === targetKey) {\n target = node;\n return true;\n }\n return false;\n });\n if (target) {\n let tempNode = target?.parent as TreeNodeData | undefined | null;\n const res = [];\n while (tempNode) {\n if (tempNode.key) {\n res.push(tempNode.key);\n }\n tempNode = tempNode.parent;\n }\n return res;\n } else {\n return [];\n }\n };\n\n scrollNodeToView = (key: string) => {\n const dom = document.querySelector(`[${DRAG_ITEM_KEY}=\"${key}\"]`);\n dom?.scrollIntoView?.({\n behavior: 'smooth',\n block: 'center',\n });\n };\n\n async componentDidMount() {\n this.updateTreeDataFromNode();\n const { pluginCtx } = this.props;\n const { pageModel } = pluginCtx;\n\n pageModel.emitter.on('*', () => {\n this.updateTreeDataFromNode();\n });\n\n pluginCtx.globalEmitter.on('onSelectNodeChange', ({ node }) => {\n this.toSelectTreeNode(node);\n });\n\n const workbench = pluginCtx.getWorkbench();\n\n workbench.emitter.on('leftPanelVisible', ({ visible, panelName }) => {\n if (visible && panelName === 'OutlineTree') {\n console.log('visible, panelName', visible, panelName);\n const currentSelectNode = pluginCtx.engine.getActiveNode();\n if (currentSelectNode) {\n this.toSelectTreeNode(currentSelectNode);\n }\n }\n });\n\n const currentSelectNode = pluginCtx.engine.getActiveNode();\n if (currentSelectNode) {\n this.toSelectTreeNode(currentSelectNode);\n }\n\n await this.props.pluginCtx.pluginManager.onPluginReadyOk('Designer');\n this.registerDragEvent();\n // 页面重载时重新注册拖拽事件\n this.props.pluginCtx.engine.pageModel.emitter.on('onReloadPage', () => {\n this.registerDragEvent();\n });\n }\n\n toSelectTreeNode = (node: CNode | CRootNode | null) => {\n if (!node) {\n this.setState({\n currentSelectNodeKeys: [],\n });\n return;\n }\n const parentPaths = this.getParentKeyPaths(node.id);\n LOGGER.debug('onSelectNodeChange parent path', parentPaths, node);\n const newExpandKeys = Array.from(new Set([...this.state.expandKeys, ...parentPaths]));\n\n LOGGER.debug('onSelectNodeChange newExpandKeys', newExpandKeys, node);\n\n this.setState({\n currentSelectNodeKeys: [node.id],\n expandKeys: newExpandKeys,\n });\n\n setTimeout(() => {\n this.scrollNodeToView(node.id);\n }, 16);\n };\n\n containNode = (parentNode: TreeNodeData, targetNode: TreeNodeData) => {\n let res = null;\n traverseTree(parentNode, (node) => {\n if (node.key === targetNode.key) {\n res = node;\n return true;\n }\n return false;\n });\n return res;\n };\n\n getTreeNodeByKey = (key: string): TreeNodeData | null => {\n const { treeData } = this.state;\n let target: TreeNodeData | null = null;\n traverseTree(treeData, (node) => {\n if (node.key === key) {\n target = node;\n return true;\n }\n return false;\n });\n return target;\n };\n\n registerDragEvent = async () => {\n if (!this.domRef.current) {\n return;\n }\n const sensor = new Sensor<LayoutDragAndDropExtraDataType>({\n container: this.domRef.current,\n name: 'OutlineTree',\n eventPriority: 999,\n mainDocument: document,\n });\n const { pluginCtx } = this.props;\n\n const pageModel = pluginCtx.pageModel;\n const designerExport = await this.getDesignerHandler();\n const dnd = designerExport!.getDnd()!;\n\n sensor.setCanDrag(async (eventObj) => {\n const targetDom = eventObj.event.target as HTMLDivElement;\n if (!targetDom) {\n return;\n }\n const targetNodeId = getTargetMNodeKeyVal(targetDom, DRAG_ITEM_KEY);\n\n if (!targetNodeId) {\n return;\n }\n\n const targetNode = pageModel.getNode(targetNodeId);\n const targetTreeNode = this.getTreeNodeByKey(targetNodeId);\n // 判断当前节点是否可以在节点树上拖动,比如 jsslot 容器节点不能被拖动,大纲树特有\n if (targetTreeNode?.canDrag !== undefined && targetTreeNode?.canDrag === false) {\n return;\n }\n\n // 判断节点本身是否可以拖动\n const designerInstance = designerExport!.getInstance();\n const nodeCanDragRes = await designerInstance?.customAdvanceHook.canDrag({\n dragNode: targetNode,\n eventObj: {\n extraData: {},\n ...eventObj,\n from: eventObj.event,\n fromSensor: sensor,\n fromPointer: eventObj.pointer,\n },\n });\n // 节点不能拖动\n if (nodeCanDragRes === false) {\n return false;\n }\n\n if (!targetNode) {\n console.log('targetNode not found');\n return;\n }\n\n const canDragResInfo = {\n ...eventObj,\n extraData: {\n dragNode: targetNode,\n dragNodeUID: targetNode.id,\n },\n };\n\n if (typeof nodeCanDragRes === 'object') {\n canDragResInfo.extraData.dragNode = nodeCanDragRes.dragNode!;\n canDragResInfo.extraData.dragNodeUID = nodeCanDragRes.dragNode?.id || '';\n }\n\n return canDragResInfo;\n });\n\n sensor.setCanDrop(async (eventObj) => {\n const targetDom = eventObj.event.target as HTMLDivElement;\n\n if (!targetDom) {\n LOGGER.debug('drop dom not found');\n return eventObj;\n }\n const targetNodeId = getTargetMNodeKeyVal(targetDom, DRAG_ITEM_KEY);\n\n if (!targetNodeId) {\n LOGGER.debug('targetNodeId dom not found', eventObj, targetDom, DRAG_ITEM_KEY);\n return eventObj;\n }\n const targetTreeNode = this.getTreeNodeByKey(targetNodeId);\n if (targetTreeNode?.canDropPos !== undefined && targetTreeNode.canDropPos === false) {\n LOGGER.debug('node can not be drop by tree node config');\n return eventObj;\n }\n\n const targetNode = pageModel.getNode(targetNodeId);\n\n if (!targetNode) {\n LOGGER.debug('targetNode not found');\n return eventObj;\n }\n const startNode = eventObj.extraData?.dragNode as CNode;\n if (!startNode) {\n LOGGER.debug('startNode not found');\n return eventObj;\n }\n\n if (startNode?.id === targetNode.id) {\n LOGGER.debug('startNode and dropNode is the same');\n return eventObj;\n }\n const hasContain = startNode.contains(targetNode.id);\n\n if (hasContain) {\n LOGGER.debug('startNode contain dropNode');\n return eventObj;\n }\n\n const dropInfo = calculateDropPosInfo({\n point: eventObj.pointer,\n dom: targetDom,\n });\n\n if (Array.isArray(targetTreeNode?.canDropPos) && !targetTreeNode?.canDropPos.includes(dropInfo.pos)) {\n return false;\n }\n\n LOGGER.info('can dropNode', targetNode);\n\n const res = {\n ...eventObj,\n extraData: {\n ...eventObj.extraData,\n dropPosInfo: dropInfo,\n dropNode: targetNode,\n dropNodeUID: targetNode.id,\n },\n };\n\n // 判断节点本身是否可以拖动\n const designerInstance = designerExport!.getInstance();\n const nodeCanDropRes = await designerInstance?.customAdvanceHook.canDrop({\n dragNode: res.extraData.dragNode,\n dropNode: targetNode,\n eventObj: {\n ...res,\n from: res.event,\n fromSensor: sensor,\n fromPointer: res.pointer,\n },\n });\n\n if (nodeCanDropRes === false) {\n return false;\n }\n\n if (typeof nodeCanDropRes === 'object') {\n res.extraData = {\n ...res.extraData,\n ...nodeCanDropRes,\n };\n }\n return res;\n });\n\n dnd.registerSensor(sensor);\n\n sensor.emitter.on('dragging', (e) => {\n const dropNode = e.extraData.dropNode as CNode;\n this.setState({\n dragState: DragState.DRAGGING,\n });\n\n if (!dropNode) {\n this.setState({\n dropPosInfo: null,\n });\n return;\n }\n const dropDom = document.querySelectorAll(`[${DRAG_ITEM_KEY}=\"${dropNode.id}\"]`)?.[0];\n if (!dropDom) {\n return;\n }\n const dropPosInfo = e.extraData?.dropPosInfo || ({} as DropPosType);\n const rect = dropDom.getBoundingClientRect();\n const newDropInfo = { x: 0, y: 0 };\n\n newDropInfo.x = rect.x;\n if (dropPosInfo.pos === 'before') {\n newDropInfo.y = rect.y;\n } else if (dropPosInfo.pos === 'after') {\n newDropInfo.y = rect.y + rect.height;\n } else {\n newDropInfo.y = rect.y + rect.height;\n newDropInfo.x = rect.x + 20;\n }\n this.setState({\n dropPosInfo: newDropInfo,\n });\n });\n\n sensor.emitter.on('dragEnd', () => {\n this.setState({\n dragState: DragState.NORMAL,\n });\n });\n this.sensor = sensor;\n };\n\n render() {\n const { treeData, dragState, dropPosInfo } = this.state;\n const { pluginCtx } = this.props;\n\n return (\n <CTreeContext.Provider\n value={{\n sensor: this.sensor,\n state: this.state,\n getDesignerHandler: this.getDesignerHandler,\n onSelectNode: async ({ keys: sk }) => {\n const designer = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n if (!designer) {\n console.warn('Designer is empty');\n return false;\n }\n const nodeId = sk?.[0] || '';\n const nn = pluginCtx.pageModel.getNode(nodeId);\n if (!nn) {\n return false;\n }\n\n const designerExport = designer.export;\n const flag = await designerExport.selectNode(nodeId);\n return flag;\n },\n updateState: (newVal) => {\n this.setState(newVal as any);\n },\n onDeleteNode: async (id) => {\n const designer = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n if (!designer) {\n console.warn('Designer is empty');\n return false;\n }\n const designerExport = designer.export;\n const nodeId = id;\n const nn = pluginCtx.pageModel.getNode(nodeId);\n if (!nn) {\n message.error('该节点不能删除');\n return false;\n }\n const flag = await designerExport.deleteNode(id);\n if (!flag) {\n message.error('该节点不能删除');\n }\n return flag;\n },\n onCopyNode: async (id) => {\n const designer = await pluginCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n if (!designer) {\n console.warn('Designer is empty');\n return false;\n }\n const designerExport = designer.export;\n return await designerExport.copyNode(id);\n },\n }}\n >\n <div className={styles.contentBox} ref={this.domRef}>\n {treeData.map((item, index) => {\n return <TreeNode item={item} key={item.key + `${index}`} pluginCtx={this.props.pluginCtx}></TreeNode>;\n })}\n {dragState === DragState.DRAGGING && dropPosInfo && (\n <div\n className={styles.dropAnchorLine}\n style={{\n left: `${dropPosInfo.x}px`,\n top: `${dropPosInfo.y}px`,\n }}\n ></div>\n )}\n </div>\n </CTreeContext.Provider>\n );\n }\n}\n","export const zh_CN: Record<string, any> = {\n pluginName: '大纲树',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Layout Tree',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","import { ApartmentOutlined } from '@ant-design/icons';\nimport { CPlugin } from '../../core/pluginManager';\nimport { withTranslation } from 'react-i18next';\nimport { TreeView } from './components/TreeView';\nimport localize from './localize';\n\nconst PLUGIN_NAME = 'OutlineTree';\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\nexport const OutlineTreePlugin: CPlugin = {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const { i18n } = ctx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n const TreeViewWithLocalize = withTranslation(i18nNamespace)(TreeView);\n const Title = withTranslation(i18nNamespace)(({ t }) => <>{t('pluginName')}</>);\n const workbench = ctx.getWorkbench();\n workbench.addLeftPanel({\n title: <Title />,\n name: PLUGIN_NAME,\n icon: <ApartmentOutlined />,\n render: <TreeViewWithLocalize pluginCtx={ctx} />,\n });\n\n ctx.pluginReadyOk();\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return {};\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\nOutlineTreePlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const REACT_FLOW_DRAG_CLASS_NAME = 'chamn-action-drag-handler';\n\nexport const INPUT_HANDLE_ID = 'INPUT_HANDLE_ID';\n\nexport const OUTPUT_HANDLE_ID = 'OUTPUT_HANDLE_ID';\n\nexport const REQUEST_API_FAILED_HANDLE_ID = 'REQUEST_API_FAILED_HANDLE_ID';\n","import React from 'react';\nimport { CSetter } from '../Setters/type';\n\nexport type ContextState = Record<string, any>;\n\nexport type CFormContextData = {\n formName: string;\n formState: ContextState;\n conditionConfig: Record<string, (state: ContextState) => boolean>;\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap?: Record<string, CSetter>;\n updateContext: (newState: ContextState, changeKeys?: string[]) => void;\n updateConditionConfig: (name: string, cb: (state: ContextState) => boolean) => void;\n};\n\nexport const CFormContext = React.createContext<CFormContextData>({\n formName: '',\n formState: {},\n conditionConfig: {},\n updateContext: () => {},\n updateConditionConfig: () => {},\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap: {},\n});\n","import React from 'react';\nimport { ReactNode } from 'react';\nimport { CFormContext, CFormContextData, ContextState } from './context';\n\nexport type CFormProps = {\n name: string;\n children?: ReactNode | ReactNode[];\n initialValue?: Record<string, any>;\n customSetterMap: CFormContextData['customSetterMap'];\n onValueChange?: (formData: Record<string, any>, changeKeys?: string[]) => void;\n} & Partial<ContextState>;\n\nconst CUSTOM_SETTER_MAP = {};\n\nlet updateState = () => {};\n\nexport const registerCustomSetter = (customSetterMap: CFormContextData['customSetterMap']) => {\n Object.assign(CUSTOM_SETTER_MAP, customSetterMap);\n updateState?.();\n};\nexport class CForm extends React.Component<CFormProps, CFormContextData> {\n updateContext: (newState: ContextState) => void;\n isMount = false;\n constructor(props: CFormProps) {\n super(props);\n this.updateContext = (newState: ContextState, changeKeys?: string[]) => {\n this.setState({\n formState: newState,\n customSetterMap: CUSTOM_SETTER_MAP,\n });\n this.props.onValueChange?.(this.formatValue(newState), changeKeys);\n };\n updateState = () => {\n if (!this.isMount) {\n return;\n }\n this.setState({\n customSetterMap: { ...CUSTOM_SETTER_MAP, ...this.props.customSetterMap },\n });\n };\n registerCustomSetter(props.customSetterMap || {});\n this.state = {\n formName: props.name,\n formState: props.initialValue ?? {},\n conditionConfig: {},\n customSetterMap: props.customSetterMap || {},\n\n updateContext: this.updateContext,\n updateConditionConfig: (name: string, cb: (state: Record<string, any>) => boolean) => {\n this.setState({\n conditionConfig: {\n ...this.state.conditionConfig,\n [name]: cb,\n },\n });\n },\n };\n }\n\n componentDidMount(): void {\n this.isMount = true;\n }\n\n componentWillUnmount(): void {\n this.isMount = false;\n }\n\n getFieldsValue = () => {\n return this.formatValue(this.state.formState);\n };\n\n setFields = (state: Record<string, any>) => {\n this.setState({\n formState: state,\n });\n };\n\n formatValue = (data: Record<string, any>) => {\n const res: Record<string, any> = {};\n const conditionConfig = this.state.conditionConfig;\n Object.keys(data).forEach((key) => {\n const isValid = conditionConfig[key]?.(data) ?? true;\n if (isValid) {\n res[key] = data[key];\n }\n });\n return res;\n };\n\n render(): ReactNode {\n const { state } = this;\n const { children } = this.props;\n\n return <CFormContext.Provider value={state}>{children}</CFormContext.Provider>;\n }\n}\n","import { ConfigProvider, Input, InputProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { useState, useRef, useEffect } from 'react';\n\nexport const StringSetter: CSetter<InputProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<InputProps & { initialValue?: string }>) => {\n const [internalValue, setInternalValue] = useState(props.value ?? initialValue ?? '');\n const lastExternalValueRef = useRef(props.value ?? initialValue);\n\n // 监听外部值变化,同步到内部状态(避免重复更新)\n useEffect(() => {\n const externalValue = props.value ?? initialValue;\n if (externalValue !== lastExternalValueRef.current) {\n lastExternalValueRef.current = externalValue;\n setInternalValue(externalValue ?? '');\n }\n }, [props.value, initialValue]);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Input\n {...props}\n value={internalValue}\n onChange={(e) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n }}\n onBlur={(e) => {\n // blur 时才触发 onChange 和更新值到外部\n const finalValue = e.target.value;\n lastExternalValueRef.current = finalValue;\n props.onChange?.(e);\n onValueChange?.(finalValue);\n props.onBlur?.(e);\n }}\n />\n </ConfigProvider>\n );\n};\n\nStringSetter.setterName = '字符设置器';\n","import React from 'react';\nimport { ConfigProvider, InputNumber, InputNumberProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\nexport const NumberSetter: CSetter<InputNumberProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<InputNumberProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <InputNumber\n style={{\n width: '100%',\n }}\n {...props}\n value={props.value ?? initialValue}\n onChange={(value) => {\n props.onChange?.(value);\n onValueChange?.(value);\n }}\n />\n </ConfigProvider>\n );\n};\n\nNumberSetter.setterName = '数字设置器';\n","import { SetterBasicType, SetterObjType, SetterType } from '@chamn/model';\n\nexport const getSetterList = <T extends SetterBasicType = ''>(setters: SetterType<T>[] = []): SetterObjType<T>[] => {\n return setters.map((setter) => {\n if (typeof setter === 'string') {\n return {\n componentName: setter as any,\n };\n } else {\n return setter;\n }\n });\n};\n\nconst setterTypeMap = {\n string: 'StringSetter',\n number: 'NumberSetter',\n boolean: 'BooleanSetter',\n array: 'ArraySetter',\n expression: 'ExpressionSetter',\n function: 'FunctionSetter',\n json: 'JSONSetter',\n} as const;\n\nconst getValueType = (value: any): keyof typeof setterTypeMap => {\n if (value === undefined || value === null) {\n return 'string';\n }\n\n if (Array.isArray(value)) {\n return 'array';\n }\n\n if (typeof value === 'object') {\n if (value.type === 'EXPRESSION') return 'expression';\n if (value.type === 'FUNCTION') return 'function';\n return 'json';\n }\n\n return typeof value as keyof typeof setterTypeMap;\n};\n\n/** 根据值获取默认的 setter */\nexport const getDefaultSetterByValue = (value: any, setterList: SetterObjType[]) => {\n const valueType = getValueType(value);\n const setterName = setterTypeMap[valueType];\n return setterList.find((setter) => setter.componentName === setterName);\n};\n","import React, { useEffect, useRef } from 'react';\nimport { CForm } from '../../Form';\nimport { SetterSwitcher } from '../../SetterSwitcher';\nimport { DeleteOutlined } from '@ant-design/icons';\nimport { SetterObjType } from '@chamn/model';\n\nexport function ArrayItem(props: {\n index: number;\n labelPrefix?: string;\n keyPaths: string[];\n value: Record<string, any>;\n setters: SetterObjType[];\n style: React.CSSProperties;\n onValueChange: (val: Record<string, any>) => void;\n onDelete: () => void;\n}) {\n const { index, keyPaths, setters } = props;\n\n const style = {\n ...props.style,\n };\n const objectValue = {\n [index]: props.value,\n };\n const formRef = useRef<CForm>(null);\n useEffect(() => {\n formRef.current?.setFields({\n [index]: props.value,\n });\n }, [index, props.value]);\n\n return (\n <div style={style}>\n <CForm\n ref={formRef}\n name={String(index)}\n initialValue={objectValue || {}}\n onValueChange={props.onValueChange}\n customSetterMap={{}}\n >\n <SetterSwitcher\n suffix={\n <div\n style={{\n marginLeft: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n <DeleteOutlined onClick={props.onDelete} />\n </div>\n }\n name={String(index)}\n label={`${props.labelPrefix ?? `元素-${index}`}`}\n keyPaths={[...keyPaths, String(index)]}\n setters={setters}\n ></SetterSwitcher>\n </CForm>\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport { CSS, Transform } from '@dnd-kit/utilities';\nimport { Modal, ModalProps } from 'antd';\nimport {\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useDraggable,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { arrayMove, SortableContext, sortableKeyboardCoordinates, useSortable } from '@dnd-kit/sortable';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { getRandomStr } from '@chamn/model';\nimport styles from './style.module.scss';\n\nexport type SortItemOrderProps = {\n list: any[];\n keyPaths: string[];\n label: string;\n sortLabelKey?: string;\n onValueChange?: (newList: any[]) => void;\n} & ModalProps;\n\nexport const SortItemOrderModal = ({\n list,\n onValueChange,\n keyPaths,\n label,\n sortLabelKey,\n ...modalProps\n}: SortItemOrderProps) => {\n const [listValue, setListValue] = useState<{ val: any; id: string }[]>([]);\n useEffect(() => {\n const innerList = list.map((el, index) => ({\n val: el,\n oldIndex: index,\n id: getRandomStr(),\n }));\n setListValue(innerList);\n }, [list, modalProps.open]);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 15,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (active.id !== over?.id) {\n const oldIndex = listValue.findIndex((el) => el.id === active?.id);\n const newIndex = listValue.findIndex((el) => el.id === over?.id);\n const newInnerListVal = arrayMove(listValue, oldIndex, newIndex);\n const newVal = newInnerListVal.map((el) => {\n return el.val;\n });\n setListValue(newInnerListVal);\n onValueChange?.(newVal);\n }\n }\n\n const [modalTransform, setModalTransform] = useState<Transform>({\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n });\n\n return (\n <Modal\n {...modalProps}\n title={`Sort: ${label} [${keyPaths.join('.')}]`}\n styles={{\n mask: {\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n },\n }}\n modalRender={(modal) => {\n return (\n <DndContext\n sensors={sensors}\n onDragEnd={({ delta }) => {\n const res = {\n ...modalTransform,\n ...delta,\n x: modalTransform.x + (delta?.x || 0),\n y: modalTransform.y + (delta?.y || 0),\n };\n setModalTransform(res);\n }}\n >\n <ModalDragView modal={modal} transform={modalTransform} />\n </DndContext>\n );\n }}\n >\n <div className={styles.sortModalBox}>\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} modifiers={[restrictToVerticalAxis]}>\n <SortableContext items={listValue}>\n {listValue.map(({ id, val }, index) => {\n return <SortableItem key={id} id={id} index={index} label={val[sortLabelKey || '']} />;\n })}\n </SortableContext>\n </DndContext>\n </div>\n </Modal>\n );\n};\n\nconst ModalDragView = ({ modal, transform }: { modal: React.ReactNode; transform: Transform }) => {\n const id = useRef(getRandomStr());\n const {\n setNodeRef,\n attributes,\n listeners,\n transform: tempTransform,\n } = useDraggable({\n id: id.current,\n });\n\n const finalTransform = {\n ...transform,\n ...tempTransform,\n x: transform.x + (tempTransform?.x || 0),\n y: transform.y + (tempTransform?.y || 0),\n };\n\n return (\n <div\n ref={setNodeRef}\n style={{\n pointerEvents: 'auto',\n transform: CSS.Transform.toString(finalTransform),\n }}\n {...attributes}\n {...listeners}\n >\n {modal}\n </div>\n );\n};\n\nconst SortableItem = (props: { id: string; index: string | number; label?: string }) => {\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: props.id });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n const labelText = props.label || `Ele ${props.index}`;\n return (\n <div className={styles.dragItem} ref={setNodeRef} style={style} {...attributes} {...listeners}>\n {labelText}\n </div>\n );\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { Button, ConfigProvider } from 'antd';\nimport { CSetterProps } from '../type';\nimport { getSetterList } from '../../../utils';\nimport { SetterType } from '@chamn/model';\n\nimport { ArrayItem } from './ArrayItem';\nimport { SortItemOrderModal } from './SortItemOrderModal';\nimport styles from './style.module.scss';\n\nexport type CArraySetterProps = {\n item: {\n setters: SetterType[];\n initialValue?: any;\n };\n itemLabelPrefix?: string;\n sortLabelKey?: string;\n itemLabelPrefixKey?: string;\n};\n\nfunction formatValue(value: unknown) {\n if (Array.isArray(value)) {\n return value;\n } else {\n return [];\n }\n}\n\nexport const ArraySetter = ({\n onValueChange,\n setterContext,\n item: { setters, initialValue: itemInitialValue },\n sortLabelKey,\n initialValue,\n itemLabelPrefix,\n itemLabelPrefixKey,\n ...props\n}: CSetterProps<CArraySetterProps>) => {\n const { keyPaths, label } = setterContext;\n const listValue: any[] = useMemo(() => {\n return formatValue(props.value ?? initialValue);\n }, [initialValue, props.value]);\n\n const [sortVisible, setSortVisible] = useState(false);\n const innerSetters = getSetterList(\n setters || [\n {\n component: 'StringSetter',\n },\n ]\n );\n\n useEffect(() => {\n if (setterContext.setCollapseHeaderExt) {\n setterContext.setCollapseHeaderExt?.(\n <Button\n type=\"text\"\n size=\"small\"\n style={{\n color: 'gray',\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSortVisible(true);\n }}\n >\n sort\n </Button>\n );\n }\n }, [setterContext]);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n {listValue.map((val, index) => {\n return (\n <ArrayItem\n labelPrefix={val[itemLabelPrefixKey || sortLabelKey || ''] || itemLabelPrefix}\n key={index}\n style={{ paddingBottom: '10px' }}\n index={index}\n keyPaths={keyPaths}\n value={val}\n onValueChange={(val) => {\n listValue[index] = val[index];\n onValueChange?.([...listValue]);\n }}\n setters={innerSetters}\n onDelete={() => {\n const newVal = [...listValue];\n newVal.splice(index, 1);\n onValueChange?.(newVal);\n }}\n />\n );\n })}\n\n <Button\n className={styles.addOneBtn}\n size=\"small\"\n onClick={() => {\n const newVal = [...listValue];\n onValueChange?.([...newVal, itemInitialValue ?? '']);\n }}\n >\n Add One\n </Button>\n <SortItemOrderModal\n label={label}\n sortLabelKey={sortLabelKey}\n onValueChange={(newVal) => {\n onValueChange?.([...newVal]);\n }}\n open={sortVisible}\n list={listValue}\n keyPaths={keyPaths}\n onCancel={() => {\n setSortVisible(false);\n }}\n onOk={() => {\n setSortVisible(false);\n }}\n />\n </ConfigProvider>\n );\n};\n\nArraySetter.setterName = '数组设置器';\n","import { useEffect, useRef } from 'react';\nimport { ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { CForm } from '../../Form';\nimport { SetterSwitcher } from '../../SetterSwitcher';\nimport { getSetterList } from '../../../utils';\nimport { getMTitle, getMTitleTip, MaterialPropType } from '@chamn/model';\n\nexport type CShapeSetterProps = {\n elements: MaterialPropType[];\n initialValue?: Record<string, any>;\n value: Record<string, any>;\n};\n\nexport const ShapeSetter: CSetter<CShapeSetterProps> = ({\n onValueChange,\n elements,\n value,\n setterContext,\n initialValue,\n}: CSetterProps<CShapeSetterProps>) => {\n const { keyPaths } = setterContext;\n const formRef = useRef<CForm>(null);\n useEffect(() => {\n formRef.current?.setFields(value || {});\n }, [value]);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <CForm\n ref={formRef}\n name={keyPaths.join('.')}\n initialValue={value || initialValue || {}}\n onValueChange={(val) => {\n onValueChange?.(val);\n }}\n customSetterMap={{}}\n >\n {elements.map((el, index) => {\n const setters = getSetterList(el.setters);\n const title = getMTitle(el.title);\n const tip = getMTitleTip(el.title) || el?.description;\n return (\n <div key={index}>\n <SetterSwitcher\n name={el.name}\n label={title}\n tips={tip}\n condition={el.condition}\n keyPaths={[...keyPaths, el.name]}\n setters={setters}\n />\n </div>\n );\n })}\n </CForm>\n </ConfigProvider>\n );\n};\n\nShapeSetter.setterName = '对象设置器';\n","import Editor, { EditorProps, Monaco } from '@monaco-editor/react';\n\nexport type EditorType = EditorProps;\n\nexport type MonacoEditorInstance = Parameters<Required<EditorType>['onMount']>[0];\n\nexport type MonacoEditorProps = {\n beforeMount?: (monaco: Monaco) => void;\n onDidMount?: (editor: MonacoEditorInstance) => void;\n options?: EditorType['options'];\n onChange?: EditorType['onChange'];\n initialValue?: string;\n language?: 'json' | 'javascript' | 'typescript' | 'css';\n theme?: 'vs-dark' | 'light';\n};\n\nexport const MonacoEditor = (props: MonacoEditorProps) => {\n const handleEditorBeforeMount: EditorType['beforeMount'] = (monaco) => {\n props.beforeMount?.(monaco);\n };\n\n const handleEditorDidMount: EditorType['onMount'] = (editor) => {\n props.onDidMount?.(editor);\n };\n\n return (\n <Editor\n height=\"100%\"\n width=\"100%\"\n defaultLanguage={props.language}\n defaultValue={props.initialValue}\n beforeMount={handleEditorBeforeMount}\n onMount={handleEditorDidMount}\n options={props.options}\n theme={props.theme}\n onChange={props.onChange}\n />\n );\n};\n","export default \"type SetStateInternal<T> = {\\n _(\\n partial:\\n | T\\n | Partial<T>\\n | {\\n _(state: T): T | Partial<T>;\\n }['_'],\\n replace?: boolean | undefined\\n ): void;\\n}['_'];\\nexport interface StoreApi<T> {\\n setState: SetStateInternal<T>;\\n getState: () => T;\\n subscribe: (listener: (state: T, prevState: T) => void) => () => void;\\n /**\\n * @deprecated Use `unsubscribe` returned by `subscribe`\\n */\\n destroy: () => void;\\n}\\n\\ntype PageState = any;\\n\\ntype NodeId = keyof PageState;\\n\\ntype MethodsManager = any;\\n\\ntype GlobalState = any;\\n\\ntype CurrentNodeState = any;\\n\\ntype PageStateManager<K extends keyof PageState> = {\\n state: PageState[K];\\n updateState: (newState: Partial<PageState[K]>) => void;\\n};\\n\\ntype PageStateManagerMap = {\\n [K in keyof PageState]: PageStateManager<K>;\\n};\\n\\ntype ContextType = {\\n /** 渲染函数的入口参数 */\\n params?: Record<any, any>;\\n /** 全局状态 */\\n globalState?: GlobalState;\\n /** 更新全局状态 */\\n updateGlobalState?: (newState: Partial<GlobalState>) => void;\\n /** 存储当前节点的数据,不具有响应性, 可能不是最新的值, 可以直接赋值 **/\\n staticVar?: Record<string | number, any>;\\n methods?: Record<string, (...arg: any) => any>;\\n /** 当前节点状态 **/\\n state?: CurrentNodeState;\\n /** 更新当前节点状态 */\\n updateState?: (newState: Partial<CurrentNodeState>) => void;\\n /** 获取当前节点状态最新 */\\n /** 用于访访问和管理页面被注册为全局的局部 state 快照,在闭包中使用会存在值不是最新的情况 */\\n stateManager: PageStateManagerMap;\\n /** 循环数据 */\\n loopData?: {\\n item: any;\\n index: number;\\n };\\n /** 组件节点的 Ref, 可以通过 current 直接调用节点提供的方法,需要判断是否在存在 */\\n nodeRefs?: { get: (/** 节点 id */ nodeId: NodeId) => { current?: any } };\\n /** 运行时全局的 store 管理 */\\n storeManager?: StoreManager<NodeId>;\\n /** 第三方辅助库 */\\n thirdLibs?: Record<string, any>;\\n};\\n\\ndeclare class StoreManager<T extends NodeId> {\\n storeMap: Map<T, StoreApi<PageState[T]>>;\\n getStore(storeName: T): StoreApi<PageState[T]> | undefined;\\n getState(nodeId: T): any;\\n getStateObj(nodeId: T): {\\n state: PageState[T];\\n updateState: (newState: Partial<PageState[T]>) => void;\\n };\\n setState(nodeId: NodeId, newState: Partial<PageState[T]>): void | undefined;\\n connect<T extends NodeId>(name: string, cb: (newState: PageState[T]) => void): () => void;\\n getStateSnapshot(): PageState;\\n destroy(): void;\\n}\\n\\ntype UpdaterMap = {\\n [K in NodeId /** 更新对应 nodeId 的数据 **/]: (newState: Partial<PageState[K]>) => void;\\n};\\n\\ndeclare global {\\n /** 运行时上下文 */\\n const $CTX: ContextType;\\n\\n /** 当前节点的 state */\\n const $STATE: CurrentNodeState;\\n\\n /** global state */\\n const $G_STATE: GlobalState;\\n\\n /** 当前页面所有节点的 state */\\n const $ALL_STATE: PageState;\\n\\n /** 状态更新函数 */\\n const $U_STATE: UpdaterMap;\\n\\n /** 节点方法调用 */\\n const $M: MethodsManager;\\n\\n /** 当前节点 ID */\\n const $N_ID: string;\\n\\n /** 存储所有节点的 id */\\n const $IDS: Record<NodeId, NodeId>;\\n\\n /** 上一个 API 返回的数据,可能不存在 */\\n const $RESPONSE: any;\\n\\n /** 循环数据,如果存在 */\\n const $LOOP_DATA: ContextType['loopData'];\\n\\n /** 函数在配置面板传入的参数 */\\n const $PARAMS: ContextType['params'];\\n\\n /** 事件传入的第一个参数,如果需要获取第二个参数,请使用 $ARGS 数组获取*/\\n const $EVENT_PARAMS: any;\\n\\n /** 事件对象 */\\n const $EVENT: MouseEvent;\\n\\n /** 函数执行时传入的入参 */\\n const $ARGS: any[];\\n\\n /** action flow 中的局部变量 */\\n const $ACTION_VAR_SPACE: any;\\n}\\n\"","import { CNode, CPage, InnerComponentNameEnum, traversePageNode } from '@chamn/model';\nimport DefaultTslibSource from './defaultDts?raw';\n\nimport { quicktype, InputData, jsonInputForTargetLanguage } from 'quicktype-core';\n\nexport async function quicktypeJSON(typeName: string, jsonString: string) {\n const jsonInput = jsonInputForTargetLanguage('typescript');\n\n // We could add multiple samples for the same desired\n // type, or many sources for other types. Here we're\n // just making one type from one piece of sample JSON.\n await jsonInput.addSource({\n name: typeName,\n samples: [jsonString],\n });\n\n const inputData = new InputData();\n inputData.addInput(jsonInput);\n\n return await quicktype({\n inputData,\n lang: 'typescript',\n rendererOptions: {\n 'just-types': 'true',\n 'nice-property-names': 'false',\n 'acronym-style': 'original',\n },\n });\n}\n\nexport const getPageTypeDefined = async (pageModel: CPage, currentNode: CNode) => {\n const stateTypeMap: Record<\n string,\n {\n stateTypeDefined: string;\n methodsTypeDefined: string;\n }\n > = {} as any;\n const pList: any[] = [];\n traversePageNode(pageModel, (node) => {\n stateTypeMap[node.id] = {\n stateTypeDefined: '',\n methodsTypeDefined: '',\n };\n if (node.value.state) {\n const cb = async () => {\n let typeName = `CNode${node.id.toUpperCase()}`;\n let id = node.id;\n if (node.value.componentName === InnerComponentNameEnum.ROOT_CONTAINER) {\n typeName = 'GlobalState';\n id = 'GlobalState';\n }\n const tempRes = await quicktypeJSON(typeName, JSON.stringify(node.value.state));\n stateTypeMap[id] = {\n stateTypeDefined: tempRes.lines.join('\\n'),\n methodsTypeDefined: '',\n };\n };\n\n pList.push(cb());\n }\n });\n\n await Promise.all(pList);\n\n const globalStateDts = stateTypeMap['GlobalState'];\n delete stateTypeMap.GlobalState;\n\n // 拼接 整体的 page state 类型定义\n let pageStateDts = '';\n\n pageStateDts += `type PageState = {\\n`;\n const nodeIdList: string[] = [];\n\n Object.keys(stateTypeMap).forEach((k) => {\n if (stateTypeMap[k].stateTypeDefined) {\n const body = getBodyDefined(`CNode${k.toUpperCase()}`, stateTypeMap[k].stateTypeDefined);\n pageStateDts += ` '${k}': ${body},\\n`;\n nodeIdList.push(`'${k}'`);\n }\n });\n\n pageStateDts += `};\\n\\n`;\n\n let dtsContent = DefaultTslibSource.replace('type PageState = any;', pageStateDts);\n dtsContent = dtsContent.replace('type NodeId = any;', `type NodeId = ${nodeIdList.join(' | ')};`);\n if (globalStateDts?.stateTypeDefined) {\n dtsContent = dtsContent.replace('type GlobalState = any;', globalStateDts.stateTypeDefined);\n dtsContent = dtsContent.replace(\n 'Partial<GlobalState>',\n getBodyDefined('GlobalState', globalStateDts.stateTypeDefined)\n );\n }\n\n // 处理当前 node 的 types\n const currentNodeDts = await quicktypeJSON('CurrentNodeState', JSON.stringify(currentNode.value.state || {}));\n const currentNodeDtsText = currentNodeDts.lines.join('\\n');\n dtsContent = dtsContent.replace('type CurrentNodeState = any;', currentNodeDtsText);\n dtsContent = dtsContent.replace('Partial<CurrentNodeState>', getBodyDefined('CurrentNodeState', currentNodeDtsText));\n\n // 处理 methods 调用\n return dtsContent;\n};\n\nconst getBodyDefined = (\n typeName: string,\n dtsStr: string,\n options?: {\n isPartial: true;\n }\n) => {\n const body = dtsStr.replace(`export interface ${typeName}`, '').trim();\n if (!options?.isPartial) {\n return body;\n }\n return `Partial<${body}>`;\n};\n","import React, { useRef, useState } from 'react';\nimport { Button, ConfigProvider, Modal } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { EditorType, MonacoEditor, MonacoEditorInstance } from '../../../../MonacoEditor';\nimport DefaultTslibSource from '../FunctionSetter//defaultDts?raw';\nimport { CNodePropsTypeEnum } from '@chamn/model';\nimport styles from './style.module.scss';\nimport { getPageTypeDefined } from '../FunctionSetter/helper';\nexport type ExpressionSetterProps = CSetterProps<{\n value: {\n type: string;\n value: string;\n };\n mode: 'modal' | 'inline';\n containerStyle?: React.CSSProperties;\n minimap?: boolean;\n lineNumber?: boolean;\n editorOptions?: EditorType['options'];\n}>;\n\nexport const ExpressionSetter: CSetter<ExpressionSetterProps> = ({\n onValueChange,\n initialValue,\n setterContext,\n editorOptions,\n\n mode = 'modal',\n ...props\n}) => {\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const [open, setOpen] = useState(false);\n const onInnerValueChange = () => {\n const newValStr = editorRef.current?.getValue() || '';\n onValueChange?.({\n type: CNodePropsTypeEnum.EXPRESSION,\n value: newValStr,\n });\n };\n\n let lineNumberOptions = {};\n if (props.lineNumber === false || mode === 'inline') {\n lineNumberOptions = {\n lineNumbers: 'off',\n lineDecorationsWidth: 0,\n lineNumbersMinChars: 0,\n glyphMargin: false,\n };\n }\n\n const editorView = (\n <MonacoEditor\n beforeMount={async (monaco) => {\n monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: true,\n noSyntaxValidation: false,\n });\n\n // compiler options\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES5,\n allowNonTsExtensions: true,\n });\n\n const realtimeDts = await getPageTypeDefined(setterContext.pluginCtx.pageModel, setterContext.nodeModel);\n\n const libUri = 'ts:filename/chameleon.default.variable.d.ts';\n monaco.languages.typescript.javascriptDefaults.addExtraLib(realtimeDts, libUri);\n // When resolving definitions and references, the editor will try to use created models.\n // Creating a model for the library allows \"peek definition/references\" commands to work with the library.\n const model = monaco.editor.getModel(monaco.Uri.parse(libUri));\n if (!model) {\n monaco.editor.createModel(DefaultTslibSource, 'typescript', monaco.Uri.parse(libUri));\n }\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n initialValue={props.value?.value ?? initialValue}\n language={'javascript'}\n options={{\n automaticLayout: true,\n tabSize: 2,\n minimap: { enabled: false },\n folding: false,\n hover: {\n // enabled: false, // ✅ 禁用 hoverWidget\n },\n ...lineNumberOptions,\n ...(editorOptions || {}),\n }}\n onChange={() => {\n if (mode === 'inline') {\n // TODO: 需要节流每 1 秒触发一次\n onInnerValueChange();\n }\n }}\n />\n );\n\n if (mode === 'inline') {\n return (\n <div\n className={styles.expressionCodeEditor}\n style={{\n border: '1px solid rgba(0,0,0, 0.2)',\n ...(props.containerStyle || {}),\n height: '100px',\n }}\n >\n {editorView}\n </div>\n );\n }\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n onClick={() => {\n setOpen(true);\n }}\n >\n {props.value?.value || 'Edit Expression'}\n </Button>\n <Modal\n destroyOnClose\n open={open}\n title=\"Expression Editor\"\n onCancel={() => setOpen(false)}\n width=\"calc(100vw - 100px)\"\n onOk={() => {\n onInnerValueChange();\n setOpen(false);\n }}\n style={{\n maxWidth: '800px',\n }}\n styles={{\n body: {\n height: '300px',\n },\n }}\n >\n <div style={{ height: '100%' }}>{open && editorView}</div>\n </Modal>\n </ConfigProvider>\n );\n};\n\nExpressionSetter.setterName = '表达式';\n","import React from 'react';\nimport { ConfigProvider, Switch, SwitchProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\ntype BooleanSetterProps = SwitchProps;\n\nexport const BooleanSetter: CSetter<BooleanSetterProps & { initialValue?: boolean }> = ({\n onValueChange,\n initialValue,\n setterContext,\n ...props\n}: CSetterProps<BooleanSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Switch\n {...props}\n checked={(props.value ?? initialValue) as boolean}\n onChange={(open, e) => {\n props.onChange?.(open, e);\n onValueChange?.(open);\n }}\n />\n </ConfigProvider>\n );\n};\n\nBooleanSetter.setterName = 'Bool 设置器';\n","import React from 'react';\nimport { ConfigProvider, Select, SelectProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\nexport const SelectSetter: CSetter<SelectProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<SelectProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Select\n showSearch\n style={{\n width: '100%',\n }}\n {...props}\n value={props.value ?? initialValue}\n onChange={(val, option) => {\n props.onChange?.(val, option);\n onValueChange?.(val);\n }}\n />\n </ConfigProvider>\n );\n};\n\nSelectSetter.setterName = '选择设置器';\n","import React, { useRef, useState } from 'react';\nimport { CSS, Transform } from '@dnd-kit/utilities';\nimport { Modal, ModalProps } from 'antd';\nimport { DndContext, PointerSensor, useDraggable, useSensor, useSensors } from '@dnd-kit/core';\nimport { getRandomStr } from '@chamn/model';\n\nexport type SortItemOrderProps = {} & ModalProps;\n\n/** 可拖拽移动的 Modal */\nexport const MoveableModal = (props: ModalProps) => {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 15,\n },\n })\n );\n\n const [modalTransform, setModalTransform] = useState<Transform>({\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n });\n\n return (\n <Modal\n {...props}\n styles={{\n mask: {\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n pointerEvents: 'none',\n },\n }}\n modalRender={(modal) => {\n return (\n <DndContext\n sensors={sensors}\n onDragEnd={({ delta }) => {\n const res = {\n ...modalTransform,\n ...delta,\n x: modalTransform.x + (delta?.x || 0),\n y: modalTransform.y + (delta?.y || 0),\n };\n setModalTransform(res);\n }}\n >\n <ModalDragView modal={modal} transform={modalTransform} setModalTransform={setModalTransform} />\n </DndContext>\n );\n }}\n ></Modal>\n );\n};\n\nconst ModalDragView = ({\n modal,\n transform,\n setModalTransform,\n}: {\n modal: React.ReactNode;\n transform: Transform;\n setModalTransform: any;\n}) => {\n const id = useRef(getRandomStr());\n const {\n setNodeRef,\n attributes,\n listeners,\n transform: tempTransform,\n } = useDraggable({\n id: id.current,\n });\n\n const finalTransform = {\n ...transform,\n ...tempTransform,\n x: transform.x + (tempTransform?.x || 0),\n y: transform.y + (tempTransform?.y || 0),\n };\n\n return (\n <div\n style={{\n pointerEvents: 'auto',\n transform: CSS.Transform.toString(finalTransform),\n }}\n >\n <div\n onDoubleClick={() => {\n setModalTransform((oldValue: any) => {\n return {\n ...oldValue,\n x: 0,\n y: 0,\n };\n });\n }}\n ref={setNodeRef}\n style={{\n cursor: 'move',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: '55px',\n zIndex: 1,\n }}\n {...attributes}\n {...listeners}\n />\n {modal}\n </div>\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Button, ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { EditorType, MonacoEditor, MonacoEditorInstance } from '../../../../MonacoEditor';\nimport { MoveableModal } from '@/component/MoveableModal';\nimport { sageJSONParse } from '@/utils';\n\nconst EditorConfig = {\n options: {\n automaticLayout: true,\n tabSize: 2,\n suggestOnTriggerCharacters: false,\n minimap: { enabled: false },\n },\n style: {\n height: '200px',\n border: '1px solid #d9d9d9',\n borderRadius: '4px',\n },\n};\n\nconst JsonEditor = ({ editor, value, initialValue, onChange, height, editorOptions }: any) => {\n const editorRef = useRef<MonacoEditorInstance>();\n const oldValueRef = useRef();\n oldValueRef.current = value;\n useEffect(() => {\n const oldVal = sageJSONParse(editorRef.current?.getValue() || '', {});\n if (JSON.stringify(value) === JSON.stringify(oldVal)) {\n return;\n }\n editorRef.current?.setValue(JSON.stringify(value, null, 2));\n }, [value]);\n return (\n <div style={{ height: height || EditorConfig.style.height }}>\n <MonacoEditor\n onDidMount={(editorInstance) => {\n editor.current = editorInstance;\n editorRef.current = editorInstance;\n }}\n onChange={onChange}\n initialValue={JSON.stringify(value ?? (initialValue || {}), null, 2)}\n language=\"json\"\n options={{\n ...EditorConfig.options,\n ...editorOptions,\n }}\n />\n </div>\n );\n};\nexport const JSONSetter: CSetter<any> = ({\n onValueChange,\n initialValue,\n mode = 'modal',\n editorOptions,\n setterContext,\n ...props\n}: CSetterProps<{\n mode: 'modal' | 'inline';\n containerStyle?: React.CSSProperties;\n minimap?: boolean;\n lineNumber?: 'on' | 'off';\n editorOptions?: EditorType['options'];\n}>) => {\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const [open, setOpen] = useState(false);\n\n const onInnerValueChange = () => {\n const newValStr = editorRef.current?.getValue() || '';\n try {\n const newVal = JSON.parse(newValStr);\n onValueChange?.(newVal);\n } catch (e) {\n console.warn(e);\n }\n };\n\n return (\n <ConfigProvider theme={{ token: { borderRadius: 4 } }}>\n {mode === 'inline' ? (\n <div style={EditorConfig.style}>\n <JsonEditor\n editor={editorRef}\n value={props.value}\n initialValue={initialValue}\n onChange={onInnerValueChange}\n editorOptions={editorOptions || {}}\n />\n </div>\n ) : (\n <>\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n onClick={() => setOpen(true)}\n >\n Edit\n </Button>\n <MoveableModal\n destroyOnClose\n open={open}\n title=\"JSON Editor\"\n width=\"800px\"\n onCancel={() => setOpen(false)}\n onOk={() => {\n onInnerValueChange();\n setOpen(false);\n }}\n >\n {open && (\n <JsonEditor\n editor={editorRef}\n value={props.value}\n initialValue={initialValue}\n height=\"500px\"\n editorOptions={editorOptions || {}}\n />\n )}\n </MoveableModal>\n </>\n )}\n </ConfigProvider>\n );\n};\n\nJSONSetter.setterName = 'JSON 设置器';\n","import React, { useRef, useState } from 'react';\nimport { Button, ConfigProvider, Modal } from 'antd';\nimport { CSetter } from '../type';\nimport { EditorType, MonacoEditor, MonacoEditorInstance } from '../../../../MonacoEditor';\nimport DefaultTslibSource from './defaultDts?raw';\nimport { CNodePropsTypeEnum } from '@chamn/model';\nimport { getPageTypeDefined } from './helper';\n\nexport const FunctionSetter: CSetter<{\n mode: 'modal' | 'inline';\n containerStyle?: React.CSSProperties;\n minimap?: boolean;\n lineNumber?: boolean;\n editorOptions?: EditorType['options'];\n}> = ({ onValueChange, initialValue, setterContext, editorOptions, ...props }) => {\n getPageTypeDefined(setterContext.pluginCtx.pageModel, setterContext.nodeModel);\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const [open, setOpen] = useState(false);\n const onInnerValueChange = () => {\n const newValStr = editorRef.current?.getValue() || '';\n onValueChange?.({\n type: CNodePropsTypeEnum.FUNCTION,\n value: newValStr,\n });\n };\n\n let lineNumberOptions = {};\n if (props.lineNumber === false) {\n lineNumberOptions = {\n lineNumbers: 'off',\n lineDecorationsWidth: 0,\n lineNumbersMinChars: 0,\n glyphMargin: false,\n };\n }\n\n const editorView = (\n <MonacoEditor\n beforeMount={async (monaco) => {\n monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: true,\n noSyntaxValidation: false,\n });\n\n // compiler options\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES5,\n allowNonTsExtensions: true,\n });\n\n const realtimeDts = await getPageTypeDefined(setterContext.pluginCtx.pageModel, setterContext.nodeModel);\n\n const libUri = 'ts:filename/chameleon.default.variable.d.ts';\n monaco.languages.typescript.javascriptDefaults.addExtraLib(realtimeDts, libUri);\n // When resolving definitions and references, the editor will try to use created models.\n // Creating a model for the library allows \"peek definition/references\" commands to work with the library.\n const model = monaco.editor.getModel(monaco.Uri.parse(libUri));\n if (!model) {\n monaco.editor.createModel(DefaultTslibSource, 'typescript', monaco.Uri.parse(libUri));\n }\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n initialValue={props.value?.value ?? (initialValue || 'function run() {\\n}')}\n language={'javascript'}\n options={{\n automaticLayout: true,\n tabSize: 2,\n\n minimap: {\n enabled: props.minimap ?? true,\n },\n ...lineNumberOptions,\n ...(editorOptions || {}),\n }}\n onChange={() => {\n if (props.mode === 'inline') {\n // TODO: 需要节流每 1 秒触发一次\n onInnerValueChange();\n }\n }}\n />\n );\n\n if (props.mode === 'inline') {\n return (\n <div\n style={{\n border: '1px solid rgba(0,0,0, 0.2)',\n ...(props.containerStyle || {}),\n }}\n >\n {editorView}\n </div>\n );\n }\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n onClick={() => {\n setOpen(true);\n }}\n >\n Edit Function\n </Button>\n <Modal\n centered\n destroyOnClose\n open={open}\n title=\"Function Editor\"\n onCancel={() => setOpen(false)}\n width=\"calc(100vw - 100px)\"\n onOk={() => {\n onInnerValueChange();\n setOpen(false);\n }}\n style={{\n maxWidth: '1300px',\n }}\n styles={{\n body: {\n minHeight: '500px',\n height: 'calc(100vh - 280px)',\n },\n }}\n >\n <div style={{ height: '100%' }}>{open && editorView}</div>\n </Modal>\n </ConfigProvider>\n );\n};\n\nFunctionSetter.setterName = '函数设置器';\n","import { ConfigProvider, Input } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { TextAreaProps } from 'antd/es/input';\nimport { useState, useRef, useEffect } from 'react';\n\nexport type TTextAreaSetterProps = TextAreaProps & {\n valueValidator?: (value: string) => boolean;\n};\n\nexport const TextAreaSetter: CSetter<TTextAreaSetterProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n valueValidator,\n ...props\n}: CSetterProps<TTextAreaSetterProps>) => {\n const [checkValueStatus, setCheckValueStatus] = useState<TextAreaProps['status']>('');\n const [internalValue, setInternalValue] = useState(props.value ?? initialValue ?? '');\n const lastExternalValueRef = useRef(props.value ?? initialValue);\n\n // 监听外部值变化,同步到内部状态(避免重复更新)\n useEffect(() => {\n const externalValue = props.value ?? initialValue;\n if (externalValue !== lastExternalValueRef.current) {\n lastExternalValueRef.current = externalValue;\n setInternalValue(externalValue ?? '');\n }\n }, [props.value, initialValue]);\n\n const validateValue = (value: string) => {\n if (valueValidator !== undefined) {\n const res = valueValidator(value);\n if (!res) {\n setCheckValueStatus('error');\n } else {\n setCheckValueStatus('');\n }\n }\n };\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Input.TextArea\n status={checkValueStatus}\n {...props}\n value={internalValue}\n onChange={(e) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n validateValue(newValue);\n }}\n onBlur={(e) => {\n // blur 时才触发 onChange 和更新值到外部\n const finalValue = e.target.value;\n lastExternalValueRef.current = finalValue;\n props.onChange?.(e as any);\n onValueChange?.(finalValue);\n props.onBlur?.(e);\n }}\n />\n </ConfigProvider>\n );\n};\n\nTextAreaSetter.setterName = '长文本设置器';\n","const CSSSourceInfo = {\n cssColors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n },\n cssKeyValue: {\n 'align-content': {\n values: [\n 'center',\n 'flex-end',\n 'flex-start',\n 'space-around',\n 'space-between',\n 'stretch',\n ],\n },\n 'align-items': {\n values: ['baseline', 'center', 'flex-end', 'flex-start', 'stretch'],\n },\n 'align-self': {\n values: [\n 'auto',\n 'normal',\n 'self-start',\n 'self-end',\n 'baseline',\n 'center',\n 'start',\n 'end',\n 'flex-end',\n 'flex-start',\n 'safe',\n 'stretch',\n 'unsafe',\n ],\n },\n all: { values: [] },\n animation: { values: [] },\n 'animation-delay': { values: [] },\n 'animation-direction': {\n values: ['alternate', 'alternate-reverse', 'normal', 'reverse'],\n },\n 'animation-duration': { values: [] },\n 'animation-fill-mode': {\n values: ['backwards', 'both', 'forwards', 'none'],\n },\n 'animation-iteration-count': { values: ['infinite'] },\n 'animation-name': { values: ['none'] },\n 'animation-play-state': { values: ['paused', 'running'] },\n 'animation-timing-function': {\n values: [\n 'cubic-bezier()',\n 'ease',\n 'ease-in',\n 'ease-in-out',\n 'ease-out',\n 'linear',\n 'step-end',\n 'step-start',\n 'steps()',\n ],\n },\n 'backface-visibility': { values: ['hidden', 'visible'] },\n background: { values: [], type: 'color' },\n 'background-attachment': { values: ['fixed', 'local', 'scroll'] },\n 'background-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'background-clip': { values: ['border-box', 'content-box', 'padding-box'] },\n 'background-color': { values: [], type: 'color' },\n 'background-image': {\n values: [\n 'image()',\n 'linear-gradient()',\n 'radial-gradient()',\n 'repeating-linear-gradient()',\n 'repeating-radial-gradient()',\n 'url()',\n ],\n },\n 'background-origin': {\n values: ['border-box', 'content-box', 'padding-box'],\n },\n 'background-position': {\n values: ['left', 'center', 'right', 'bottom', 'top'],\n },\n 'background-repeat': {\n values: ['no-repeat', 'repeat', 'repeat-x', 'repeat-y', 'round', 'space'],\n },\n 'background-size': { values: ['auto', 'contain', 'cover'] },\n border: { values: [] },\n 'border-collapse': { values: ['collapse', 'separate'] },\n 'border-color': { values: [], type: 'color' },\n 'border-spacing': { values: [] },\n 'border-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-bottom': { values: [] },\n 'border-bottom-color': { values: [], type: 'color' },\n 'border-bottom-left-radius': { values: [] },\n 'border-bottom-right-radius': { values: [] },\n 'border-bottom-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-bottom-width': { values: ['medium', 'thin', 'thick'] },\n 'border-image': { values: ['url()'] },\n 'border-image-outset': { values: [] },\n 'border-image-slice': { values: [] },\n 'border-image-source': { values: [] },\n 'border-image-repeat': { values: ['repeat', 'round', 'space', 'stretch'] },\n 'border-image-width': { values: ['auto'] },\n 'border-left': { values: [] },\n 'border-left-color': { values: [], type: 'color' },\n 'border-left-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-left-width': { values: ['medium', 'thin', 'thick'] },\n 'border-radius': { values: [] },\n 'border-right': { values: [] },\n 'border-right-color': { values: [], type: 'color' },\n 'border-right-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-right-width': { values: ['medium', 'thin', 'thick'] },\n 'border-top': { values: [] },\n 'border-top-color': { values: [], type: 'color' },\n 'border-top-left-radius': { values: [] },\n 'border-top-right-radius': { values: [] },\n 'border-top-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'border-top-width': { values: ['medium', 'thin', 'thick'] },\n 'border-width': { values: ['medium', 'thin', 'thick'] },\n 'box-decoration-break': { values: ['clone', 'slice'] },\n 'box-shadow': { values: ['none'] },\n 'box-sizing': { values: ['border-box', 'content-box'] },\n bottom: { values: ['auto'] },\n 'break-after': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'break-before': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'caption-side': { values: ['bottom', 'top'] },\n 'caret-color': { values: ['auto'], type: 'color' },\n clear: { values: ['both', 'left', 'none', 'right'] },\n clip: { values: ['auto'] },\n color: { values: [], type: 'color' },\n columns: { values: [] },\n 'column-count': { values: [] },\n 'column-fill': { values: ['auto', 'balance'] },\n 'column-gap': { values: ['normal'] },\n 'column-rule': { values: [] },\n 'column-rule-color': { values: [], type: 'color' },\n 'column-rule-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'column-rule-width': { values: ['medium', 'thin', 'thick'] },\n 'column-span': { values: ['all', 'none'] },\n 'column-width': { values: ['auto'] },\n content: {\n values: [\n 'attr()',\n 'close-quote',\n 'no-close-quote',\n 'no-open-quote',\n 'normal',\n 'none',\n 'open-quote',\n ],\n },\n 'counter-increment': { values: ['none'] },\n 'counter-reset': { values: ['none'] },\n cursor: {\n values: [\n 'alias',\n 'all-scroll',\n 'auto',\n 'cell',\n 'col-resize',\n 'context-menu',\n 'copy',\n 'crosshair',\n 'default',\n 'e-resize',\n 'ew-resize',\n 'grab',\n 'grabbing',\n 'help',\n 'move',\n 'n-resize',\n 'ne-resize',\n 'nesw-resize',\n 'no-drop',\n 'none',\n 'not-allowed',\n 'ns-resize',\n 'nw-resize',\n 'nwse-resize',\n 'pointer',\n 'progress',\n 'row-resize',\n 's-resize',\n 'se-resize',\n 'sw-resize',\n 'text',\n 'vertical-text',\n 'w-resize',\n 'wait',\n 'zoom-in',\n 'zoom-out',\n ],\n },\n direction: { values: ['ltr', 'rtl'] },\n display: {\n values: [\n 'block',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inline',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'inline-table',\n 'list-item',\n 'none',\n 'run-in',\n 'subgrid',\n 'table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row',\n 'table-row-group',\n ],\n },\n 'empty-cells': { values: ['hide', 'show'] },\n fill: { values: [] },\n filter: {\n values: [\n 'blur()',\n 'brightness()',\n 'contrast()',\n 'custom()',\n 'drop-shadow()',\n 'grayscale()',\n 'hue-rotate()',\n 'invert()',\n 'none',\n 'opacity()',\n 'sepia()',\n 'saturate()',\n 'url()',\n ],\n },\n flex: { values: ['auto', 'none'] },\n 'flex-basis': { values: ['auto'] },\n 'flex-direction': {\n values: ['column', 'column-reverse', 'row', 'row-reverse'],\n },\n 'flex-flow': {\n values: [\n 'column',\n 'column-reverse',\n 'nowrap',\n 'row',\n 'row-reverse',\n 'wrap',\n 'wrap-reverse',\n ],\n },\n 'flex-grow': { values: [] },\n 'flex-shrink': { values: [] },\n 'flex-wrap': { values: ['nowrap', 'wrap', 'wrap-reverse'] },\n float: { values: ['left', 'right', 'none', 'inline-start', 'inline-end'] },\n 'flow-into': { values: ['none'], type: 'named-flow' },\n 'flow-from': { values: ['none'], type: 'named-flow' },\n font: { values: [] },\n 'font-display': {\n values: ['auto', 'block', 'swap', 'fallback', 'optional'],\n },\n 'font-family': {\n values: [\n 'auto',\n 'cursive',\n 'fantasy',\n 'monospace',\n 'sans-serif',\n 'serif',\n ],\n },\n 'font-feature-settings': { values: ['normal'] },\n 'font-kerning': { values: ['auto', 'none', 'normal'] },\n 'font-language-override': { values: ['normal'] },\n 'font-size': {\n values: [\n 'xx-small',\n 'x-small',\n 'small',\n 'medium',\n 'large',\n 'x-large',\n 'xx-large',\n 'xxx-large',\n 'larger',\n 'smaller',\n ],\n },\n 'font-size-adjust': { values: ['auto', 'none'] },\n 'font-stretch': {\n values: [\n 'condensed',\n 'expanded',\n 'extra-condensed',\n 'extra-expanded',\n 'normal',\n 'semi-condensed',\n 'semi-expanded',\n 'ultra-condensed',\n 'ultra-expanded',\n ],\n },\n 'font-style': { values: ['italic', 'normal', 'oblique'] },\n 'font-synthesis': { values: ['none', 'style', 'weight'] },\n 'font-variant': { values: ['normal', 'small-caps'] },\n 'font-variant-alternates': { values: ['normal'] },\n 'font-variant-caps': {\n values: [\n 'normal',\n 'small-caps',\n 'all-small-caps',\n 'petite-caps',\n 'all-petite-caps',\n 'unicase',\n 'titling-caps',\n ],\n },\n 'font-variant-east-asian': { values: ['normal'] },\n 'font-variant-ligatures': { values: ['normal', 'none'] },\n 'font-variant-numeric': { values: ['normal'] },\n 'font-variant-position': { values: ['normal', 'sub', 'super'] },\n 'font-weight': {\n values: [\n 'bold',\n 'bolder',\n 'lighter',\n 'normal',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n },\n gap: { values: ['revert-layer'] },\n grid: { values: [] },\n 'grid-area': { values: [] },\n 'grid-auto-columns': { values: [] },\n 'grid-auto-flow': { values: ['row', 'column', 'dense'] },\n 'grid-auto-rows': { values: [] },\n 'grid-column': { values: ['auto'] },\n 'grid-column-end': { values: [] },\n 'grid-column-gap': { values: [] },\n 'grid-column-start': { values: [] },\n 'grid-gap': { values: [] },\n 'grid-row': { values: ['auto'] },\n 'grid-row-end': { values: [] },\n 'grid-row-start': { values: [] },\n 'grid-row-gap': { values: [] },\n 'grid-template': { values: ['none'] },\n 'grid-template-areas': { values: [] },\n 'grid-template-columns': { values: ['auto'] },\n 'grid-template-rows': { values: ['auto'] },\n 'hanging-punctuation': {\n values: ['allow-end', 'first', 'force-end', 'last', 'none'],\n },\n height: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n hyphens: { values: ['auto', 'manual', 'none'] },\n 'image-orientation': { values: [] },\n 'image-resolution': { values: ['from-image', 'snap'] },\n isolation: { values: ['auto', 'isolate'] },\n 'justify-content': {\n values: [\n 'center',\n 'flex-end',\n 'flex-start',\n 'space-around',\n 'space-between',\n ],\n },\n 'justify-items': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n 'legacy',\n ],\n },\n 'justify-self': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n ],\n },\n left: { values: ['auto'] },\n 'letter-spacing': { values: ['normal'] },\n 'line-height': { values: ['normal'] },\n 'list-style': {\n values: [\n 'none',\n 'url()',\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'inside',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'outside',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n 'list-style-image': { values: ['none', 'url()'] },\n 'list-style-position': { values: ['inside', 'outside'] },\n 'list-style-type': {\n values: [\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'none',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n margin: { values: ['auto'] },\n 'margin-bottom': { values: ['auto'] },\n 'margin-left': { values: ['auto'] },\n 'margin-right': { values: ['auto'] },\n 'margin-top': { values: ['auto'] },\n 'max-height': { values: ['none'] },\n 'max-width': { values: ['none'] },\n 'min-height': { values: [] },\n 'min-width': { values: [] },\n 'mix-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'object-fit': {\n values: ['contain', 'cover', 'fill', 'none', 'scale-down'],\n },\n 'object-position': { values: ['left', 'center', 'right', 'bottom', 'top'] },\n opacity: { values: [] },\n order: { values: [] },\n orphans: { values: [] },\n outline: { values: [] },\n 'outline-color': { values: ['invert'], type: 'color' },\n 'outline-offset': { values: [] },\n 'outline-style': {\n values: [\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid',\n ],\n },\n 'outline-width': { values: ['medium', 'thin', 'thick'] },\n overflow: { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-x': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-y': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-wrap': { values: ['normal', 'anywhere', 'break-word'] },\n padding: { values: [] },\n 'padding-bottom': { values: [] },\n 'padding-left': { values: [] },\n 'padding-right': { values: [] },\n 'padding-top': { values: [] },\n 'page-break-after': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-before': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-inside': { values: ['auto', 'avoid'] },\n perspective: { values: ['none'] },\n 'perspective-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'pointer-events': {\n values: [\n 'all',\n 'auto',\n 'fill',\n 'none',\n 'painted',\n 'stroke',\n 'visible',\n 'visibleFill',\n 'visiblePainted',\n 'visibleStroke',\n ],\n },\n position: { values: ['absolute', 'fixed', 'relative', 'static', 'sticky'] },\n quotes: { values: ['none'] },\n 'region-break-after': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'region-break-before': {\n values: [\n 'always',\n 'auto',\n 'avoid',\n 'avoid-column',\n 'avoid-page',\n 'avoid-region',\n 'column',\n 'left',\n 'page',\n 'region',\n 'right',\n ],\n },\n 'region-break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'region-fragment': { values: ['auto', 'break'] },\n resize: { values: ['both', 'horizontal', 'none', 'vertical'] },\n right: { values: ['auto'] },\n 'scroll-behavior': { values: ['auto', 'smooth'] },\n 'scroll-snap-type': {\n values: [\n 'none',\n 'x',\n 'y',\n 'block',\n 'inline',\n 'both',\n 'mandatory',\n 'proximity',\n ],\n },\n src: { values: ['url()'] },\n 'shape-image-threshold': { values: [] },\n 'shape-inside': {\n values: [\n 'auto',\n 'circle()',\n 'ellipse()',\n 'outside-shape',\n 'polygon()',\n 'rectangle()',\n ],\n },\n 'shape-margin': { values: [] },\n 'shape-outside': {\n values: [\n 'none',\n 'circle()',\n 'ellipse()',\n 'polygon()',\n 'inset()',\n 'margin-box',\n 'border-box',\n 'padding-box',\n 'content-box',\n 'url()',\n 'image()',\n 'linear-gradient()',\n 'radial-gradient()',\n 'repeating-linear-gradient()',\n 'repeating-radial-gradient()',\n ],\n },\n 'tab-size': { values: [] },\n 'table-layout': { values: ['auto', 'fixed'] },\n 'text-align': {\n values: [\n 'start',\n 'end',\n 'center',\n 'left',\n 'justify',\n 'right',\n 'match-parent',\n 'justify-all',\n ],\n },\n 'text-align-last': { values: ['center', 'left', 'justify', 'right'] },\n 'text-decoration': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-color': { values: [], type: 'color' },\n 'text-decoration-line': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-skip': {\n values: ['edges', 'ink', 'none', 'objects', 'spaces'],\n },\n 'text-decoration-style': {\n values: ['dashed', 'dotted', 'double', 'solid', 'wavy'],\n },\n 'text-emphasis': { values: [] },\n 'text-emphasis-color': { values: [], type: 'color' },\n 'text-emphasis-position': { values: ['above', 'below', 'left', 'right'] },\n 'text-emphasis-style': {\n values: [\n 'circle',\n 'dot',\n 'double-circle',\n 'filled',\n 'none',\n 'open',\n 'sesame',\n 'triangle',\n ],\n },\n 'text-indent': { values: [] },\n 'text-justify': {\n values: ['auto', 'none', 'inter-word', 'inter-character'],\n },\n 'text-overflow': { values: ['clip', 'ellipsis'] },\n 'text-shadow': { values: [] },\n 'text-rendering': {\n values: [\n 'auto',\n 'geometricPrecision',\n 'optimizeLegibility',\n 'optimizeSpeed',\n ],\n },\n 'text-transform': {\n values: ['capitalize', 'full-width', 'lowercase', 'none', 'uppercase'],\n },\n 'text-underline-position': {\n values: ['alphabetic', 'auto', 'below', 'left', 'right'],\n },\n top: { values: ['auto'] },\n transform: {\n values: [\n 'matrix()',\n 'matrix3d()',\n 'none',\n 'perspective()',\n 'rotate()',\n 'rotate3d()',\n 'rotateX()',\n 'rotateY()',\n 'rotateZ()',\n 'scale()',\n 'scale3d()',\n 'scaleX()',\n 'scaleY()',\n 'scaleZ()',\n 'skewX()',\n 'skewY()',\n 'translate()',\n 'translate3d()',\n 'translateX()',\n 'translateY()',\n 'translateZ()',\n ],\n },\n 'transform-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'transform-style': { values: ['flat', 'preserve-3d'] },\n transition: { values: [] },\n 'transition-delay': { values: [] },\n 'transition-duration': { values: [] },\n 'transition-property': { values: ['all', 'none'] },\n 'transition-timing-function': {\n values: [\n 'cubic-bezier()',\n 'ease',\n 'ease-in',\n 'ease-in-out',\n 'ease-out',\n 'linear',\n 'step-end',\n 'step-start',\n 'steps()',\n ],\n },\n 'unicode-bidi': { values: ['bidi-override', 'embed', 'normal'] },\n 'unicode-range': { values: [] },\n 'user-select': { values: ['all', 'auto', 'contain', 'none', 'text'] },\n 'vertical-align': {\n values: [\n 'baseline',\n 'bottom',\n 'middle',\n 'sub',\n 'super',\n 'text-bottom',\n 'text-top',\n 'top',\n ],\n },\n visibility: { values: ['collapse', 'hidden', 'visible'] },\n 'white-space': {\n values: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap'],\n },\n widows: { values: [] },\n width: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n 'will-change': {\n values: ['auto', 'contents', 'opacity', 'scroll-position'],\n },\n 'word-break': { values: ['normal', 'break-all', 'keep-all'] },\n 'word-spacing': { values: ['normal'] },\n 'z-index': { values: ['auto'] },\n },\n};\n\nexport const CSSProperties = CSSSourceInfo.cssKeyValue;\n\nexport const CSSColors = CSSSourceInfo.cssColors;\n\nexport type CSSPropertiesKey = keyof typeof CSSProperties;\n\nexport const CSSPropertyList = Object.keys(CSSSourceInfo.cssKeyValue);\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { AutoComplete, ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { BaseSelectRef } from 'rc-select';\nimport clsx from 'clsx';\nimport styles from './style.module.scss';\nimport { CSSProperties, CSSPropertiesKey } from '../../../../CSSPropertiesEditor/cssProperties';\n\ntype CSSValueSetterProps = {\n propertyKey: string;\n};\n\nexport const CSSValueSetter: CSetter<CSSValueSetterProps> = ({\n onValueChange,\n propertyKey = '',\n value,\n initialValue,\n}: CSetterProps<CSSValueSetterProps>) => {\n // const { keyPaths, onSetterChange } = setterContext;\n const propertyValueRef = useRef<BaseSelectRef | null>(null);\n const [innerValue, setInnerVal] = useState<any>(value ?? (initialValue || ''));\n const [focusState, setFocusState] = useState(false);\n const updateOuterValue = () => {\n onValueChange?.(innerValue);\n };\n useEffect(() => {\n setInnerVal(value);\n }, [value]);\n\n const optionsValue = useMemo(() => {\n const list = CSSProperties[propertyKey as unknown as CSSPropertiesKey]?.values || [];\n return list.map((el) => {\n return {\n value: el,\n };\n });\n }, [propertyKey]);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <AutoComplete\n ref={propertyValueRef}\n popupMatchSelectWidth={200}\n variant={'borderless'}\n value={innerValue}\n onChange={(val) => {\n setInnerVal(val);\n updateOuterValue();\n }}\n style={{\n flex: 1,\n }}\n onFocus={() => {\n setFocusState(true);\n }}\n onBlur={() => {\n setFocusState(false);\n }}\n className={clsx([styles.inputAuto, focusState && styles.active])}\n placeholder=\"value\"\n options={optionsValue}\n ></AutoComplete>\n </ConfigProvider>\n );\n};\n\nCSSValueSetter.setterName = 'CSS值设置器';\n","import { ConfigProvider, Input, Popover } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { SketchPicker } from 'react-color';\n\ntype ColorSetterProps = {\n initialValue: string;\n};\n\nexport const ColorSetter: CSetter = ({ onValueChange, initialValue, value }: CSetterProps<ColorSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Popover\n trigger=\"click\"\n content={\n <SketchPicker\n color={value || initialValue}\n onChange={(newColor) => {\n const newColorStr = `rgba(${newColor.rgb.r},${newColor.rgb.g},${newColor.rgb.b}, ${newColor.rgb.a || 1})`;\n onValueChange?.(newColorStr);\n }}\n />\n }\n placement={'bottomLeft'}\n styles={{\n body: {\n padding: 0,\n },\n }}\n arrow={{\n pointAtCenter: false,\n }}\n >\n <Input\n placeholder=\"color\"\n value={value}\n onChange={(e) => {\n onValueChange?.(e.target.value);\n }}\n prefix={\n <div\n style={{\n backgroundColor: value || 'transparent',\n width: '10px',\n height: '10px',\n borderRadius: '4px',\n overflow: 'hidden',\n }}\n ></div>\n }\n />\n </Popover>\n </ConfigProvider>\n );\n};\n\nColorSetter.setterName = '颜色设置器';\n","export const DEFAULT_PRESET_COLORS = [\n {\n label: 'Recommended',\n colors: [\n '#000000',\n '#000000E0',\n '#000000A6',\n '#00000073',\n '#00000040',\n '#00000026',\n '#0000001A',\n '#00000012',\n '#0000000A',\n '#00000005',\n '#F5222D',\n '#FA8C16',\n '#FADB14',\n '#8BBB11',\n '#52C41A',\n '#13A8A8',\n '#1677FF',\n '#2F54EB',\n '#722ED1',\n '#EB2F96',\n '#F5222D4D',\n '#FA8C164D',\n '#FADB144D',\n '#8BBB114D',\n '#52C41A4D',\n '#13A8A84D',\n '#1677FF4D',\n '#2F54EB4D',\n '#722ED14D',\n '#EB2F964D',\n ],\n },\n];\n","import { ColorPicker, ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\n\ntype ColorSetterProps = {\n initialValue: string;\n};\n\nexport const AntDColorSetter: CSetter = ({\n onValueChange,\n initialValue,\n value,\n setterContext,\n ...restProps\n}: CSetterProps<ColorSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <ColorPicker\n showText={true}\n allowClear\n value={value ?? initialValue}\n onChangeComplete={(color) => {\n onValueChange?.(color.toRgbString());\n }}\n presets={DEFAULT_PRESET_COLORS}\n {...restProps}\n />\n </ConfigProvider>\n );\n};\n\nAntDColorSetter.setterName = '颜色设置器';\n","import { Slider, SliderSingleProps } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\nexport const SliderSetter: CSetter<SliderSingleProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<SliderSingleProps & { initialValue?: string }>) => {\n return (\n <Slider\n {...props}\n value={props.value ?? initialValue}\n onChange={(newValue) => {\n props.onChange?.(newValue);\n onValueChange?.(newValue);\n }}\n />\n );\n};\n\nSliderSetter.setterName = '滑动条设置器';\n","import { ConfigProvider, Radio } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\n\ntype ColorSetterProps = {\n initialValue: string;\n};\n\nexport const RadioGroupSetter: CSetter = ({\n onValueChange,\n value,\n initialValue,\n setterContext,\n ...restProps\n}: CSetterProps<ColorSetterProps>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <Radio.Group\n onChange={(e) => {\n onValueChange?.(e.target.value);\n }}\n defaultValue={initialValue}\n value={value}\n {...restProps}\n />\n </ConfigProvider>\n );\n};\n\nRadioGroupSetter.setterName = '单选设置器';\n","import { Input, InputProps } from 'antd';\nimport styles from './style.module.scss';\nimport { useMemo } from 'react';\n\nexport type InputNumberPlusProps = Omit<InputProps, 'onChange'> & {\n min?: number;\n max?: number;\n value?: number;\n onChange?: (newVal: number | undefined) => void;\n};\n\nexport const InputNumberPlus = ({ min, max, value, onChange, addonAfter, ...restProps }: InputNumberPlusProps) => {\n const updateInnerVal = (newVal: number | undefined) => {\n onChange?.(newVal);\n };\n\n const processUpdateVal = (num: number) => {\n let resVal = num;\n if (min !== undefined) {\n resVal = Math.max(min, resVal);\n }\n if (max !== undefined) {\n resVal = Math.min(max, resVal);\n }\n updateInnerVal(resVal);\n };\n // 是否是合法的值\n const isLegal = useMemo(() => {\n if (value === undefined) {\n return true;\n }\n let tempVal = value;\n if (min !== undefined) {\n tempVal = Math.max(min, tempVal);\n }\n if (max !== undefined) {\n tempVal = Math.min(max, tempVal);\n }\n\n if (tempVal !== value) {\n return false;\n }\n return true;\n }, [max, min, value]);\n\n return (\n <div className={styles.inputNumberPlus}>\n <div\n style={{\n display: 'flex',\n position: 'relative',\n }}\n >\n <Input\n allowClear\n {...restProps}\n status={isLegal ? undefined : 'error'}\n value={value}\n onClear={() => {\n updateInnerVal(undefined);\n }}\n onChange={(e) => {\n const newNum = parseInt(e.target.value || '0', 10);\n processUpdateVal(newNum);\n }}\n addonAfter={addonAfter}\n />\n </div>\n </div>\n );\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { ConfigProvider, InputProps, Select } from 'antd';\nimport { MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport styles from './style.module.scss';\nimport { addEventListenerReturnCancel } from '@chamn/layout';\nimport { InputNumberPlus } from '../InputNumberPlus';\nimport clsx from 'clsx';\n\ntype CumulativeInfoType = {\n x: number;\n y: number;\n cumulativeX: number;\n cumulativeY: number;\n};\n\nconst UNIT_LIST = [\n { value: 'px', label: 'px' },\n { value: '%', label: '%' },\n { value: 'vw', label: 'vw' },\n { value: 'vh', label: 'vh' },\n { value: 'rem', label: 'rem' },\n];\n\nexport const useDragSize = function (options?: {\n onStart?: (data: CumulativeInfoType) => void;\n onChange?: (data: CumulativeInfoType) => void;\n onEnd?: (data: CumulativeInfoType) => void;\n limitCumulative?: {\n x?: [number | undefined, number | undefined];\n y?: [number | undefined, number | undefined];\n };\n}) {\n const cumulativeInfo = useRef<{\n status: 'running' | '';\n start: CumulativeInfoType;\n processing: CumulativeInfoType;\n mouseDown: boolean;\n }>({\n status: '',\n start: {\n x: 0,\n y: 0,\n cumulativeX: 0,\n cumulativeY: 0,\n },\n processing: {\n x: 0,\n y: 0,\n cumulativeX: 0,\n cumulativeY: 0,\n },\n mouseDown: false,\n });\n\n const processEnd: MouseEventHandler<any> = useCallback(() => {\n cumulativeInfo.current.mouseDown = false;\n const { processing } = cumulativeInfo.current;\n\n options?.onEnd?.({ ...processing });\n cumulativeInfo.current.status = '';\n cumulativeInfo.current.processing.cumulativeX = 0;\n cumulativeInfo.current.processing.cumulativeY = 0;\n }, [options]);\n\n const onMouseDown: MouseEventHandler<any> = useCallback(() => {\n cumulativeInfo.current.mouseDown = true;\n }, []);\n\n const processMove: MouseEventHandler<any> = useCallback(\n (e) => {\n if (!cumulativeInfo.current.mouseDown) {\n return;\n }\n const { start, processing } = cumulativeInfo.current;\n // 判断是否是拖拽\n const tempCumulativeX = e.clientX - start.x;\n const tempCumulativeY = e.clientY - start.y;\n\n const shakeDIstance = 10;\n if (\n cumulativeInfo.current.status !== 'running' &&\n (Math.abs(tempCumulativeX) > shakeDIstance || Math.abs(tempCumulativeY) > shakeDIstance)\n ) {\n cumulativeInfo.current.status = 'running';\n const startInfo = cumulativeInfo.current.start;\n startInfo.x = e.clientX;\n startInfo.y = e.clientY;\n options?.onStart?.({ ...startInfo });\n }\n\n if (cumulativeInfo.current.status !== 'running') {\n return;\n }\n processing.x = e.clientX;\n processing.y = e.clientY;\n\n processing.cumulativeX = e.clientX - start.x;\n processing.cumulativeY = e.clientY - start.y;\n\n // 超出最大累积便宜,直接结束拖拽\n const [minX, maxX] = options?.limitCumulative?.x || [];\n if (minX !== undefined && processing.cumulativeX < minX) {\n processEnd(e);\n return;\n }\n\n if (maxX !== undefined && processing.cumulativeX > maxX) {\n processEnd(e);\n return;\n }\n\n options?.onChange?.({ ...processing });\n },\n [options, processEnd]\n );\n\n useEffect(() => {\n const globalMoveDispose = addEventListenerReturnCancel(document.body, 'mousemove', (e) => {\n processMove(e as any);\n });\n\n const globalUpDispose = addEventListenerReturnCancel(document.body, 'mouseup', (e) => {\n processEnd(e as any);\n });\n const globalLeaveDispose = addEventListenerReturnCancel(document.body, 'mouseleave', (e) => {\n processEnd(e as any);\n });\n\n return () => {\n globalMoveDispose();\n globalUpDispose();\n globalLeaveDispose();\n };\n }, [processEnd, processMove]);\n\n return {\n onMouseDown,\n };\n};\n\ntype MinMaxType = {\n px?: number;\n vw?: number;\n vh?: number;\n rem?: number;\n};\n\nexport type CSSSizeInputProps = {\n value?: string;\n onValueChange?: (newVal: string | undefined) => void;\n min?: MinMaxType | number;\n max?: MinMaxType | number;\n size?: InputProps['size'];\n style?: React.CSSProperties;\n\n className?: string;\n unit?: boolean;\n /** 累计的偏移量,映射为具体的值,默认 1:1 */\n cumulativeTransform?: (params: CumulativeInfoType) => CumulativeInfoType;\n unitList?: (keyof MinMaxType)[];\n};\n\nexport const CSSSizeInput = (props: CSSSizeInputProps) => {\n const outValue = String(props.value);\n const [dragSizing, setDragSizing] = useState({\n value: 0,\n status: '',\n });\n\n const originalValObj = useMemo(() => {\n const res: {\n value: number | undefined;\n unit: keyof MinMaxType;\n } = {\n value: undefined,\n unit: 'px' as any,\n };\n\n if (props.value === undefined) {\n return res;\n }\n const tempVal = parseFloat(props.value || '');\n if (!isNaN(tempVal)) {\n res.value = tempVal;\n }\n\n let unit: keyof MinMaxType = 'px';\n if (res.value !== undefined) {\n unit = outValue.replace(String(res.value), '').trim() as keyof MinMaxType;\n }\n if (['px', '%', 'rem', 'vw', 'vx'].includes(unit)) {\n res.unit = unit || 'px';\n }\n return res;\n }, [outValue, props.value]);\n\n const currentUnitList = useMemo<typeof UNIT_LIST>(() => {\n if (!props.unitList) {\n return UNIT_LIST;\n }\n return props.unitList\n .map((el) => {\n return UNIT_LIST.find((it) => it.value === el);\n })\n .filter(Boolean) as typeof UNIT_LIST;\n }, [props.unitList]);\n\n const currentMinMix = useMemo(() => {\n return {\n min: typeof props.min === 'number' ? props.min : props.min?.[originalValObj.unit],\n max: typeof props.max === 'number' ? props.max : props.max?.[originalValObj.unit],\n };\n }, [props, originalValObj]);\n\n const valObj = useMemo(() => {\n const res = { ...originalValObj };\n if (dragSizing.status === 'dragging') {\n res.value = dragSizing.value;\n }\n\n return res;\n }, [originalValObj, dragSizing]);\n\n const updateValue = useCallback(\n (val: { value: number | undefined; unit: string }) => {\n let valStr: string | undefined = `${val.value}${val.unit}`;\n if (val.value === undefined) {\n valStr = undefined;\n }\n props.onValueChange?.(valStr);\n },\n [props]\n );\n\n const processNewVal = useCallback(\n (cumulativeData: CumulativeInfoType, value: number | undefined) => {\n let data = { ...cumulativeData };\n if (props.cumulativeTransform) {\n data = props.cumulativeTransform(data);\n }\n\n let num = value ?? 0;\n if (isNaN(num)) {\n num = 0;\n }\n let newVal = num + data.cumulativeX;\n\n if (currentMinMix.min !== undefined) {\n newVal = Math.max(newVal, currentMinMix.min);\n }\n if (currentMinMix.max !== undefined) {\n newVal = Math.min(newVal, currentMinMix.max);\n }\n return newVal;\n },\n [currentMinMix.max, currentMinMix.min, props]\n );\n\n const onDragStart = useCallback(\n (data: CumulativeInfoType) => {\n setDragSizing({\n status: 'dragging',\n value: processNewVal(data, originalValObj.value),\n });\n },\n [originalValObj.value, processNewVal]\n );\n\n const onDragMoveChange = useCallback(\n (data: CumulativeInfoType) => {\n const nV = processNewVal(data, originalValObj.value);\n setDragSizing({\n status: 'dragging',\n value: nV,\n });\n },\n [originalValObj.value, processNewVal]\n );\n\n const onDragEnd = useCallback(\n (data: CumulativeInfoType) => {\n const newVal = processNewVal(data, originalValObj.value);\n if (dragSizing.status !== 'dragging') {\n return;\n }\n\n updateValue({\n value: newVal,\n unit: originalValObj.unit,\n });\n setDragSizing({\n status: '',\n value: 0,\n });\n },\n [dragSizing.status, originalValObj, processNewVal, updateValue]\n );\n const handleRef = useRef({\n onStart: onDragStart,\n onChange: onDragMoveChange,\n onEnd: onDragEnd,\n });\n handleRef.current = {\n onStart: onDragStart,\n onChange: onDragMoveChange,\n onEnd: onDragEnd,\n };\n\n const dragSizeHandle = useDragSize({\n onStart: (data) => handleRef.current.onStart(data),\n onChange: (data) => handleRef.current.onChange(data),\n onEnd: (data) => handleRef.current.onEnd(data),\n limitCumulative: {\n x: [-60, undefined],\n },\n });\n const unitSelect = (\n <span className={styles.unitSelect}>\n <Select\n size={props.size}\n defaultValue=\"\"\n value={valObj.unit}\n onChange={(val) => {\n updateValue({\n value: valObj.value,\n unit: val,\n });\n }}\n style={{\n width: '40px',\n }}\n popupMatchSelectWidth={false}\n options={currentUnitList}\n />\n </span>\n );\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 2,\n },\n }}\n >\n <div className={clsx([styles.cssSizeInput, props?.className])} {...dragSizeHandle} style={props.style}>\n <InputNumberPlus\n size={props.size}\n value={valObj.value}\n addonAfter={props.unit === false ? '' : unitSelect}\n min={currentMinMix.min}\n max={currentMinMix.max}\n onChange={(val) => {\n updateValue({\n value: val,\n unit: valObj.unit,\n });\n }}\n />\n </div>\n </ConfigProvider>\n );\n};\n","import { ConfigProvider } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { CSSSizeInput, CSSSizeInputProps } from '@/component/CSSSizeInput';\n\nexport const CSSSizeSetter: CSetter<CSSSizeInputProps> = ({\n onValueChange,\n setterContext,\n initialValue,\n ...props\n}: CSetterProps<CSSSizeInputProps & { initialValue?: string }>) => {\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <CSSSizeInput\n min={0}\n {...props}\n value={props.value ?? initialValue}\n onValueChange={(newVal) => {\n onValueChange?.(newVal);\n }}\n />\n </ConfigProvider>\n );\n};\n\nCSSSizeSetter.setterName = 'CSS size 设置器';\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col, Radio, Button } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react';\nimport { InputCommonRef } from '../type';\nimport { pick } from 'lodash-es';\nimport {\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n AlignHorizontalSpaceAround,\n AlignHorizontalSpaceBetween,\n AlignVerticalJustifyEnd,\n AlignVerticalJustifyStart,\n AlignVerticalSpaceAround,\n AlignVerticalSpaceBetween,\n ArrowDownFromLine,\n ArrowLeftFromLine,\n ArrowRightFromLine,\n ArrowUpFromLine,\n MoveHorizontal,\n MoveVertical,\n SquareX,\n StretchHorizontal,\n StretchVertical,\n} from 'lucide-react';\nconst keyList = [\n 'width',\n 'height',\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height',\n 'flex',\n 'display',\n 'flex-direction',\n 'justify-content',\n 'align-items',\n 'flex-wrap',\n] as const;\n\ntype Value = Record<typeof keyList[number], string>;\n\nexport type DimensionInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nfunction getDefaultValue(list: string[]): any {\n return list.reduce((res, el) => {\n return {\n ...res,\n [el]: '',\n };\n }, {});\n}\n\nconst maxVal = {\n px: 2048,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nexport const DimensionInput = forwardRef<InputCommonRef, DimensionInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getDefaultValue(keyList as any));\n\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...pick(newVal, keyList),\n };\n\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) =>\n updateInnerVal(\n {\n ...getDefaultValue(keyList as any),\n ...newVal,\n },\n true\n ),\n setEmptyValue: () => {\n setInnerVal(getDefaultValue(keyList as any));\n },\n };\n },\n [updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n return props.value ?? innerVal;\n }, [props.value, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col span={24} className=\"flex\">\n <span className={styles.label}>layout:</span>\n <Radio.Group\n value={realValue.display}\n size=\"small\"\n buttonStyle=\"solid\"\n onChange={(e) => {\n updateInnerVal({\n display: e.target.value,\n });\n }}\n >\n <Radio.Button value=\"block\">Block</Radio.Button>\n <Radio.Button value=\"flex\">Flex</Radio.Button>\n <Radio.Button value=\"inline-block\">InlineB</Radio.Button>\n <Radio.Button value=\"inline\">Inline</Radio.Button>\n <Radio.Button value=\"none\">None</Radio.Button>\n </Radio.Group>\n </Col>\n </Row>\n {/* flex 布局属性 */}\n {realValue.display === 'flex' && (\n <>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>AxisD:</span>\n <div\n style={{\n width: '200px',\n marginLeft: '3px',\n }}\n >\n <Radio.Group\n size=\"small\"\n value={realValue['flex-direction']}\n buttonStyle={'outline'}\n options={[\n {\n label: <ArrowRightFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'row',\n },\n {\n label: <ArrowLeftFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'row-reverse',\n },\n {\n label: <ArrowDownFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'column',\n },\n {\n label: <ArrowUpFromLine size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'column-reverse',\n },\n {\n label: <SquareX size={14} style={{ top: '3px', position: 'relative' }} />,\n value: '',\n },\n ]}\n onChange={(e) => {\n updateInnerVal({\n 'flex-direction': e.target.value || '',\n });\n }}\n optionType=\"button\"\n />\n </div>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>MAxis:</span>\n <div\n style={{\n width: '200px',\n marginLeft: '3px',\n }}\n >\n <Radio.Group\n size=\"small\"\n value={realValue['justify-content']}\n buttonStyle={'outline'}\n options={[\n {\n label: <AlignHorizontalDistributeStart size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-start',\n },\n {\n label: <AlignHorizontalDistributeEnd size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-end',\n },\n {\n label: <StretchVertical size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'center',\n },\n {\n label: <AlignHorizontalSpaceBetween size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-between',\n },\n {\n label: <AlignHorizontalSpaceAround size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-around',\n },\n {\n label: <SquareX size={14} style={{ top: '3px', position: 'relative' }} />,\n value: '',\n },\n ]}\n onChange={(e) => {\n updateInnerVal({\n 'justify-content': e.target.value || '',\n });\n }}\n optionType=\"button\"\n />\n </div>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>CAxis:</span>\n <div\n style={{\n width: '200px',\n marginLeft: '3px',\n }}\n >\n <Radio.Group\n size=\"small\"\n value={realValue['align-items']}\n buttonStyle={'outline'}\n options={[\n {\n label: <AlignVerticalJustifyStart size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-start',\n },\n {\n label: <AlignVerticalJustifyEnd size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'flex-end',\n },\n {\n label: <StretchHorizontal size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'center',\n },\n {\n label: <AlignVerticalSpaceBetween size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-between',\n },\n {\n label: <AlignVerticalSpaceAround size={14} style={{ top: '3px', position: 'relative' }} />,\n value: 'space-around',\n },\n {\n label: <SquareX size={14} style={{ top: '3px', position: 'relative' }} />,\n value: '',\n },\n ]}\n onChange={(e) => {\n updateInnerVal({\n 'align-items': e.target.value || '',\n });\n }}\n optionType=\"button\"\n />\n </div>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col span={12} className=\"flex\">\n <span className={styles.label}>flex:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n unit={false}\n min={0}\n max={maxVal}\n value={realValue['flex']}\n onValueChange={(newVal) => {\n updateInnerVal({\n flex: newVal || '',\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </>\n )}\n {/* flex 布局属性 end */}\n\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>width:</span>\n <CSSSizeInput\n style={{\n width: '180px',\n }}\n min={0}\n max={maxVal}\n value={realValue.width}\n onValueChange={(val) => {\n updateInnerVal({\n width: val,\n });\n }}\n className={styles.inputWidth}\n size=\"small\"\n />\n <Button\n size=\"small\"\n style={{\n marginLeft: '10px',\n }}\n onClick={() => {\n updateInnerVal({\n width: '100%',\n });\n }}\n >\n <MoveHorizontal size={14} />\n </Button>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span className={styles.label}>height:</span>\n <CSSSizeInput\n min={0}\n style={{\n width: '180px',\n }}\n max={maxVal}\n value={realValue.height}\n onValueChange={(val) => {\n updateInnerVal({\n height: val,\n });\n }}\n className={styles.inputWidth}\n size=\"small\"\n />\n <Button\n size=\"small\"\n style={{\n marginLeft: '10px',\n }}\n onClick={() => {\n updateInnerVal({\n height: '100%',\n });\n }}\n >\n <MoveVertical size={14} />\n </Button>\n </Col>\n </Row>\n <div>\n <Row className={styles.row}>\n <Col span={12} className=\"flex\">\n <span className={styles.label}>minW:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n min={0}\n max={maxVal}\n value={realValue['min-width']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'min-width': newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n <Col span={12}>\n <span className={styles.label}>minH:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue['min-height']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'min-height': newVal,\n });\n }}\n className={styles.inputWidth}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col span={12} className=\"flex\">\n <span className={styles.label}>maxW:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n min={0}\n max={maxVal}\n value={realValue['max-width']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'max-width': newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n <Col span={12}>\n <span className={styles.label}>maxH:</span>\n <CSSSizeInput\n className={styles.inputWidth}\n min={0}\n max={maxVal}\n value={realValue['max-height']}\n onValueChange={(newVal) => {\n updateInnerVal({\n 'max-height': newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react';\nimport { InputCommonRef } from '../type';\nimport clsx from 'clsx';\nimport { pick } from 'lodash-es';\n\ntype Value = Record<string, string>;\n\nexport type MarginAndPaddingInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n prefix: 'margin' | 'padding';\n};\n\nconst maxVal = {\n px: 2048,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nconst inputW = '100px';\n\nconst getEmptyVal = () => ({\n left: '',\n right: '',\n top: '',\n bottom: '',\n});\n\nexport const MarginAndPaddingInput = forwardRef<InputCommonRef, MarginAndPaddingInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const keyList = useMemo(() => {\n return ['left', 'top', 'right', 'bottom'].map((el) => `${props.prefix}-${el}`);\n }, [props.prefix]);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<any>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n const outVal = Object.keys(finalVal).reduce((res, k) => {\n if (k === 'all') {\n res[`${props.prefix}`] = (finalVal as unknown as any)?.[k];\n } else {\n res[`${props.prefix}-${k}`] = (finalVal as unknown as any)?.[k];\n }\n return res;\n }, {} as any);\n if (noTrigger !== true) {\n props.onChange?.(pick(outVal, keyList));\n }\n return finalVal;\n });\n },\n [keyList, props]\n );\n\n const formatValue = useCallback(\n (obj: Record<string, any>, prefix: string) => {\n const targetKeyList = Object.keys(obj || {}).filter((k) => k.includes(prefix));\n const tempVal = targetKeyList.reduce((res, k) => {\n if (k.replace(`${props.prefix}`, '') === '') {\n res['all'] = (obj as unknown as any)?.[k];\n } else {\n res[k.replace(`${props.prefix}-`, '')] = (obj as unknown as any)?.[k];\n }\n return res;\n }, {} as any);\n return tempVal;\n },\n [props.prefix]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n ...formatValue(newVal, props.prefix),\n },\n true\n );\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n },\n true\n );\n },\n };\n },\n [formatValue, props.prefix, updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n const tempVal = formatValue(props.value || {}, props.prefix);\n if (props.value === undefined) {\n return innerVal;\n }\n return tempVal;\n }, [formatValue, props.value, props.prefix, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n span={12}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label, styles['m-p']])}>T:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue.top}\n onValueChange={(val) => {\n updateInnerVal({\n top: val,\n });\n }}\n style={{\n width: inputW,\n }}\n size=\"small\"\n />\n </Col>\n <Col span={12}>\n <span className={clsx([styles.label, styles['m-p']])}>L:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue.left}\n onValueChange={(val) => {\n updateInnerVal({\n left: val,\n });\n }}\n style={{\n width: inputW,\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <div>\n <Row className={styles.row}>\n <Col span={12}>\n <span className={clsx([styles.label, styles['m-p']])}>B:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue.bottom}\n onValueChange={(newVal) => {\n updateInnerVal({\n bottom: newVal,\n });\n }}\n style={{\n width: inputW,\n }}\n size=\"small\"\n />\n </Col>\n <Col\n span={12}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label, styles['m-p']])}>R:</span>\n <CSSSizeInput\n style={{\n width: inputW,\n }}\n min={0}\n max={maxVal}\n value={realValue.right}\n onValueChange={(newVal) => {\n updateInnerVal({\n right: newVal,\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n});\n","import { ColorPicker, ColorPickerProps, GetProp } from 'antd';\nimport { forwardRef, useImperativeHandle, useState } from 'react';\n\nexport type CustomColorPickerRef = {\n updateColor: (color: string) => void;\n};\n\ntype Color = GetProp<ColorPickerProps, 'value'>;\n\ntype CustomColorPickerProps = Omit<ColorPickerProps, 'onChange'> & {\n onChange: (color: string) => void;\n};\n\nexport const CustomColorPicker = forwardRef<CustomColorPickerRef, CustomColorPickerProps>(function CustomColorPicker(\n props,\n ref\n) {\n const [color, setColor] = useState<Color>();\n\n useImperativeHandle(ref, () => {\n return {\n updateColor: (color: string) => {\n setColor(color);\n },\n };\n });\n\n return (\n <ColorPicker\n {...props}\n value={color}\n onChange={(val) => {\n setColor(val);\n }}\n onChangeComplete={(val) => {\n props.onChange?.(val.toRgbString());\n }}\n />\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col, Radio } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { InputCommonRef } from '../type';\nimport { pick } from 'lodash-es';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\nconst FONT_CSS_KEY_LIST = ['font-size', 'color', 'text-align', 'font-weight'] as const;\ntype FontKeyType = typeof FONT_CSS_KEY_LIST[number];\ntype Value = Record<FontKeyType, string>;\n\nexport type FontInputProps = {\n initialValue?: Value;\n value?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nconst maxVal = {\n px: 100,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nconst alignOptions = [\n { label: <span className={styles.fontOption}>Left</span>, value: 'left' },\n { label: <span className={styles.fontOption}>Center</span>, value: 'center' },\n { label: <span className={styles.fontOption}>Right</span>, value: 'Right' },\n];\n\nconst fontWeightOptions = [\n { label: <span className={styles.fontOption}>Regular</span>, value: '400' },\n { label: <span className={styles.fontOption}>Medium</span>, value: '500' },\n { label: <span className={styles.fontOption}>Bold</span>, value: '700' },\n];\n\nconst getEmptyVal = () => ({\n 'font-size': '',\n color: '',\n 'text-align': '',\n 'font-weight': '',\n});\n\nexport const FontInput = forwardRef<InputCommonRef, FontInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n colorRef.current?.updateColor(newVal?.color || '');\n updateInnerVal(\n {\n ...getEmptyVal(),\n ...pick(newVal, FONT_CSS_KEY_LIST),\n },\n true\n );\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n },\n true\n );\n },\n };\n },\n [updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n return props.value ?? innerVal;\n }, [props.value, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n onChange={(color) => {\n updateInnerVal({\n color: color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Size:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={realValue['font-size']}\n onValueChange={(val) => {\n updateInnerVal({\n 'font-size': val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <span className={clsx([styles.label])}>Align:</span>\n <Radio.Group\n options={alignOptions}\n onChange={({ target: { value: newVal } }) => {\n updateInnerVal({\n 'text-align': newVal,\n });\n }}\n value={realValue['text-align']}\n />\n </Row>\n <Row className={styles.row}>\n <span className={clsx([styles.label])}>Weight:</span>\n <Radio.Group\n options={fontWeightOptions}\n onChange={({ target: { value: newVal } }) => {\n updateInnerVal({\n 'font-weight': newVal,\n });\n }}\n value={realValue['font-weight']}\n />\n </Row>\n </div>\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col, Radio } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { InputCommonRef } from '../type';\nimport { CloseCircleOutlined } from '@ant-design/icons';\nimport { pick } from 'lodash-es';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\nconst CSS_BORDER_KEY_LIST = ['border', 'border-radius'] as const;\n\ntype CSSBorderKeyType = typeof CSS_BORDER_KEY_LIST[number];\ntype Value = Record<CSSBorderKeyType, string>;\n\nconst maxVal = {\n px: 100,\n vw: 100,\n vh: 100,\n rem: 100,\n};\n\nconst getEmptyVal = () => ({\n border: '',\n 'border-radius': '',\n});\n\nexport type BorderInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nexport const BorderInput = forwardRef<InputCommonRef, BorderInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n const emptyVal = getEmptyVal();\n if (Object.keys(newVal).length) {\n updateInnerVal(\n {\n ...emptyVal,\n ...pick(newVal, CSS_BORDER_KEY_LIST),\n },\n true\n );\n } else {\n updateInnerVal(emptyVal, true);\n }\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n },\n true\n );\n },\n };\n },\n [updateInnerVal]\n );\n\n const currentEditVal = useMemo(() => {\n const tempVal = innerVal['border'] || '';\n const list = tempVal.split(' ');\n const tmpVal = {\n size: list[0] || '',\n type: list[1] || '',\n color: tempVal.replace(' ', '').replace(list[0], '').replace(list[1], ''),\n };\n colorRef.current?.updateColor(tmpVal.color);\n\n return tmpVal;\n }, [innerVal]);\n\n const updateSingleBorderVal = (newBorderVal: typeof currentEditVal) => {\n updateInnerVal({\n border: `${newBorderVal.size || '0px'} ${newBorderVal.type || 'none'} ${\n newBorderVal.color || 'transparent'\n }`.trim(),\n });\n };\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n style={{\n position: 'relative',\n }}\n span={24}\n >\n <CloseCircleOutlined\n style={{\n position: 'absolute',\n right: 0,\n top: '5px',\n color: '#4e4e4e',\n cursor: 'pointer',\n }}\n onClick={() => {\n updateInnerVal({\n border: undefined,\n });\n }}\n />\n <span className={styles.label}>Size:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={currentEditVal.size}\n style={{\n width: '100px',\n }}\n unitList={['px']}\n onValueChange={(val) => {\n updateSingleBorderVal({\n ...currentEditVal,\n size: val || '',\n });\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n value={currentEditVal.color || ''}\n onChange={(color) => {\n updateSingleBorderVal({\n ...currentEditVal,\n color: color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Type:</span>\n <Radio.Group\n value={currentEditVal.type}\n size=\"small\"\n onChange={(e) => {\n updateSingleBorderVal({\n ...currentEditVal,\n type: e.target.value || '',\n });\n }}\n >\n <Radio.Button value=\"solid\">Solid</Radio.Button>\n <Radio.Button value=\"dashed\">Dashed</Radio.Button>\n <Radio.Button value=\"dotted\">Dotted</Radio.Button>\n <Radio.Button value=\"none\">None</Radio.Button>\n </Radio.Group>\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Radius:</span>\n <CSSSizeInput\n min={0}\n max={maxVal}\n value={innerVal['border-radius']}\n onValueChange={(val) => {\n updateInnerVal({\n 'border-radius': val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n </div>\n );\n});\n","import { Row, Col, Radio, Input } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { InputCommonRef } from '../type';\nimport { pick } from 'lodash-es';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\nconst CSS_BACKGROUND_KEY_LIST = [\n 'background-color',\n 'background-image',\n 'background-repeat',\n 'background-size',\n] as const;\n\ntype CSSBackgroundKeyType = typeof CSS_BACKGROUND_KEY_LIST[number];\n\ntype Value = Record<CSSBackgroundKeyType, string>;\n\nexport type BackgroundInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nconst getEmptyVal = () => {\n return {\n 'background-color': '',\n 'background-image': '',\n 'background-size': '',\n 'background-repeat': '',\n };\n};\n\nexport const BackgroundInput = forwardRef<InputCommonRef, BackgroundInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<Value>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n const finalVal = {\n ...oldVal,\n ...newVal,\n };\n colorRef.current?.updateColor(finalVal['background-color']);\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n const emptyVal = getEmptyVal();\n if (Object.keys(newVal).length) {\n updateInnerVal(\n {\n ...emptyVal,\n ...pick(newVal, CSS_BACKGROUND_KEY_LIST),\n },\n true\n );\n } else {\n updateInnerVal(emptyVal, true);\n }\n },\n setEmptyValue: () => {\n const emptyVal = getEmptyVal();\n updateInnerVal(emptyVal, true);\n },\n };\n },\n [updateInnerVal]\n );\n\n const realValue = useMemo(() => {\n return props.value ?? innerVal;\n }, [props.value, innerVal]);\n\n return (\n <div>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n value={realValue['background-color'] || ''}\n onChange={(color) => {\n updateInnerVal({\n 'background-color': color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n }}\n >\n <span className={styles.label}>Image:</span>\n <Input\n style={{ flex: 1 }}\n size=\"small\"\n value={/url\\(['|\"|*]?(.+?)['|\"|*]?\\)/.exec(realValue['background-image'])?.[1] || ''}\n onChange={(e) => {\n console.log(`url(\"${e.target.value}\")`);\n updateInnerVal({\n 'background-image': `url(\"${e.target.value}\")`,\n });\n }}\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <span className={styles.label}>Size:</span>\n <Radio.Group\n size=\"small\"\n defaultValue=\"a\"\n buttonStyle=\"solid\"\n value={realValue['background-size']}\n onChange={(e) => {\n updateInnerVal({ 'background-size': e.target.value });\n }}\n >\n <Radio.Button value=\"contain\">Contain</Radio.Button>\n <Radio.Button value=\"cover\">Cover</Radio.Button>\n <Radio.Button value=\"auto\">Auto</Radio.Button>\n </Radio.Group>\n </Row>\n <Row className={styles.row}>\n <span className={styles.label}>Repeat:</span>\n <Radio.Group\n size=\"small\"\n buttonStyle=\"solid\"\n value={realValue['background-repeat']}\n onChange={(e) => {\n updateInnerVal({ 'background-repeat': e.target.value });\n }}\n >\n <Radio.Button value=\"repeat\">Repeat</Radio.Button>\n <Radio.Button value=\"no-repeat\">NoRepeat</Radio.Button>\n </Radio.Group>\n </Row>\n </div>\n );\n});\n","import { CSSSizeInput } from '@/component/CSSSizeInput';\nimport { Row, Col } from 'antd';\nimport styles from '../style.module.scss';\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_PRESET_COLORS } from '@/config/colorPickerColorList';\nimport clsx from 'clsx';\nimport { BoxShadowObjType, parseBoxShadowString } from '@/utils';\nimport { InputCommonRef } from '../type';\nimport { CustomColorPicker, CustomColorPickerRef } from '@/component/CustomColorPicker';\n\ntype Value = Record<'box-shadow', string>;\n\nconst getEmptyVal = () => ({\n 'box-shadow': '',\n});\n\nexport type ShadowInputProps = {\n value?: Value;\n initialValue?: Value;\n onChange?: (newVal: Value) => void;\n};\n\nexport const ShadowInput = forwardRef<InputCommonRef, ShadowInputProps>((props, ref) => {\n const [innerVal, setInnerVal] = useState<Value>(props.initialValue ?? getEmptyVal());\n const colorRef = useRef<CustomColorPickerRef>(null);\n\n const realValue = useMemo(() => {\n const tempVal = props.value?.['box-shadow'] ?? innerVal['box-shadow'];\n const obj = parseBoxShadowString(tempVal || '')[0] || {};\n colorRef.current?.updateColor(obj.color || '');\n return obj;\n }, [props.value, innerVal]);\n\n const updateInnerVal = useCallback(\n (newVal: Partial<BoxShadowObjType>, noTrigger?: boolean) => {\n setInnerVal((oldVal) => {\n console.log('set val', oldVal, newVal);\n const tempVal = props.value?.['box-shadow'];\n const obj = parseBoxShadowString(tempVal || '')[0] || {};\n const newUpdateVal = {\n ...obj,\n ...newVal,\n };\n const boxShadowStr = `${newUpdateVal.offsetX || '0'} ${newUpdateVal.offsetY || '0'} ${\n newUpdateVal.blur || '0'\n } ${newUpdateVal.spread || '0'} ${newUpdateVal.color || 'transparent'}`;\n const finalVal: Value = {\n ...oldVal,\n 'box-shadow': boxShadowStr,\n };\n if (noTrigger !== true) {\n props.onChange?.(finalVal);\n }\n return finalVal;\n });\n },\n [props]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (newVal) => {\n updateInnerVal(\n {\n ...getEmptyVal(),\n ...parseBoxShadowString(newVal['box-shadow'] || '')[0],\n },\n true\n );\n },\n setEmptyValue: () => {\n updateInnerVal(\n {\n ...(getEmptyVal() as any),\n },\n true\n );\n },\n };\n },\n [updateInnerVal]\n );\n\n return (\n <div>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>OffsetX:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['offsetX']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n offsetX: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>OffsetY:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['offsetY']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n\n offsetY: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Blur:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['blur']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n\n blur: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col>\n <span className={styles.label}>Spread:</span>\n <CSSSizeInput\n min={-40}\n max={40}\n unitList={['px']}\n value={realValue['spread']}\n onValueChange={(val) => {\n updateInnerVal({\n ...realValue,\n\n spread: val,\n });\n }}\n style={{\n width: '158px',\n }}\n size=\"small\"\n />\n </Col>\n </Row>\n <Row className={styles.row}>\n <Col\n span={24}\n style={{\n display: 'flex',\n }}\n >\n <span className={clsx([styles.label])}>Color:</span>\n <CustomColorPicker\n ref={colorRef}\n showText={true}\n size=\"small\"\n onChange={(color) => {\n updateInnerVal({\n ...realValue,\n\n color: color,\n });\n }}\n presets={DEFAULT_PRESET_COLORS}\n />\n </Col>\n </Row>\n </div>\n );\n});\n","import * as csstree from 'css-tree';\n\nexport function parseCssToObject(css: string): Record<string, Record<string, string>> {\n const result: Record<string, Record<string, string>> = {};\n\n const ast = csstree.parse(css, {\n context: 'stylesheet',\n });\n\n csstree.walk(ast, {\n visit: 'Rule',\n enter(node) {\n if (node.type === 'Rule' && node.prelude.type === 'SelectorList') {\n const selector = csstree.generate(node.prelude);\n\n const declarations: Record<string, string> = {};\n if (node.block.type === 'Block') {\n for (const declaration of node.block.children.toArray()) {\n if (declaration.type === 'Declaration') {\n const prop = declaration.property;\n const value = csstree.generate(declaration.value);\n declarations[prop] = value;\n }\n }\n }\n\n result[selector] = declarations;\n }\n },\n });\n\n return result;\n}\n","import { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { MonacoEditor, MonacoEditorInstance } from '../MonacoEditor';\nimport styles from './style.module.scss';\nimport { parseCssToObject } from './helper';\nimport { InputCommonRef } from '../StylePanel/type';\nimport { isEqual } from 'lodash-es';\n\nconst getCssCodeFromStyleObj = (styleObj: Record<any, any> = {}) => {\n let res = `.node {\\n`;\n Object.keys(styleObj).forEach((key) => {\n res += ` ${key}: ${styleObj[key]};\\n`;\n });\n res += '}';\n\n return res;\n};\n\ntype CSSCodeEditorProps = {\n onValueChange?: (newVal: Record<any, any>) => void;\n};\n\nexport type CSSCodeEditorRef = InputCommonRef;\n\nexport const CSSCodeEditor = forwardRef<CSSCodeEditorRef, CSSCodeEditorProps>((props, ref) => {\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n const valueRef = useRef({});\n useImperativeHandle(\n ref,\n () => {\n return {\n setEmptyValue: () => {\n valueRef.current = {};\n editorRef.current?.setValue(getCssCodeFromStyleObj({}));\n },\n setValue: (val) => {\n if (isEqual(val, valueRef.current)) {\n return;\n }\n valueRef.current = val;\n editorRef.current?.setValue(getCssCodeFromStyleObj(val));\n },\n };\n },\n []\n );\n\n return (\n <div\n className={styles.cssCodeEditor}\n style={{\n paddingTop: '10px',\n width: '100%',\n height: '150px',\n border: '1px solid rgba(0,0,0,0.2)',\n position: 'relative',\n borderRadius: '4px',\n }}\n >\n <MonacoEditor\n language=\"css\"\n onDidMount={(editor) => {\n editorRef.current = editor;\n editorRef.current?.setValue(getCssCodeFromStyleObj(valueRef.current || {}));\n }}\n onChange={(newVal) => {\n const styleObj = parseCssToObject(newVal || '');\n const newValObj = styleObj['.node'] || {};\n valueRef.current = newValObj;\n props.onValueChange?.(newValObj);\n }}\n options={{\n tabSize: 2,\n minimap: { enabled: false },\n folding: false,\n lineNumbers: 'off',\n hover: {\n // enabled: false, // ✅ 禁用 hoverWidget\n },\n }}\n />\n </div>\n );\n});\n","import { Button, Card, Collapse, CollapseProps, ConfigProvider } from 'antd';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport styles from './style.module.scss';\nimport { DimensionInput } from './DimensionInput';\nimport { MarginAndPaddingInput } from './MarginAndPaddingInput';\nimport { FontInput } from './FontInput';\nimport { BorderInput } from './BorderInput';\nimport { BackgroundInput } from './BackgroundInput';\nimport { ShadowInput } from './ShadowInput';\nimport { InputCommonRef } from './type';\nimport { waitReactUpdate } from '@/utils';\nimport { isNil, omitBy } from 'lodash-es';\nimport { CSSCodeEditor, CSSCodeEditorRef } from '../CSSCodeEditor';\nimport { Component, SquareCode } from 'lucide-react';\n\nexport type StyleUIPanelProps = {\n initialVal?: Record<string, string>;\n value?: Record<string, string>;\n onValueChange?: (newVal: Record<string, string>) => void;\n noCard?: boolean;\n};\n\nexport type StyleUIPanelRef = InputCommonRef;\n\nexport const StyleUIPanel = forwardRef<StyleUIPanelRef, StyleUIPanelProps>(\n ({ value, initialVal, onValueChange, noCard }, ref) => {\n const [mode, setMode] = useState<'VISUAL' | 'CODE'>(\n (localStorage.getItem('CHAMN_STYLE_EDITOR_MODE') as any) || 'VISUAL'\n );\n const dimensionRef = useRef<InputCommonRef>(null);\n const marinRef = useRef<InputCommonRef>(null);\n const paddingRef = useRef<InputCommonRef>(null);\n const borderRef = useRef<InputCommonRef>(null);\n const backgroundRef = useRef<InputCommonRef>(null);\n const shadowRef = useRef<InputCommonRef>(null);\n const fontRef = useRef<InputCommonRef>(null);\n const cssCodeEditorRef = useRef<CSSCodeEditorRef>(null);\n\n useEffect(() => {\n localStorage.setItem('CHAMN_STYLE_EDITOR_MODE', mode);\n }, [mode]);\n\n const inputRefs = useMemo(() => {\n return [dimensionRef, marinRef, paddingRef, borderRef, backgroundRef, shadowRef, fontRef];\n }, [dimensionRef, marinRef, paddingRef, borderRef, backgroundRef, shadowRef, fontRef]);\n\n const tempValueRef = useRef<any>(null);\n\n const updateInnerVal = useCallback(\n (newVal: any) => {\n if (!newVal) {\n return;\n }\n // 外部赋值\n tempValueRef.current = newVal;\n if (mode === 'CODE') {\n cssCodeEditorRef.current?.setValue(newVal);\n return;\n }\n\n inputRefs.forEach((ref) => {\n setTimeout(() => {\n ref.current?.setValue(newVal);\n });\n });\n },\n [inputRefs, mode]\n );\n\n const onStyleItemChange = useCallback(\n (val: any) => {\n const newVal = {\n ...(tempValueRef.current || {}),\n ...val,\n };\n tempValueRef.current = newVal;\n\n const finalValue = omitBy(newVal, (value) => isNil(value) || value === '');\n onValueChange?.(finalValue);\n },\n [onValueChange]\n );\n\n useEffect(() => {\n updateInnerVal(tempValueRef.current);\n }, [mode, updateInnerVal]);\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: updateInnerVal,\n setEmptyValue: () => updateInnerVal({}),\n };\n },\n [updateInnerVal]\n );\n\n const items: CollapseProps['items'] = useMemo(() => {\n return [\n {\n key: 'dimension',\n label: 'Dimension',\n children: (\n <DimensionInput\n ref={dimensionRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'margin',\n label: 'Margin',\n children: (\n <MarginAndPaddingInput\n prefix=\"margin\"\n ref={marinRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'padding',\n label: 'Padding',\n children: (\n <MarginAndPaddingInput\n ref={paddingRef}\n initialValue={initialVal as any}\n prefix=\"padding\"\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n\n {\n key: 'background',\n label: 'Background',\n children: (\n <BackgroundInput\n ref={backgroundRef}\n value={value as any}\n initialValue={initialVal as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'font',\n label: 'Font',\n children: (\n <FontInput\n ref={fontRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n {\n key: 'border',\n label: 'Border',\n children: <BorderInput ref={borderRef} initialValue={initialVal as any} onChange={onStyleItemChange} />,\n },\n {\n key: 'shadow',\n label: 'Shadow',\n children: (\n <ShadowInput\n ref={shadowRef}\n initialValue={initialVal as any}\n value={value as any}\n onChange={onStyleItemChange}\n />\n ),\n },\n ];\n }, [initialVal, onStyleItemChange, value]);\n\n const coreEditView = (\n <>\n {mode === 'CODE' && (\n <CSSCodeEditor\n onValueChange={(newVal) => {\n tempValueRef.current = newVal;\n onValueChange?.(newVal);\n }}\n ref={cssCodeEditorRef}\n />\n )}\n\n {mode !== 'CODE' && (\n <Collapse\n className={styles.styleUIPanel}\n items={items}\n bordered={false}\n defaultActiveKey={['dimension', 'background', 'padding', 'margin']}\n onChange={async () => {\n await waitReactUpdate();\n // 每次展开需要重新同步值\n updateInnerVal(tempValueRef.current);\n }}\n />\n )}\n </>\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 2,\n },\n }}\n >\n {noCard && coreEditView}\n {!noCard && (\n <Card\n size=\"small\"\n type=\"inner\"\n title={<span style={{ fontSize: '12px' }}>Style</span>}\n extra={\n <Button\n type=\"text\"\n size=\"small\"\n onClick={() => {\n setMode((oldVal) => {\n if (oldVal === 'CODE') {\n return 'VISUAL';\n } else {\n return 'CODE';\n }\n });\n }}\n >\n {mode === 'VISUAL' && <SquareCode size={16} />}\n {mode !== 'VISUAL' && <Component size={16} />}\n </Button>\n }\n style={{\n marginBottom: '10px',\n borderRadius: '8px',\n }}\n >\n {coreEditView}\n </Card>\n )}\n </ConfigProvider>\n );\n }\n);\n","import { CSSSizeInputProps } from '@/component/CSSSizeInput';\nimport { CSetter, CSetterProps } from '../type';\nimport { StyleUIPanel, StyleUIPanelRef } from '@/component/StylePanel';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { formatStyleProperty, styleArr2Obj, styleObjToArr } from '@/utils';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { isEqual } from 'lodash-es';\n\nexport const FastLayoutSetter: CSetter<CSSSizeInputProps> = ({\n value,\n setterContext,\n initialValue,\n ...resetProps\n}: CSetterProps<CSSSizeInputProps & { initialValue?: string }>) => {\n const cssUIRef = useRef<StyleUIPanelRef>(null);\n const node = setterContext.nodeModel;\n const lastNode = useRef<CNode | CRootNode>();\n\n const initialValueInner = useMemo(() => {\n const newStyle = node.value.style || [];\n const { normalProperty } = formatStyleProperty(newStyle);\n return styleArr2Obj(normalProperty);\n }, [node.value.style]);\n\n const updatePanelValue = useCallback(() => {\n lastNode.current = node;\n const newStyle = node.value.style || [];\n const { normalProperty } = formatStyleProperty(newStyle);\n cssUIRef.current?.setValue(styleArr2Obj(normalProperty) || {});\n }, [node]);\n\n useEffect(() => {\n updatePanelValue();\n node.emitter.on('onNodeChange', updatePanelValue);\n node.emitter.on('onReloadPage', updatePanelValue);\n return () => {\n node.emitter.off('onNodeChange', updatePanelValue);\n node.emitter.off('onReloadPage', updatePanelValue);\n };\n }, [node.emitter, node.id, updatePanelValue]);\n\n return (\n <StyleUIPanel\n {...resetProps}\n initialVal={initialValueInner}\n ref={cssUIRef}\n onValueChange={(newNormaCss) => {\n const newStyle = styleObjToArr(newNormaCss);\n const { expressionProperty } = formatStyleProperty(node.value.style || []);\n const newStyleList = [...newStyle, ...expressionProperty];\n if (isEqual(node.value.style, newStyleList)) {\n return;\n }\n node.value.style = newStyleList;\n node.updateValue();\n }}\n />\n );\n};\n","import { ConfigProvider, Radio } from 'antd';\nimport { CSetter, CSetterProps } from '../type';\nimport { CheckboxGroupProps } from 'antd/es/checkbox';\nimport { useEffect, useMemo } from 'react';\n\nconst emptyValMap = {\n _null_: null,\n _undefined_: undefined,\n};\n\nexport const EmptyValueSetter: CSetter<{ emptyValue?: any }> = ({\n onValueChange,\n setterContext,\n initialValue,\n emptyValue,\n hiddenDefaultOption,\n ...props\n}: CSetterProps<{ emptyValue?: string; hiddenDefaultOption?: boolean }>) => {\n const options = useMemo<CheckboxGroupProps<string>['options']>(() => {\n const tempValue = [\n { label: 'Undefined', value: '_undefined_' },\n { label: 'Null', value: '_null_' },\n ];\n if (emptyValue) {\n if (hiddenDefaultOption) {\n return [{ label: emptyValue, value: emptyValue }];\n } else {\n tempValue.push({ label: emptyValue, value: emptyValue });\n }\n }\n\n return tempValue;\n }, [emptyValue, hiddenDefaultOption]);\n\n const innerValue = useMemo(() => {\n const tempValue = initialValue || props.value;\n if (tempValue === undefined) {\n return '_undefined_';\n }\n\n if (tempValue === null) {\n return '_null_';\n }\n\n return tempValue || '_undefined_';\n }, [initialValue, props.value]);\n\n // 切换初始化时,直接强制重置为 undefined\n useEffect(() => {\n onValueChange?.(emptyValue ?? undefined);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 6,\n },\n }}\n >\n <Radio.Group\n block\n options={options}\n defaultValue={initialValue}\n optionType=\"button\"\n size=\"small\"\n {...props}\n value={innerValue}\n onChange={(e) => {\n let newVal = e.target.value;\n if (['_null_', '_undefined_'].includes(newVal)) {\n newVal = emptyValMap[newVal as keyof typeof emptyValMap];\n }\n onValueChange?.(newVal);\n }}\n />\n </ConfigProvider>\n );\n};\n\nEmptyValueSetter.setterName = '空值设置器';\n","import { CSetter } from './type';\nimport { StringSetter } from './StringSetter';\nimport { NumberSetter } from './NumberSetter';\nimport { ArraySetter } from './ArraySetter';\nimport { ShapeSetter } from './ShapeSetter';\nimport { ExpressionSetter } from './ExpressionSetter';\nimport { BooleanSetter } from './BooleanSetter';\nimport { SelectSetter } from './SelectSetter';\nimport { JSONSetter } from './JSONSetter';\nimport { FunctionSetter } from './FunctionSetter';\nimport { TextAreaSetter } from './TextAreaSetter';\nimport { CSSValueSetter } from './CSSValueSetter';\nimport { ColorSetter } from './ColorSetter';\nimport { AntDColorSetter } from './AntDColorSetter';\nimport { SliderSetter } from './SliderSetter';\nimport { RadioGroupSetter } from './RadioGroupSetter';\nimport { CSSSizeSetter } from './CSSSizeSetter';\nimport { FastLayoutSetter } from './FastLayoutSetter';\nimport { EmptyValueSetter } from './EmptyValueSetter';\n\nexport const BUILD_IN_SETTER_MAP = {\n FastLayoutSetter,\n StringSetter,\n ArraySetter,\n ShapeSetter,\n NumberSetter,\n ExpressionSetter,\n BooleanSetter,\n SelectSetter,\n JSONSetter,\n FunctionSetter,\n TextAreaSetter,\n CSSValueSetter,\n ColorSetter,\n SliderSetter,\n AntDColorSetter,\n RadioGroupSetter,\n CSSSizeSetter,\n EmptyValueSetter,\n} as Record<string, CSetter>;\n\nexport default BUILD_IN_SETTER_MAP;\n\nexport * from './type';\n","import React, { isValidElement, ReactNode, useEffect, useState } from 'react';\nimport styles from './style.module.scss';\nimport { Alert, Popover, Tooltip } from 'antd';\nimport { CFormContext } from '../context';\nimport clsx from 'clsx';\nimport { QuestionCircleOutlined } from '@ant-design/icons';\n\nexport type CFiledChildProps = {\n onValueChange?: (val: any) => void;\n initialValue?: any;\n value?: any;\n};\n\nexport type CFieldProps = {\n children: React.ReactNode;\n label?: string;\n labelWidth?: string;\n labelAlign?: 'start' | 'center' | 'end';\n tips?: ReactNode | (() => ReactNode);\n name: string;\n condition?: (formState: Record<string, any>) => boolean;\n onConditionValueChange?: (val: boolean) => void;\n /** 不做任何包裹, 不会渲染 switchSetter */\n noStyle?: boolean;\n /** 隐藏 label, 会渲染 switchSetter */\n hiddenLabel?: boolean;\n valueChangeEventName?: string;\n formatEventValue?: (val: any) => any;\n rules?: { validator?: (value: any) => Promise<boolean | undefined>; required?: boolean; msg?: string }[];\n};\n\nexport const CField = (props: CFieldProps) => {\n const { children, label, tips, name, hiddenLabel } = props;\n const [errorInfo, setErrorInfo] = useState({\n isPass: true,\n errorMsg: '',\n });\n let labelView: ReactNode = label;\n const { formState, updateContext, updateConditionConfig } = React.useContext(CFormContext);\n useEffect(() => {\n if (props.condition) {\n updateConditionConfig(name, props.condition);\n }\n }, [name, props.condition, updateConditionConfig]);\n\n useEffect(() => {\n const condition = props.condition ?? (() => true);\n const canRender = condition(formState);\n props.onConditionValueChange?.(canRender);\n }, [formState, props]);\n\n if (tips) {\n let newTip: any = tips;\n if (typeof tips === 'function') {\n newTip = tips();\n }\n labelView = (\n <Tooltip\n title={<span style={{ color: 'rgba(255,255,255,0.9', fontSize: '12px' }}>{newTip}</span>}\n color=\"rgba(50,50,50,0.8)\"\n >\n <span className={styles.tipsLabel}>{label}</span>\n </Tooltip>\n );\n }\n let newChildren = children;\n\n if (isValidElement(children)) {\n const eventName = props.valueChangeEventName ?? 'onValueChange';\n const extraProps: any = {\n [eventName]: async (val: any) => {\n let tempVal = val;\n if (props.formatEventValue) {\n tempVal = props.formatEventValue(val);\n }\n\n // 先检查数据是否合法\n const rules = props.rules || [];\n const checkResult = await checkValue(props.name, tempVal, rules);\n if (!checkResult.isPass) {\n setErrorInfo(checkResult);\n } else {\n setErrorInfo({\n isPass: true,\n errorMsg: '',\n });\n }\n updateContext(\n {\n ...formState,\n [name]: tempVal,\n },\n [name]\n );\n },\n };\n\n extraProps.value = (formState as any)[name];\n newChildren = React.cloneElement(children, extraProps);\n }\n const condition = props.condition ?? (() => true);\n const canRender = condition(formState);\n if (!canRender) {\n return null;\n }\n if (props.noStyle) {\n return <>{newChildren}</>;\n }\n\n return (\n <div\n className={clsx([styles.fieldBox, !errorInfo.isPass && styles.error])}\n style={{\n alignItems: props.labelAlign ?? 'center',\n }}\n >\n {hiddenLabel !== true && (\n <div\n className={styles.label}\n style={{\n width: props.labelWidth ?? '60px',\n }}\n >\n {labelView}\n </div>\n )}\n <div className={styles.content}>{newChildren}</div>\n {!errorInfo.isPass && (\n <Popover content={<Alert message={errorInfo.errorMsg} type=\"error\" />}>\n <QuestionCircleOutlined className={styles.errorTipIcon} />\n </Popover>\n )}\n </div>\n );\n};\n\nconst checkValue = async (key: string, value: any, rules: CFieldProps['rules'] = []) => {\n let pass = true;\n let errorMsg = '';\n\n for (let i = 0; i < rules.length; i++) {\n if (rules[i].required && !value) {\n pass = false;\n errorMsg = `${key} is required.`;\n break;\n }\n if (rules[i].validator) {\n try {\n const isPass = await rules[i].validator?.(value);\n if (!isPass) {\n pass = false;\n errorMsg = rules[i]?.msg || `${key} is illegal `;\n break;\n }\n } catch (e) {\n pass = false;\n errorMsg = `${String(e)}`;\n break;\n }\n }\n }\n\n return {\n isPass: pass,\n errorMsg,\n };\n};\n","import React, { Ref } from 'react';\nimport { CustomSchemaFormInstance } from './index';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CForm } from './components/Form';\nimport { CFormContextData } from './components/Form/context';\n\nexport type ContextState = Record<string, any>;\n\nexport type CCustomSchemaFormContextData = {\n onSetterChange: (keyPaths: string[], setterName: string) => void;\n /** 存储 field 默认的 setter 类型*/\n defaultSetterConfig: Record<string, { name: string; setter: string }>;\n /** schema 中的全局 setter map 配置*/\n customSetterMap: CFormContextData['customSetterMap'];\n formRef?: Ref<CustomSchemaFormInstance | CForm>;\n pluginCtx?: CPluginCtx;\n /** 当前编辑节点的 id */\n nodeId?: string;\n};\n\nexport const CCustomSchemaFormContext = React.createContext<CCustomSchemaFormContextData>({\n defaultSetterConfig: {},\n onSetterChange: () => {},\n customSetterMap: {},\n});\n","import React, { useContext, useEffect } from 'react';\nimport { SetterObjType } from '@chamn/model';\nimport InnerSetters from '../Setters/index';\nimport { CFieldProps } from '../Form/Field';\nimport { CCustomSchemaFormContext } from '../../context';\nimport { CFormContext } from '../Form/context';\nimport { CSetter, CSetterProps } from '../Setters/type';\nimport { getDefaultSetterByValue } from '../../utils';\n\nexport type SetterSwitcherProps = {\n // 支持的 setter 列表\n setters: SetterObjType[];\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap?: Record<string, CSetter>;\n keyPaths: string[];\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n style?: React.CSSProperties;\n /** 是否实用 CFile 包裹 */\n useField?: boolean;\n} & Omit<CFieldProps, 'children'>;\n\n/** 用于渲染切换设置器 */\nexport const SetterSwitcherCore = ({\n setters,\n keyPaths,\n currentSetter,\n setCurrentSetter,\n customSetterMap: customSetterMapProp,\n ...props\n}: Pick<SetterSwitcherProps, 'setters' | 'keyPaths'> & {\n value?: any;\n setterContext?: Partial<CSetterProps['setterContext']>;\n currentSetter: SetterObjType;\n customSetterMap?: any;\n setCurrentSetter: (setter: SetterObjType) => void;\n}) => {\n const { customSetterMap } = useContext(CFormContext);\n const { defaultSetterConfig } = useContext(CCustomSchemaFormContext);\n const allSetterMap = {\n ...InnerSetters,\n ...(customSetterMapProp || {}),\n ...customSetterMap,\n };\n\n useEffect(() => {\n const currentSetterName = defaultSetterConfig[keyPaths.join('.')]?.setter || '';\n const devConfigSetter = setters.find((el) => el.componentName === currentSetterName);\n const st = devConfigSetter || getDefaultSetterByValue(props.value, setters) || setters[0];\n setCurrentSetter(st);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let CurrentSetterComp = null;\n if (currentSetter?.componentName) {\n CurrentSetterComp = allSetterMap[currentSetter?.componentName] || currentSetter.component;\n }\n if (!CurrentSetterComp) {\n CurrentSetterComp = function EmptySetter() {\n return (\n <div\n style={{\n backgroundColor: 'whitesmoke',\n margin: '5px 0',\n padding: '5px',\n borderRadius: '2px',\n color: 'gray',\n }}\n >{`${currentSetter?.componentName} is not found.`}</div>\n );\n };\n }\n\n return <CurrentSetterComp {...props} />;\n};\n","import React, { useContext, useMemo, useState } from 'react';\nimport { SetterObjType, SetterTypeEnum } from '@chamn/model';\nimport InnerSetters from '../Setters/index';\nimport { CField, CFieldProps } from '../Form/Field';\nimport { Collapse, Dropdown, MenuProps } from 'antd';\nimport { SwapOutlined } from '@ant-design/icons';\nimport styles from './style.module.scss';\nimport { CCustomSchemaFormContext } from '../../context';\nimport { CFormContext } from '../Form/context';\nimport { CSetter } from '../Setters/type';\nimport { SetterSwitcherCore } from './core';\n\nexport type SetterSwitcherProps = {\n // 支持的 setter 列表\n setters: SetterObjType[];\n // 自定义 setter 的具体实现,可以覆盖默认 setter\n customSetterMap?: Record<string, CSetter>;\n keyPaths: string[];\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n style?: React.CSSProperties;\n /** 是否实用 CFile 包裹 */\n useField?: boolean;\n} & Omit<CFieldProps, 'children'>;\n\nexport const SetterSwitcher = ({\n setters: outerSetter,\n keyPaths,\n condition,\n useField = true,\n ...props\n}: SetterSwitcherProps) => {\n const [visible, setVisible] = useState(true);\n const { customSetterMap } = useContext(CFormContext);\n const { onSetterChange, defaultSetterConfig, formRef, pluginCtx, nodeId } = useContext(CCustomSchemaFormContext);\n const allSetterMap = {\n ...InnerSetters,\n ...customSetterMap,\n };\n // 统一添加一些内置的 setter\n const setters = useMemo(() => {\n return [\n ...outerSetter,\n {\n componentName: SetterTypeEnum.EMPTY_VALUE_SETTER,\n },\n ];\n }, [outerSetter]);\n const [currentSetter, setCurrentSetter] = useState<SetterObjType>(() => {\n const currentSetterName = defaultSetterConfig[keyPaths.join('.')]?.setter || '';\n const devConfigSetter = setters.find((el) => el.componentName === currentSetterName);\n return devConfigSetter || setters[0];\n });\n\n const menuItems = setters.map((setter) => {\n const setterName = setter?.componentName || '';\n const setterRuntime = allSetterMap[setterName];\n return {\n key: setter.componentName,\n label: setterRuntime?.setterName || setter.componentName,\n };\n });\n\n const switcher = useMemo(() => {\n const onChooseSetter: MenuProps['onClick'] = ({ key }) => {\n const targetSetter = setters.find((setter) => setter.componentName === key);\n if (targetSetter) {\n setCurrentSetter(targetSetter);\n onSetterChange?.(keyPaths, targetSetter.componentName);\n }\n };\n if (menuItems.length === 1) {\n return null;\n }\n\n return (\n <div\n className={styles.switchBtn}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Dropdown\n trigger={['click']}\n menu={{\n selectable: true,\n items: menuItems,\n onClick: onChooseSetter,\n defaultSelectedKeys: [currentSetter?.componentName || ''],\n }}\n >\n <SwapOutlined />\n </Dropdown>\n </div>\n );\n }, [menuItems, currentSetter?.componentName, setters, onSetterChange, keyPaths]);\n\n const setterProps = useMemo(() => {\n let newProps = {\n ...(currentSetter?.props || {}),\n initialValue: currentSetter?.initialValue,\n };\n const target = setters.find((el) => el.componentName === currentSetter?.componentName);\n if (target) {\n newProps = {\n ...newProps,\n ...target.props,\n };\n }\n return newProps;\n }, [setters, currentSetter]);\n\n const [collapseHeaderExt, setCollapseHeaderExt] = useState<any>([]);\n\n let bodyView: any = null;\n const hiddenLabel = currentSetter?.hiddenLabel === true;\n\n const labelWidth = currentSetter?.labelWidth;\n const labelAlign = currentSetter?.labelAlign || 'center';\n const collapse = (currentSetter?.props as any)?.collapse;\n const specialSetter = ['ArraySetter', 'ShapeSetter'].includes(currentSetter?.componentName);\n const setterContext = useMemo(\n () => ({\n formRef,\n pluginCtx,\n keyPaths: [...keyPaths],\n label: props.label,\n setCollapseHeaderExt: specialSetter ? setCollapseHeaderExt : undefined,\n nodeModel: pluginCtx?.pageModel.getNode(nodeId) as any,\n }),\n [formRef, keyPaths, nodeId, pluginCtx, props.label, specialSetter]\n );\n const filedView = useMemo(() => {\n const customSetterMap = {\n ...(props.customSetterMap || {}),\n };\n\n const cFiledProps = {\n labelWidth,\n labelAlign,\n hiddenLabel,\n condition,\n noStyle: specialSetter ? true : false,\n onConditionValueChange: (val: boolean) => {\n setVisible(val);\n },\n };\n\n if (useField === false) {\n return (\n <SetterSwitcherCore\n setters={setters}\n keyPaths={keyPaths}\n currentSetter={currentSetter}\n setCurrentSetter={setCurrentSetter}\n {...props}\n {...setterProps}\n customSetterMap={customSetterMap}\n setterContext={setterContext}\n />\n );\n }\n return (\n <CField {...cFiledProps} {...props}>\n <SetterSwitcherCore\n setters={setters}\n keyPaths={keyPaths}\n currentSetter={currentSetter}\n setCurrentSetter={setCurrentSetter}\n {...setterProps}\n customSetterMap={customSetterMap}\n setterContext={setterContext}\n />\n </CField>\n );\n }, [\n condition,\n currentSetter,\n hiddenLabel,\n keyPaths,\n labelAlign,\n labelWidth,\n props,\n setterContext,\n setterProps,\n setters,\n specialSetter,\n useField,\n ]);\n\n const renderCollapse = useMemo(\n function renderCollapse() {\n const collapseObj = typeof collapse === 'object' ? collapse : {};\n\n const CollapseComponent = (extraHeaderContent?: React.ReactNode) => (\n <Collapse\n bordered={false}\n {...collapseObj}\n style={{\n marginBottom: '10px',\n flex: 1,\n }}\n defaultActiveKey={[collapseObj.open ? props.name : '']}\n items={[\n {\n key: props.name,\n label: (\n <div className={styles.collapseHeader}>\n <span style={{ flex: 1 }}>{props.label}</span>\n {extraHeaderContent}\n {switcher}\n </div>\n ),\n children: filedView,\n },\n ]}\n />\n );\n\n return CollapseComponent;\n },\n [collapse, props.name, props.label, switcher, filedView]\n );\n\n if (['ArraySetter'].includes(currentSetter?.componentName || '')) {\n bodyView = renderCollapse(collapseHeaderExt);\n } else if (['ShapeSetter'].includes(currentSetter?.componentName || '')) {\n bodyView = (\n <div className={styles.shapeFieldBox}>\n {props.prefix ?? null}\n {(currentSetter?.props as any)?.collapse === false && <div style={{ width: '100%' }}>{filedView}</div>}\n {collapse !== false && renderCollapse()}\n {props.suffix ?? null}\n </div>\n );\n } else {\n bodyView = (\n <div style={{ display: 'flex', alignItems: labelAlign, paddingBottom: '8px' }}>\n {props.prefix ?? null}\n {filedView}\n {switcher}\n {props.suffix ?? null}\n </div>\n );\n }\n\n return <div style={{ display: visible ? 'block' : 'none' }}>{bodyView}</div>;\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { Ref } from 'react';\nimport { CMaterialPropsType, getMTitleTip, getMTitle, isSpecialMaterialPropType } from '@chamn/model';\nimport { CForm } from './components/Form';\nimport { SetterSwitcher } from './components/SetterSwitcher';\nimport { getSetterList } from './utils';\nimport styles from './style.module.scss';\nimport { ConfigProvider } from 'antd';\nimport { CCustomSchemaFormContext } from './context';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CFormContextData } from './components/Form/context';\n\nexport type CustomSchemaFormInstance = CForm;\n\nexport type CustomSchemaFormProps = {\n nodeId?: string;\n pluginCtx?: CPluginCtx;\n initialValue: Record<string, any>;\n properties: CMaterialPropsType<any>;\n onValueChange?: (val: any) => void;\n onSetterChange: (keyPaths: string[], setterName: string) => void;\n /** 存储每个字段上次使用的 setter */\n defaultSetterConfig: Record<string, { name: string; setter: string }>;\n customSetterMap?: CFormContextData['customSetterMap'];\n};\n\nconst CustomSchemaFormCore = (props: CustomSchemaFormProps, ref: Ref<CustomSchemaFormInstance | CForm>) => {\n const {\n properties: originProperties,\n initialValue,\n onValueChange,\n onSetterChange,\n defaultSetterConfig,\n pluginCtx,\n customSetterMap,\n } = props;\n const properties: CMaterialPropsType = originProperties;\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig,\n // 设置全局 setter map\n customSetterMap,\n onSetterChange,\n formRef: ref,\n pluginCtx: pluginCtx,\n nodeId: props.nodeId,\n }}\n >\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div className={styles.CFromRenderBox}>\n <CForm\n ref={ref as any}\n name=\"root-form\"\n initialValue={initialValue}\n customSetterMap={customSetterMap}\n onValueChange={(val) => {\n onValueChange?.(val);\n }}\n >\n {properties.map((property) => {\n if (isSpecialMaterialPropType(property)) {\n console.log('Current not Support type config for props, wait future....');\n } else {\n const title = getMTitle(property.title);\n const tip = getMTitleTip(property.title) || property?.description;\n const setterList = getSetterList(property.setters);\n const keyPaths = [property.name];\n return (\n <SetterSwitcher\n key={property.name}\n condition={property.condition}\n keyPaths={keyPaths}\n setters={setterList}\n label={title}\n name={property.name || ''}\n tips={tip}\n />\n );\n }\n })}\n </CForm>\n </div>\n </ConfigProvider>\n </CCustomSchemaFormContext.Provider>\n );\n};\n\nexport const CustomSchemaForm = React.forwardRef(CustomSchemaFormCore);\n\nexport * from './components/SetterSwitcher';\nexport * from './components/Setters';\n","import { TreeDataNode } from 'antd';\n\nexport const getParentKey = (key: React.Key, tree: TreeDataNode[]): React.Key => {\n let parentKey: React.Key;\n for (let i = 0; i < tree.length; i++) {\n const node = tree[i];\n if (node.children) {\n if (node.children.some((item) => item.key === key)) {\n parentKey = node.key;\n } else if (getParentKey(key, node.children)) {\n parentKey = getParentKey(key, node.children);\n }\n }\n }\n return parentKey!;\n};\n\nexport const getNodeInfo = (key: string, tree: TreeDataNode[]): TreeDataNode | null => {\n const traverse = (nodes: TreeDataNode[]): TreeDataNode | null => {\n for (const node of nodes) {\n if (node.key === key) {\n return node;\n }\n if (node.children?.length) {\n const result = traverse(node.children);\n if (result) {\n return result;\n }\n }\n }\n return null;\n };\n\n return traverse(tree);\n};\n","import { Modal, TreeSelect } from 'antd';\nimport { CPage } from '@chamn/model';\nimport { useRef, useMemo } from 'react';\nimport { transformPageSchemaToTreeData, traverseTree } from '@/plugins/OutlineTree/util';\nimport { getNodeInfo } from '../SelectNodeByTree/util';\n\ninterface SelectNodeModalProps {\n open: boolean;\n onCancel: () => void;\n onOk: (data: { nodeId: string; title: string }) => void;\n pageModel: CPage;\n value?: string;\n}\n\nexport const SelectNodeModal = (props: SelectNodeModalProps) => {\n const { open, onCancel, onOk, pageModel, value } = props;\n const boxDomRef = useRef<HTMLDivElement>(null);\n\n const treeData = useMemo(() => {\n if (!pageModel) return;\n const treeData = transformPageSchemaToTreeData(pageModel?.export(), pageModel);\n traverseTree(treeData, (el: any) => {\n el.sourceData = {\n title: el.title,\n value: el.value,\n };\n el.value = el.key;\n el.title = <div style={{ flexWrap: 'nowrap', display: 'flex', width: '150px' }}>{el.title}</div>;\n\n return false;\n });\n return treeData;\n }, [pageModel]);\n\n return (\n <Modal open={open} onCancel={onCancel} title=\"选择节点\" onOk={() => onOk({ nodeId: value || '', title: '' })}>\n <div ref={boxDomRef} style={{ width: '100%' }}>\n <TreeSelect\n virtual={false}\n showSearch\n style={{ width: '100%' }}\n value={value}\n allowClear\n onClear={() => {\n onOk({\n nodeId: '',\n title: '',\n });\n }}\n filterTreeNode={(inputValue, treeNode: any) => {\n return treeNode.sourceData?.title.toLowerCase().indexOf(inputValue.toLowerCase()) > -1;\n }}\n getPopupContainer={() => boxDomRef.current!}\n treeDefaultExpandAll\n onChange={(newVal) => {\n const nodeInfo = getNodeInfo(newVal, (treeData as any) ?? []);\n onOk({\n nodeId: newVal,\n title: (nodeInfo as any)?.sourceData?.title,\n });\n }}\n treeData={treeData}\n />\n </div>\n </Modal>\n );\n};\n","import { Button } from 'antd';\nimport { useMemo, useState } from 'react';\nimport { CPage } from '@chamn/model';\nimport { SelectNodeModal } from './modal';\n\nexport const SelectNodeByTree = (props: {\n pageModel: CPage;\n onChange?: (data: { nodeId: string; title: string }) => void;\n value?: any;\n}) => {\n const [modalOpen, setModalOpen] = useState(false);\n const [innerValue, setInnerValue] = useState<{ nodeId: string; title: string }>(props.value);\n\n const nodeTitle = useMemo(() => {\n const nodeInfo = props.pageModel.getNode(innerValue?.nodeId || props.value);\n\n if (nodeInfo) {\n return nodeInfo.value.title || nodeInfo.material?.value.title || innerValue?.title || '';\n }\n return '';\n }, [props.pageModel, props?.value, innerValue?.nodeId, innerValue?.title]);\n\n return (\n <>\n <Button\n style={{\n width: '200px',\n }}\n onClick={() => setModalOpen(true)}\n >\n {nodeTitle ?? '选择节点'}\n </Button>\n <SelectNodeModal\n open={modalOpen}\n onCancel={() => setModalOpen(false)}\n onOk={(data) => {\n props.onChange?.(data);\n setInnerValue(data);\n setModalOpen(false);\n }}\n pageModel={props.pageModel}\n value={innerValue?.nodeId || props.value}\n />\n </>\n );\n};\n","import { CPage } from '@chamn/model';\nimport { SelectNodeByTree } from '../SelectNodeByTree';\nimport { Input, Space } from 'antd';\n\nexport const SelectNodeState = (props: {\n value?: {\n nodeId: string;\n keyPath: string;\n };\n pageModel: CPage;\n onChange?: (data: { nodeId: string; keyPath: string }) => void;\n}) => {\n return (\n <div>\n <Space>\n <SelectNodeByTree\n pageModel={props.pageModel}\n value={props.value}\n onChange={(data) => {\n props.onChange?.({\n nodeId: data.nodeId,\n keyPath: props.value?.keyPath || '',\n });\n }}\n />\n <Input\n style={{\n width: 250,\n }}\n value={props.value?.keyPath}\n onChange={(e) => {\n const { value: inputValue } = e.target;\n props.onChange?.({\n nodeId: props.value?.nodeId || '',\n keyPath: String(inputValue),\n });\n }}\n placeholder=\"variable name. support '.'\"\n />\n </Space>\n </div>\n );\n};\n","export function isValidJSVariableName(name: string) {\n // 1. 使用正则表达式验证变量名规则\n const identifierRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n if (!identifierRegex.test(name)) {\n return false;\n }\n\n // 2. 检测是否为保留关键字\n try {\n new Function(`let ${name};`);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n AssignValueType,\n getRandomStr,\n LogicType,\n TLogicAssignValueItem,\n TLogicCallNodeMethodItem,\n TLogicJumpLinkItem,\n TLogicRequestAPIItem,\n TLogicRunCodeItem,\n} from '@chamn/model';\n\nexport const DEFAULT_NODE_LIST = [\n {\n key: LogicType.ASSIGN_VALUE,\n name: '赋值/创建变量',\n getInitData: () => {\n const id = getRandomStr();\n const assignValueItem: TLogicAssignValueItem = {\n id: id,\n type: LogicType.ASSIGN_VALUE,\n valueType: AssignValueType.STATE,\n currentValue: '',\n targetValueName: '',\n };\n\n return assignValueItem;\n },\n },\n {\n key: LogicType.JUMP_LINK,\n name: '页面跳转',\n getInitData: () => {\n const id = getRandomStr();\n const assignValueItem: TLogicJumpLinkItem = {\n id: id,\n type: LogicType.JUMP_LINK,\n link: '',\n };\n\n return assignValueItem;\n },\n },\n {\n key: LogicType.REQUEST_API,\n name: '请求数据',\n getInitData: () => {\n const id = getRandomStr();\n const requestAPIItem: TLogicRequestAPIItem = {\n id: id,\n type: LogicType.REQUEST_API,\n apiPath: '',\n method: 'GET',\n header: {},\n query: {},\n responseVarName: `responseData_${id}`,\n afterSuccessResponse: [],\n afterFailedResponse: [\n {\n id: getRandomStr(),\n type: LogicType.RUN_CODE,\n value: 'console.error(\"API request failed:\", $$response)',\n },\n ],\n };\n\n return requestAPIItem;\n },\n },\n {\n key: LogicType.CALL_NODE_METHOD,\n name: '调用组件方法',\n getInitData: () => {\n const id = getRandomStr();\n\n const callNodeMethodItem: TLogicCallNodeMethodItem = {\n id: id,\n type: LogicType.CALL_NODE_METHOD,\n nodeId: '',\n methodName: '',\n args: [],\n returnVarName: '',\n };\n\n return callNodeMethodItem;\n },\n },\n {\n key: LogicType.RUN_CODE,\n name: '运行代码',\n getInitData: () => {\n const id = getRandomStr();\n\n const runCodeItem: TLogicRunCodeItem = {\n id: id,\n type: LogicType.RUN_CODE,\n name: `run_code_${id}`,\n value: `console.log('hello world');`,\n };\n\n return runCodeItem;\n },\n },\n];\n","import { Popover } from 'antd';\nimport { useState } from 'react';\nimport { DEFAULT_NODE_LIST } from './initData';\nimport { TLogicItemHandlerFlow } from '@chamn/model';\n\nexport const CreateNewNodePopup = (props: {\n title?: string;\n children: React.ReactNode;\n disabled?: boolean;\n style?: React.CSSProperties;\n onNewNodeAdd: (data: TLogicItemHandlerFlow[number]) => void;\n}) => {\n const { title = 'Next Step' } = props;\n\n const [open, setOpen] = useState(false);\n\n const handleOpenChange = (newOpen: boolean) => {\n setOpen(newOpen);\n };\n\n const nodeList = DEFAULT_NODE_LIST.map((el) => {\n return (\n <div\n onClick={() => {\n setOpen(false);\n props.onNewNodeAdd?.(el.getInitData());\n }}\n key={el.key}\n style={{\n padding: '10px 20px',\n border: '1px solid #c3c3c3b8',\n borderRadius: '4px',\n textAlign: 'center',\n fontSize: '12px',\n cursor: 'pointer',\n }}\n >\n {el.name}\n </div>\n );\n });\n\n // 禁用弹窗\n if (props.disabled) {\n return props.children;\n }\n\n return (\n <Popover\n onOpenChange={handleOpenChange}\n open={open}\n trigger={'hover'}\n content={\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n width: '300px',\n gap: '8px',\n justifyContent: 'space-between',\n }}\n >\n {nodeList.map((el) => (\n <div\n key={el.key}\n style={{\n flex: '0 0 calc(50% - 4px)',\n }}\n >\n {el}\n </div>\n ))}\n </div>\n }\n title={title}\n >\n {props.children}\n </Popover>\n );\n};\n","import { Handle, HandleProps, Position } from '@xyflow/react';\nimport { INPUT_HANDLE_ID } from '../../config';\n\nexport const InputHandle = (props: Partial<HandleProps>) => {\n return <Handle type=\"target\" id={INPUT_HANDLE_ID} position={Position.Top} {...props} />;\n};\n","import { Handle, HandleProps, Position } from '@xyflow/react';\nimport { OUTPUT_HANDLE_ID } from '../../config';\n\nexport const OutputHandle = (props: Partial<HandleProps>) => {\n return <Handle type=\"source\" position={Position.Bottom} id={OUTPUT_HANDLE_ID} {...props} />;\n};\n","import { Card, CardProps } from 'antd';\nimport { OUTPUT_HANDLE_ID, REACT_FLOW_DRAG_CLASS_NAME } from '../../config';\nimport { HolderOutlined } from '@ant-design/icons';\nimport styles from './style.module.scss';\nimport { CreateNewNodePopup } from '../CreateNewNodePopup';\nimport { InputHandle } from '../InputHandle';\nimport { OutputHandle } from '../OutputHandle';\nimport { NodeProps, useReactFlow } from '@xyflow/react';\nimport { getNewNodePosInfo, UseNodeHasConnected } from '../../util';\nimport clsx from 'clsx';\n\nexport const NodeCard = ({\n nodeProps,\n customHandle,\n handleNewNodeAdd: outHandleNewNodeAdd,\n useCardStyle,\n outputHandle,\n inputHandle,\n ...props\n}: CardProps & {\n inputHandle?: boolean;\n outputHandle?: boolean;\n useCardStyle?: boolean;\n nodeProps: NodeProps;\n customHandle?: React.ReactNode;\n handleNewNodeAdd?: (newNodeData: any) => void;\n}) => {\n const { data, isConnectable, selected } = nodeProps;\n const reactFlowInstance = useReactFlow();\n const outputNodeHasConnected = UseNodeHasConnected(data, OUTPUT_HANDLE_ID);\n\n const handleNewNodeAdd = (newNodeData: any) => {\n const currentNode = reactFlowInstance.getNode(String(data.id));\n if (!currentNode) {\n console.error(`Not found node by id ${data.id}`);\n return;\n }\n const { newEdge, newNode } = getNewNodePosInfo(currentNode, newNodeData);\n // 更新流程图\n reactFlowInstance.addNodes(newNode);\n reactFlowInstance.addEdges(newEdge);\n };\n\n let customHandleView: any = (\n <>\n {inputHandle !== false && <InputHandle isConnectable={isConnectable} />}\n {outputHandle !== false && (\n <CreateNewNodePopup\n style={{\n position: 'absolute',\n left: '50%',\n bottom: '0',\n }}\n onNewNodeAdd={(data) => {\n /** 外部有自定义 handle 时,取消事件触发 */\n if (customHandle) {\n return;\n }\n if (outHandleNewNodeAdd) {\n outHandleNewNodeAdd(data);\n } else {\n handleNewNodeAdd(data);\n }\n }}\n disabled={outputNodeHasConnected}\n >\n <OutputHandle\n isConnectable={isConnectable}\n style={{\n width: '10px',\n height: '10px',\n }}\n />\n </CreateNewNodePopup>\n )}\n </>\n );\n\n if (customHandle) {\n customHandleView = customHandle;\n }\n\n if (useCardStyle === false) {\n return (\n <div className={clsx([selected ? styles.selectStatus : ''])}>\n <div className={REACT_FLOW_DRAG_CLASS_NAME}>{props.children}</div>\n {customHandleView}\n </div>\n );\n }\n\n return (\n <Card\n {...props}\n classNames={{\n header: REACT_FLOW_DRAG_CLASS_NAME,\n }}\n className={clsx([selected ? styles.selectStatus : ''])}\n styles={{\n body: {\n cursor: 'default',\n },\n }}\n extra={\n <div\n style={{\n display: 'flex',\n }}\n >\n {props.extra}\n <div className={styles.dragBox}>\n <HolderOutlined />\n </div>\n </div>\n }\n >\n {props.children}\n <div className={clsx([REACT_FLOW_DRAG_CLASS_NAME, styles.l])}></div>\n <div className={clsx([REACT_FLOW_DRAG_CLASS_NAME, styles.r])}></div>\n <div className={clsx([REACT_FLOW_DRAG_CLASS_NAME, styles.b])}></div>\n {customHandleView}\n </Card>\n );\n};\n","import { createContext, useContext } from 'react';\nimport { CNode, CPage } from '@chamn/model';\nimport { CPluginCtx } from '@/core/pluginManager';\n\ninterface ActionFlowContextType {\n pluginCtx: CPluginCtx;\n pageModel: CPage;\n /** 数据有改变时,包含节点内部的数据 */\n onDataChange: () => void;\n /** 当前节点 */\n nodeModel: CNode | null;\n}\n\nexport const ActionFlowContext = createContext<ActionFlowContextType>({\n pluginCtx: null as any,\n pageModel: null as any,\n onDataChange: () => {},\n nodeModel: null,\n});\n\nexport const useActionFlow = () => {\n const context = useContext(ActionFlowContext);\n if (!context) {\n throw new Error('useActionFlow must be used within ActionFlowProvider');\n }\n return context;\n};\n","import { useContext, useMemo, useState } from 'react';\nimport { SetterObjType, SetterType } from '@chamn/model';\nimport { Dropdown, MenuProps } from 'antd';\nimport { SwapOutlined } from '@ant-design/icons';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { getSetterList } from '@/component/CustomSchemaForm/utils';\nimport styles from './style.module.scss';\nimport { CField, CFieldProps } from '../Form/Field';\nimport { SetterSwitcherCore } from '../SetterSwitcher/core';\n\nexport const CFiledWithSwitchSetter = (\n props: Omit<CFieldProps, 'children'> & {\n setterList: SetterType[];\n onSetterChange?: (setterName: string) => void;\n defaultSetterName?: string;\n }\n) => {\n const { setterList: setters, defaultSetterName, ...restProps } = props;\n\n const setterList = useMemo(() => {\n return getSetterList(setters);\n }, [setters]);\n\n const { onSetterChange, defaultSetterConfig, pluginCtx, nodeId, customSetterMap } =\n useContext(CCustomSchemaFormContext);\n const keyPaths = [props.name];\n\n const [currentSetter, setCurrentSetter] = useState<SetterObjType>(() => {\n const currentSetterName = defaultSetterConfig[keyPaths.join('.')]?.setter || defaultSetterName || '';\n return [...setterList].find((el) => el.componentName === currentSetterName) || setterList[0];\n });\n\n const menuItems = setterList.map((setter) => {\n const setterName = setter?.componentName || '';\n const setterRuntime = ({} as any)[setterName];\n return {\n key: setter.componentName,\n label: setterRuntime?.setterName || setter.componentName,\n };\n });\n\n const onChooseSetter: MenuProps['onClick'] = ({ key }) => {\n const targetSetter = setterList.find((setter) => setter.componentName === key);\n if (targetSetter) {\n setCurrentSetter(targetSetter);\n onSetterChange?.(keyPaths, targetSetter.componentName);\n props.onSetterChange?.(targetSetter.componentName);\n }\n };\n\n let switcher: any = (\n <div\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n className={styles.switchBtn}\n >\n <Dropdown\n trigger={['click']}\n menu={{\n selectable: true,\n items: menuItems,\n onClick: onChooseSetter,\n defaultSelectedKeys: [currentSetter?.componentName || ''],\n }}\n >\n <SwapOutlined />\n </Dropdown>\n </div>\n );\n\n if (menuItems.length === 1) {\n switcher = null;\n }\n\n const setterProps = useMemo(() => {\n let newProps = {\n ...(currentSetter?.props || {}),\n initialValue: currentSetter?.initialValue,\n };\n const target = setterList.find((el) => el.componentName === currentSetter?.componentName);\n if (target) {\n newProps = {\n ...newProps,\n ...target.props,\n };\n }\n return newProps;\n }, [setterList, currentSetter]);\n\n return (\n <div\n className={styles.fieldBox}\n style={{\n alignItems: props.labelAlign ?? 'center',\n }}\n >\n <CField {...restProps}>\n <SetterSwitcherCore\n {...setterProps}\n setters={setterList}\n keyPaths={keyPaths}\n currentSetter={currentSetter}\n customSetterMap={customSetterMap}\n setCurrentSetter={setCurrentSetter}\n setterContext={{\n pluginCtx,\n keyPaths: [props.name],\n label: props.label,\n nodeModel: pluginCtx?.pageModel.getNode(nodeId) as any,\n }}\n />\n </CField>\n {switcher}\n </div>\n );\n};\n","import { BUILD_IN_SETTER_MAP, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\nimport { AssignValueType, DEV_CONFIG_KEY, TLogicAssignValueItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\nimport { Radio } from 'antd';\nimport { useEffect, useRef, useState } from 'react';\nimport { CForm } from '../../../../Form';\nimport { CField } from '../../../../Form/Field';\nimport { SelectNodeState } from '../../component/SelectNodeState/index';\nimport styles from './style.module.scss';\nimport { TTextAreaSetterProps } from '../../../TextAreaSetter';\nimport { isValidJSVariableName } from './util';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { ensureKeyExist } from '@/utils';\nimport { NodeCard } from '../../component/NodeCard';\nimport { CommonDynamicValueSetter } from '../../util';\nimport { useActionFlow } from '../../context';\nimport { CFiledWithSwitchSetter } from '@/component/CustomSchemaForm/components/CFiledWithSwitchSetter';\n\nexport type TAssignValueNode = Node<TLogicAssignValueItem, 'AssignValueNode'>;\n\nexport const AssignValueNode = (props: NodeProps<TAssignValueNode>) => {\n const { data } = props;\n const { onDataChange, pageModel, pluginCtx, nodeModel } = useActionFlow();\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n const devConfigObj = data[DEV_CONFIG_KEY]!;\n const [isReady, setIsReady] = useState(false);\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [formValue, setFormValue] = useState<TLogicAssignValueItem>();\n useEffect(() => {\n const newVal = {\n id: data.id,\n type: data.type,\n valueType: data.valueType,\n currentValue: data.currentValue,\n targetValueName: data.targetValueName || '',\n };\n formRef.current?.setFields(newVal);\n setFormValue(newVal);\n setIsReady(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig: devConfigObj.defaultSetterMap || {},\n formRef: formRef,\n onSetterChange: (keyPaths, setterName) => {\n if (!devConfigObj.defaultSetterMap) {\n devConfigObj.defaultSetterMap = {};\n }\n devConfigObj.defaultSetterMap[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n },\n pluginCtx: pluginCtx,\n nodeId: nodeModel?.id,\n customSetterMap: {},\n }}\n >\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Assign Value\" nodeProps={props}>\n <CForm\n ref={formRef}\n name=\"jump Link\"\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newVal) => {\n Object.assign(data, newVal);\n setFormValue(newVal as any);\n onDataChange();\n }}\n >\n {isReady && (\n <>\n <div className={styles.line}>\n <CField\n name={'valueType'}\n label=\"Var Type\"\n valueChangeEventName=\"onChange\"\n formatEventValue={({ target: { value } }: any) => {\n return value;\n }}\n >\n <Radio.Group\n optionType=\"button\"\n buttonStyle=\"solid\"\n options={[\n { label: 'Memory', value: AssignValueType.MEMORY },\n { label: 'Node', value: AssignValueType.STATE },\n ]}\n />\n </CField>\n </div>\n <div className={styles.line}>\n {formValue?.valueType === 'STATE' && (\n <CField name={'targetValueName'} label=\"Var Name\" valueChangeEventName=\"onChange\">\n <SelectNodeState pageModel={pageModel} />\n </CField>\n )}\n\n {formValue?.valueType === 'MEMORY' && (\n <CFiledWithSwitchSetter\n name={'targetValueName'}\n label=\"Var Name\"\n labelWidth=\"auto\"\n labelAlign={'start'}\n tips={\n '变量名必须以字母(a-z、A-Z)、下划线(_)或美元符号($)开头。后续字符可以是字母、数字(0-9)、下划线或美元符号。变量名不能是保留关键字(例如 if、while 等)'\n }\n setterList={[\n {\n componentName: 'TextAreaSetter',\n props: {\n valueValidator: isValidJSVariableName,\n } as TTextAreaSetterProps,\n },\n ]}\n ></CFiledWithSwitchSetter>\n )}\n </div>\n <div\n className={styles.line}\n style={{\n minWidth: '450px',\n }}\n >\n <CFiledWithSwitchSetter\n name={'currentValue'}\n label=\"Value\"\n labelWidth=\"60px\"\n labelAlign={'start'}\n setterList={CommonDynamicValueSetter}\n ></CFiledWithSwitchSetter>\n </div>\n </>\n )}\n </CForm>\n </NodeCard>\n </div>\n </CCustomSchemaFormContext.Provider>\n );\n};\n","import { NodeProps, Node } from '@xyflow/react';\nimport { NodeCard } from '../component/NodeCard';\n\nexport type CounterNode = Node<any, 'StartNode'>;\n\nexport const StartNode = (props: NodeProps<CounterNode>) => {\n return (\n <NodeCard nodeProps={props} useCardStyle={false} inputHandle={false}>\n <div\n style={{\n minWidth: '100px',\n padding: '10px 20px',\n border: '1px solid #1a192b',\n borderRadius: '4px',\n textAlign: 'center',\n }}\n >\n Start\n </div>\n </NodeCard>\n );\n};\n","import { CMaterialPropsType, CPageNode, isNodeModel } from '@chamn/model';\nimport { CommonDynamicValueSetter } from '../../util';\n\nexport function isValidJSVariableName(name: string) {\n // 1. 使用正则表达式验证变量名规则\n const identifierRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n if (!identifierRegex.test(name)) {\n return false;\n }\n\n // 2. 检测是否为保留关键字\n try {\n new Function(`let ${name};`);\n return true;\n } catch {\n return false;\n }\n}\n\nconst ARGS_PREFIX = 'args.';\n/**\n *\n * @param node 结合 method 描述,合并为一个 FormSchema, 加 key 前缀是为了避免 key 冲突\n * @param args\n * @returns\n */\nexport const getArgsObjFormSchema = (node: CPageNode, methodName: string) => {\n if (isNodeModel(node)) {\n const methodList = node?.material?.value.methods || [];\n\n const formSchema = methodList\n .find((el) => el.name === methodName)\n ?.params?.map((el, index) => {\n return {\n name: `${ARGS_PREFIX}${index}`,\n title: {\n label: el.name || `arg[${index}]`,\n tip: el.description,\n },\n valueType: 'string',\n setters: CommonDynamicValueSetter,\n } as CMaterialPropsType[number];\n });\n\n return formSchema || [];\n }\n return [];\n};\n\nexport const formatArgsObjToArray = (val: Record<string, any>) => {\n const res = Object.keys(val)\n .map((key) => parseInt(key.replace(ARGS_PREFIX, '')))\n .sort()\n .map((index) => val[`${ARGS_PREFIX}${index}`]);\n return res;\n};\n\nexport const formatArgsToObject = (valArr: any[]) => {\n const res: any = {};\n valArr.forEach((item, index) => {\n res[`${ARGS_PREFIX}${index}`] = item;\n });\n return res;\n};\n","import { BUILD_IN_SETTER_MAP, CustomSchemaForm, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\nimport { DEV_CONFIG_KEY, TLogicCallNodeMethodItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\nimport { Input, Select } from 'antd';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { CForm } from '../../../../Form';\nimport styles from './style.module.scss';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { SelectNodeByTree } from '../../component/SelectNodeByTree';\nimport { CField } from '@/component/CustomSchemaForm/components/Form/Field';\nimport { formatArgsObjToArray, formatArgsToObject, getArgsObjFormSchema, isValidJSVariableName } from './util';\nimport { ensureKeyExist } from '@/utils';\nimport { NodeCard } from '../../component/NodeCard';\nimport { useActionFlow } from '../../context';\n\nexport type TCallNodeMethodNode = Node<TLogicCallNodeMethodItem, 'CallNodeMethodNode'>;\n\nexport const CallNodeMethodNode = (props: NodeProps<TCallNodeMethodNode>) => {\n const { data } = props;\n const { pageModel, onDataChange, pluginCtx, nodeModel } = useActionFlow();\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n const devConfigObj = data[DEV_CONFIG_KEY]!;\n\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [formValue, setFormValue] = useState<TLogicCallNodeMethodItem>();\n useEffect(() => {\n const newVal = {\n id: data.id || '',\n type: data.type,\n nodeId: data.nodeId,\n methodName: data.methodName,\n args: data.args,\n returnVarName: data.returnVarName,\n };\n formRef.current?.setFields(newVal);\n\n setFormValue(newVal);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const methodList = useMemo(() => {\n const targetNode = pageModel.getNode(data.nodeId);\n const list = targetNode?.material?.value.methods || [];\n return list;\n }, [data.nodeId, pageModel]);\n\n const methodListOptions = useMemo(() => {\n return methodList?.map((el) => {\n return {\n value: el.name,\n label: el.title,\n };\n });\n }, [methodList]);\n\n const argsFormSchema = useMemo(() => {\n return getArgsObjFormSchema(pageModel.getNode(formValue?.nodeId)!, formValue?.methodName || '');\n }, [pageModel, formValue?.nodeId, formValue?.methodName]);\n\n const updateKeySetterConfig = (keyPaths: string[], setterName: string) => {\n if (!devConfigObj.defaultSetterMap) {\n devConfigObj.defaultSetterMap = {};\n }\n devConfigObj.defaultSetterMap[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig: devConfigObj.defaultSetterMap || {},\n formRef: formRef,\n onSetterChange: updateKeySetterConfig,\n customSetterMap: { ...BUILD_IN_SETTER_MAP },\n }}\n >\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Call Node Method\" nodeProps={props}>\n <CForm\n ref={formRef}\n name=\"Call Node Method\"\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newVal, changeKeys) => {\n if (changeKeys?.includes('nodeId')) {\n newVal = {\n ...newVal,\n methodName: '',\n args: [],\n };\n setTimeout(() => {\n formRef.current?.setFields({\n ...formValue,\n ...newVal,\n });\n });\n }\n Object.assign(data, newVal);\n setFormValue(newVal as any);\n onDataChange();\n }}\n >\n <div className={styles.line}>\n <CField\n label={'组件'}\n name=\"nodeId\"\n valueChangeEventName=\"onChange\"\n formatEventValue={(el) => {\n return el.nodeId;\n }}\n >\n <SelectNodeByTree pageModel={pageModel} />\n </CField>\n </div>\n\n <div className={styles.line}>\n <CField name=\"methodName\" label=\"方法\" valueChangeEventName=\"onChange\">\n <Select style={{ width: 250 }} allowClear options={methodListOptions}></Select>\n </CField>\n </div>\n <div className={styles.line}>\n <CField\n name={'args'}\n label=\"参数\"\n labelWidth=\"60px\"\n labelAlign={'start'}\n condition={() => Boolean(argsFormSchema.length)}\n noStyle\n formatEventValue={(val) => {\n const newVal = formatArgsObjToArray(val);\n return newVal;\n }}\n >\n <CustomSchemaForm\n initialValue={formatArgsToObject(data.args || [])}\n pluginCtx={pluginCtx}\n nodeId={nodeModel?.id}\n properties={argsFormSchema}\n onSetterChange={updateKeySetterConfig}\n defaultSetterConfig={devConfigObj.defaultSetterMap || {}}\n ></CustomSchemaForm>\n </CField>\n </div>\n\n <div className={styles.line}>\n <CField\n name={'returnVarName'}\n label=\"返回值变量名\"\n labelWidth=\"80px\"\n tips={\n '变量名必须以字母(a-z、A-Z)、下划线(_)或美元符号($)开头。后续字符可以是字母、数字(0-9)、下划线或美元符号。变量名不能是保留关键字(例如 if、while 等)'\n }\n rules={[\n {\n validator: async (val) => {\n if (val === '') {\n return true;\n }\n return isValidJSVariableName(val);\n },\n },\n ]}\n valueChangeEventName=\"onChange\"\n formatEventValue={(e) => e.target.value}\n >\n <Input allowClear />\n </CField>\n </div>\n </CForm>\n </NodeCard>\n </div>\n </CCustomSchemaFormContext.Provider>\n );\n};\n","import { BUILD_IN_SETTER_MAP, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\nimport { isExpression, isFunction, TLogicJumpLinkItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { CForm } from '../../../Form';\nimport { NodeCard } from '../component/NodeCard';\nimport { CommonDynamicValueSetter } from '../util';\nimport { useActionFlow } from '../context';\nimport { CFiledWithSwitchSetter } from '../../../CFiledWithSwitchSetter';\n\nexport type TJumpLinkNode = Node<TLogicJumpLinkItem, 'JumpLinkNode'>;\n\nexport const JumpLinkNode = (props: NodeProps<TJumpLinkNode>) => {\n const { data } = props;\n const { onDataChange } = useActionFlow();\n\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n formRef.current?.setFields({\n link: data.link,\n });\n setIsReady(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const defaultLinkSetter = useMemo(() => {\n if (isFunction(data.link)) {\n return 'FunctionSetter';\n } else if (isExpression(data.link)) {\n return 'ExpressionSetter';\n } else {\n return 'TextAreaSetter';\n }\n }, [data.link]);\n\n return (\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Jump Link\" nodeProps={props}>\n <CForm\n ref={formRef}\n name=\"jump Link\"\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newVal) => {\n Object.assign(data, newVal);\n onDataChange();\n }}\n >\n {isReady && (\n <>\n <CFiledWithSwitchSetter\n name={'link'}\n label=\"link\"\n labelWidth=\"auto\"\n labelAlign={'start'}\n defaultSetterName={defaultLinkSetter}\n setterList={CommonDynamicValueSetter}\n ></CFiledWithSwitchSetter>\n </>\n )}\n </CForm>\n </NodeCard>\n </div>\n );\n};\n","import { SetterType } from '@chamn/model';\n\nexport const requestParamsSchemaSetterList: SetterType[] = [\n {\n componentName: 'JSONSetter',\n labelAlign: 'start',\n props: {\n mode: 'inline',\n lineNumbers: 'off',\n editorOptions: {\n lineNumbers: 'off',\n lineDecorationsWidth: 0,\n lineNumbersMinChars: 0,\n glyphMargin: false,\n },\n },\n },\n {\n componentName: 'FunctionSetter',\n labelAlign: 'start',\n props: {\n mode: 'inline',\n minimap: false,\n containerStyle: {\n paddingTop: '10px',\n width: '470px',\n height: '150px',\n },\n lineNumber: false,\n },\n },\n];\n\nexport const methodOptions = [\n { value: 'GET', label: 'GET' },\n { value: 'POST', label: 'POST' },\n { value: 'PUT', label: 'PUT' },\n { value: 'PATCH', label: 'PATCH' },\n { value: 'DELETE', label: 'DELETE' },\n];\n","import { DEV_CONFIG_KEY, TLogicRequestAPIItem } from '@chamn/model';\nimport { useReactFlow, NodeProps, Node } from '@xyflow/react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { Input, Select, Tabs, TabsProps } from 'antd';\nimport { BUILD_IN_SETTER_MAP, CustomSchemaFormInstance } from '@/component/CustomSchemaForm';\n\nimport { ensureKeyExist } from '@/utils';\nimport { NodeCard } from '../../component/NodeCard';\nimport { CForm } from '@/component/CustomSchemaForm/components/Form';\nimport { CCustomSchemaFormContext } from '@/component/CustomSchemaForm/context';\nimport { CField } from '@/component/CustomSchemaForm/components/Form/Field';\nimport { methodOptions, requestParamsSchemaSetterList } from './helper';\nimport { CreateNewNodePopup } from '../../component/CreateNewNodePopup';\nimport { InputHandle } from '../../component/InputHandle';\nimport { OutputHandle } from '../../component/OutputHandle';\nimport {\n INPUT_HANDLE_ID,\n OUTPUT_HANDLE_ID,\n REACT_FLOW_DRAG_CLASS_NAME,\n REQUEST_API_FAILED_HANDLE_ID,\n} from '../../config';\nimport styles from './style.module.scss';\nimport { useActionFlow } from '../../context';\nimport { CFiledWithSwitchSetter } from '@/component/CustomSchemaForm/components/CFiledWithSwitchSetter';\nimport { RightPanelConfig } from '@/plugins/RightPanel/type';\n\nexport type TRequestAPINode = Node<TLogicRequestAPIItem, 'RequestAPINode'>;\n\nexport const RequestAPINode = (props: NodeProps<TRequestAPINode>) => {\n const { data, isConnectable } = props;\n const { onDataChange, pluginCtx } = useActionFlow();\n const pluginConfig: RightPanelConfig = pluginCtx.config || {};\n\n const CustomAPISelectInput: any = useMemo(() => {\n if (pluginConfig.requestAPINode?.customAPIInput) {\n return pluginConfig.requestAPINode?.customAPIInput;\n }\n return Input;\n }, [pluginConfig.requestAPINode?.customAPIInput]);\n\n const reactFlowInstance = useReactFlow();\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n const devConfigObj = data[DEV_CONFIG_KEY]!;\n const formRef = useRef<CustomSchemaFormInstance>(null);\n const [formValue, setFormValue] = useState<TLogicRequestAPIItem>();\n const checkHandleConnection = (handleId: string) => {\n const edges = reactFlowInstance.getEdges();\n return edges.some(\n (edge) => edge.source === String(data.id) && (edge.sourceHandle || OUTPUT_HANDLE_ID) === handleId\n );\n };\n\n const isOutputHandleConnected = checkHandleConnection(OUTPUT_HANDLE_ID);\n\n const isAfterFailedResponseHandleConnected = checkHandleConnection(REQUEST_API_FAILED_HANDLE_ID);\n\n useEffect(() => {\n const newVal = {\n id: data.id,\n type: data.type,\n apiPath: data.apiPath,\n body: data.body,\n query: data.query,\n header: data.header,\n method: data.method || 'GET',\n responseVarName: data.responseVarName || '',\n afterSuccessResponse: data.afterSuccessResponse || [],\n afterFailedResponse: data.afterFailedResponse || [],\n } as TLogicRequestAPIItem;\n formRef.current?.setFields(newVal);\n setFormValue(newVal);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const formHandler = useMemo(() => {\n return {\n updateFields: (newValue: any) => {\n const newValueObj = {\n ...formValue,\n ...newValue,\n };\n formRef.current?.setFields({\n ...newValueObj,\n });\n setFormValue(newValueObj);\n },\n getFields: () => {\n return formRef.current?.getFieldsValue();\n },\n };\n }, [formValue]);\n\n const updateKeySetterConfig = (keyPaths: string[], setterName: string) => {\n if (!devConfigObj.defaultSetterMap) {\n devConfigObj.defaultSetterMap = {};\n }\n devConfigObj.defaultSetterMap[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n const tabItems = useMemo(() => {\n const tabTagList = [\n { key: 'header', label: 'Header' },\n { key: 'query', label: 'Query' },\n { key: 'body', label: 'Body' },\n ];\n const items: TabsProps['items'] = tabTagList.map((el) => {\n return {\n ...el,\n disabled: el.key === 'body' && formValue?.method === 'GET',\n children: (\n <div className={styles.line}>\n <CFiledWithSwitchSetter\n name={el.key}\n hiddenLabel={true}\n labelAlign={'start'}\n setterList={requestParamsSchemaSetterList}\n ></CFiledWithSwitchSetter>\n </div>\n ),\n };\n });\n\n return items;\n }, [formValue]);\n\n const handleNewNodeAdd = (newNodeData: any, handleType: string) => {\n const currentNode = reactFlowInstance.getNode(String(data.id));\n if (!currentNode) return;\n\n let offsetX = 0;\n if (handleType !== OUTPUT_HANDLE_ID) {\n offsetX = (currentNode.measured?.width ?? 0) + 150;\n }\n // 计算新节点位置\n const newNodePosition = {\n x: currentNode.position.x + offsetX,\n y: currentNode.position.y + (currentNode.measured?.height ?? 0) + 150,\n };\n\n // 创建新节点\n const newNode = {\n id: newNodeData.id,\n type: newNodeData.type,\n position: newNodePosition,\n /** 必须 */\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n data: {\n ...newNodeData,\n },\n };\n\n // 创建连线\n const newEdge = {\n id: `${data.id}_${newNode.id}`,\n source: String(data.id),\n sourceHandle: handleType,\n target: newNode.id,\n targetHandle: INPUT_HANDLE_ID,\n };\n\n // 更新流程图\n reactFlowInstance.addNodes(newNode);\n reactFlowInstance.addEdges(newEdge);\n if (handleType === OUTPUT_HANDLE_ID) {\n // 更新当前节点的 afterSuccessResponse\n if (!data.afterSuccessResponse) {\n data.afterSuccessResponse = [];\n }\n data.afterSuccessResponse.push(newNodeData);\n } else {\n // 更新当前节点的 afterFailedResponse\n if (!data.afterFailedResponse) {\n data.afterFailedResponse = [];\n }\n data.afterFailedResponse.push(newNodeData);\n }\n };\n\n return (\n <CCustomSchemaFormContext.Provider\n value={{\n defaultSetterConfig: devConfigObj.defaultSetterMap || {},\n formRef: formRef,\n onSetterChange: updateKeySetterConfig,\n customSetterMap: { ...BUILD_IN_SETTER_MAP },\n }}\n >\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard\n title=\"Request Data\"\n customHandle={\n <>\n <InputHandle type=\"target\" isConnectable={isConnectable} />\n <CreateNewNodePopup\n style={{\n position: 'absolute',\n left: '50%',\n bottom: '0',\n }}\n title=\"请求成功时\"\n onNewNodeAdd={(data) => handleNewNodeAdd(data, OUTPUT_HANDLE_ID)}\n disabled={isOutputHandleConnected}\n >\n <OutputHandle\n isConnectable={isConnectable}\n style={{\n width: '10px',\n height: '10px',\n background: '#8BC34A',\n }}\n />\n </CreateNewNodePopup>\n <CreateNewNodePopup\n title=\"请求异常时\"\n onNewNodeAdd={(data) => handleNewNodeAdd(data, REQUEST_API_FAILED_HANDLE_ID)}\n disabled={isAfterFailedResponseHandleConnected}\n >\n <OutputHandle\n style={{\n left: '75%',\n bottom: '0',\n width: '10px',\n height: '10px',\n background: '#ff4d4f',\n }}\n id={REQUEST_API_FAILED_HANDLE_ID}\n isConnectable={isConnectable}\n />\n </CreateNewNodePopup>\n </>\n }\n nodeProps={props}\n handleNewNodeAdd={() => {}}\n >\n <div\n style={{\n width: '500px',\n }}\n >\n <CForm\n name={'requestAPI'}\n ref={formRef}\n customSetterMap={BUILD_IN_SETTER_MAP}\n onValueChange={(newFormData) => {\n setFormValue(newFormData as any);\n Object.assign(data, newFormData);\n onDataChange();\n }}\n >\n <div className={styles.line}>\n <CField\n label={'API'}\n name=\"apiPath\"\n valueChangeEventName=\"onChange\"\n formatEventValue={(el) => el.target.value}\n >\n <CustomAPISelectInput form={formHandler} />\n </CField>\n </div>\n <div className={styles.line}>\n <CField label={'请求方法'} name=\"method\" valueChangeEventName=\"onChange\">\n <Select defaultValue=\"GET\" style={{ width: 230 }} options={methodOptions} />\n </CField>\n </div>\n <div className={styles.line}>\n <CField\n label={'返回值变量'}\n name=\"responseVarName\"\n tips={\n '变量名必须以字母(a-z、A-Z)、下划线(_)或美元符号($)开头。后续字符可以是字母、数字(0-9)、下划线或美元符号。变量名不能是保留关键字(例如 if、while 等)'\n }\n valueChangeEventName=\"onChange\"\n formatEventValue={(el) => el.target.value}\n >\n <Input />\n </CField>\n </div>\n <Tabs defaultActiveKey={formValue?.method === 'POST' ? 'body' : 'query'} items={tabItems} />\n </CForm>\n </div>\n </NodeCard>\n </div>\n </CCustomSchemaFormContext.Provider>\n );\n};\n","import { DEV_CONFIG_KEY, TLogicRunCodeItem } from '@chamn/model';\nimport { NodeProps, Node } from '@xyflow/react';\n\nimport { ensureKeyExist } from '@/utils';\nimport { FunctionSetter } from '../../../FunctionSetter';\nimport { NodeCard } from '../../component/NodeCard';\nimport { useActionFlow } from '../../context';\n\nexport type TRunCodeNode = Node<TLogicRunCodeItem, 'RunCodeNode'>;\n\nexport const RunCodeNode = (props: NodeProps<TRunCodeNode>) => {\n const { data } = props;\n ensureKeyExist(data, DEV_CONFIG_KEY, {});\n\n const { onDataChange, pluginCtx, nodeModel } = useActionFlow();\n\n return (\n <div\n style={{\n minHeight: '80px',\n minWidth: '100px',\n }}\n >\n <NodeCard title=\"Run Code\" nodeProps={props}>\n <FunctionSetter\n mode=\"inline\"\n initialValue={data.value}\n containerStyle={{\n paddingTop: '10px',\n width: '600px',\n height: '300px',\n }}\n onValueChange={(newVal: any) => {\n data.value = newVal.value;\n onDataChange();\n }}\n setterContext={{\n pluginCtx: pluginCtx,\n setCollapseHeaderExt: undefined,\n onSetterChange: function () {},\n keyPaths: [],\n label: '',\n nodeModel: nodeModel as any,\n }}\n />\n </NodeCard>\n </div>\n );\n};\n","import { LogicType } from '@chamn/model';\nimport { AssignValueNode } from './AssignValueNode';\nimport { StartNode } from './StartNode';\nimport { CallNodeMethodNode } from './CallNodeMethodNode';\nimport { JumpLinkNode } from './JumpLinkNode';\nimport { RequestAPINode } from './RequestAPINode';\nimport { RunCodeNode } from './RunCodeNode';\n\nexport enum NODE_TYPE {\n START_NODE = 'START_NODE',\n JUMP_LINK = LogicType.JUMP_LINK,\n ASSIGN_VALUE = LogicType.ASSIGN_VALUE,\n CALL_NODE_METHOD = LogicType.CALL_NODE_METHOD,\n RUN_CODE = LogicType.RUN_CODE,\n REQUEST_API = LogicType.REQUEST_API,\n}\n\nexport const NODE_MAP = {\n [NODE_TYPE.START_NODE]: StartNode,\n [NODE_TYPE.JUMP_LINK]: JumpLinkNode,\n [NODE_TYPE.ASSIGN_VALUE]: AssignValueNode,\n [NODE_TYPE.CALL_NODE_METHOD]: CallNodeMethodNode,\n [NODE_TYPE.RUN_CODE]: RunCodeNode,\n [NODE_TYPE.REQUEST_API]: RequestAPINode,\n};\n","import { Edge, Node, useReactFlow } from '@xyflow/react';\nimport Dagre from '@dagrejs/dagre';\nimport { getRandomStr, SetterType, TActionLogicItem, TLogicItemHandlerFlow } from '@chamn/model';\nimport { INPUT_HANDLE_ID, OUTPUT_HANDLE_ID, REACT_FLOW_DRAG_CLASS_NAME, REQUEST_API_FAILED_HANDLE_ID } from './config';\nimport { NODE_TYPE } from './node';\nimport { message } from 'antd';\n\n/** 自动布局 flow node */\nexport const calculateElementLayout = (\n nodes: Node[],\n edges: Edge[],\n options: {\n direction: 'TB' | 'LR';\n }\n): { nodes: Node[]; edges: Edge[] } => {\n const g = new Dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));\n g.setGraph({ rankdir: options.direction });\n\n edges.forEach((edge) => g.setEdge(edge.source, edge.target));\n nodes.forEach((node) =>\n g.setNode(node.id, {\n ...node,\n width: node.measured?.width ?? 0,\n height: node.measured?.height ?? 0,\n })\n );\n\n Dagre.layout(g);\n\n return {\n nodes: nodes.map((node) => {\n const position = g.node(node.id);\n // We are shifting the dagre node position (anchor=center center) to the top left\n // so it matches the React Flow node anchor point (top left).\n const x = position.x - (node.measured?.width ?? 0) / 2;\n const y = position.y - (node.measured?.height ?? 0) / 2;\n\n return { ...node, position: { x, y } };\n }),\n edges,\n };\n};\n\nconst createFlowNode = (nodeData: Partial<Node>): Node => {\n const nodeId = nodeData.id || getRandomStr();\n return {\n id: nodeId,\n type: nodeData.type,\n position: { x: 0, y: 0 },\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n selectable: nodeData.type === NODE_TYPE.START_NODE ? false : true,\n data: {\n ...nodeData,\n id: nodeId,\n },\n };\n};\n\n/** 创建边 */\nconst createFlowEdge = (source: string, target: string, sourceHandle = OUTPUT_HANDLE_ID) => {\n return {\n id: `${source}_${target}`,\n source,\n sourceHandle,\n target,\n targetHandle: INPUT_HANDLE_ID,\n };\n};\n\n/** 将 json schema 转换为 react-flow 节点和边信息 */\nexport const parseActionLogicToNodeList = (value: TActionLogicItem) => {\n const nodes: Node[] = [\n createFlowNode({\n id: NODE_TYPE.START_NODE,\n type: NODE_TYPE.START_NODE,\n }),\n ];\n const edges: Edge[] = [];\n\n if (!value?.handler?.length) {\n return { nodes: nodes, edges: edges };\n }\n\n const processNodes = (\n items: TLogicItemHandlerFlow,\n options?: {\n /**\n * 用于标记是从那种类型的 output flag id 导出的 flow\n */\n sourceHandler: string;\n }\n ) => {\n items.forEach((item) => {\n const currentNode = createFlowNode(item);\n nodes.push(currentNode);\n if (item.next) {\n edges.push(createFlowEdge(item.id, String(item.next), options?.sourceHandler));\n }\n\n if (item.type === 'REQUEST_API') {\n // 处理成功分支节点\n if (item.afterSuccessResponse?.length) {\n edges.push(createFlowEdge(item.id, String(item.afterSuccessResponse[0].id)));\n processNodes(item.afterSuccessResponse);\n }\n\n // 处理失败分支节点\n if (item.afterFailedResponse?.length) {\n edges.push(createFlowEdge(item.id, String(item.afterFailedResponse[0].id), REQUEST_API_FAILED_HANDLE_ID));\n\n processNodes(item.afterFailedResponse, {\n sourceHandler: REQUEST_API_FAILED_HANDLE_ID,\n });\n }\n }\n });\n };\n\n const nextItem = value.handler[0];\n edges.push(createFlowEdge(NODE_TYPE.START_NODE, nextItem.id));\n\n processNodes(value.handler);\n return { nodes, edges };\n};\n\n/** 将节点格式化json schema */\nexport const revertNodeToActionLogic = (params: { nodes: Node[]; edges: Edge[] }): TActionLogicItem => {\n const { nodes, edges } = params;\n const result: TActionLogicItem = {\n type: 'ACTION',\n handler: [],\n };\n\n // 找到起始节点\n const startNode = nodes.find((node) => node.type === NODE_TYPE.START_NODE);\n if (!startNode) return result;\n const nodeMap = new Map(nodes.map((node) => [node.id, node]));\n const visited = new Set<string>();\n\n const traverseNodes = (currentNodeId: string) => {\n if (visited.has(currentNodeId)) return [];\n visited.add(currentNodeId);\n\n const currentNode = nodeMap.get(currentNodeId);\n if (!currentNode) return [];\n\n const handlers = [];\n const nodeData: any = { ...currentNode.data, id: currentNodeId };\n\n if (currentNode.type === 'REQUEST_API') {\n // 获取成功分支节点\n const successTargets = edges\n .filter((e) => e.source === currentNodeId && e.sourceHandle === OUTPUT_HANDLE_ID)\n .map((e) => traverseNodes(e.target))\n .flat();\n\n // 获取失败分支节点\n const failedTargets = edges\n .filter((e) => e.source === currentNodeId && e.sourceHandle === REQUEST_API_FAILED_HANDLE_ID)\n .map((e) => traverseNodes(e.target))\n .flat();\n\n nodeData.afterSuccessResponse = successTargets;\n nodeData.afterFailedResponse = failedTargets;\n handlers.push(nodeData);\n\n return handlers;\n }\n\n handlers.push(nodeData);\n\n // 获取下一个主流程节点, 理论上只有能一个, 分叉逻辑需要使用特殊节点处理\n const nextEdges = edges.filter((e) => e.source === currentNodeId && e.sourceHandle === OUTPUT_HANDLE_ID);\n if (nextEdges.length > 1) {\n message.error('不允许存在一个节点连接多个节点');\n throw new Error('不允许存在一个节点连接多个节点');\n }\n if (nextEdges.length !== 0) {\n /** 理论上只会有一个元素 */\n nextEdges.forEach((edge) => {\n const nextHandlers = traverseNodes(edge.target);\n handlers.push(...nextHandlers);\n nodeData.next = nextHandlers[0]?.id ?? null;\n });\n }\n\n return handlers;\n };\n const handler = traverseNodes(startNode.id);\n // 移除 start node\n handler.shift();\n result.handler = handler;\n return result;\n};\n\n/** 通用的 flow action 画布中的 setter 配置 */\nexport const CommonDynamicValueSetter: SetterType[] = [\n 'StringSetter',\n 'NumberSetter',\n 'ExpressionSetter',\n 'JSONSetter',\n {\n componentName: 'FunctionSetter',\n props: {\n mode: 'inline',\n minimap: false,\n lineNumber: false,\n containerStyle: {\n width: '500px',\n height: '250px',\n },\n },\n },\n];\n\nexport const UseNodeHasConnected = function (data: any, handleId: string) {\n const reactFlowInstance = useReactFlow();\n const edges = reactFlowInstance.getEdges();\n return edges.some((edge) => edge.source === String(data.id) && (edge.sourceHandle || OUTPUT_HANDLE_ID) === handleId);\n};\n\nexport const getNewNodePosInfo = function (currentNode: Node, newNodeData: any, sourceHandle?: string) {\n // 计算新节点位置\n const newNodePosition = {\n x: currentNode.position.x,\n y: currentNode.position.y + (currentNode.measured?.height ?? 0) + 150,\n };\n\n // 创建新节点\n const newNode = {\n id: newNodeData.id,\n type: newNodeData.type,\n position: newNodePosition,\n /** 必须 */\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n data: {\n ...newNodeData,\n },\n };\n\n // 创建连线\n const newEdge = {\n id: `${currentNode.data.id}_${newNode.id}`,\n source: String(currentNode.data.id),\n sourceHandle: sourceHandle ?? OUTPUT_HANDLE_ID,\n target: newNode.id,\n targetHandle: INPUT_HANDLE_ID,\n };\n\n return {\n newEdge,\n newNode,\n };\n};\n","import {\n addEdge,\n Background,\n Controls,\n MiniMap,\n OnConnect,\n ReactFlow,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useReactFlow,\n Node,\n} from '@xyflow/react';\nimport '@xyflow/react/dist/style.css';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { TActionLogicItem } from '@chamn/model';\nimport { calculateElementLayout, parseActionLogicToNodeList, revertNodeToActionLogic } from './util';\nimport { NODE_MAP, NODE_TYPE } from './node';\nimport { CSetterProps } from '../type';\nimport { REACT_FLOW_DRAG_CLASS_NAME } from './config';\nimport { ActionFlowContext } from './context';\nimport { Button } from 'antd';\nimport { MoveableModal } from '@/component/MoveableModal';\nimport { HotKeysPluginInstance } from '@/plugins/Hotkeys/type';\n\nexport type TActionFlowSetterCore = CSetterProps<{\n value?: TActionLogicItem;\n children?: React.ReactNode;\n}>;\n\nexport const ActionFlowSetterCore = (props: TActionFlowSetterCore) => {\n const { fitView } = useReactFlow();\n const [flowMount, setFlowMount] = useState(false);\n const [nodes, setNodes, onNodesChange] = useNodesState<any>([\n {\n id: NODE_TYPE.START_NODE,\n data: { id: NODE_TYPE.START_NODE },\n position: { x: 0, y: 0 },\n type: NODE_TYPE.START_NODE,\n dragHandle: `.${REACT_FLOW_DRAG_CLASS_NAME}`,\n selectable: false,\n },\n ]);\n const [edges, setEdges, onEdgesChange] = useEdgesState<any>([]);\n\n const latesEdgesRef = useRef<any[]>([]);\n latesEdgesRef.current = edges;\n\n const onConnect = useCallback<OnConnect>((params) => setEdges((eds) => addEdge({ ...params }, eds)), [setEdges]);\n\n const latestNodeRef = useRef<Node[]>([]);\n latestNodeRef.current = nodes;\n\n const [dataReady, setDataReady] = useState(false);\n\n /** 重新布局 */\n const layoutGraph = useCallback(\n (options?: { fitView: boolean }) => {\n const layoutInfo = calculateElementLayout(latestNodeRef.current, edges, { direction: 'TB' });\n setNodes([...layoutInfo.nodes]);\n setEdges([...layoutInfo.edges]);\n setTimeout(() => {\n setFlowMount(true);\n if (options?.fitView !== false) {\n fitView({});\n }\n });\n },\n [edges, fitView, setEdges, setNodes]\n );\n\n useEffect(() => {\n // 将 value 转换为 nodes 以及 edges\n const { nodes, edges } = parseActionLogicToNodeList(props.value);\n setNodes(nodes);\n setEdges(edges);\n setTimeout(() => {\n setDataReady(true);\n }, 300);\n }, [props.value, setEdges, setNodes]);\n\n const saveData = useCallback(() => {\n setTimeout(() => {\n const newSchemaValue = revertNodeToActionLogic({ nodes: latestNodeRef.current, edges: latesEdgesRef.current });\n props.onValueChange?.(newSchemaValue);\n });\n }, [props]);\n\n return (\n <ActionFlowContext.Provider\n value={{\n pluginCtx: props.setterContext?.pluginCtx,\n pageModel: props.setterContext?.pluginCtx?.pageModel,\n onDataChange: saveData,\n nodeModel: props.setterContext.nodeModel,\n }}\n >\n <div\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n position: 'relative',\n }}\n >\n <div\n style={{\n flex: 1,\n position: 'relative',\n }}\n >\n <Button\n style={{\n position: 'absolute',\n top: '10px',\n right: '20px',\n zIndex: 99,\n }}\n onClick={() => layoutGraph({ fitView: false })}\n >\n Reset Layout\n </Button>\n\n {!flowMount && (\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'white',\n zIndex: 999,\n }}\n ></div>\n )}\n {dataReady && (\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={(changes) => {\n onNodesChange(changes);\n saveData();\n }}\n onEdgesChange={(changes) => {\n onEdgesChange(changes);\n saveData();\n }}\n onConnect={(connection) => {\n onConnect(connection);\n saveData();\n }}\n defaultEdgeOptions={{\n type: 'smoothstep',\n }}\n minZoom={0.2}\n maxZoom={1}\n onInit={() => {\n layoutGraph();\n }}\n fitView\n nodeTypes={NODE_MAP}\n >\n <Background />\n <Controls />\n <MiniMap />\n </ReactFlow>\n )}\n </div>\n </div>\n </ActionFlowContext.Provider>\n );\n};\n\nexport const ActionFlowSetter = (props: TActionFlowSetterCore) => {\n const [open, setOpen] = useState(false);\n\n const newValueRef = useRef(props.value);\n\n const disableLowcodeHotKey = async (status: boolean) => {\n // 启用 lowcode 编辑器热键\n const hotkey = await props.setterContext?.pluginCtx?.pluginManager?.get<HotKeysPluginInstance>('Hotkeys');\n hotkey?.export.disable(status);\n };\n\n const triggerView = props.children || (\n <Button\n size=\"small\"\n style={{\n marginTop: '5px',\n width: '100%',\n color: '#676767',\n fontSize: '12px',\n }}\n >\n Edit Flow\n </Button>\n );\n\n return (\n <>\n <div\n onClick={async () => {\n // 禁用 lowcode 编辑器热键\n await disableLowcodeHotKey(true);\n setOpen(true);\n }}\n >\n {triggerView}\n </div>\n\n <MoveableModal\n destroyOnClose\n open={open}\n centered\n title=\"Edit Flow\"\n width=\"calc(100vw - 200px)\"\n onCancel={() => {\n setOpen(false);\n disableLowcodeHotKey(false);\n }}\n onOk={async () => {\n props.onValueChange?.(newValueRef.current);\n await disableLowcodeHotKey(false);\n setOpen(false);\n }}\n >\n <div\n style={{\n width: '100%',\n height: 'calc(100vh - 200px)',\n }}\n >\n <ReactFlowProvider>\n <ActionFlowSetterCore\n {...props}\n onValueChange={(newVal) => {\n newValueRef.current = newVal;\n }}\n ></ActionFlowSetterCore>\n </ReactFlowProvider>\n </div>\n </MoveableModal>\n </>\n );\n};\n\nActionFlowSetter.setterName = '逻辑流设置器';\n","import { ActionFlowSetter } from './ActionFlowSetter';\nimport { CSetter } from './type';\n\n/** 需要单独导出避免循环以来,因为 ActionFlowSetter 使用了大量内置 setter */\nexport const BUILD_IN_ADVANCE_SETTER_MAP = {\n ActionFlowSetter,\n} as Record<string, CSetter>;\n","import { useEffect, useRef } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { BUILD_IN_ADVANCE_SETTER_MAP } from '@/component/CustomSchemaForm/components/Setters/AdvanceSetterList';\n\nimport styles from './style.module.scss';\nimport { CustomSchemaForm, CustomSchemaFormInstance, CustomSchemaFormProps } from '../../component/CustomSchemaForm';\n\nexport const PropertyPanel = (props: { node: CNode | CRootNode | null; pluginCtx: CPluginCtx }) => {\n const { node } = props;\n const properties = node?.material?.value.props || [];\n const formRef = useRef<CustomSchemaFormInstance>(null);\n\n useEffect(() => {\n const handel = () => {\n const newVal = node?.getPlainProps?.() || {};\n formRef.current?.setFields(newVal);\n };\n handel();\n node?.emitter.on('onNodeChange', handel);\n return () => {\n node?.emitter.off('onNodeChange', handel);\n };\n }, [node]);\n\n const value = node?.getPlainProps?.() || {};\n\n const onValueChange: CustomSchemaFormProps['onValueChange'] = (val) => {\n node?.updateValue({\n props: val,\n });\n };\n\n const onSetterChange: CustomSchemaFormProps['onSetterChange'] = (keyPaths, setterName) => {\n if (!node) {\n return;\n }\n node.value.configure = node.value.configure || {};\n node.value.configure.propsSetter = node.value.configure.propsSetter || {};\n node.value.configure.propsSetter[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n const customSetterMap = props.pluginCtx.config?.customPropertySetterMap;\n\n return (\n <div className={styles.CFromRenderBox}>\n <CustomSchemaForm\n pluginCtx={props.pluginCtx}\n key={node?.id}\n nodeId={node?.id}\n defaultSetterConfig={node?.value.configure.propsSetter || {}}\n onSetterChange={onSetterChange}\n properties={properties}\n initialValue={value}\n ref={formRef}\n customSetterMap={{\n ...BUILD_IN_ADVANCE_SETTER_MAP,\n ...customSetterMap,\n }}\n onValueChange={onValueChange}\n />\n </div>\n );\n};\n","import { CRightPanelItem } from '../RightPanel/view';\nimport { PropertyPanel } from './view';\n\nexport const PropertyPanelConfig: CRightPanelItem = {\n key: 'Property',\n name: 'Property',\n view: ({ node, pluginCtx }) => <PropertyPanel node={node} pluginCtx={pluginCtx} />,\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.property !== false;\n },\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { useEffect, useRef } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CRightPanelItem } from '../RightPanel/view';\nimport { MonacoEditor, MonacoEditorInstance } from '../../component/MonacoEditor';\n\nexport type ComponentStatePanelProps = {\n node: CNode | CRootNode | null;\n pluginCtx: CPluginCtx;\n};\n\nexport const ComponentStatePanel = (props: ComponentStatePanelProps) => {\n const node = props.node!;\n\n const nodeState = node.value.state || {};\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n useEffect(() => {\n const currentState = node.value.state || {};\n editorRef?.current?.setValue(JSON.stringify(currentState, null, 2));\n }, [node]);\n\n const onValueChange = (newValStr?: string) => {\n try {\n const newVal = JSON.parse(newValStr || '{}');\n node.value.state = newVal;\n node.updateValue();\n } catch (e) {\n console.warn(e);\n }\n };\n\n return (\n <>\n <MonacoEditor\n initialValue={JSON.stringify(nodeState, null, 2)}\n language={'json'}\n options={{\n automaticLayout: true,\n // lineDecorationsWidth: 0,\n tabSize: 2,\n minimap: { enabled: false },\n quickSuggestions: false,\n // lineNumbers: 'off',\n suggestOnTriggerCharacters: false,\n folding: false,\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n onChange={onValueChange}\n />\n </>\n );\n};\n\nexport const ComponentStatePanelConfig: CRightPanelItem = {\n key: 'State',\n name: 'State',\n view: ({ node, pluginCtx }) => {\n if (!node) {\n return <></>;\n }\n return <ComponentStatePanel node={node} pluginCtx={pluginCtx} />;\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.state !== false;\n },\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { useEffect, useMemo, useRef } from 'react';\nimport { CMaterialPropsType, CNode, CRootNode } from '@chamn/model';\nimport { CustomSchemaForm, CustomSchemaFormInstance, CustomSchemaFormProps } from '../../component/CustomSchemaForm';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CRightPanelItem } from '../RightPanel/view';\nimport styles from './style.module.scss';\n\nexport type AdvancePanelProps = {\n node: CNode | CRootNode | null;\n pluginCtx: CPluginCtx;\n};\n\nconst properties: CMaterialPropsType = [\n {\n name: 'id',\n title: {\n label: 'id',\n tip: 'node unique id',\n },\n valueType: 'string',\n setters: [\n {\n componentName: 'StringSetter',\n props: {\n disabled: true,\n variant: 'borderless',\n },\n },\n ],\n },\n {\n name: 'condition',\n title: {\n label: 'Render',\n tip: 'controller component render',\n },\n valueType: 'boolean',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'loop',\n title: 'loop render',\n valueType: 'object',\n setters: [\n {\n componentName: 'ShapeSetter',\n props: {\n collapse: {\n open: true,\n },\n elements: [\n {\n name: 'open',\n title: 'open',\n valueType: 'boolean',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'data',\n title: 'data',\n valueType: 'array',\n setters: [\n {\n componentName: 'ArraySetter',\n initialValue: [],\n props: {\n item: {\n setters: ['JSONSetter', 'ExpressionSetter'],\n initialValue: {},\n },\n },\n },\n 'JSONSetter',\n 'ExpressionSetter',\n ],\n },\n {\n name: 'forName',\n title: {\n label: 'name',\n tip: 'loop element name',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'forIndex',\n title: {\n label: 'index',\n tip: 'loop element index',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'key',\n title: {\n label: 'key',\n tip: 'loop element key',\n },\n valueType: 'expression',\n setters: ['ExpressionSetter'],\n },\n {\n name: 'name',\n title: {\n label: 'variable \\n name',\n tip: 'loop variable name',\n },\n valueType: 'string',\n setters: [\n {\n componentName: 'StringSetter',\n props: {\n prefix: 'loopData',\n },\n },\n ],\n },\n ],\n },\n initialValue: {\n open: false,\n data: [],\n },\n },\n ],\n },\n {\n name: 'refId',\n title: {\n label: 'refId',\n tip: 'unique node flag',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'nodeName',\n title: {\n label: (\n <>\n node <br></br> name\n </>\n ) as any,\n tip: 'alias for node',\n },\n valueType: 'string',\n setters: ['StringSetter'],\n },\n];\n\nexport const AdvancePanel = (props: AdvancePanelProps) => {\n const { node } = props;\n\n const innerProperties = useMemo(() => {\n let newList = properties;\n\n // 如果元素是容器不允许 loop, 或者主动指定不然 loop\n const canLoop =\n !node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.loop === false ||\n !node?.material?.value.isContainer;\n if (!canLoop) {\n newList = newList.filter((el) => (el as any)?.name !== 'loop');\n }\n\n // 如果元素是容器不允许 canRender, 或者主动指定不然 canRender\n const canRender = !node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.render === false;\n\n if (!canRender) {\n newList = newList.filter((el) => (el as any)?.name !== 'condition');\n }\n\n return newList;\n }, [\n node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.loop,\n node?.material?.value.advanceCustom?.rightPanel?.advanceOptions?.render,\n node?.material?.value.isContainer,\n ]);\n\n const onSetterChange: CustomSchemaFormProps['onSetterChange'] = (keyPaths, setterName) => {\n if (!node) {\n return;\n }\n node.value.configure = node.value.configure || {};\n node.value.configure.advanceSetter = node.value.configure.advanceSetter || {};\n node.value.configure.advanceSetter[keyPaths.join('.')] = {\n name: keyPaths.join('.'),\n setter: setterName,\n };\n };\n\n const formRef = useRef<CustomSchemaFormInstance>(null);\n\n useEffect(() => {\n const loopObj = node?.value.loop;\n const newValue = {\n id: node?.id,\n condition: node?.value.condition ?? true,\n loop: {\n open: loopObj?.open || false,\n data: loopObj?.data || [],\n forName: loopObj?.forName || 'item',\n forIndex: loopObj?.forIndex || 'index',\n key: loopObj?.key || '',\n name: loopObj?.name || '',\n },\n refId: node?.value.refId,\n nodeName: node?.value.nodeName,\n };\n formRef.current?.setFields(newValue);\n }, [node]);\n\n const onValueChange = (newVal: { refId: string; loop: any; condition: any; nodeName: any }) => {\n if (!node) {\n return;\n }\n node.value.loop = newVal.loop;\n node.value.condition = newVal.condition;\n node.value.refId = newVal.refId;\n node.value.nodeName = newVal.nodeName;\n node.updateValue();\n };\n if (!node) {\n return <></>;\n }\n\n return (\n <div className={styles.advanceBox}>\n <CustomSchemaForm\n nodeId={props.node?.id}\n key={node.id}\n pluginCtx={props.pluginCtx}\n defaultSetterConfig={node.value.configure?.advanceSetter || {}}\n onSetterChange={onSetterChange}\n properties={innerProperties}\n initialValue={{}}\n ref={formRef}\n onValueChange={onValueChange}\n />\n </div>\n );\n};\n\nexport const AdvancePanelConfig: CRightPanelItem = {\n key: 'Advance',\n name: 'Advance',\n view: ({ node, pluginCtx }) => {\n if (!node) {\n return <></>;\n }\n return <AdvancePanel node={node} pluginCtx={pluginCtx} />;\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.advance !== false;\n },\n};\n","const CSSSourceInfo = {\n cssColors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n },\n cssKeyValue: {\n 'align-content': {\n values: ['center', 'flex-end', 'flex-start', 'space-around', 'space-between', 'stretch'],\n },\n 'align-items': {\n values: ['baseline', 'center', 'flex-end', 'flex-start', 'stretch'],\n },\n 'align-self': {\n values: [\n 'auto',\n 'normal',\n 'self-start',\n 'self-end',\n 'baseline',\n 'center',\n 'start',\n 'end',\n 'flex-end',\n 'flex-start',\n 'safe',\n 'stretch',\n 'unsafe',\n ],\n },\n all: { values: [] },\n animation: { values: [] },\n 'animation-delay': { values: [] },\n 'animation-direction': {\n values: ['alternate', 'alternate-reverse', 'normal', 'reverse'],\n },\n 'animation-duration': { values: [] },\n 'animation-fill-mode': {\n values: ['backwards', 'both', 'forwards', 'none'],\n },\n 'animation-iteration-count': { values: ['infinite'] },\n 'animation-name': { values: ['none'] },\n 'animation-play-state': { values: ['paused', 'running'] },\n 'animation-timing-function': {\n values: ['cubic-bezier()', 'ease', 'ease-in', 'ease-in-out', 'ease-out', 'linear', 'step-end', 'step-start', 'steps()'],\n },\n 'backface-visibility': { values: ['hidden', 'visible'] },\n background: { values: [], type: 'color' },\n 'background-attachment': { values: ['fixed', 'local', 'scroll'] },\n 'background-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'background-clip': { values: ['border-box', 'content-box', 'padding-box'] },\n 'background-color': { values: [], type: 'color' },\n 'background-image': {\n values: ['image()', 'linear-gradient()', 'radial-gradient()', 'repeating-linear-gradient()', 'repeating-radial-gradient()', 'url()'],\n },\n 'background-origin': {\n values: ['border-box', 'content-box', 'padding-box'],\n },\n 'background-position': {\n values: ['left', 'center', 'right', 'bottom', 'top'],\n },\n 'background-repeat': {\n values: ['no-repeat', 'repeat', 'repeat-x', 'repeat-y', 'round', 'space'],\n },\n 'background-size': { values: ['auto', 'contain', 'cover'] },\n border: { values: [] },\n 'border-collapse': { values: ['collapse', 'separate'] },\n 'border-color': { values: [], type: 'color' },\n 'border-spacing': { values: [] },\n 'border-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-bottom': { values: [] },\n 'border-bottom-color': { values: [], type: 'color' },\n 'border-bottom-left-radius': { values: [] },\n 'border-bottom-right-radius': { values: [] },\n 'border-bottom-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-bottom-width': { values: ['medium', 'thin', 'thick'] },\n 'border-image': { values: ['url()'] },\n 'border-image-outset': { values: [] },\n 'border-image-slice': { values: [] },\n 'border-image-source': { values: [] },\n 'border-image-repeat': { values: ['repeat', 'round', 'space', 'stretch'] },\n 'border-image-width': { values: ['auto'] },\n 'border-left': { values: [] },\n 'border-left-color': { values: [], type: 'color' },\n 'border-left-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-left-width': { values: ['medium', 'thin', 'thick'] },\n 'border-radius': { values: [] },\n 'border-right': { values: [] },\n 'border-right-color': { values: [], type: 'color' },\n 'border-right-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-right-width': { values: ['medium', 'thin', 'thick'] },\n 'border-top': { values: [] },\n 'border-top-color': { values: [], type: 'color' },\n 'border-top-left-radius': { values: [] },\n 'border-top-right-radius': { values: [] },\n 'border-top-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'border-top-width': { values: ['medium', 'thin', 'thick'] },\n 'border-width': { values: ['medium', 'thin', 'thick'] },\n 'box-decoration-break': { values: ['clone', 'slice'] },\n 'box-shadow': { values: ['none'] },\n 'box-sizing': { values: ['border-box', 'content-box'] },\n bottom: { values: ['auto'] },\n 'break-after': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'break-before': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'caption-side': { values: ['bottom', 'top'] },\n 'caret-color': { values: ['auto'], type: 'color' },\n clear: { values: ['both', 'left', 'none', 'right'] },\n clip: { values: ['auto'] },\n color: { values: [], type: 'color' },\n columns: { values: [] },\n 'column-count': { values: [] },\n 'column-fill': { values: ['auto', 'balance'] },\n 'column-gap': { values: ['normal'] },\n 'column-rule': { values: [] },\n 'column-rule-color': { values: [], type: 'color' },\n 'column-rule-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'column-rule-width': { values: ['medium', 'thin', 'thick'] },\n 'column-span': { values: ['all', 'none'] },\n 'column-width': { values: ['auto'] },\n content: {\n values: ['attr()', 'close-quote', 'no-close-quote', 'no-open-quote', 'normal', 'none', 'open-quote'],\n },\n 'counter-increment': { values: ['none'] },\n 'counter-reset': { values: ['none'] },\n cursor: {\n values: [\n 'alias',\n 'all-scroll',\n 'auto',\n 'cell',\n 'col-resize',\n 'context-menu',\n 'copy',\n 'crosshair',\n 'default',\n 'e-resize',\n 'ew-resize',\n 'grab',\n 'grabbing',\n 'help',\n 'move',\n 'n-resize',\n 'ne-resize',\n 'nesw-resize',\n 'no-drop',\n 'none',\n 'not-allowed',\n 'ns-resize',\n 'nw-resize',\n 'nwse-resize',\n 'pointer',\n 'progress',\n 'row-resize',\n 's-resize',\n 'se-resize',\n 'sw-resize',\n 'text',\n 'vertical-text',\n 'w-resize',\n 'wait',\n 'zoom-in',\n 'zoom-out',\n ],\n },\n direction: { values: ['ltr', 'rtl'] },\n display: {\n values: [\n 'block',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inline',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'inline-table',\n 'list-item',\n 'none',\n 'run-in',\n 'subgrid',\n 'table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row',\n 'table-row-group',\n ],\n },\n 'empty-cells': { values: ['hide', 'show'] },\n fill: { values: [] },\n filter: {\n values: [\n 'blur()',\n 'brightness()',\n 'contrast()',\n 'custom()',\n 'drop-shadow()',\n 'grayscale()',\n 'hue-rotate()',\n 'invert()',\n 'none',\n 'opacity()',\n 'sepia()',\n 'saturate()',\n 'url()',\n ],\n },\n flex: { values: ['auto', 'none'] },\n 'flex-basis': { values: ['auto'] },\n 'flex-direction': {\n values: ['column', 'column-reverse', 'row', 'row-reverse'],\n },\n 'flex-flow': {\n values: ['column', 'column-reverse', 'nowrap', 'row', 'row-reverse', 'wrap', 'wrap-reverse'],\n },\n 'flex-grow': { values: [] },\n 'flex-shrink': { values: [] },\n 'flex-wrap': { values: ['nowrap', 'wrap', 'wrap-reverse'] },\n float: { values: ['left', 'right', 'none', 'inline-start', 'inline-end'] },\n 'flow-into': { values: ['none'], type: 'named-flow' },\n 'flow-from': { values: ['none'], type: 'named-flow' },\n font: { values: [] },\n 'font-display': {\n values: ['auto', 'block', 'swap', 'fallback', 'optional'],\n },\n 'font-family': {\n values: ['auto', 'cursive', 'fantasy', 'monospace', 'sans-serif', 'serif'],\n },\n 'font-feature-settings': { values: ['normal'] },\n 'font-kerning': { values: ['auto', 'none', 'normal'] },\n 'font-language-override': { values: ['normal'] },\n 'font-size': {\n values: ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', 'xxx-large', 'larger', 'smaller'],\n },\n 'font-size-adjust': { values: ['auto', 'none'] },\n 'font-stretch': {\n values: [\n 'condensed',\n 'expanded',\n 'extra-condensed',\n 'extra-expanded',\n 'normal',\n 'semi-condensed',\n 'semi-expanded',\n 'ultra-condensed',\n 'ultra-expanded',\n ],\n },\n 'font-style': { values: ['italic', 'normal', 'oblique'] },\n 'font-synthesis': { values: ['none', 'style', 'weight'] },\n 'font-variant': { values: ['normal', 'small-caps'] },\n 'font-variant-alternates': { values: ['normal'] },\n 'font-variant-caps': {\n values: ['normal', 'small-caps', 'all-small-caps', 'petite-caps', 'all-petite-caps', 'unicase', 'titling-caps'],\n },\n 'font-variant-east-asian': { values: ['normal'] },\n 'font-variant-ligatures': { values: ['normal', 'none'] },\n 'font-variant-numeric': { values: ['normal'] },\n 'font-variant-position': { values: ['normal', 'sub', 'super'] },\n 'font-weight': {\n values: ['bold', 'bolder', 'lighter', 'normal', '100', '200', '300', '400', '500', '600', '700', '800', '900'],\n },\n gap: { values: ['revert-layer'] },\n grid: { values: [] },\n 'grid-area': { values: [] },\n 'grid-auto-columns': { values: [] },\n 'grid-auto-flow': { values: ['row', 'column', 'dense'] },\n 'grid-auto-rows': { values: [] },\n 'grid-column': { values: ['auto'] },\n 'grid-column-end': { values: [] },\n 'grid-column-gap': { values: [] },\n 'grid-column-start': { values: [] },\n 'grid-gap': { values: [] },\n 'grid-row': { values: ['auto'] },\n 'grid-row-end': { values: [] },\n 'grid-row-start': { values: [] },\n 'grid-row-gap': { values: [] },\n 'grid-template': { values: ['none'] },\n 'grid-template-areas': { values: [] },\n 'grid-template-columns': { values: ['auto'] },\n 'grid-template-rows': { values: ['auto'] },\n 'hanging-punctuation': {\n values: ['allow-end', 'first', 'force-end', 'last', 'none'],\n },\n height: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n hyphens: { values: ['auto', 'manual', 'none'] },\n 'image-orientation': { values: [] },\n 'image-resolution': { values: ['from-image', 'snap'] },\n isolation: { values: ['auto', 'isolate'] },\n 'justify-content': {\n values: ['center', 'flex-end', 'flex-start', 'space-around', 'space-between'],\n },\n 'justify-items': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n 'legacy',\n ],\n },\n 'justify-self': {\n values: [\n 'auto',\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first',\n 'last',\n 'safe',\n 'unsafe',\n ],\n },\n left: { values: ['auto'] },\n 'letter-spacing': { values: ['normal'] },\n 'line-height': { values: ['normal'] },\n 'list-style': {\n values: [\n 'none',\n 'url()',\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'inside',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'outside',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n 'list-style-image': { values: ['none', 'url()'] },\n 'list-style-position': { values: ['inside', 'outside'] },\n 'list-style-type': {\n values: [\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'georgian',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'none',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman',\n ],\n },\n margin: { values: ['auto'] },\n 'margin-bottom': { values: ['auto'] },\n 'margin-left': { values: ['auto'] },\n 'margin-right': { values: ['auto'] },\n 'margin-top': { values: ['auto'] },\n 'max-height': { values: ['none'] },\n 'max-width': { values: ['none'] },\n 'min-height': { values: [] },\n 'min-width': { values: [] },\n 'mix-blend-mode': {\n values: [\n 'color',\n 'color-burn',\n 'color-dodge',\n 'darken',\n 'difference',\n 'exclusion',\n 'hard-light',\n 'hue',\n 'lighten',\n 'luminosity',\n 'multiply',\n 'normal',\n 'overlay',\n 'saturation',\n 'screen',\n 'soft-light',\n ],\n },\n 'object-fit': {\n values: ['contain', 'cover', 'fill', 'none', 'scale-down'],\n },\n 'object-position': { values: ['left', 'center', 'right', 'bottom', 'top'] },\n opacity: { values: [] },\n order: { values: [] },\n orphans: { values: [] },\n outline: { values: [] },\n 'outline-color': { values: ['invert'], type: 'color' },\n 'outline-offset': { values: [] },\n 'outline-style': {\n values: ['dashed', 'dotted', 'double', 'groove', 'hidden', 'inset', 'none', 'outset', 'ridge', 'solid'],\n },\n 'outline-width': { values: ['medium', 'thin', 'thick'] },\n overflow: { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-x': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-y': { values: ['auto', 'hidden', 'scroll', 'visible'] },\n 'overflow-wrap': { values: ['normal', 'anywhere', 'break-word'] },\n padding: { values: [] },\n 'padding-bottom': { values: [] },\n 'padding-left': { values: [] },\n 'padding-right': { values: [] },\n 'padding-top': { values: [] },\n 'page-break-after': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-before': {\n values: ['always', 'auto', 'avoid', 'left', 'right'],\n },\n 'page-break-inside': { values: ['auto', 'avoid'] },\n perspective: { values: ['none'] },\n 'perspective-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'pointer-events': {\n values: ['all', 'auto', 'fill', 'none', 'painted', 'stroke', 'visible', 'visibleFill', 'visiblePainted', 'visibleStroke'],\n },\n position: { values: ['absolute', 'fixed', 'relative', 'static', 'sticky'] },\n quotes: { values: ['none'] },\n 'region-break-after': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'region-break-before': {\n values: ['always', 'auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'column', 'left', 'page', 'region', 'right'],\n },\n 'region-break-inside': {\n values: ['auto', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region'],\n },\n 'region-fragment': { values: ['auto', 'break'] },\n resize: { values: ['both', 'horizontal', 'none', 'vertical'] },\n right: { values: ['auto'] },\n 'scroll-behavior': { values: ['auto', 'smooth'] },\n 'scroll-snap-type': {\n values: ['none', 'x', 'y', 'block', 'inline', 'both', 'mandatory', 'proximity'],\n },\n src: { values: ['url()'] },\n 'shape-image-threshold': { values: [] },\n 'shape-inside': {\n values: ['auto', 'circle()', 'ellipse()', 'outside-shape', 'polygon()', 'rectangle()'],\n },\n 'shape-margin': { values: [] },\n 'shape-outside': {\n values: [\n 'none',\n 'circle()',\n 'ellipse()',\n 'polygon()',\n 'inset()',\n 'margin-box',\n 'border-box',\n 'padding-box',\n 'content-box',\n 'url()',\n 'image()',\n 'linear-gradient()',\n 'radial-gradient()',\n 'repeating-linear-gradient()',\n 'repeating-radial-gradient()',\n ],\n },\n 'tab-size': { values: [] },\n 'table-layout': { values: ['auto', 'fixed'] },\n 'text-align': {\n values: ['start', 'end', 'center', 'left', 'justify', 'right', 'match-parent', 'justify-all'],\n },\n 'text-align-last': { values: ['center', 'left', 'justify', 'right'] },\n 'text-decoration': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-color': { values: [], type: 'color' },\n 'text-decoration-line': {\n values: ['line-through', 'none', 'overline', 'underline'],\n },\n 'text-decoration-skip': {\n values: ['edges', 'ink', 'none', 'objects', 'spaces'],\n },\n 'text-decoration-style': {\n values: ['dashed', 'dotted', 'double', 'solid', 'wavy'],\n },\n 'text-emphasis': { values: [] },\n 'text-emphasis-color': { values: [], type: 'color' },\n 'text-emphasis-position': { values: ['above', 'below', 'left', 'right'] },\n 'text-emphasis-style': {\n values: ['circle', 'dot', 'double-circle', 'filled', 'none', 'open', 'sesame', 'triangle'],\n },\n 'text-indent': { values: [] },\n 'text-justify': {\n values: ['auto', 'none', 'inter-word', 'inter-character'],\n },\n 'text-overflow': { values: ['clip', 'ellipsis'] },\n 'text-shadow': { values: [] },\n 'text-rendering': {\n values: ['auto', 'geometricPrecision', 'optimizeLegibility', 'optimizeSpeed'],\n },\n 'text-transform': {\n values: ['capitalize', 'full-width', 'lowercase', 'none', 'uppercase'],\n },\n 'text-underline-position': {\n values: ['alphabetic', 'auto', 'below', 'left', 'right'],\n },\n top: { values: ['auto'] },\n transform: {\n values: [\n 'matrix()',\n 'matrix3d()',\n 'none',\n 'perspective()',\n 'rotate()',\n 'rotate3d()',\n 'rotateX()',\n 'rotateY()',\n 'rotateZ()',\n 'scale()',\n 'scale3d()',\n 'scaleX()',\n 'scaleY()',\n 'scaleZ()',\n 'skewX()',\n 'skewY()',\n 'translate()',\n 'translate3d()',\n 'translateX()',\n 'translateY()',\n 'translateZ()',\n ],\n },\n 'transform-origin': {\n values: ['bottom', 'center', 'left', 'right', 'top'],\n },\n 'transform-style': { values: ['flat', 'preserve-3d'] },\n transition: { values: [] },\n 'transition-delay': { values: [] },\n 'transition-duration': { values: [] },\n 'transition-property': { values: ['all', 'none'] },\n 'transition-timing-function': {\n values: ['cubic-bezier()', 'ease', 'ease-in', 'ease-in-out', 'ease-out', 'linear', 'step-end', 'step-start', 'steps()'],\n },\n 'unicode-bidi': { values: ['bidi-override', 'embed', 'normal'] },\n 'unicode-range': { values: [] },\n 'user-select': { values: ['all', 'auto', 'contain', 'none', 'text'] },\n 'vertical-align': {\n values: ['baseline', 'bottom', 'middle', 'sub', 'super', 'text-bottom', 'text-top', 'top'],\n },\n visibility: { values: ['collapse', 'hidden', 'visible'] },\n 'white-space': {\n values: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap'],\n },\n widows: { values: [] },\n width: { values: ['auto', 'max-content', 'min-content', 'fit-content'] },\n 'will-change': {\n values: ['auto', 'contents', 'opacity', 'scroll-position'],\n },\n 'word-break': { values: ['normal', 'break-all', 'keep-all'] },\n 'word-spacing': { values: ['normal'] },\n 'z-index': { values: ['auto'] },\n },\n};\n\nexport const CSSProperties = CSSSourceInfo.cssKeyValue;\n\nexport const CSSColors = CSSSourceInfo.cssColors;\n\nexport type CSSPropertiesKey = keyof typeof CSSProperties;\n\nexport const CSSPropertyList = Object.keys(CSSSourceInfo.cssKeyValue);\n","import React, { useContext } from 'react';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { CSetter } from '@/component';\nimport { CNode, CRootNode } from '@chamn/model';\n\nexport type ContextState = Record<string, any>;\n\nexport type CRightPanelData = {\n /** 存储 field 默认的 setter 类型*/\n defaultSetterConfig: Record<string, { name: string; setter: string }>;\n /** schema 中的全局 setter map 配置*/\n customSetterMap: Record<string, CSetter>;\n pluginCtx?: CPluginCtx;\n /** 当前编辑节点的 id */\n nodeId?: string;\n nodeModel?: CNode | CRootNode;\n};\n\nexport const CRightPanelContext = React.createContext<CRightPanelData>({\n defaultSetterConfig: {},\n customSetterMap: {},\n});\n\nexport const UseCRightPanelContext = () => {\n return useContext(CRightPanelContext);\n};\n","import { AutoComplete, Button, ConfigProvider } from 'antd';\nimport { MinusOutlined, PlusOutlined } from '@ant-design/icons';\nimport { BaseSelectRef } from 'rc-select';\nimport clsx from 'clsx';\nimport { CNodePropsTypeEnum, JSExpressionPropType } from '@chamn/model';\nimport { InputStatus } from 'antd/es/_util/statusUtils';\nimport { CSSPropertyList } from './cssProperties';\nimport { forwardRef, useState, useEffect, useRef, useImperativeHandle } from 'react';\nimport { ExpressionSetter } from '../CustomSchemaForm/components/Setters/ExpressionSetter';\nimport { UseCRightPanelContext } from '@/plugins/RightPanel/context';\nimport styles from './style.module.scss';\n\nconst defaultPropertyOptions = CSSPropertyList.map((el) => {\n return {\n value: el,\n };\n});\n\nexport type InnerSinglePropertyEditorProps = {\n value?: {\n property: string;\n value: JSExpressionPropType | string;\n };\n onValueChange: (value: { property: string; value: JSExpressionPropType | string }) => void;\n onDelete?: () => void;\n onCreate?: (value: { property: string; value: JSExpressionPropType | string }) => {\n errorKey?: string[];\n } | void;\n mod?: 'create' | 'edit';\n};\n\nexport type InnerSinglePropertyEditorRef = {\n reset: () => void;\n};\n\nexport const SinglePropertyEditor = forwardRef<InnerSinglePropertyEditorRef, InnerSinglePropertyEditorProps>(\n function SinglePropertyEditorCore(props, ref) {\n const [keyFormatStatus, setKeyFormatStatus] = useState<InputStatus>('');\n const rightPanelContext = UseCRightPanelContext();\n const { mod = 'create' } = props;\n\n const [innerValue, setInnerVal] = useState<{\n property: string;\n value: JSExpressionPropType | string;\n }>({\n property: props.value?.property || '',\n value: props.value?.value || '',\n });\n\n useEffect(() => {\n if (props.value) {\n setInnerVal(props.value);\n }\n }, [props.value]);\n\n const [propertyOptions, setPropertyOptions] = useState(defaultPropertyOptions);\n\n const onSearch = (searchText: string) => {\n const newOptions = defaultPropertyOptions.filter((el) => el.value.includes(searchText));\n if (!searchText) {\n setPropertyOptions(defaultPropertyOptions);\n } else {\n setPropertyOptions(newOptions);\n }\n };\n\n const updateOuterValue = (newValue: typeof innerValue) => {\n props.onValueChange({\n ...newValue,\n });\n };\n\n const propertyKeyRef = useRef<BaseSelectRef | null>(null);\n\n useImperativeHandle(\n ref,\n () => {\n return {\n reset: () => {\n setInnerVal({\n property: '',\n value: {\n type: CNodePropsTypeEnum.EXPRESSION,\n value: '',\n },\n });\n propertyKeyRef.current?.focus();\n },\n };\n },\n []\n );\n\n /// 创建时\n const innerOnCreate = () => {\n if (innerValue.property === '') {\n setKeyFormatStatus('error');\n return;\n }\n\n setKeyFormatStatus('');\n const res = props.onCreate?.(innerValue);\n if (res?.errorKey?.includes('key')) {\n setKeyFormatStatus('error');\n }\n };\n\n return (\n <>\n <div className={styles.cssFieldBox}>\n <div className={styles.leftBox}>\n <div className={styles.row}>\n <span className={styles.fieldLabel}>Name</span>\n <AutoComplete\n status={keyFormatStatus}\n disabled={mod === 'edit'}\n ref={propertyKeyRef}\n onSearch={onSearch}\n popupMatchSelectWidth={200}\n value={innerValue.property}\n onChange={(val) => {\n setKeyFormatStatus('');\n const newVal = {\n ...innerValue,\n property: val,\n };\n setInnerVal(newVal);\n updateOuterValue(newVal);\n }}\n className={clsx([styles.inputBox])}\n onBlur={() => {\n updateOuterValue(innerValue);\n }}\n placeholder=\"property\"\n options={propertyOptions}\n />\n </div>\n {mod === 'create' && (\n <div>\n <Button\n size=\"small\"\n block\n icon={\n <PlusOutlined\n style={{\n fontSize: '12px',\n display: 'inline-flex',\n }}\n />\n }\n onClick={innerOnCreate}\n ></Button>\n </div>\n )}\n {mod !== 'create' && (\n <div className={styles.row}>\n <span className={styles.fieldLabel}>Value</span>\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div\n style={{\n width: '100%',\n }}\n >\n <ExpressionSetter\n value={innerValue.value as any}\n setterContext={{\n pluginCtx: rightPanelContext.pluginCtx!,\n setCollapseHeaderExt: undefined,\n onSetterChange: function () {},\n keyPaths: [],\n label: '',\n nodeModel: rightPanelContext.nodeModel as any,\n }}\n onValueChange={function (val) {\n const newVal = {\n ...innerValue,\n value: val,\n };\n console.log('newVal', newVal);\n setInnerVal(newVal);\n updateOuterValue(newVal);\n }}\n mode={'modal'}\n />\n </div>\n </ConfigProvider>\n </div>\n )}\n </div>\n <div className={styles.rightBox}>\n <div\n style={{\n height: '30px',\n }}\n >\n {props.onDelete && mod === 'edit' && (\n <Button\n size=\"small\"\n type=\"text\"\n onClick={() => {\n props.onDelete?.();\n }}\n >\n <MinusOutlined\n style={{\n display: 'inline-flex',\n fontSize: '12px',\n }}\n />\n </Button>\n )}\n </div>\n </div>\n </div>\n </>\n );\n }\n);\n","import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { ConfigProvider, message } from 'antd';\nimport { JSExpressionPropType } from '@chamn/model';\n\nimport styles from './style.module.scss';\nimport { InnerSinglePropertyEditorRef, SinglePropertyEditor } from './SingleProperty';\n\nexport type CSSPropertiesVariableBindEditorProps = {\n initialValue?: { property: string; value: string | JSExpressionPropType }[];\n onValueChange?: (val: { property: string; value: string }[]) => void;\n};\nexport type CSSPropertiesVariableBindEditorRef = {\n setValue: (val: { property: string; value: string | JSExpressionPropType }[]) => void;\n};\n\nexport const CSSPropertiesVariableBindEditor = forwardRef<\n CSSPropertiesVariableBindEditorRef,\n CSSPropertiesVariableBindEditorProps\n>(function CSSPropertiesVariableBindEditorCore(props, ref) {\n const [propertyList, setPropertyList] = useState<{ property: string; value: any }[]>([]);\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (val) => {\n setPropertyList(val);\n },\n };\n },\n []\n );\n\n useEffect(() => {\n if (props.initialValue) {\n setPropertyList(props.initialValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [newProperty, setNewProperty] = useState<{\n property: string;\n value: JSExpressionPropType | string;\n }>({\n property: '',\n value: {\n type: 'EXPRESSION',\n value: '',\n },\n });\n\n const innerOnValueChange = (val: typeof propertyList) => {\n props.onValueChange?.(val);\n };\n\n const createPropertyRef = useRef<InnerSinglePropertyEditorRef>(null);\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div className={styles.cssBox}>\n {propertyList.map((el, index) => {\n return (\n <div key={index}>\n <SinglePropertyEditor\n value={el}\n mod={'edit'}\n onValueChange={(newVal) => {\n if (newVal.property === '') {\n propertyList.splice(index, 1);\n setPropertyList([...propertyList]);\n return;\n }\n propertyList[index] = newVal;\n setPropertyList([...propertyList]);\n innerOnValueChange(propertyList);\n }}\n onDelete={() => {\n propertyList.splice(index, 1);\n setPropertyList([...propertyList]);\n innerOnValueChange(propertyList);\n }}\n />\n </div>\n );\n })}\n\n <SinglePropertyEditor\n value={newProperty}\n ref={createPropertyRef}\n mod=\"create\"\n onValueChange={(newVal) => {\n setNewProperty(newVal);\n }}\n onCreate={(val) => {\n const hasExits = propertyList.find((el) => el.property === val.property);\n if (hasExits) {\n message.error('The attribute name already exists, please replace');\n return {\n errorKey: [val.property],\n };\n }\n propertyList.push(val);\n setPropertyList([...propertyList]);\n innerOnValueChange(propertyList);\n setNewProperty({\n property: '',\n value: {\n type: 'EXPRESSION',\n value: '',\n },\n });\n }}\n />\n </div>\n </ConfigProvider>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { ConfigProvider } from 'antd';\nimport { CustomSchemaForm, CustomSchemaFormInstance } from '../CustomSchemaForm';\nimport { ClassNameType, CMaterialPropsType, CNode } from '@chamn/model';\nimport { CPluginCtx } from '@/core/pluginManager';\n\nexport type ClassNameEditorProps = {\n initialValue?: ClassNameType[];\n onValueChange?: (val: ClassNameType[]) => void;\n pluginContext: CPluginCtx;\n nodeModel: CNode;\n};\nexport type ClassNameEditorRef = {\n setValue: (val: ClassNameType[]) => void;\n};\n\nconst properties: CMaterialPropsType = [\n {\n title: 'Class Names',\n name: 'className',\n valueType: 'array',\n\n setters: [\n {\n componentName: 'ArraySetter',\n props: {\n sortLabelKey: 'name',\n collapse: {\n open: true,\n },\n item: {\n setters: [\n {\n componentName: 'ShapeSetter',\n props: {\n elements: [\n {\n name: 'name',\n title: '类名',\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'status',\n title: '启用',\n valueType: 'boolean',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n ],\n },\n initialValue: {},\n },\n ],\n initialValue: {\n name: '',\n status: true,\n },\n },\n },\n initialValue: [],\n },\n ],\n },\n];\n\nexport const ClassNameEditor = forwardRef<ClassNameEditorRef, ClassNameEditorProps>(function CSSPropertiesEditorCore(\n props,\n ref\n) {\n const formRef = useRef<CustomSchemaFormInstance>(null);\n useImperativeHandle(ref, () => {\n return {\n setValue(newValue) {\n formRef?.current?.setFields({\n className: newValue || [],\n });\n },\n };\n });\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div>\n <CustomSchemaForm\n ref={formRef}\n initialValue={[]}\n nodeId={props.nodeModel.id}\n pluginCtx={props.pluginContext}\n properties={properties}\n onSetterChange={function () {}}\n onValueChange={(newVal) => {\n props.onValueChange?.(newVal.className || []);\n }}\n defaultSetterConfig={{}}\n ></CustomSchemaForm>\n </div>\n </ConfigProvider>\n );\n});\n","import { MinusOutlined, PlusOutlined } from '@ant-design/icons';\nimport { AutoComplete, Button } from 'antd';\nimport { InputStatus } from 'antd/es/_util/statusUtils';\nimport clsx from 'clsx';\nimport { BaseSelectRef } from 'rc-select';\nimport { forwardRef, useState, useMemo, useRef, useImperativeHandle } from 'react';\nimport { defaultPropertyOptions } from '.';\nimport { CSSProperties, CSSPropertiesKey } from './cssProperties';\nimport styles from './style.module.scss';\n\nexport type SinglePropertyEditorProps = {\n mode: 'create' | 'edit';\n value?: {\n property: string;\n value: string;\n };\n allValues: {\n property: string;\n value: string;\n }[];\n onValueChange?: (value: { property: string; value: string }) => void;\n onCreate?: (value: { property: string; value: string }) => void;\n onDelete?: () => void;\n};\n\nexport type SinglePropertyEditorRef = {\n reset: () => void;\n};\n\nexport const SinglePropertyEditor = forwardRef<SinglePropertyEditorRef, SinglePropertyEditorProps>(\n function SinglePropertyEditorCore(props, ref) {\n const [keyFormatStatus] = useState<InputStatus>('');\n const [valueFormatStatus] = useState<InputStatus>('');\n const { mode = 'edit' } = props;\n const isCreate = useMemo(() => {\n return mode === 'create';\n }, [mode]);\n const innerValue = props.value;\n const [propertyOptions, setPropertyOptions] = useState(defaultPropertyOptions);\n\n const [valueOptions, setValueOptions] = useState<{ value: string }[]>([]);\n const [allValueOptions, setAllValueOptions] = useState<{ value: string }[]>([]);\n\n const onSearch = (searchText: string) => {\n const newOptions = defaultPropertyOptions.filter((el) => el.value.includes(searchText));\n if (!searchText) {\n setPropertyOptions(defaultPropertyOptions);\n } else {\n setPropertyOptions(newOptions);\n }\n };\n\n const updateValueOptions = () => {\n let res: any[] = [];\n const tempProperty = CSSProperties[innerValue?.property as unknown as CSSPropertiesKey];\n\n if (tempProperty) {\n res =\n tempProperty.values?.map((val) => {\n return {\n value: val,\n };\n }) || [];\n }\n\n setValueOptions(res);\n setAllValueOptions(res);\n };\n\n const onValueSearch = (searchText: string) => {\n const newOptions = allValueOptions.filter((el) => el.value.includes(searchText));\n if (!searchText) {\n setValueOptions(allValueOptions);\n } else {\n setValueOptions(newOptions);\n }\n };\n\n const updateKeyValue = (keyVal: string) => {\n props.onValueChange?.({\n property: keyVal,\n value: innerValue?.value || '',\n });\n return true;\n };\n\n const propertyValueRef = useRef<BaseSelectRef | null>(null);\n const propertyKeyRef = useRef<BaseSelectRef | null>(null);\n const [focusState, setFocusState] = useState({\n key: false,\n value: false,\n });\n useImperativeHandle(\n ref,\n () => {\n return {\n reset: () => {\n propertyKeyRef.current?.focus();\n },\n };\n },\n []\n );\n\n return (\n <div className={styles.cssFieldBox}>\n <div\n className={clsx([\n styles.keyField,\n isCreate && styles.inputAuto,\n isCreate && focusState.key && styles.active,\n keyFormatStatus === 'error' && styles.error,\n !isCreate && styles.notEdit,\n ])}\n >\n <AutoComplete\n ref={propertyKeyRef}\n variant={'borderless'}\n disabled={!isCreate}\n onSearch={onSearch}\n status={keyFormatStatus}\n popupMatchSelectWidth={200}\n value={innerValue?.property}\n onChange={(val) => {\n updateKeyValue(val);\n }}\n style={{\n width: '100%',\n position: 'absolute',\n left: 0,\n top: 0,\n }}\n onFocus={() => {\n setFocusState({\n key: true,\n value: false,\n });\n }}\n onBlur={() => {\n setFocusState({\n key: false,\n value: false,\n });\n }}\n onKeyDown={(e) => {\n if (e.code === 'Enter') {\n if (!keyFormatStatus) {\n propertyValueRef.current?.focus();\n }\n }\n }}\n placeholder=\"property\"\n options={propertyOptions}\n />\n <span\n style={{\n display: 'inline-block',\n visibility: 'hidden',\n minWidth: '60px',\n padding: '0 2px',\n }}\n >\n {innerValue?.property}\n </span>\n </div>\n <span\n style={{\n padding: '0 2px',\n }}\n >\n :\n </span>\n <AutoComplete\n variant={'borderless'}\n ref={propertyValueRef}\n status={valueFormatStatus}\n popupMatchSelectWidth={200}\n value={innerValue?.value}\n onChange={(val) => {\n updateValueOptions();\n props.onValueChange?.({\n property: innerValue?.property || '',\n value: val || '',\n });\n }}\n style={{\n flex: 1,\n }}\n onFocus={() => {\n setFocusState({\n key: false,\n value: true,\n });\n }}\n onBlur={() => {\n setFocusState({\n key: false,\n value: false,\n });\n }}\n className={clsx([styles.inputAuto, focusState.value && styles.active])}\n placeholder=\"value\"\n onSearch={onValueSearch}\n options={valueOptions}\n onKeyDown={(e) => {\n if (e.code === 'Enter') {\n if (isCreate) {\n props.onCreate?.({\n property: innerValue?.property || '',\n value: innerValue?.value || '',\n });\n }\n }\n }}\n ></AutoComplete>\n\n {props.onDelete && mode === 'edit' && (\n <Button\n size=\"small\"\n type=\"text\"\n onClick={() => {\n props.onDelete?.();\n }}\n >\n <MinusOutlined\n style={{\n display: 'inline-flex',\n fontSize: '12px',\n }}\n />\n </Button>\n )}\n {props.onCreate && mode === 'create' && (\n <div>\n <Button\n size=\"small\"\n type=\"text\"\n icon={\n <PlusOutlined\n style={{\n fontSize: '12px',\n display: 'inline-flex',\n }}\n />\n }\n onClick={() => {\n props.onCreate?.({\n property: innerValue?.property || '',\n value: innerValue?.value || '',\n });\n }}\n ></Button>\n </div>\n )}\n </div>\n );\n }\n);\n","import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { CSSPropertyList } from './cssProperties';\nimport styles from './style.module.scss';\n\nimport { ConfigProvider } from 'antd';\nimport { SinglePropertyEditorRef, SinglePropertyEditor } from './signleProperty';\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const defaultPropertyOptions = CSSPropertyList.map((el) => {\n return {\n value: el,\n };\n});\n\nexport type CSSPropertiesEditorProps = {\n initialValue?: { property: string; value: string }[];\n onValueChange?: (val: { property: string; value: string }[]) => void;\n};\n\nexport type CSSPropertiesEditorRef = {\n setValue: (val: { property: string; value: string }[]) => void;\n};\n\nexport const CSSPropertiesEditor = forwardRef<CSSPropertiesEditorRef, CSSPropertiesEditorProps>(\n function CSSPropertiesEditorCore(props, ref) {\n const [propertyList, setPropertyList] = useState<{ id?: string; property: string; value: any }[]>([]);\n const [newAddVal, setNewAddVal] = useState({\n property: '',\n value: '',\n });\n useImperativeHandle(\n ref,\n () => {\n return {\n setValue: (val) => {\n setPropertyList(val);\n },\n };\n },\n []\n );\n\n useEffect(() => {\n if (props.initialValue) {\n setPropertyList([...props.initialValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const innerOnValueChange = (val: typeof propertyList) => {\n props.onValueChange?.(val);\n };\n\n const createPropertyRef = useRef<SinglePropertyEditorRef>(null);\n return (\n <ConfigProvider\n theme={{\n token: {\n borderRadius: 4,\n },\n }}\n >\n <div className={styles.cssBox}>\n {propertyList.map((el, index) => {\n return (\n <div key={index}>\n <SinglePropertyEditor\n mode=\"edit\"\n allValues={propertyList}\n value={el}\n onValueChange={(newVal) => {\n propertyList[index] = newVal;\n const newList = JSON.parse(JSON.stringify(propertyList));\n setPropertyList(newList);\n innerOnValueChange(newList);\n }}\n onDelete={() => {\n propertyList.splice(index, 1);\n const newList = JSON.parse(JSON.stringify(propertyList));\n setPropertyList(newList);\n innerOnValueChange(newList);\n }}\n />\n </div>\n );\n })}\n <SinglePropertyEditor\n key=\"newInput\"\n allValues={propertyList}\n mode=\"create\"\n value={newAddVal}\n ref={createPropertyRef}\n onValueChange={(newCssVal) => {\n setNewAddVal({\n ...newCssVal,\n });\n }}\n onCreate={(newVal) => {\n if (newVal.property && newVal.value) {\n const newList = [...propertyList];\n newList.push(newVal);\n setPropertyList(newList);\n setNewAddVal({\n property: '',\n value: '',\n });\n innerOnValueChange(newList);\n createPropertyRef.current?.reset();\n }\n }}\n />\n </div>\n </ConfigProvider>\n );\n }\n);\n","import { waitReactUpdate } from '@/utils';\nimport { formatCSSTextProperty, StyleArr, styleList2Text } from '@/utils/css';\nimport { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';\nimport { Card, Collapse, Dropdown, Space } from 'antd';\nimport CheckableTag from 'antd/es/tag/CheckableTag';\nimport { MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { CSSPropertiesEditor, CSSPropertiesEditorRef } from '../CSSPropertiesEditor';\nimport styles from './style.module.scss';\nimport { isEmpty } from 'lodash-es';\n// state: 'normal' | 'hover' | 'active' | 'focus' | 'first' | 'last' | 'even' | 'odd';\n\nconst DOM_CSS_STATUS = [\n 'normal' as const,\n 'hover' as const,\n 'focus' as const,\n 'focus-within' as const,\n 'focus-visible' as const,\n 'checked' as const,\n 'disable' as const,\n 'active' as const,\n];\n\ntype DomCSSStatusType = typeof DOM_CSS_STATUS[number];\n\nconst DOM_CSS_STATUS_LIST = DOM_CSS_STATUS.map((el) => {\n return {\n key: el,\n label: el,\n };\n});\n\ntype MediaQueryItem = {\n key: string;\n maxWidth: string;\n label: string;\n};\n\nexport type CSSVal = Partial<\n Record<\n DomCSSStatusType,\n Record<\n /** media query key */\n string,\n string\n >\n >\n>;\n\nexport type CSSEditorRef = {\n setValue: (val: CSSVal) => void;\n};\n\nexport type CSSEditorProps = {\n onValueChange?: (val: CSSVal) => void;\n initialValue?: CSSVal;\n handler?: MutableRefObject<CSSEditorRef | null>;\n};\n\nexport const CSSEditor = (props: CSSEditorProps) => {\n const [selectedStateTag, setSelectedStateTag] = useState<DomCSSStatusType>('normal');\n const [mediaQueryList] = useState<MediaQueryItem[]>([\n {\n key: '991',\n maxWidth: '991',\n label: 'Medial Query ( <= 991 px )',\n },\n {\n key: '767',\n maxWidth: '767',\n label: 'Medial Query ( <= 767 px )',\n },\n {\n key: '479',\n maxWidth: '479',\n label: 'Medial Query ( <= 479 px )',\n },\n ]);\n const cssPropertyRefMap = useRef<Record<string, CSSPropertiesEditorRef | null>>({});\n const handleChange = (tag: DomCSSStatusType) => {\n setSelectedStateTag(tag);\n };\n const [domStatusList, setDomStatusList] = useState<string[]>([]);\n const cssStatusList = useMemo(() => {\n return DOM_CSS_STATUS_LIST.filter((el) => {\n return !domStatusList.includes(el.key);\n });\n }, [domStatusList]);\n\n const selectCssStatusList = useMemo(() => {\n return DOM_CSS_STATUS_LIST.filter((el) => {\n return domStatusList.includes(el.key);\n });\n }, [domStatusList]);\n\n const [cssVal, setCssVal] = useState<CSSVal>(props.initialValue ?? {});\n\n useEffect(() => {\n const list = Object.keys(cssVal);\n setDomStatusList(list);\n }, [cssVal]);\n\n const currentCssStateVal = useMemo(() => {\n const res = cssVal?.[selectedStateTag];\n if (!res) {\n return {};\n }\n const newVal: Record<string, ReturnType<typeof formatCSSTextProperty>> = {};\n Object.keys(res).forEach((key) => {\n newVal[key] = formatCSSTextProperty(res[key] || '');\n });\n\n return newVal;\n }, [selectedStateTag, cssVal]);\n\n const initVal = useCallback(() => {\n Object.keys(cssPropertyRefMap.current).forEach((key) => {\n const ref = cssPropertyRefMap.current?.[key];\n const cssVal = currentCssStateVal[key] || [];\n if (ref) {\n ref.setValue(cssVal);\n }\n });\n }, [currentCssStateVal]);\n const initRef = useRef<() => void>();\n initRef.current = initVal;\n\n if (props.handler) {\n props.handler.current = {\n setValue: async (newVal) => {\n if (isEmpty(newVal)) {\n setCssVal({\n normal: {\n normal: '',\n },\n });\n } else {\n setCssVal(newVal);\n }\n await waitReactUpdate();\n initRef.current?.();\n },\n };\n }\n\n // 初始化赋值\n useEffect(() => {\n initRef.current?.();\n }, [selectedStateTag]);\n\n const updateCss = useCallback(\n (mediaKey: string, val: StyleArr) => {\n const newVal = {\n ...cssVal,\n [selectedStateTag]: {\n ...(cssVal[selectedStateTag] || {}),\n [mediaKey]: styleList2Text(val),\n },\n };\n props.onValueChange?.(newVal);\n },\n [cssVal, props, selectedStateTag]\n );\n\n return (\n <>\n <Card\n size=\"small\"\n type=\"inner\"\n title={<span style={{ fontSize: '12px' }}>CSS</span>}\n extra={\n <Dropdown\n menu={{\n items: cssStatusList,\n onClick: (el) => {\n setDomStatusList((oldVal) => {\n return [...oldVal, el.key];\n });\n },\n }}\n >\n <PlusOutlined />\n </Dropdown>\n }\n >\n <Space\n size={[0, 8]}\n wrap\n style={{\n paddingBottom: '10px',\n }}\n >\n {selectCssStatusList.map((tag) => {\n const checked = selectedStateTag.includes(tag.key);\n return (\n <CheckableTag\n key={tag.key}\n style={{\n border: !checked ? '1px solid rgb(216 216 216 / 82%)' : '1px solid rgba(0,0,0,0))',\n }}\n checked={checked}\n onChange={() => handleChange(tag.key)}\n className={styles.stateTag}\n >\n {tag.label}\n {tag.key !== 'normal' && (\n <MinusCircleOutlined\n className={styles.stateTagClose}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setDomStatusList((oldVal) => {\n return oldVal.filter((el) => {\n return el !== tag.key;\n });\n });\n setSelectedStateTag('normal');\n }}\n />\n )}\n </CheckableTag>\n );\n })}\n </Space>\n\n <Collapse\n defaultActiveKey={['normal']}\n bordered={false}\n style={{\n marginBottom: '10px',\n }}\n onChange={async () => {\n await waitReactUpdate();\n initRef.current?.();\n }}\n items={[\n {\n key: 'normal',\n label: <span>Default</span>,\n children: (\n <CSSPropertiesEditor\n ref={(ref) => {\n cssPropertyRefMap.current['normal'] = ref;\n }}\n onValueChange={(val) => updateCss('normal', val)}\n initialValue={currentCssStateVal['normal']}\n />\n ),\n },\n ...mediaQueryList.map((el) => {\n return {\n key: el.key,\n label: <span>{el.label}</span>,\n children: (\n <CSSPropertiesEditor\n ref={(ref) => {\n cssPropertyRefMap.current[el.key] = ref;\n }}\n onValueChange={(val) => updateCss(el.key, val)}\n />\n ),\n };\n }),\n ]}\n ></Collapse>\n </Card>\n </>\n );\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CRightPanelItem, RightPanelOptions } from '../RightPanel/view';\n\nimport styles from './style.module.scss';\nimport {\n CSSPropertiesVariableBindEditor,\n CSSPropertiesVariableBindEditorRef,\n} from '../../component/CSSPropertiesVariableBindEditor';\nimport { Collapse } from 'antd';\nimport { ClassNameEditor, ClassNameEditorRef } from '@/component/ClassNameEditor';\nimport { CSSEditor, CSSEditorRef, CSSVal } from '@/component/CSSEditor';\nimport {\n formatStyleProperty,\n formatCssToNodeVal,\n formatNodeValToEditor,\n StyleArr,\n styleArr2Obj,\n styleObjToArr,\n} from '@/utils/css';\nimport { StyleUIPanel, StyleUIPanelRef } from '@/component/StylePanel';\n\nexport const VisualPanelPlus = (props: RightPanelOptions) => {\n const styleVariableRef = useRef<CSSPropertiesVariableBindEditorRef>(null);\n\n const node = props.node!;\n const classNameList = useMemo(() => {\n const tempList = node.value.classNames || [];\n return tempList;\n }, [node]);\n const cssEditorRef = useRef<CSSEditorRef>(null);\n const cssUIRef = useRef<StyleUIPanelRef>(null);\n const classNameEditorRef = useRef<ClassNameEditorRef>(null);\n const formatStyle = useMemo(() => {\n return formatStyleProperty(node.value.style || []);\n }, [node.value.style]);\n\n const lastNode = useRef<CNode | CRootNode>();\n\n const updatePanelValue = useCallback(() => {\n lastNode.current = node;\n const newStyle = node.value.style || [];\n const { expressionProperty, normalProperty } = formatStyleProperty(newStyle);\n const fCss = formatNodeValToEditor(node.value.css);\n styleVariableRef.current?.setValue([...expressionProperty]);\n cssEditorRef.current?.setValue(fCss);\n classNameEditorRef.current?.setValue(node.value.classNames || []);\n cssUIRef.current?.setValue(styleArr2Obj(normalProperty) || {});\n }, [node]);\n\n useEffect(() => {\n updatePanelValue();\n node.emitter.on('onNodeChange', updatePanelValue);\n node.emitter.on('onReloadPage', updatePanelValue);\n return () => {\n node.emitter.off('onNodeChange', updatePanelValue);\n node.emitter.off('onReloadPage', updatePanelValue);\n };\n }, [node.emitter, node.id, props.activeTab, updatePanelValue]);\n\n const onUpdateStyleVariable = (styleArr: StyleArr) => {\n // merge style\n const newStyleList = [...formatStyle.normalProperty, ...styleArr];\n node.value.style = newStyleList;\n node.updateValue();\n };\n\n const onUpdateStyle = (styleArr: StyleArr) => {\n // merge style\n const newStyleList = [...styleArr, ...formatStyle.expressionProperty];\n node.value.style = newStyleList;\n node.updateValue();\n };\n\n const onUpdateCss = (val: CSSVal) => {\n // class name 不能以数字开头,这里使用c_前缀\n node.value.css = formatCssToNodeVal(`c_${node.id}`, val);\n node.updateValue();\n };\n\n return (\n <div className={styles.visualPanelBox}>\n <div\n style={{\n marginBottom: '10px',\n }}\n >\n <StyleUIPanel\n ref={cssUIRef}\n onValueChange={(newNormaCss) => {\n onUpdateStyle(styleObjToArr(newNormaCss));\n }}\n />\n <Collapse\n bordered={false}\n style={{\n marginBottom: '10px',\n }}\n defaultActiveKey={['origin-css-edit']}\n onChange={(val) => {\n if (val.length) {\n updatePanelValue();\n }\n }}\n items={[\n {\n key: 'origin-css-edit',\n label: <span className={styles.header}>Style Variable</span>,\n children: (\n <CSSPropertiesVariableBindEditor\n ref={styleVariableRef}\n initialValue={formatStyle.expressionProperty}\n onValueChange={(val) => {\n onUpdateStyleVariable(val);\n }}\n />\n ),\n },\n ]}\n ></Collapse>\n <div\n style={{\n paddingTop: '10px',\n }}\n >\n <ClassNameEditor\n nodeModel={props.node as any}\n initialValue={classNameList}\n ref={classNameEditorRef}\n pluginContext={props.pluginCtx}\n onValueChange={(newVal) => {\n node.value.classNames = newVal;\n node.updateValue();\n }}\n />\n </div>\n <CSSEditor handler={cssEditorRef} onValueChange={onUpdateCss} />\n </div>\n </div>\n );\n};\n\nexport const VisualPanelPlusConfig: CRightPanelItem = {\n key: 'VisualPanelPlus',\n name: 'Visual',\n view: ({ node, pluginCtx, activeTab }) => {\n if (node) {\n return <VisualPanelPlus node={node} pluginCtx={pluginCtx} activeTab={activeTab} />;\n } else {\n return <></>;\n }\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.visual !== false;\n },\n};\n","import { useEffect, useState } from 'react';\nimport { CNode, CRootNode } from '@chamn/model';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport styles from './style.module.scss';\nimport { Button, Select } from 'antd';\nimport { ActionFlowSetter } from '@/component/CustomSchemaForm/components/Setters/ActionFlowSetter';\nimport { DeleteOutlined } from '@ant-design/icons';\nimport { ON_DID_RENDER, ON_WILL_DESTROY } from '@chamn/render';\n\nexport type EventPanelProps = {\n node: CNode | CRootNode | null;\n pluginCtx: CPluginCtx;\n};\n\nconst INNER_EVENT_LIST_MAP = [\n {\n label: '初始化完成后',\n value: ON_DID_RENDER,\n },\n {\n label: '组件销毁之前',\n value: ON_WILL_DESTROY,\n },\n];\n\nexport const EventPanel = (props: EventPanelProps) => {\n const { node } = props;\n const [eventList, updateEventList] = useState<\n {\n label: string;\n value: string;\n }[]\n >([]);\n\n const nodeEventList = node?.value.eventListener;\n\n useEffect(() => {\n const list =\n node?.material?.value.events?.map((evt) => {\n if (typeof evt === 'string') {\n return {\n label: evt,\n value: evt,\n };\n }\n return {\n label: evt.name || evt.event,\n value: evt.event,\n };\n }) || [];\n updateEventList([...INNER_EVENT_LIST_MAP, ...list]);\n }, [node?.id, node?.material?.value.events]);\n const [currentEvent, updateCurrentEvent] = useState<string>();\n\n const onChange = (value: string) => {\n updateCurrentEvent(value);\n };\n\n if (!node) {\n return <></>;\n }\n\n return (\n <div className={styles.eventBox}>\n <div style={{ display: 'flex' }}>\n <Select\n value={currentEvent}\n showSearch\n placeholder=\"Select a person\"\n optionFilterProp=\"label\"\n onChange={onChange}\n allowClear\n style={{ width: '100%' }}\n options={eventList}\n />\n <Button\n type=\"primary\"\n style={{ marginLeft: '10px' }}\n onClick={() => {\n const newEvent = currentEvent;\n if (!newEvent) {\n return;\n }\n node.value.eventListener = [\n ...(node.value.eventListener || []),\n {\n name: newEvent,\n func: {\n type: 'ACTION',\n handler: [],\n // TODO: 待实现\n params: [],\n },\n },\n ];\n node.updateValue();\n updateCurrentEvent(undefined);\n }}\n >\n Add\n </Button>\n </div>\n <div style={{ marginTop: '16px' }}>\n {nodeEventList?.map((event: any, index: number) => {\n const eventLabel = eventList.find((el) => el.value === event.name);\n return (\n <div\n key={index}\n style={{\n padding: '8px 12px',\n borderRadius: '4px',\n backgroundColor: '#f5f5f5',\n marginBottom: '8px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n width: '100%',\n }}\n >\n <ActionFlowSetter\n value={event.func}\n onValueChange={(val: { handler: any }) => {\n event.func.handler = val.handler;\n node?.updateValue();\n }}\n setterContext={{\n pluginCtx: props.pluginCtx,\n onSetterChange: () => {},\n keyPaths: [''],\n label: '',\n nodeModel: node as any,\n }}\n >\n <span>{eventLabel?.label || event.name}</span>\n </ActionFlowSetter>\n </div>\n <Button\n type=\"text\"\n size=\"small\"\n danger\n icon={<DeleteOutlined />}\n onClick={(e) => {\n e.stopPropagation();\n const newEventList = [...(node?.value.eventListener || [])];\n newEventList.splice(index, 1);\n node!.value.eventListener = newEventList;\n node?.updateValue();\n }}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import { CRightPanelItem } from '../RightPanel/view';\nimport { EventPanel } from './panel';\n\nexport const EventPanelConfig: CRightPanelItem = {\n key: 'Event',\n name: 'Event',\n view: ({ node, pluginCtx }) => {\n if (!node) {\n return <></>;\n }\n return <EventPanel node={node} pluginCtx={pluginCtx} />;\n },\n show: (props) => {\n return props.node?.material?.value.advanceCustom?.rightPanel?.advance !== false;\n },\n};\n","import { CNode, CRootNode } from '@chamn/model';\nimport { Empty, Tabs } from 'antd';\nimport React from 'react';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { PropertyPanelConfig } from '../PropertyPanel';\nimport { ComponentStatePanelConfig } from '../ComponentStatePanel';\nimport { AdvancePanelConfig } from '../AdvancePanel';\nimport styles from './style.module.scss';\nimport { VisualPanelPlusConfig } from '../VisualPanelPlus';\nimport { EventPanelConfig } from '../EventPanel';\nimport { CRightPanelContext } from './context';\n\nexport type RightPanelOptions = { node: CNode | CRootNode | null; pluginCtx: CPluginCtx; activeTab: string };\n\nexport type CRightPanelItem = {\n key: string;\n name: string | ((props: RightPanelOptions) => React.ReactNode);\n view: (props: RightPanelOptions) => React.ReactNode;\n show?: (options: RightPanelOptions) => boolean;\n};\n\ninterface RightPanelProps {\n pluginCtx: CPluginCtx;\n}\n\ninterface RightPanelState {\n node: CNode | CRootNode | null;\n activeKey: string;\n panels: CRightPanelItem[];\n displayPanels: CRightPanelItem[];\n}\n\nexport class RightPanel extends React.Component<RightPanelProps, RightPanelState> {\n constructor(props: RightPanelProps) {\n super(props);\n this.state = {\n node: props.pluginCtx.engine.getActiveNode(),\n activeKey: 'Visual',\n panels: [\n // AdvancePanelConfig,\n PropertyPanelConfig,\n VisualPanelPlusConfig,\n EventPanelConfig,\n ComponentStatePanelConfig,\n AdvancePanelConfig,\n ],\n displayPanels: [],\n };\n }\n\n addPanel = (panel: CRightPanelItem) => {\n const newPanels = [...this.state.panels, panel];\n this.setState({\n panels: newPanels,\n });\n this.updatePanels();\n };\n\n removePanel = (panelName: string) => {\n const newPanels = this.state.panels.filter((el) => el.name !== panelName);\n this.setState({\n panels: newPanels,\n });\n this.updatePanels();\n };\n\n replacePanel = (panelName: string, newPanel: CRightPanelItem) => {\n const targetIndex = this.state.panels.findIndex((el) => el.name === panelName);\n const newPanels = [...this.state.panels];\n if (targetIndex > -1) {\n newPanels[targetIndex] = newPanel;\n }\n this.setState({\n panels: newPanels,\n });\n this.updatePanels();\n };\n\n choosePanel = (panelName: string) => {\n this.setState({\n activeKey: panelName,\n });\n this.updatePanels();\n };\n\n /** 更新被展示的 panel, 根据 panel 的 show 方法 */\n updatePanels = () => {\n const { pluginCtx } = this.props;\n const { node, panels } = this.state;\n const newPanels = panels;\n let val: {\n panels: CRightPanelItem[];\n displayPanels: CRightPanelItem[];\n } = { panels: [], displayPanels: [] };\n if (node) {\n const panelParams: RightPanelOptions = { node: node, pluginCtx, activeTab: this.state.activeKey };\n const displayPanels = newPanels.filter((panel) => {\n if (panel.show === undefined) {\n return true;\n } else {\n return panel.show(panelParams);\n }\n });\n // 获取物料中的自定义 panel\n const customTabs = node.material?.value.advanceCustom?.rightPanel?.customTabs || [];\n displayPanels.concat(customTabs);\n val = {\n panels: newPanels,\n displayPanels,\n };\n } else {\n val = {\n panels: newPanels,\n displayPanels: [],\n };\n }\n this.setState(val);\n return val;\n };\n\n onNodeChange = ({ node }: any) => {\n const { pluginCtx } = this.props;\n const { panels, activeKey } = this.state;\n const panelParams: RightPanelOptions = { node: node, pluginCtx, activeTab: this.state.activeKey };\n const displayPanels = panels.filter((panel) => {\n if (panel.show === undefined) {\n return true;\n } else {\n return panel.show(panelParams);\n }\n });\n const firstPanelKey = displayPanels.find((_, index) => index === 0)?.key || '';\n const isExitsCurrent = displayPanels.find((el) => el.key === activeKey);\n if (!isExitsCurrent) {\n this.setState({\n activeKey: firstPanelKey,\n node,\n displayPanels,\n });\n } else {\n this.setState({\n node,\n displayPanels,\n });\n }\n };\n\n componentDidMount(): void {\n const { pluginCtx } = this.props;\n pluginCtx.globalEmitter.on('onSelectNodeChange', (args) => {\n setTimeout(() => {\n this.onNodeChange(args);\n }, 10);\n });\n pluginCtx.pageModel.emitter.on('*', () => {\n const currentSelectNode = pluginCtx.engine.getActiveNode();\n this.onNodeChange({ node: currentSelectNode });\n });\n const { displayPanels } = this.updatePanels();\n const firstPanelKey = displayPanels.find((_, index) => index === 0)?.key || '';\n const isExitsCurrent = displayPanels.find((el) => el.key === this.state.activeKey);\n\n if (!isExitsCurrent) {\n this.setState({\n activeKey: firstPanelKey,\n });\n }\n\n pluginCtx.pluginReadyOk();\n }\n\n render() {\n const { displayPanels, node, activeKey } = this.state;\n const { pluginCtx } = this.props;\n if (!node) {\n return (\n <div style={{ overflow: 'hidden' }}>\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={'Please select a node from left view'} />\n </div>\n );\n }\n const panelParams = { node: node, pluginCtx, activeTab: this.state.activeKey };\n const customSetterMap = pluginCtx.config?.customPropertySetterMap;\n\n return (\n <CRightPanelContext.Provider\n value={{\n customSetterMap: { ...customSetterMap },\n defaultSetterConfig: {},\n nodeId: this.state.node?.id,\n nodeModel: this.state.node as any,\n pluginCtx: this.props.pluginCtx,\n }}\n >\n <div className={styles.rightPanelContainer}>\n <Tabs\n activeKey={activeKey}\n tabPosition=\"top\"\n style={{\n flex: 1,\n height: '100%',\n }}\n onChange={(activeKey) => {\n this.setState({\n activeKey,\n });\n }}\n items={displayPanels.map((p) => {\n return {\n label: (\n <div style={{ padding: '0 10px' }}>{typeof p.name === 'string' ? p.name : p.name?.(panelParams)}</div>\n ),\n key: p.key,\n children: p.view(panelParams),\n };\n })}\n />\n </div>\n </CRightPanelContext.Provider>\n );\n }\n}\n","import React from 'react';\nimport { CPlugin } from '../../core/pluginManager';\nimport { RightPanel } from './view';\nimport { RightPanelConfig } from './type';\n\nconst PLUGIN_NAME = 'RightPanel';\nexport const RightPanelPlugin: CPlugin<RightPanelConfig> = () => {\n const uiHandle = React.createRef<RightPanel>();\n return {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const workbench = ctx.getWorkbench();\n workbench.replaceRightView(<RightPanel ref={uiHandle} pluginCtx={ctx} />);\n },\n async destroy() {},\n export: () => {\n return uiHandle?.current;\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n };\n};\n\nRightPanelPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const zh_CN: Record<string, any> = {\n pluginName: '全局状态',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Global State',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","/* eslint-disable react-refresh/only-export-components */\nimport { useEffect, useRef } from 'react';\nimport { DatabaseOutlined } from '@ant-design/icons';\nimport { CPlugin, CPluginCtx } from '../../core/pluginManager';\nimport { withTranslation } from 'react-i18next';\nimport localize from './localize';\nimport { MonacoEditor, MonacoEditorInstance } from '../../component/MonacoEditor';\nimport styles from './style.module.scss';\n\nconst PLUGIN_NAME = 'GlobalState';\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\ntype GlobalStatePanelProps = {\n pluginCtx: CPluginCtx;\n};\n\nlet triggerChangeBySelf = false;\n\nconst GlobalStatePanel = (props: GlobalStatePanelProps) => {\n const { pluginCtx } = props;\n const rootState = pluginCtx.pageModel.value.componentsTree.value.state || {};\n // 表示是不是自己触发的值更新\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n useEffect(() => {\n editorRef?.current?.setValue(JSON.stringify(rootState, null, 2));\n // 正常情况下, 只有 reloadPage 才需要同步数据\n pluginCtx.pageModel.emitter.on('onReloadPage', () => {\n if (triggerChangeBySelf) {\n triggerChangeBySelf = false;\n return;\n }\n editorRef.current?.setValue(JSON.stringify(pluginCtx.pageModel.value.componentsTree.value.state, null, 2));\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onValueChange = (newValStr?: string) => {\n try {\n const newVal = JSON.parse(newValStr || '{}');\n pluginCtx.pageModel.value.componentsTree.value.state = newVal;\n triggerChangeBySelf = true;\n pluginCtx.pageModel.value.componentsTree.updateValue();\n } catch (e) {\n console.warn(e);\n }\n };\n\n return (\n <div className={styles.box}>\n <MonacoEditor\n initialValue={JSON.stringify(pluginCtx.pageModel.value.componentsTree.value.state, null, 2)}\n language={'json'}\n options={{\n automaticLayout: true,\n tabSize: 2,\n minimap: { enabled: false },\n quickSuggestions: false,\n suggestOnTriggerCharacters: false,\n folding: false,\n comments: {},\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n beforeMount={() => {\n // monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n // validate: true,\n // allowComments: true, // 启用注释\n // });\n }}\n onChange={onValueChange}\n />\n </div>\n );\n};\n\nexport const GlobalStatePanelPlugin: CPlugin = {\n name: PLUGIN_NAME,\n async init(ctx) {\n const { i18n } = ctx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n const GlobalStatePanelWithLocalize = withTranslation(i18nNamespace)(GlobalStatePanel);\n const Title = withTranslation(i18nNamespace)(({ t }) => <>{t('pluginName')}</>);\n const workbench = ctx.getWorkbench();\n workbench.addLeftPanel({\n title: <Title />,\n name: PLUGIN_NAME,\n icon: <DatabaseOutlined />,\n render: <GlobalStatePanelWithLocalize pluginCtx={ctx} />,\n });\n },\n async destroy() {},\n export: () => {\n return {};\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\nGlobalStatePanelPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","import React, { useRef, useState } from 'react';\nimport { Modal } from 'antd';\nimport { MonacoEditor, MonacoEditorInstance } from '../../component/MonacoEditor';\nimport { CPage } from '@chamn/model';\nimport { waitReactUpdate } from '../../utils';\nimport { DesignerPluginInstance } from '../Designer/type';\nimport { EnginContext } from '@/type';\n\nexport type DisplaySourceSchemaProps = {\n pageModel: CPage;\n engineCtx: EnginContext;\n children: React.ReactNode;\n};\n\nexport const DisplaySourceSchema = (props: DisplaySourceSchemaProps) => {\n const initialValue = props.pageModel.export();\n const { engineCtx } = props;\n const [open, setOpen] = useState(false);\n const editorRef = useRef<MonacoEditorInstance | null>(null);\n return (\n <>\n <div\n onClick={() => {\n setOpen(true);\n }}\n >\n {props.children}\n </div>\n <Modal\n open={open}\n title=\"Source Schema\"\n width={'100%'}\n onCancel={() => setOpen(false)}\n onOk={async () => {\n setOpen(false);\n const newPage = editorRef.current?.getValue();\n if (!newPage) {\n return;\n }\n const newPageJSON = JSON.parse(newPage);\n props.pageModel.updatePage(newPageJSON);\n await waitReactUpdate();\n const currentSelectNode = engineCtx.engine.getActiveNode();\n const designerPluginInstance = await engineCtx.pluginManager.get<DesignerPluginInstance>('Designer');\n const nodeId = currentSelectNode?.id || '';\n designerPluginInstance?.ctx.emitter.on('ready', () => {\n const designerExport = designerPluginInstance.export;\n designerExport.selectNode(nodeId);\n });\n if (designerPluginInstance) {\n const designerExport = designerPluginInstance.export;\n designerExport.selectNode(nodeId);\n }\n }}\n style={{\n height: 'calc(100vh - 50px)',\n top: '25px',\n }}\n destroyOnClose\n >\n <div style={{ width: '100%', height: 'calc(100vh - 200px)' }}>\n <MonacoEditor\n initialValue={JSON.stringify(initialValue, null, 2)}\n language={'json'}\n options={{\n automaticLayout: true,\n }}\n onDidMount={(editor) => {\n editorRef.current = editor;\n }}\n />\n </div>\n </Modal>\n </>\n );\n};\n","import { waitReactUpdate } from '@/utils';\nimport { CPageDataType } from '@chamn/model';\nimport { cloneDeep, debounce } from 'lodash-es';\nimport { CPluginCtx } from '../../core/pluginManager';\nimport { HistoryPluginType } from './type';\n\nconst PLUGIN_NAME = 'History' as const;\n\nexport const HistoryPlugin: HistoryPluginType = (ctx) => {\n const CTX: CPluginCtx | null = ctx;\n const dataStore = {\n historyRecords: [] as CPageDataType[],\n currentStepIndex: 0,\n };\n\n let originalPageRecord: CPageDataType | null = null;\n const pageSchema = ctx.pageModel.export();\n originalPageRecord = pageSchema;\n dataStore.historyRecords.push(pageSchema);\n\n const loadPage = async (page: CPageDataType) => {\n if (!CTX) {\n return;\n }\n CTX.pageModel.reloadPage(page);\n await waitReactUpdate();\n };\n\n const resObj = {\n addStep: () => {\n const { currentStepIndex, historyRecords } = dataStore;\n const newPage = ctx.pageModel.export();\n if (currentStepIndex !== historyRecords.length - 1) {\n dataStore.historyRecords = historyRecords.slice(0, currentStepIndex + 1);\n }\n dataStore.historyRecords.push(newPage);\n dataStore.currentStepIndex = historyRecords.length - 1;\n },\n reset: async () => {\n const ctx = CTX;\n if (!ctx) {\n console.warn('plugin ctx is null, pls check it');\n return;\n }\n if (!originalPageRecord) {\n return;\n }\n dataStore.historyRecords = [];\n loadPage(originalPageRecord);\n },\n preStep: () => {\n const { currentStepIndex, historyRecords } = dataStore;\n if (!resObj.canGoPreStep()) {\n return;\n }\n const newIndex = currentStepIndex - 1;\n dataStore.currentStepIndex = newIndex;\n const page = cloneDeep(historyRecords[newIndex]);\n loadPage(page);\n },\n nextStep: () => {\n if (!resObj.canGoNextStep()) {\n return;\n }\n const { currentStepIndex, historyRecords } = dataStore;\n const newIndex = currentStepIndex + 1;\n dataStore.currentStepIndex = newIndex;\n const page = cloneDeep(historyRecords[newIndex]);\n return loadPage(page);\n },\n canGoPreStep: () => {\n const { currentStepIndex } = dataStore;\n if (currentStepIndex <= 0) {\n return false;\n }\n return true;\n },\n canGoNextStep: () => {\n const { currentStepIndex, historyRecords } = dataStore;\n if (currentStepIndex >= historyRecords.length - 1) {\n return false;\n }\n return true;\n },\n };\n\n const debounceAddStep = debounce(() => {\n resObj.addStep();\n }, 500);\n\n return {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n ctx.pageModel.emitter.on('onNodeChange', () => {\n debounceAddStep();\n });\n ctx.pageModel.emitter.on('onPageChange', () => {\n resObj.addStep();\n });\n ctx.pluginReadyOk();\n },\n async destroy(ctx) {\n console.log('destroy', ctx);\n },\n export: () => {\n return resObj;\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n };\n};\n\nHistoryPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","export const isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false;\n\n// Special Keys\nexport const _keyMap: Record<string, number> = {\n backspace: 8,\n '⌫': 8,\n tab: 9,\n clear: 12,\n enter: 13,\n '↩': 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n ins: 45,\n insert: 45,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n capslock: 20,\n num_0: 96,\n num_1: 97,\n num_2: 98,\n num_3: 99,\n num_4: 100,\n num_5: 101,\n num_6: 102,\n num_7: 103,\n num_8: 104,\n num_9: 105,\n num_multiply: 106,\n num_add: 107,\n num_enter: 108,\n num_subtract: 109,\n num_decimal: 110,\n num_divide: 111,\n '⇪': 20,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': isff ? 173 : 189,\n '=': isff ? 61 : 187,\n ';': isff ? 59 : 186,\n \"'\": 222,\n '[': 219,\n ']': 221,\n '\\\\': 220,\n};\n\n// Modifier Keys\nexport const _modifier: any = {\n // shiftKey\n '⇧': 16,\n shift: 16,\n // altKey\n '⌥': 18,\n alt: 18,\n option: 18,\n // ctrlKey\n '⌃': 17,\n ctrl: 17,\n control: 17,\n // metaKey\n '⌘': 91,\n cmd: 91,\n command: 91,\n};\n\nexport const modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n\n shiftKey: 16,\n ctrlKey: 17,\n altKey: 18,\n metaKey: 91,\n};\n\nexport const _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false,\n};\n\n// F1~F12 special key\nfor (let k = 1; k < 20; k++) {\n _keyMap[`f${k}`] = 111 + k;\n}\n\n// 返回键码\nexport const defaultGetCode = (x: string) =>\n _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n\nconst getKey = (x: number) => Object.keys(_keyMap).find((k) => _keyMap[k] === x);\nconst getModifier = (x: number) => Object.keys(_modifier).find((k) => _modifier[k] === x);\n\nexport const getKeyString = (c: number) => {\n return getKey(c) || getModifier(c) || String.fromCharCode(c);\n};\n","import { defaultGetCode, getKeyString } from './keymap';\n\nexport class HotKeysManager {\n private splitStr = '_';\n // 按下的键盘按键列表\n private downKeyCodeList: number[] = [];\n private elements: HTMLElement[];\n private disposeEventCbList: (() => void)[] = [];\n\n /** 是否禁用热键 */\n private disable: boolean = false;\n\n /** 快捷操作按键记录 */\n private hotActionMap: Record<string, () => void> = {};\n\n constructor(options: { elements: HTMLElement[]; customGetKeyCodeByEvent?: (event: KeyboardEvent) => number }) {\n this.elements = options.elements;\n this.init();\n }\n\n setDisable(status: boolean) {\n this.disable = status;\n }\n\n init() {\n // 处理 keyup , 移除按键记录\n const disposeListCb = this.elements.map((el) => this.registerKeyEvent(el));\n this.disposeEventCbList = [...disposeListCb];\n }\n\n addElement(el: HTMLElement) {\n const disposeCb = this.registerKeyEvent(el);\n this.disposeEventCbList.push(disposeCb);\n }\n\n registerKeyEvent(el: HTMLElement) {\n const triggerAction = this.getTriggerHotkeyDebounce();\n // 收集所有的 keys\n const keydownCb = (event: KeyboardEvent) => {\n // 表单控件过滤 默认表单控件不触发快捷键\n if (this.filterInputElement(event)) return;\n\n const key = event.keyCode || event.which || event.charCode;\n if (!this.downKeyCodeList.includes(key)) {\n this.downKeyCodeList.push(key);\n }\n triggerAction();\n };\n el?.addEventListener('keydown', keydownCb);\n\n const keyupCb = (event: KeyboardEvent) => {\n setTimeout(() => {\n // 表单控件过滤 默认表单控件不触发快捷键\n if (this.filterInputElement(event)) return;\n\n const key = event.keyCode || event.which || event.charCode;\n\n const findKeyIndex = this.downKeyCodeList.findIndex((el) => el === key);\n if (findKeyIndex >= 0) {\n this.downKeyCodeList.splice(findKeyIndex, 1);\n }\n\n // 用户释放了所有的按键\n }, 0);\n };\n el?.addEventListener('keyup', keyupCb);\n\n const clearKeyDownList = () => {\n this.downKeyCodeList = [];\n };\n // 修正某些意外情况下,文档失焦,导致快捷键失效等情况\n window?.addEventListener('blur', clearKeyDownList);\n\n return () => {\n el.removeEventListener('keydown', keydownCb);\n el.removeEventListener('keyup', keyupCb);\n window?.removeEventListener('blur', clearKeyDownList);\n };\n }\n\n /** 添加快捷操作 */\n addHotAction(keys: (number | string)[], cb: () => void) {\n const newKeysCode = keys.map((el) => {\n if (typeof el !== 'number') {\n return this.getKeyCodeByLabel(el);\n } else {\n return el;\n }\n });\n this.hotActionMap[newKeysCode.join(this.splitStr)] = () => {\n // 可以自做一些拦截操作\n if (this.disable) {\n return;\n }\n cb();\n };\n }\n\n triggerHotKey() {\n const hotActionId = this.downKeyCodeList.join(this.splitStr);\n // 本次快捷操作回合已经触发过,跳过触发\n const cb = this.hotActionMap[hotActionId];\n\n cb?.();\n }\n\n /**\n * @param time ms\n * @returns\n */\n getTriggerHotkeyDebounce() {\n return this.triggerHotKey.bind(this);\n }\n\n /** 根据可识别的字符串获取对应的键码 */\n getKeyCodeByLabel(label: string) {\n return defaultGetCode(label);\n }\n\n getKeyString(code: number) {\n return getKeyString(code);\n }\n\n /**\n * 表单控件控件判断\n * 如果是编辑控件返回 true\n * hotkey is effective only when filter return true\n * @param event\n * @returns\n */\n filterInputElement(event: KeyboardEvent) {\n const target: any = event.target || event.srcElement;\n if (!target) {\n return false;\n }\n const { tagName } = target as HTMLInputElement;\n let flag = false;\n const isInput =\n tagName === 'INPUT' &&\n !['checkbox', 'radio', 'range', 'button', 'file', 'reset', 'submit', 'color'].includes(target.type);\n // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n if (\n (target as HTMLDivElement).isContentEditable ||\n ((isInput || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly)\n ) {\n flag = true;\n }\n return flag;\n }\n\n destroy() {\n this.disposeEventCbList.forEach((el) => el());\n }\n}\n","export const zh_CN: Record<string, any> = {\n pluginName: '快捷键',\n};\n","export const en_US: Record<string, any> = {\n pluginName: 'Hot Keys',\n};\n","import { zh_CN } from './zh_CN';\nimport { en_US } from './en_US';\nexport default { zh_CN, en_US } as Record<string, any>;\n","import { CPluginCtx } from '@/core/pluginManager';\nimport { DesignerPluginInstance } from '../Designer/type';\nimport { CNode } from '@chamn/model';\nimport { HistoryPluginInstance } from '../History/type';\nimport { message } from 'antd';\n\nexport const actionMap = {\n deleteNode: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n if (activeNode) {\n const flag = await designer?.export?.deleteNode(activeNode.id);\n if (!flag) {\n message.error('该节点不能删除');\n }\n return flag;\n }\n },\n copyNode: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n if (activeNode) {\n const flag = await designer?.export?.copyNode(activeNode.id);\n return flag;\n }\n },\n moveToUp: async (ctx: CPluginCtx) => {\n const res = await actionMap.moveToSiblingUp(ctx);\n if (res) {\n return;\n }\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n const parentNode = activeNode?.parent;\n if (parentNode && parentNode.nodeType !== 'PAGE') {\n const flag = await designer?.export?.selectNode(parentNode.id);\n return flag;\n }\n },\n moveToSiblingUp: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n const parentNode = activeNode?.parent;\n if (parentNode?.nodeType === 'PAGE' || !activeNode) {\n return;\n }\n const parentNodeValue = parentNode?.value as any;\n const children: CNode[] = parentNodeValue.children || parentNodeValue.value;\n const targetIndex = children.findIndex((el) => el.id === activeNode.id);\n const nextIndex = targetIndex - 1;\n if (nextIndex < 0) {\n return;\n }\n const child = children?.[nextIndex] as CNode;\n if (child && (child as any).id) {\n return await designer?.export?.selectNode(child.id);\n }\n },\n moveToDown: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n const activeNode = ctx.engine.getActiveNode();\n const children = activeNode?.value.children;\n const child = children?.[0] as CNode;\n if (child && (child as any).id) {\n return await designer?.export?.selectNode(child.id);\n }\n\n return await actionMap.moveToSiblingDown(ctx);\n },\n moveToSiblingDown: async (ctx: CPluginCtx) => {\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n\n const activeNode = ctx.engine.getActiveNode();\n const parentNode = activeNode?.parent;\n if (parentNode?.nodeType === 'PAGE' || !activeNode) {\n return;\n }\n const parentNodeValue = parentNode?.value as any;\n const children: CNode[] = parentNodeValue.children || parentNodeValue.value;\n const targetIndex = children.findIndex((el) => el.id === activeNode.id);\n const nextIndex = targetIndex + 1;\n if (nextIndex >= children.length) {\n return;\n }\n const child = children?.[nextIndex] as CNode;\n if (child && (child as any).id) {\n return await designer?.export?.selectNode(child.id);\n }\n },\n redo: async (ctx: CPluginCtx) => {\n const historyStack = await ctx.pluginManager.get<HistoryPluginInstance>('History');\n if (historyStack?.export.canGoNextStep()) {\n historyStack?.export.nextStep();\n return true;\n }\n },\n undo: async (ctx: CPluginCtx) => {\n const historyStack = await ctx.pluginManager.get<HistoryPluginInstance>('History');\n if (historyStack?.export.canGoPreStep()) {\n historyStack?.export.preStep();\n return true;\n }\n },\n};\n","import { DesignerPluginInstance } from '../Designer/type';\nimport { HotKeysManager } from './hotKeyManager';\nimport localize from './localize';\nimport { actionMap } from './action';\nimport { HotKeysPluginType } from './type';\n\nconst PLUGIN_NAME = 'Hotkeys' as const;\nconst i18nNamespace = `plugin:${PLUGIN_NAME}`;\n\nexport const HotkeysPlugin: HotKeysPluginType = {\n name: PLUGIN_NAME,\n PLUGIN_NAME,\n async init(ctx) {\n const { i18n } = ctx;\n Object.keys(localize).forEach((lng) => {\n i18n.addResourceBundle(lng, i18nNamespace, localize[lng], true, true);\n });\n\n const designer = await ctx.pluginManager.get<DesignerPluginInstance>('Designer');\n\n const subWin = designer?.export.getDesignerWindow();\n\n const hotkeyManager = new HotKeysManager({\n elements: [window.document.body, subWin!.document.body],\n });\n\n ctx.engine.pageModel.emitter.on('onReloadPage', () => {\n const subWin = designer?.export.getDesignerWindow();\n setTimeout(() => {\n hotkeyManager.addElement(subWin!.document.body);\n }, 1000);\n });\n\n hotkeyManager.addHotAction(['ctrl', 'c'], () => {\n actionMap.copyNode(ctx);\n });\n\n hotkeyManager.addHotAction(['ctrl', 'z'], () => {\n actionMap.undo(ctx);\n });\n\n hotkeyManager.addHotAction(['ctrl', 'shift', 'z'], () => {\n actionMap.redo(ctx);\n });\n\n hotkeyManager.addHotAction(['up'], () => {\n actionMap.moveToUp(ctx);\n });\n\n hotkeyManager.addHotAction(['w'], () => {\n actionMap.moveToUp(ctx);\n });\n\n hotkeyManager.addHotAction(['shift', 'w'], () => {\n actionMap.moveToSiblingUp(ctx);\n });\n\n hotkeyManager.addHotAction(['down'], () => {\n actionMap.moveToDown(ctx);\n });\n\n hotkeyManager.addHotAction(['s'], () => {\n actionMap.moveToDown(ctx);\n });\n\n hotkeyManager.addHotAction(['shift', 's'], () => {\n actionMap.moveToSiblingDown(ctx);\n });\n\n hotkeyManager.addHotAction(['backspace'], () => {\n actionMap.deleteNode(ctx);\n });\n (ctx as any).hotkeyManager = hotkeyManager;\n ctx.pluginReadyOk();\n },\n async destroy(ctx) {\n const hotkeyManager: HotKeysManager = (ctx as any).hotkeyManager;\n hotkeyManager?.destroy();\n },\n export: (ctx) => {\n return {\n /** 注册快捷操作 */\n addHotAction: (actionKey: (string | number)[], cb: () => void) => {\n const hotkeyManager: HotKeysManager = (ctx as any).hotkeyManager;\n hotkeyManager.addHotAction(actionKey, cb);\n },\n disable: (status: boolean) => {\n const hotkeyManager: HotKeysManager = (ctx as any).hotkeyManager;\n hotkeyManager.setDisable(status);\n },\n };\n },\n meta: {\n engine: {\n version: '1.0.0',\n },\n },\n};\n\n/** 必须 */\nHotkeysPlugin.PLUGIN_NAME = PLUGIN_NAME;\n","/* eslint-disable react-refresh/only-export-components */\nimport { CPlugin } from '../core/pluginManager';\nimport { ComponentLibPlugin } from './ComponentLibrary';\nimport { DesignerPlugin } from './Designer';\nimport { OutlineTreePlugin } from './OutlineTree';\nimport { RightPanelPlugin } from './RightPanel';\nimport { GlobalStatePanelPlugin } from './GlobalStatePanel';\nimport { DisplaySourceSchema } from './DisplaySourceSchema';\nimport { HistoryPlugin } from './History';\nimport { HotkeysPlugin } from './Hotkeys';\n\nexport const DEFAULT_PLUGIN_LIST: CPlugin[] = [\n DesignerPlugin,\n OutlineTreePlugin,\n ComponentLibPlugin,\n GlobalStatePanelPlugin,\n RightPanelPlugin,\n HistoryPlugin,\n HotkeysPlugin,\n];\n\nexport {\n DesignerPlugin,\n ComponentLibPlugin,\n RightPanelPlugin,\n OutlineTreePlugin,\n GlobalStatePanelPlugin,\n HistoryPlugin,\n DisplaySourceSchema,\n HotkeysPlugin,\n};\n\n/** 组件唯一名 */\nexport const DEFAULT_PLUGIN_NAME_MAP = {\n HotkeysPlugin: HotkeysPlugin['PLUGIN_NAME']!,\n ComponentLibPlugin: ComponentLibPlugin['PLUGIN_NAME']!,\n RightPanelPlugin: RightPanelPlugin['PLUGIN_NAME']!,\n GlobalStatePanelPlugin: GlobalStatePanelPlugin['PLUGIN_NAME']!,\n HistoryPlugin: HistoryPlugin['PLUGIN_NAME']!,\n DesignerPlugin: DesignerPlugin['PLUGIN_NAME']!,\n OutlineTreePlugin: OutlineTreePlugin['PLUGIN_NAME']!,\n};\n\nexport * from './AdvancePanel/index';\nexport * from './ComponentLibrary/index';\nexport * from './ComponentStatePanel/index';\nexport * from './Designer/index';\nexport * from './DisplaySourceSchema/index';\nexport * from './GlobalStatePanel/index';\nexport * from './History';\nexport * from './OutlineTree';\nexport * from './PropertyPanel';\nexport * from './RightPanel';\nexport * from './RightPanel/type';\nexport * from './VisualPanelPlus';\nexport * from './Hotkeys';\n","import { DesignerPluginInstance } from '@/plugins/Designer/type';\nimport { EnginContext } from '@/type';\nimport { BorderOutlined, MobileOutlined } from '@ant-design/icons';\nimport { InputNumber, Segmented, Space } from 'antd';\nimport { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nexport const DesignerSizer = (props: { ctx: EnginContext }) => {\n const designerRef = useRef<DesignerPluginInstance>();\n\n const [currentSize, setCurrentSize] = useState('AUTO');\n const [width, setWith] = useState(1200);\n const getSubWindowWidth = useCallback(() => {\n const designer = designerRef.current;\n const subWin = designer?.export.getDesignerWindow();\n const w = subWin?.innerWidth;\n setWith(Number(w));\n }, []);\n\n useEffect(() => {\n let resizeHandler: any;\n let subWin: Window | null;\n props.ctx.pluginManager.onPluginReadyOk('Designer').then((designer: DesignerPluginInstance) => {\n designerRef.current = designer;\n subWin = designer?.export.getDesignerWindow();\n resizeHandler = () => {\n setWith(Number(subWin?.innerWidth));\n };\n subWin?.addEventListener('resize', resizeHandler);\n getSubWindowWidth();\n });\n\n return () => {\n subWin?.removeEventListener('resize', resizeHandler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const setCanvasWidth = useCallback(\n debounce((w: number) => {\n const designer = designerRef.current;\n designer?.export.setCanvasWidth(w);\n }, 100),\n []\n );\n return (\n <Space>\n <Segmented\n defaultValue={currentSize}\n onChange={(value) => {\n const designer = designerRef.current;\n if (!designer) {\n return;\n }\n if (value === 'AUTO') {\n designer.export.setCanvasWidth('100%');\n getSubWindowWidth();\n } else if (value === 'IPAD') {\n designer.export.setCanvasWidth(768);\n } else {\n designer.export.setCanvasWidth(350);\n }\n setCurrentSize(value);\n }}\n options={[\n {\n label: (\n <span>\n <span\n onClick={() => {\n const designer = designerRef.current;\n designer?.export.setCanvasWidth('100%');\n getSubWindowWidth();\n }}\n >\n Auto\n </span>\n {currentSize === 'AUTO' && (\n <InputNumber\n size=\"small\"\n style={{\n marginLeft: '10px',\n }}\n controls={false}\n changeOnWheel\n suffix=\"px\"\n value={width}\n min={350}\n max={1920}\n onChange={(val) => {\n setWith(Number(val));\n setCanvasWidth(Number(val));\n }}\n ></InputNumber>\n )}\n </span>\n ),\n value: 'AUTO',\n },\n {\n label: <BorderOutlined />,\n value: 'IPAD',\n },\n {\n label: <MobileOutlined />,\n value: 'MOBILE',\n },\n ]}\n />\n </Space>\n );\n};\n","import { CMaterialPropsType } from '@chamn/model';\n\nexport const containerProps: CMaterialPropsType<'FastLayoutSetter'> = [\n {\n name: 'style',\n title: '布局',\n valueType: 'string',\n setters: [\n {\n componentName: 'FastLayoutSetter',\n initialValue: {},\n hiddenLabel: true,\n props: {},\n },\n ],\n },\n];\n","import { CMaterialPropsType, CMaterialType, DEFAULT_EVENT_LIST, HTMl_TAGS } from '@chamn/model';\nimport { capitalize } from 'lodash-es';\nimport { containerProps } from './container.meta';\n\nconst customAttributesMeta: CMaterialPropsType[number] = {\n name: '$$attributes',\n title: '属性',\n valueType: 'object',\n setters: [\n {\n componentName: 'ArraySetter',\n props: {\n collapse: {\n open: true,\n },\n sortLabelKey: 'key',\n item: {\n setters: [\n {\n componentName: 'ShapeSetter',\n props: {\n elements: [\n {\n name: 'key',\n title: '属性名',\n valueType: 'string',\n setters: ['StringSetter'],\n },\n {\n name: 'value',\n title: '值',\n valueType: 'string',\n setters: ['StringSetter', 'NumberSetter', 'JSONSetter', 'FunctionSetter', 'ExpressionSetter'],\n },\n ],\n },\n initialValue: {},\n },\n ],\n initialValue: {},\n },\n },\n initialValue: [],\n },\n ],\n};\n\nconst groupName = '内置组件';\nconst categoryName = '原子组件';\n\nconst INNER_META_VERSION = '1.0.0';\nconst PKG_NAME = 'CHAMELEON_INNER_PKG';\n\nconst htmlNativeComponentMeta = HTMl_TAGS.map((tag) => {\n const DivMeta: CMaterialType = {\n title: capitalize(tag),\n componentName: tag,\n props: [customAttributesMeta],\n snippets: [],\n npm: {\n name: tag,\n package: PKG_NAME,\n version: INNER_META_VERSION,\n },\n };\n\n return DivMeta;\n});\n\nconst BaseComponentMeta: CMaterialType[] = [\n {\n title: '块',\n componentName: 'CBlock',\n props: [\n {\n name: 'children',\n title: '文本',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n groupName: groupName,\n snippets: [\n {\n title: '块',\n snapshotText: 'Block',\n category: categoryName,\n schema: {\n props: {},\n css: {\n value: [\n {\n state: 'normal',\n media: [],\n text: 'background: white ; width: 100%; height: 100px',\n },\n ],\n },\n },\n },\n ],\n },\n {\n title: '容器',\n componentName: 'CContainer',\n isContainer: true,\n props: [...(containerProps as any), customAttributesMeta],\n groupName: groupName,\n snippets: [\n {\n title: '容器',\n snapshotText: 'Con',\n category: categoryName,\n schema: {\n css: {\n value: [\n {\n state: 'normal',\n media: [],\n text: 'background: white;width: 100%;',\n },\n ],\n },\n },\n },\n ],\n },\n {\n title: '图片',\n componentName: 'CImage',\n props: [\n {\n name: 'src',\n title: '地址',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n advanceCustom: {\n wrapComponent: (comp) => {\n return (props: any) => {\n const Comp = comp;\n return <Comp {...props} style={{ ...(props.style || {}), userSelect: 'none', WebkitUserDrag: 'none' }} />;\n };\n },\n },\n\n groupName: groupName,\n snippets: [\n {\n title: '图片',\n snapshotText: 'Img',\n category: categoryName,\n schema: {\n css: {\n value: [\n {\n text: 'background:white;width:500px;height:300px;overflow:auto;',\n media: [],\n state: 'normal',\n },\n ],\n },\n props: {\n src: 'https://images.unsplash.com/photo-1584080277544-2db5b2c2d9dd?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80',\n },\n },\n },\n ],\n },\n {\n title: '视频',\n componentName: 'CVideo',\n props: [\n {\n name: 'src',\n title: '地址',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n {\n name: 'autoPlay',\n title: '自动播放',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'controls',\n title: '控制面板',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n fixedProps: {\n autoPlay: false,\n },\n advanceCustom: {\n wrapComponent: (Comp) => {\n return (props) => {\n // 原生的控制面板会阻断页面级别的事件监听,导致拖拽失效,这里在编辑态禁用 video 的控制面板相关事件触发\n return (\n <div\n style={{\n ...props.style,\n display: 'inline-flex',\n }}\n >\n <Comp\n {...props}\n style={{\n ...props.style,\n pointerEvents: 'none',\n }}\n ></Comp>\n </div>\n );\n };\n },\n },\n groupName: groupName,\n snippets: [\n {\n title: '视频',\n snapshotText: 'Video',\n category: categoryName,\n schema: {\n props: {\n src: 'https://vjs.zencdn.net/v/oceans.mp4',\n },\n css: {\n value: [\n {\n state: 'normal',\n media: [],\n text: 'background:white;width:300px;height:150px;',\n },\n ],\n },\n },\n },\n ],\n },\n {\n title: '音频',\n groupName: groupName,\n componentName: 'CAudio',\n props: [\n {\n name: 'src',\n title: '地址',\n valueType: 'string',\n setters: ['StringSetter', 'ExpressionSetter'],\n },\n {\n name: 'autoPlay',\n title: '自动播放',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n {\n name: 'controls',\n title: '控制面板',\n valueType: 'string',\n setters: ['BooleanSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n advanceCustom: {\n wrapComponent: () => {\n return (props) => {\n return (\n <div\n style={{\n display: 'inline-block',\n fontSize: 0,\n }}\n >\n <audio\n {...props}\n style={{\n pointerEvents: 'none',\n ...props.style,\n }}\n ></audio>\n </div>\n );\n };\n },\n },\n snippets: [\n {\n title: '音频',\n snapshotText: 'Audio',\n category: categoryName,\n schema: {\n props: {\n src: 'https://vjs.zencdn.net/v/oceans.mp4',\n controls: true,\n },\n },\n },\n ],\n },\n {\n title: '文本',\n componentName: 'CText',\n groupName: groupName,\n props: [\n {\n name: 'content',\n title: '内容',\n valueType: 'string',\n setters: ['TextAreaSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n snippets: [\n {\n title: '文本',\n snapshotText: 'Text',\n category: categoryName,\n schema: {\n props: {\n content: 'text',\n },\n },\n },\n ],\n },\n {\n title: 'Canvas',\n componentName: 'CCanvas',\n props: [\n {\n name: 'afterMount',\n title: '渲染之后',\n valueType: 'function',\n setters: ['FunctionSetter', 'ExpressionSetter', 'ActionFlowSetter' as any],\n },\n {\n name: 'beforeDestroy',\n title: '销毁之前',\n valueType: 'function',\n setters: ['FunctionSetter', 'ExpressionSetter'],\n },\n customAttributesMeta,\n ],\n groupName: groupName,\n advanceCustom: {\n onNewAdd: async (node) => {\n const props = node.getPlainProps();\n const id = Math.random().toString(32).slice(3, 9);\n props.$$attributes = [\n {\n key: 'id',\n value: id,\n },\n {\n key: 'style',\n value: {\n display: 'block',\n margin: '0 auto',\n },\n },\n ];\n props.afterMount.value = props.afterMount.value.replace('$[id]', id);\n node.updateWithPlainObj({\n props,\n });\n return {\n addNode: node,\n };\n },\n },\n snippets: [\n {\n title: '画布',\n snapshotText: 'Cavs',\n category: categoryName,\n schema: {\n props: {\n width: '600px',\n height: '150px',\n style: {\n margin: '0 auto',\n },\n afterMount: {\n type: 'FUNCTION',\n value: `\n function run () {\n var ctx = document.getElementById(\"$[id]\").getContext(\"2d\");\n ctx.font = \"48px serif\";\n ctx.fillText(\"Hello Canvas\", 10, 50);\n }\n `,\n },\n },\n },\n },\n ],\n },\n {\n title: 'HTML 标签',\n componentName: 'CNativeTag',\n props: [\n {\n name: 'htmlTag',\n title: '标签名',\n valueType: 'string',\n setters: [\n {\n componentName: 'SelectSetter',\n props: {\n options: HTMl_TAGS.map((tag) => {\n return {\n name: tag,\n value: tag,\n };\n }),\n },\n },\n ],\n },\n customAttributesMeta,\n ],\n isContainer: true,\n groupName: groupName,\n snippets: [\n {\n title: 'HTML',\n snapshotText: 'HTML',\n category: categoryName,\n schema: {\n props: {\n htmlTag: 'div',\n },\n },\n },\n ],\n },\n];\nBaseComponentMeta.forEach((el) => {\n el.events = DEFAULT_EVENT_LIST;\n});\n\nconst BaseComponentMetaWithVersion = BaseComponentMeta.map((el) => {\n return {\n ...el,\n npm: {\n name: el.componentName,\n package: PKG_NAME,\n version: INNER_META_VERSION,\n },\n };\n});\n\nexport const InnerComponentMeta = [...BaseComponentMetaWithVersion, ...htmlNativeComponentMeta];\n","/* eslint-disable react-refresh/only-export-components */\nimport React from 'react';\nimport { TWidgetVisible, Workbench } from './component/Workbench';\nimport { loader } from '@monaco-editor/react';\n\nimport styles from './Engine.module.scss';\nimport i18n from './i18n/index';\nimport { PluginManager } from './core/pluginManager';\nimport mitt, { Emitter } from 'mitt';\nimport { AssetPackage, CMaterialType, CNode, CPage, CPageDataType, CRootNode, EmptyPage } from '@chamn/model';\nimport { getDefaultRender, beforeInitRender } from './utils/defaultEngineConfig';\nimport { DesignerPluginInstance } from './plugins/Designer/type';\nimport clsx from 'clsx';\nimport { AssetLoader, ComponentsType, collectVariable } from '@chamn/render';\nimport { AssetsPackageListManager } from './core/assetPackagesListManage';\nimport { flatObject } from '@chamn/render';\nimport customI18n from './i18n/index';\nimport { EngineProps } from './type';\n\nexport class Engine extends React.Component<EngineProps> {\n static version = __PACKAGE_VERSION__;\n currentSelectNode: CNode | CRootNode | null;\n\n pluginManager!: PluginManager;\n workbenchRef = React.createRef<Workbench>();\n pageSchema: CPageDataType | undefined;\n pageModel: CPage;\n material: CMaterialType[] | undefined;\n emitter: Emitter<any>;\n assetsPackageListManager: AssetsPackageListManager;\n\n workbenchConfig?: EngineProps['workbenchConfig'] = {};\n _oldHiddenWidgetConfig:\n | { hiddenTopBar: boolean | undefined; hiddenLeftPanel: boolean | undefined; hiddenRightPanel: boolean | undefined }\n | undefined;\n\n constructor(props: EngineProps) {\n super(props);\n this.pageSchema = props.schema;\n this.material = props.material;\n this.currentSelectNode = null;\n (window as any).__CHAMELEON_ENG__ = this;\n this.assetsPackageListManager = new AssetsPackageListManager(props.assetPackagesList || []);\n this.workbenchConfig = props.workbenchConfig || {};\n\n if (props.monacoEditor?.cndUrl) {\n loader.config({\n paths: {\n vs: props.monacoEditor?.cndUrl,\n },\n });\n }\n\n try {\n this.pageModel = new CPage(this.pageSchema, {\n materials: this.material || [],\n assetPackagesList: props.assetPackagesList || [],\n });\n } catch (e) {\n console.error(e);\n this.pageModel = new CPage(EmptyPage);\n }\n this.emitter = mitt();\n }\n\n updateCurrentSelectNode(node: CNode | CRootNode | null) {\n this.currentSelectNode = node;\n this.emitter.emit('onSelectNodeChange', {\n node,\n });\n }\n\n async componentDidMount() {\n (window as any).__C_ENGINE__ = this;\n const plugins = this.props.plugins;\n const pluginManager = new PluginManager({\n engine: this,\n getWorkbench: () => this.workbenchRef.current!,\n emitter: this.emitter,\n pageModel: this.pageModel,\n i18n,\n assetsPackageListManager: this.assetsPackageListManager,\n });\n this.pluginManager = pluginManager;\n // 使用默认的渲染策略\n pluginManager.customPlugin<DesignerPluginInstance>('Designer', (pluginInstance) => {\n pluginInstance.ctx.config.beforeInitRender = beforeInitRender;\n pluginInstance.ctx.config.customRender = getDefaultRender({\n components: this.props.components || {},\n renderProps: this.props.renderProps || {},\n });\n pluginInstance.ctx.config.components = this.props.components;\n return pluginInstance;\n });\n this.props.beforePluginRun?.({\n pluginManager: this.pluginManager,\n });\n\n const pList = plugins.map((p) => {\n return this.pluginManager.add(p);\n });\n\n this.props.onMount?.({\n pluginManager: this.pluginManager,\n engine: this,\n });\n\n await Promise.all(pList);\n\n this.pageModel.emitter.on('onReloadPage', () => {\n if (!this.currentSelectNode) {\n return;\n }\n const newSelectNode = this.pageModel.getNode(this.currentSelectNode?.id);\n if (newSelectNode) {\n this.updateCurrentSelectNode(newSelectNode);\n }\n });\n\n this.props.onReady?.({\n pluginManager: this.pluginManager,\n engine: this,\n });\n }\n\n getActiveNode() {\n if (!this.currentSelectNode?.id) {\n return null;\n }\n const node = this.pageModel.getNode(this.currentSelectNode.id) ?? null;\n this.currentSelectNode = node;\n return node;\n }\n\n updatePage = (page: CPageDataType) => {\n this.pageModel.updatePage(page);\n };\n\n updateMaterials = async (\n materials: CMaterialType[],\n assetPackagesList: AssetPackage[],\n options?: {\n formatComponents?: (componentMap: ComponentsType) => ComponentsType;\n }\n ) => {\n const designerPlugin = await this.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerPluginExport = designerPlugin?.export;\n\n this.pluginManager.assetsPackageListManager.setList(assetPackagesList);\n this.pageModel.assetPackagesList = this.pluginManager.assetsPackageListManager.getList();\n\n const subWin = designerPluginExport?.getDesignerWindow();\n\n if (!subWin) {\n console.warn('subWin not exits');\n return;\n }\n\n // 从子窗口获取物料对象\n const assetLoader = new AssetLoader(assetPackagesList, subWin);\n await assetLoader.load();\n const componentCollection = collectVariable(assetPackagesList, subWin);\n // 排平\n let newComponents = flatObject(componentCollection);\n if (options?.formatComponents) {\n newComponents = options.formatComponents(newComponents);\n }\n // 更新 render 中的组件库\n designerPluginExport?.updateRenderComponents(newComponents);\n this.pageModel.materialsModel.addMaterials(materials);\n this.emitter.emit('updateMaterials');\n };\n\n refresh = async () => {\n this.pageModel.reloadPage(this.pageModel.export('design'));\n };\n\n getWorkbench = () => {\n return this.workbenchRef.current;\n };\n\n /** return i18n object */\n getI18n() {\n return customI18n;\n }\n\n /** 进入预览模式 */\n async preview() {\n const oldHiddenWidgetConfig = this.workbenchRef.current?.getHiddenWidgetConfig();\n this._oldHiddenWidgetConfig = oldHiddenWidgetConfig;\n this.workbenchRef.current?.hiddenWidget({\n hiddenLeftPanel: true,\n hiddenRightPanel: true,\n hiddenTopBar: true,\n canvasFull: true,\n });\n\n const designerPlugin = await this.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerPluginExport = designerPlugin?.export;\n designerPluginExport?.setPreviewMode();\n }\n\n async existPreview() {\n this.workbenchRef.current?.hiddenWidget({\n ...(this._oldHiddenWidgetConfig || {}),\n canvasFull: false,\n });\n const designerPlugin = await this.pluginManager.get<DesignerPluginInstance>('Designer');\n const designerPluginExport = designerPlugin?.export;\n designerPluginExport?.setEditMode();\n }\n\n hiddenWidget(config: Partial<TWidgetVisible>) {\n this.workbenchRef.current?.hiddenWidget(config || {});\n }\n\n render() {\n return (\n <div className={clsx([styles.engineContainer, this.props.className])} style={this.props.style}>\n <Workbench ref={this.workbenchRef} emitter={this.emitter} {...this.workbenchConfig} />\n </div>\n );\n }\n}\n\nexport * as plugins from './plugins';\nexport * from './plugins';\nexport * from './component';\nexport * from '@chamn/layout';\n\nexport * from './material/innerMaterial';\nexport * from './component/CustomSchemaForm/components/Setters/type';\nexport * from './utils/index';\n\n/** 注册自定义 setter */\nexport { registerCustomSetter } from './component/CustomSchemaForm/components/Form';\n\nexport * from './type';\nexport * from './core/pluginManager';\nexport * from './core/assetPackagesListManage';\n"],"names":["styleArr2Obj","val","res","item","styleObjToArr","obj","tempRes","key","styleList2Text","formatStyleProperty","styleList","isPlainObject","normalProperty","expressionProperty","allProperty","it","isExpression","formatCSSTextProperty","cssText","ast","csstree","cssList","node","getRandomStr","formatCssToNodeVal","className","state","currentStateCss","tempVal","mediaKey","formatNodeValToEditor","list","el","tempStyle","_a","getColorFromStr","str","hexColorPattern","rgbaColorPattern","rgbColorPattern","hsbColorPattern","hexColors","rgbaColors","rgbColors","hsbColors","parseBoxShadowString","colorsList","color16Map","c","Color","tempStr","shadowItem","newStr","color","newStrArr","sizeArr","i","AssetsPackageListManager","assets","__publicField","newAssets","tempList","newList","getUniqueAssetsList","idMap","beforeInitRender","iframe","subWin","getDefaultRender","options","iframeContainer","page","pageModel","ready","renderJSUrl","iframeWindow","iframeDoc","IframeReact","IframeReactDOM","CRender","pageInfo","allAssets","allLibs","collectVariable","componentsLibs","flatObject","thirdLibs","getThirdLibs","App","designRenderInstance","LOGGER","consola","waitReactUpdate","time","cb","resolve","ensureKeyExist","defaultValue","sageJSONParse","jsonStr","errorValue","Workbench","React","props","panel","panelName","newPanel","targetIndex","newPanels","currentActiveLeftPanel","newActive","leftBoxVisible","rightBoxSize","newView","rightBoxVisible","newVisible","_e","_direction","_ref","d","newW","mitt","config","view","newViewList","leftBoxSize","leftBoxFixed","leftPanels","bodyView","rightView","topToolBarView","subTopToolBarView","customViewList","hiddenTopBar","hiddenLeftPanel","hiddenRightPanel","leftBoContentStyle","currentActivePluginObj","CurrentPluginRenderView","onPluginIconClick","toggleRightPanel","toggleLeftPanel","onLeftBoxResizeStop","jsxs","styles","jsx","clsx","pl","Resizable","Button","PushpinOutlined","CloseOutlined","DoubleRightOutlined","createPortal","zh_CN","en_US","resources","i18n","initReactI18next","customI18n","PluginManager","getWorkbench","emitter","assetsPackageListManager","engine","pluginName","customPluginHook","customPluginHooks","hookList","plugin","ctx","innerPlugin","pluginCtx","pluginInstance","name","p","pluginObj","newPluginObj","localize$4","DragComponentItem","dragInfo","DRAG_ITEM_KEY","icon","useMemo","contentView","Popover","ListView","dataSource","defaultActiveKey","items","category","Collapse","getTargetMNodeKeyVal","dom","searchComponentSnippets","componentList","searchKeyWords","newResList","searchString","snippets","hit","_b","_c","_d","PLUGIN_NAME","i18nNamespace","TabTitle","children","ComponentLibView","visible","targetDom","targetNodeId","meta","containerRef","designerHandle","dnd","boxSensor","Sensor","eventObj","newNode","designerExport","dragStart","workbench","event","selectedNodeId","selectedNode","containerNode","findContainerNode","pos","dropNode","isPageModel","rootNode","designerInstance","addFlag","addNodeInfo","materialsModel","allSnippets","df","localize","lng","componentsList","searchResultList","searchMode","toAddNewNode","CustomSearchBar","capitalize","defaultSearchValue","Input","SearchOutlined","e","Tabs","ComponentLibPlugin","ComponentLibViewWithLocalize","withTranslation","Title","t","Fragment","AppstoreAddOutlined","localize$3","LayoutSelect","onSelect","hover","setHover","useState","getDefaultToolbarItem","nodeList","toSelectNode","toDelete","toCopy","toHidden","currentNode","parentNodeItems","nodeMeta","label","copyItem","CopyOutlined","deleteItem","DeleteOutlined","visibleItem","EyeInvisibleOutlined","nodeLayout","DefaultSelectToolBar","getClosestNodeList","level","count","isNodeModel","GhostView","AdvanceCustomHook","dragNode","nodeAdvanceCustom","dropNodeAdvanceCustom","commonParams","canAcceptFlag","material","resNode","onCopy","newRes","onDelete","Designer","extraData","layoutRef","dropPosInfo","posFlag","_f","_g","_h","_i","_j","_k","flag","toolbarView","commonParam","canDragFlag","dragFlag","ghostView","CustomGhostView","nodeId","id","cpNode","targetNodeModel","devState","toolbarProps","defaultToolbarItem","ToolbarView","newState","selectViewProps","selectRectViewRender","Comp","selectNode","hoverViewProps","hoverRectViewRender","dropViewProps","dropViewRender","newComponentMap","newComponents","layoutInstance","onSelectNode","onDragStart","onHoverNode","onNodeDrop","onNodeDragging","onNodeDragEnd","hoverToolbarView","selectToolbarView","portalView","advanceCustomProps","Layout","DesignerPlugin","designerRef","newMode","LayoutMode","width","map","transformNodeSchemaToTreeData","nodeSchema","parent","tb","nodeChild","newCurrentNode","propsNodeList","slotNode","treeNodeView","processProps","keys","isJSSlotPropNode","pageModeNode","propsTitle","tempTitle","getPropsLabel","getMTitle","plainTitle","tempNode","propValue","newKey","index","nodeModel","keyPath","propsLabelMap","getNodePropsLabelMap","newKeyPath","childNodeList","transformPageSchemaToTreeData","pageSchema","tree","child","traverseTree","handler","tempTree","stop","traverseCb","conditionCb","calculateDropPosInfo","params","point","mousePos","targetRect","targetDomH","xCenter","yCenter","resMap","singleProcessUnit","paths","newPaths","objSetter","componentName","arrItemSetter","parentTitle","currentTitle","newObjPaths","it2","targetItem","isSpecialMaterialPropType","itemArr","DragState","CTreeContext","TreeNode","allStateRef","useRef","nodeVisible","setNodeVisible","ctxState","updateState","onDeleteNode","getDesignerHandler","onCopyNode","useContext","titleEditable","setTitleEditable","editInputValue","setEditInputValue","expanded","toggleExpandNode","open","newExpandKeys","selected","titleEditInputRef","toggleSelectNode","newKeys","singPadding","indent","canBeSelected","dragKeyProps","updateExpandKeyRef","ctxStateRef","oldExpandKeys","domRef","useEffect","timerHandler","clickHandle","sunWin","designerPluginInstance","designerHandler","win","toggleNodeVisible","titleView","compInstances","RightOutlined","inputValue","EyeOutlined","TreeView","plainTreeData","tempTreeData","targetKey","treeData","target","parentPaths","parentNode","targetNode","sensor","targetTreeNode","nodeCanDragRes","canDragResInfo","startNode","dropInfo","nodeCanDropRes","dropDom","rect","newDropInfo","currentSelectNode","dragState","sk","designer","newVal","message","localize$2","OutlineTreePlugin","TreeViewWithLocalize","ApartmentOutlined","REACT_FLOW_DRAG_CLASS_NAME","INPUT_HANDLE_ID","OUTPUT_HANDLE_ID","REQUEST_API_FAILED_HANDLE_ID","CFormContext","CUSTOM_SETTER_MAP","registerCustomSetter","customSetterMap","CForm","data","conditionConfig","changeKeys","StringSetter","onValueChange","setterContext","initialValue","internalValue","setInternalValue","lastExternalValueRef","externalValue","ConfigProvider","newValue","finalValue","NumberSetter","InputNumber","value","getSetterList","setters","setter","setterTypeMap","getValueType","getDefaultSetterByValue","setterList","valueType","setterName","ArrayItem","keyPaths","style","objectValue","formRef","SetterSwitcher","SortItemOrderModal","sortLabelKey","modalProps","listValue","setListValue","innerList","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","active","over","oldIndex","newIndex","newInnerListVal","arrayMove","modalTransform","setModalTransform","Modal","modal","DndContext","delta","ModalDragView","restrictToVerticalAxis","SortableContext","SortableItem","transform","setNodeRef","attributes","listeners","tempTransform","useDraggable","finalTransform","CSS","transition","useSortable","labelText","formatValue","ArraySetter","itemInitialValue","itemLabelPrefix","itemLabelPrefixKey","sortVisible","setSortVisible","innerSetters","ShapeSetter","elements","title","tip","getMTitleTip","MonacoEditor","handleEditorBeforeMount","monaco","handleEditorDidMount","editor","Editor","DefaultTslibSource","quicktypeJSON","typeName","jsonString","jsonInput","jsonInputForTargetLanguage","inputData","InputData","quicktype","getPageTypeDefined","stateTypeMap","pList","traversePageNode","InnerComponentNameEnum","globalStateDts","pageStateDts","nodeIdList","k","body","getBodyDefined","dtsContent","currentNodeDtsText","dtsStr","ExpressionSetter","editorOptions","mode","editorRef","setOpen","onInnerValueChange","newValStr","CNodePropsTypeEnum","lineNumberOptions","editorView","realtimeDts","libUri","BooleanSetter","Switch","SelectSetter","Select","option","MoveableModal","oldValue","EditorConfig","JsonEditor","onChange","height","oldValueRef","oldVal","editorInstance","JSONSetter","FunctionSetter","TextAreaSetter","valueValidator","checkValueStatus","setCheckValueStatus","validateValue","CSSSourceInfo","CSSProperties","CSSPropertyList","CSSValueSetter","propertyKey","propertyValueRef","innerValue","setInnerVal","focusState","setFocusState","updateOuterValue","optionsValue","AutoComplete","ColorSetter","SketchPicker","newColor","newColorStr","DEFAULT_PRESET_COLORS","AntDColorSetter","restProps","ColorPicker","SliderSetter","Slider","RadioGroupSetter","Radio","InputNumberPlus","min","max","addonAfter","updateInnerVal","processUpdateVal","num","resVal","isLegal","newNum","UNIT_LIST","useDragSize","cumulativeInfo","processEnd","useCallback","processing","onMouseDown","processMove","start","tempCumulativeX","tempCumulativeY","shakeDIstance","startInfo","minX","maxX","globalMoveDispose","addEventListenerReturnCancel","globalUpDispose","globalLeaveDispose","CSSSizeInput","outValue","dragSizing","setDragSizing","originalValObj","unit","currentUnitList","currentMinMix","valObj","updateValue","valStr","processNewVal","cumulativeData","onDragMoveChange","nV","onDragEnd","handleRef","dragSizeHandle","unitSelect","CSSSizeSetter","keyList","getDefaultValue","maxVal","DimensionInput","forwardRef","ref","innerVal","noTrigger","finalVal","pick","useImperativeHandle","realValue","Row","Col","ArrowRightFromLine","ArrowLeftFromLine","ArrowDownFromLine","ArrowUpFromLine","SquareX","AlignHorizontalDistributeStart","AlignHorizontalDistributeEnd","StretchVertical","AlignHorizontalSpaceBetween","AlignHorizontalSpaceAround","AlignVerticalJustifyStart","AlignVerticalJustifyEnd","StretchHorizontal","AlignVerticalSpaceBetween","AlignVerticalSpaceAround","MoveHorizontal","MoveVertical","inputW","getEmptyVal","MarginAndPaddingInput","outVal","prefix","CustomColorPicker","setColor","FONT_CSS_KEY_LIST","alignOptions","fontWeightOptions","FontInput","colorRef","CSS_BORDER_KEY_LIST","BorderInput","emptyVal","currentEditVal","tmpVal","updateSingleBorderVal","newBorderVal","CloseCircleOutlined","CSS_BACKGROUND_KEY_LIST","BackgroundInput","ShadowInput","newUpdateVal","boxShadowStr","parseCssToObject","css","result","selector","declarations","declaration","prop","getCssCodeFromStyleObj","styleObj","CSSCodeEditor","valueRef","isEqual","newValObj","StyleUIPanel","initialVal","noCard","setMode","dimensionRef","marinRef","paddingRef","borderRef","backgroundRef","shadowRef","fontRef","cssCodeEditorRef","inputRefs","tempValueRef","onStyleItemChange","omitBy","isNil","coreEditView","Card","SquareCode","Component","FastLayoutSetter","resetProps","cssUIRef","lastNode","initialValueInner","newStyle","updatePanelValue","newNormaCss","newStyleList","emptyValMap","EmptyValueSetter","emptyValue","hiddenDefaultOption","tempValue","BUILD_IN_SETTER_MAP","CField","tips","hiddenLabel","errorInfo","setErrorInfo","labelView","formState","updateContext","updateConditionConfig","canRender","newTip","Tooltip","newChildren","isValidElement","extraProps","rules","checkResult","checkValue","Alert","QuestionCircleOutlined","pass","errorMsg","CCustomSchemaFormContext","SetterSwitcherCore","currentSetter","setCurrentSetter","customSetterMapProp","defaultSetterConfig","allSetterMap","InnerSetters","currentSetterName","st","CurrentSetterComp","outerSetter","condition","useField","setVisible","onSetterChange","SetterTypeEnum","menuItems","setterRuntime","switcher","onChooseSetter","targetSetter","Dropdown","SwapOutlined","setterProps","newProps","collapseHeaderExt","setCollapseHeaderExt","labelWidth","labelAlign","collapse","specialSetter","filedView","cFiledProps","renderCollapse","collapseObj","extraHeaderContent","CustomSchemaFormCore","originProperties","properties","property","CustomSchemaForm","getNodeInfo","traverse","nodes","SelectNodeModal","onCancel","onOk","boxDomRef","TreeSelect","treeNode","nodeInfo","SelectNodeByTree","modalOpen","setModalOpen","setInnerValue","nodeTitle","SelectNodeState","Space","isValidJSVariableName","DEFAULT_NODE_LIST","LogicType","AssignValueType","CreateNewNodePopup","handleOpenChange","newOpen","InputHandle","Handle","Position","OutputHandle","NodeCard","nodeProps","customHandle","outHandleNewNodeAdd","useCardStyle","outputHandle","inputHandle","isConnectable","reactFlowInstance","useReactFlow","outputNodeHasConnected","UseNodeHasConnected","handleNewNodeAdd","newNodeData","newEdge","getNewNodePosInfo","customHandleView","HolderOutlined","ActionFlowContext","createContext","useActionFlow","context","CFiledWithSwitchSetter","defaultSetterName","AssignValueNode","onDataChange","DEV_CONFIG_KEY","devConfigObj","isReady","setIsReady","formValue","setFormValue","CommonDynamicValueSetter","StartNode","ARGS_PREFIX","getArgsObjFormSchema","methodName","formatArgsObjToArray","formatArgsToObject","valArr","CallNodeMethodNode","methodList","methodListOptions","argsFormSchema","updateKeySetterConfig","JumpLinkNode","defaultLinkSetter","isFunction","requestParamsSchemaSetterList","methodOptions","RequestAPINode","pluginConfig","CustomAPISelectInput","checkHandleConnection","handleId","edge","isOutputHandleConnected","isAfterFailedResponseHandleConnected","formHandler","newValueObj","tabItems","handleType","offsetX","newNodePosition","newFormData","RunCodeNode","NODE_TYPE","NODE_MAP","calculateElementLayout","edges","g","Dagre","position","x","y","createFlowNode","nodeData","createFlowEdge","source","sourceHandle","parseActionLogicToNodeList","processNodes","nextItem","revertNodeToActionLogic","nodeMap","visited","traverseNodes","currentNodeId","handlers","successTargets","failedTargets","nextEdges","nextHandlers","ActionFlowSetterCore","fitView","flowMount","setFlowMount","setNodes","onNodesChange","useNodesState","setEdges","onEdgesChange","useEdgesState","latesEdgesRef","onConnect","eds","addEdge","latestNodeRef","dataReady","setDataReady","layoutGraph","layoutInfo","saveData","newSchemaValue","ReactFlow","changes","connection","Background","Controls","MiniMap","ActionFlowSetter","newValueRef","disableLowcodeHotKey","status","hotkey","triggerView","ReactFlowProvider","BUILD_IN_ADVANCE_SETTER_MAP","PropertyPanel","handel","PropertyPanelConfig","ComponentStatePanel","nodeState","currentState","ComponentStatePanelConfig","AdvancePanel","innerProperties","loopObj","AdvancePanelConfig","CRightPanelContext","UseCRightPanelContext","defaultPropertyOptions","SinglePropertyEditor","keyFormatStatus","setKeyFormatStatus","rightPanelContext","mod","propertyOptions","setPropertyOptions","onSearch","searchText","newOptions","propertyKeyRef","innerOnCreate","PlusOutlined","MinusOutlined","CSSPropertiesVariableBindEditor","propertyList","setPropertyList","newProperty","setNewProperty","innerOnValueChange","createPropertyRef","ClassNameEditor","valueFormatStatus","isCreate","valueOptions","setValueOptions","allValueOptions","setAllValueOptions","updateValueOptions","tempProperty","onValueSearch","updateKeyValue","keyVal","CSSPropertiesEditor","newAddVal","setNewAddVal","newCssVal","DOM_CSS_STATUS","DOM_CSS_STATUS_LIST","CSSEditor","selectedStateTag","setSelectedStateTag","mediaQueryList","cssPropertyRefMap","handleChange","tag","domStatusList","setDomStatusList","cssStatusList","selectCssStatusList","cssVal","setCssVal","currentCssStateVal","initVal","initRef","isEmpty","updateCss","checked","CheckableTag","MinusCircleOutlined","VisualPanelPlus","styleVariableRef","classNameList","cssEditorRef","classNameEditorRef","formatStyle","fCss","onUpdateStyleVariable","styleArr","onUpdateStyle","onUpdateCss","VisualPanelPlusConfig","activeTab","INNER_EVENT_LIST_MAP","ON_DID_RENDER","ON_WILL_DESTROY","EventPanel","eventList","updateEventList","nodeEventList","evt","currentEvent","updateCurrentEvent","newEvent","eventLabel","newEventList","EventPanelConfig","RightPanel","panels","panelParams","displayPanels","customTabs","activeKey","firstPanelKey","_","args","Empty","RightPanelPlugin","uiHandle","localize$1","triggerChangeBySelf","GlobalStatePanel","rootState","GlobalStatePanelPlugin","GlobalStatePanelWithLocalize","DatabaseOutlined","DisplaySourceSchema","engineCtx","newPage","newPageJSON","HistoryPlugin","CTX","dataStore","originalPageRecord","loadPage","resObj","currentStepIndex","historyRecords","cloneDeep","debounceAddStep","debounce","isff","_keyMap","_modifier","defaultGetCode","getKey","getModifier","getKeyString","HotKeysManager","disposeListCb","disposeCb","triggerAction","keydownCb","keyupCb","findKeyIndex","clearKeyDownList","newKeysCode","hotActionId","code","tagName","isInput","actionMap","activeNode","parentNodeValue","nextIndex","historyStack","HotkeysPlugin","hotkeyManager","actionKey","DEFAULT_PLUGIN_LIST","DEFAULT_PLUGIN_NAME_MAP","DesignerSizer","currentSize","setCurrentSize","setWith","getSubWindowWidth","w","resizeHandler","setCanvasWidth","Segmented","BorderOutlined","MobileOutlined","containerProps","customAttributesMeta","groupName","categoryName","INNER_META_VERSION","PKG_NAME","htmlNativeComponentMeta","HTMl_TAGS","BaseComponentMeta","comp","DEFAULT_EVENT_LIST","BaseComponentMetaWithVersion","InnerComponentMeta","Engine","materials","assetPackagesList","designerPlugin","designerPluginExport","AssetLoader","componentCollection","loader","CPage","EmptyPage","plugins","pluginManager","newSelectNode","oldHiddenWidgetConfig"],"mappings":"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"}